5432 lines
204 KiB
JavaScript
5432 lines
204 KiB
JavaScript
//=============================================================================
|
|
// TDS Omori Battle System
|
|
// Version: 1.0
|
|
//=============================================================================
|
|
// Add to Imported List
|
|
var Imported = Imported || {} ; Imported.TDS_OmoriBattleSystem = true;
|
|
// Initialize Alias Object
|
|
var _TDS_ = _TDS_ || {} ; _TDS_.OmoriBattleSystem = _TDS_.OmoriBattleSystem || {};
|
|
//=============================================================================
|
|
/*:
|
|
* @plugindesc
|
|
* Contains base functions and standards for OMORI.
|
|
*
|
|
* @author TDS
|
|
*
|
|
*/
|
|
//=============================================================================
|
|
|
|
|
|
// // DISABLE GAMEPAD AND VOLUME
|
|
// Input._updateGamepadState = function(gamepad) { };
|
|
// ConfigManager.masterVolume = 0;
|
|
// AudioManager.playSe = function(se) {};
|
|
|
|
// let intantkill = Game_Action.prototype.apply
|
|
// Game_Action.prototype.apply = function(target) {
|
|
// var result = target.result();
|
|
// this.subject().clearResult();
|
|
// result.clear();
|
|
|
|
// if (target.isActor()) {
|
|
// target.clearStates();
|
|
// target.setHp(0);
|
|
// } else {
|
|
// intantkill.call(this, target);
|
|
// }
|
|
// };
|
|
|
|
|
|
const FEMALE_STATE_LIST_OFFSET = 13;
|
|
|
|
var yep_compatibilityTest = Game_Battler.prototype.startDamagePopup;
|
|
Game_Battler.prototype.startDamagePopup = function() {
|
|
this.isDamagePopupRequested();
|
|
yep_compatibilityTest.call(this);
|
|
};
|
|
|
|
|
|
|
|
Game_Party.prototype.actorIsAffectedByState = function(actorId, stateId) {
|
|
return this.members().some(function(actor) {
|
|
return actor && actor.actorId() == actorId && actor.isStateAffected(stateId);
|
|
});
|
|
};
|
|
|
|
|
|
Game_Party.prototype.getOmori = function () {
|
|
var actor = null;
|
|
for (var i = 0; i < this.battleMembers().length; i++) {
|
|
if (this.battleMembers()[i].actorId() === 1 || this.battleMembers()[i].actorId() === 8) {
|
|
actor = this.battleMembers()[i];
|
|
break;
|
|
}
|
|
}
|
|
return actor;
|
|
};
|
|
|
|
|
|
BattleManager._showEncounterEffect = true;
|
|
|
|
BattleManager.setShowEncounterEffect = function(show) {
|
|
BattleManager._showEncounterEffect = show;
|
|
}
|
|
|
|
var omori_scene_map_encounterEffectSpeed = Scene_Map.prototype.encounterEffectSpeed;
|
|
Scene_Map.prototype.encounterEffectSpeed = function() {
|
|
if (BattleManager._showEncounterEffect) return omori_scene_map_encounterEffectSpeed.call(this);
|
|
return 0;
|
|
};
|
|
|
|
|
|
|
|
|
|
//=============================================================================
|
|
// ** Scene_Boot
|
|
//-----------------------------------------------------------------------------
|
|
// The scene class for initializing the entire game.
|
|
//=============================================================================
|
|
// Alias Listing
|
|
//=============================================================================
|
|
_TDS_.OmoriBattleSystem.Scene_Boot_loadSystemImages = Scene_Boot.loadSystemImages
|
|
//=============================================================================
|
|
// * Load System Images
|
|
//=============================================================================
|
|
Scene_Boot.loadSystemImages = function() {
|
|
// Run Original Function
|
|
_TDS_.OmoriBattleSystem.Scene_Boot_loadSystemImages.call(this);
|
|
// ImageManager.reserveSystem('energy_stress_ekg_line');
|
|
// ImageManager.reserveSystem('enemy_box');
|
|
// ImageManager.reserveSystem('enemy_box_gradients')
|
|
// ImageManager.reserveSystem('ACSArrows')
|
|
// ImageManager.reserveSystem('items/i_43')
|
|
// ImageManager.reserveSystem('BattleCommands_BlackSpace')
|
|
// ImageManager.reserveSystem('ACS_Bubble')
|
|
};
|
|
|
|
|
|
|
|
//=============================================================================
|
|
// ** BattleManager
|
|
//-----------------------------------------------------------------------------
|
|
// The static class that manages battle progress.
|
|
//=============================================================================
|
|
// Alias Listing
|
|
//=============================================================================
|
|
_TDS_.OmoriBattleSystem.BattleManager_setup = BattleManager.setup;
|
|
_TDS_.OmoriBattleSystem.BattleManager_initMembers = BattleManager.initMembers;
|
|
_TDS_.OmoriBattleSystem.BattleManager_isBusy = BattleManager.isBusy;
|
|
_TDS_.OmoriBattleSystem.BattleManager_startBattle = BattleManager.startBattle;
|
|
_TDS_.OmoriBattleSystem.BattleManager_endBattle = BattleManager.endBattle;
|
|
_TDS_.OmoriBattleSystem.BattleManager_processDefeat = BattleManager.processDefeat;
|
|
_TDS_.OmoriBattleSystem.BattleManager_processAbort = BattleManager.processAbort;
|
|
_TDS_.OmoriBattleSystem.BattleManager_startTurn = BattleManager.startTurn;
|
|
//=============================================================================
|
|
// Class Variables
|
|
//=============================================================================
|
|
// BattleManager._retryObjList = ['gameTemp', 'gameSystem', 'gameTimer', 'gameMessage',
|
|
// 'gameSwitches', 'gameVariables', 'gameSelfSwitches', 'gameSelfVariables', 'gameActors',
|
|
// 'gameParty', 'gameTroop', 'gameMap', 'gamePlayer'];
|
|
BattleManager._retryObjList = ['gameTemp', 'gameSystem', 'gameTimer', 'gameMessage',
|
|
'gameSwitches', 'gameVariables', 'gameSelfSwitches', 'gameSelfVariables', 'gameActors',
|
|
'gameParty', 'gameTroop'];
|
|
|
|
// Set Battle Retried Flag
|
|
BattleManager._battleRetried = false;
|
|
// Battle Retry Setup Settings
|
|
BattleManager._battleRetrySetup = [0, true, true];
|
|
|
|
BattleManager._showDamage = true;
|
|
BattleManager._stressSpeed = 3;
|
|
BattleManager._showLowHpOverlay = true;
|
|
BattleManager._hideLowHpOverlay = false;
|
|
// Final Battle Phae Tracking
|
|
BattleManager._finalBattlePhase = 0;
|
|
//=============================================================================
|
|
// * Setup
|
|
//=============================================================================
|
|
BattleManager.setup = function(troopId, canEscape, canLose) {
|
|
// Save Setup Data
|
|
BattleManager._battleRetrySetup = [troopId, canEscape, canLose];
|
|
// If Battle has not been retried
|
|
if (!BattleManager._battleRetried) {
|
|
// Reset Final Battle Phase Tracking
|
|
BattleManager._finalBattlePhase = 0;
|
|
// Make Battle Retry Data
|
|
this.makeBattleRetryData();
|
|
};
|
|
// Run Original Function
|
|
_TDS_.OmoriBattleSystem.BattleManager_setup.call(this, troopId, canEscape, canLose);
|
|
};
|
|
//=============================================================================
|
|
// * Initialize Members
|
|
//=============================================================================
|
|
BattleManager.initMembers = function() {
|
|
// Run Original Function
|
|
_TDS_.OmoriBattleSystem.BattleManager_initMembers.call(this);
|
|
// Set Actor Command Index
|
|
this._actorCommandIndex = 0;
|
|
// Picture Display Layer
|
|
this._pictureDisplayLayer = 'front';
|
|
// Set hide low HP overlay to false
|
|
this._hideLowHpOverlay = false;
|
|
};
|
|
//=============================================================================
|
|
// * Determine if Busy
|
|
//=============================================================================
|
|
BattleManager.isBusy = function() {
|
|
// If Battle Intro is active return true
|
|
if (this.isBattleIntroActive()) { return true; };
|
|
// Return original function
|
|
return _TDS_.OmoriBattleSystem.BattleManager_isBusy.call(this);
|
|
};
|
|
//=============================================================================
|
|
// * Start Battle
|
|
//=============================================================================
|
|
BattleManager.startBattle = function() {
|
|
// Run Original Function
|
|
_TDS_.OmoriBattleSystem.BattleManager_startBattle.call(this);
|
|
// Increase Stress Count
|
|
$gameParty.stressEnergyCount = 3;
|
|
// Set Default Picture Display Layer
|
|
this.setPictureDisplayLayer('top');
|
|
|
|
// Get Scene
|
|
const scene = SceneManager._scene;
|
|
const spriteset = scene._spriteset;
|
|
// Set Container
|
|
let container = spriteset._pictureContainer;
|
|
// Move Fade Layer to Scene
|
|
scene.addChild(spriteset._fadeSprite);
|
|
};
|
|
//=============================================================================
|
|
// * End Battle
|
|
//=============================================================================
|
|
BattleManager.endBattle = function(result) {
|
|
// Refresh Status
|
|
this.refreshStatus();
|
|
$gameParty.allMembers().forEach(function(actor) {
|
|
actor._hasLeveled = false;
|
|
});
|
|
// Set Hide Low HP overlay flag to true
|
|
this._hideLowHpOverlay = true;
|
|
// Fadeout Battle Music
|
|
if(!BattleManager.isBattleSameOfMapBgm()) {AudioManager.fadeOutBgm(2);}
|
|
AudioManager.fadeOutBgs(2);
|
|
// Fadeout BGS
|
|
AudioManager.fadeOutDangerBgs(1);
|
|
// Run Original Function
|
|
_TDS_.OmoriBattleSystem.BattleManager_endBattle.call(this, result);
|
|
// Stop Using victory face
|
|
$gameParty.allMembers().forEach(function(actor) {
|
|
actor._useVictoryFace = false;
|
|
});
|
|
};
|
|
//=============================================================================
|
|
// * Play Victory ME
|
|
//=============================================================================
|
|
BattleManager.playVictoryMe = function() {
|
|
// Play Victory ME
|
|
AudioManager.playMe($gameSystem.victoryMe());
|
|
// Loop Current ME
|
|
AudioManager.loopCurrentME();
|
|
};
|
|
//=============================================================================
|
|
// * Process defeat
|
|
//=============================================================================
|
|
BattleManager.processDefeat = function() {
|
|
this._logWindow.push('waitFrames', 30);
|
|
this._logWindow.push('showGlobalDefeatMessage');
|
|
// Run Original Function
|
|
_TDS_.OmoriBattleSystem.BattleManager_processDefeat.call(this);
|
|
};
|
|
//=============================================================================
|
|
// * Process Abort
|
|
//=============================================================================
|
|
BattleManager.processAbort = function() {
|
|
// Run Original Function
|
|
_TDS_.OmoriBattleSystem.BattleManager_processAbort.call(this);
|
|
};
|
|
//=============================================================================
|
|
// * Start Turn
|
|
//=============================================================================
|
|
BattleManager.startTurn = function() {
|
|
// Run Original Function
|
|
_TDS_.OmoriBattleSystem.BattleManager_startTurn.call(this);
|
|
// Reset Actor Command Index
|
|
this._actorCommandIndex = 0;
|
|
};
|
|
//=============================================================================
|
|
// * Display Start Messages
|
|
//=============================================================================
|
|
BattleManager.displayStartMessages = function() { };
|
|
//=============================================================================
|
|
// * Display Escape Success Message
|
|
//=============================================================================
|
|
BattleManager.displayEscapeSuccessMessage = function() {
|
|
this._logWindow.push('addText', TextManager.escapeStart.format($gameParty.name()));
|
|
this._logWindow.push('wait');
|
|
};
|
|
//=============================================================================
|
|
// * Display Escape Failure Message
|
|
//=============================================================================
|
|
BattleManager.displayEscapeFailureMessage = function() {
|
|
this._logWindow.push('addText', TextManager.escapeStart.format($gameParty.name()));
|
|
this._logWindow.push('wait');
|
|
this._logWindow.push('addText', '\\.' + TextManager.escapeFailure);
|
|
};
|
|
//=============================================================================
|
|
// * Display Victory
|
|
//=============================================================================
|
|
BattleManager.displayVictoryMessage = function() {
|
|
this._logWindow.push('addText', TextManager.victory.format($gameParty.name()));
|
|
this._logWindow.push('wait');
|
|
this._logWindow.push('waitForInput')
|
|
};
|
|
//=============================================================================
|
|
// * Display Defeat Message
|
|
//=============================================================================
|
|
BattleManager.displayDefeatMessage = function() {
|
|
this._logWindow.push('addText', TextManager.defeat.format($gameParty.name()));
|
|
this._logWindow.push('wait', 60);
|
|
//this._logWindow.push('waitForInput')
|
|
};
|
|
//=============================================================================
|
|
// * Display Exp
|
|
//=============================================================================
|
|
BattleManager.displayExp = function() {
|
|
var exp = this._rewards.exp;
|
|
if (exp > 0) {
|
|
var text = TextManager.obtainExp.format(exp, TextManager.exp);
|
|
this._logWindow.push('addText', '\\.' + text);
|
|
this._logWindow.push('wait');
|
|
this._logWindow.push('waitForInput')
|
|
}
|
|
};
|
|
//=============================================================================
|
|
// * Display Gold
|
|
//=============================================================================
|
|
BattleManager.displayGold = function() {
|
|
var gold = this._rewards.gold;
|
|
if (gold > 0) {
|
|
this._logWindow.push('addText', '\\.' + TextManager.obtainGold.format(gold));
|
|
this._logWindow.push('wait');
|
|
this._logWindow.push('waitForInput')
|
|
}
|
|
};
|
|
//=============================================================================
|
|
// * Display Drop Items
|
|
//=============================================================================
|
|
BattleManager.displayDropItems = function() {
|
|
var items = this._rewards.items;
|
|
if (items.length > 0) {
|
|
$gameMessage.newPage();
|
|
items.forEach(function(item) {
|
|
// $gameMessage.add(TextManager.obtainItem.format(item.name));
|
|
this._logWindow.push('addText', TextManager.obtainItem.format(item.name));
|
|
this._logWindow.push('wait');
|
|
}, this);
|
|
this._logWindow.push('waitForInput')
|
|
}
|
|
};
|
|
//=============================================================================
|
|
// * Gain Experience
|
|
//=============================================================================
|
|
BattleManager.gainExp = function() {
|
|
var exp = this._rewards.exp;
|
|
$gameParty.allMembers().forEach(function(actor) {
|
|
actor.gainExp(exp);
|
|
});
|
|
// Clear Game Message
|
|
$gameMessage.clear();
|
|
|
|
// Go Through Actors
|
|
$gameParty.allMembers().forEach(function(actor) {
|
|
// Go Through Data
|
|
var data = actor._levelUpData;
|
|
// If Data Exists
|
|
if (data) {
|
|
this._logWindow.push('clear');
|
|
this._logWindow.push('playSE', {name: "BA_Happy", volume: 90, pitch: 100, pan: 0});
|
|
this._logWindow.push('addText', TextManager.levelUp.format(actor._name, TextManager.level, data.level));
|
|
this._logWindow.push('wait');
|
|
this._logWindow.push('waitForInput');
|
|
data.skills.forEach(function(skill) {
|
|
this._logWindow.push('addText', TextManager.obtainSkill.format(skill.name));
|
|
this._logWindow.push('wait');
|
|
}, this);
|
|
if (data.skills.length > 0) {
|
|
this._logWindow.push('waitForInput')
|
|
};
|
|
};
|
|
// Delete Actor Level Up Data
|
|
delete actor._levelUpData;
|
|
}, this);
|
|
// Get Last Method
|
|
var lastMethod = this._logWindow._methods[this._logWindow._methods.length-1];
|
|
// If Last Method is not wait for input
|
|
if (lastMethod && lastMethod.name !== 'waitForInput') {
|
|
// if (this._logWindow._methods)
|
|
this._logWindow.push('waitForInput')
|
|
};
|
|
};
|
|
//=============================================================================
|
|
// * Display Start Messages
|
|
//=============================================================================
|
|
BattleManager.setBattleIntro = function(name) {
|
|
// Set Battle Intro
|
|
this._battleIntro = name;
|
|
};
|
|
//=============================================================================
|
|
// * Determine if Battle Intro is active
|
|
//=============================================================================
|
|
BattleManager.isBattleIntroActive = function() { return this._battleIntro; }
|
|
//=============================================================================
|
|
// * Make Battle Retry Data
|
|
//=============================================================================
|
|
BattleManager.makeBattleRetryData = function() {
|
|
// Delete Previous Data
|
|
if (this._battleRetryData) { delete this._battleRetryData; };
|
|
// Initialize Battle Retry Data Object
|
|
this._battleRetryData = {};
|
|
// Get Object List
|
|
let list = BattleManager._retryObjList;
|
|
// Initialize Data Object
|
|
let data = {};
|
|
// Go Through List
|
|
for (let i = 0; i < list.length; i++) {
|
|
// Get Name
|
|
let name = list[i];
|
|
// Get Data Object
|
|
let obj = window['$' + name];
|
|
|
|
data[name] = window['$' + name];
|
|
// // Make Deep copy of the object
|
|
// this._battleRetryData[name] = JsonEx.makeDeepCopy(obj);
|
|
};
|
|
// Stringify Data
|
|
this._battleRetryData = JsonEx.stringify(data);
|
|
};
|
|
//=============================================================================
|
|
// * Retry Processing
|
|
//=============================================================================
|
|
BattleManager.processRetry = function() {
|
|
// Get Data
|
|
let data = JsonEx.parse(this._battleRetryData);
|
|
// If Data Exists
|
|
if (data) {
|
|
// Go Through List of Entries in data
|
|
for (let [key, value] of Object.entries(data)) {
|
|
// Set Data
|
|
window['$' + key] = value;
|
|
};
|
|
};
|
|
// return;
|
|
BattleManager._battleRetried = true;
|
|
// Set Final Battle Phase value
|
|
$gameVariables.setValue(1220, BattleManager._finalBattlePhase);
|
|
this.setup(...BattleManager._battleRetrySetup);
|
|
SceneManager.goto(Scene_Battle);
|
|
};
|
|
//=============================================================================
|
|
// * Get Actor Input Order
|
|
//=============================================================================
|
|
BattleManager.getActorInputOrder = function() {
|
|
let members = $gameParty.members();
|
|
let order = $gameSwitches.value(7) ? [8, 10, 9, 11] : [1, 2, 3, 4];
|
|
let list = []
|
|
// Go through order
|
|
for (let i = 0; i < order.length; i++) {
|
|
let index = members.indexOf($gameActors.actor(order[i]));
|
|
if (index > -1 && members[index].isAlive() && members[index].isBattleMember()) { list.push(index); }
|
|
}
|
|
// Return List
|
|
return list;
|
|
};
|
|
//=============================================================================
|
|
// * Select Next Command
|
|
//=============================================================================
|
|
BattleManager.selectNextCommand = function() {
|
|
if (this._actorCommandIndex < 0) { this._actorCommandIndex = 0;}
|
|
// Set Index List
|
|
let indexList = this.getActorInputOrder();
|
|
// Set Actor Index
|
|
this._actorIndex = indexList[this._actorCommandIndex];
|
|
do {
|
|
if (!this.actor() || !this.actor().selectNextCommand()) {
|
|
this.changeActor(indexList[this._actorCommandIndex++], 'waiting');
|
|
if (this._actorCommandIndex > indexList.length) {
|
|
this.startTurn();
|
|
break;
|
|
};
|
|
};
|
|
} while (this.actor() && !this.actor().canInput());
|
|
};
|
|
//=============================================================================
|
|
// * Select Previous Command
|
|
//=============================================================================
|
|
BattleManager.selectPreviousCommand = function() {
|
|
// Decrease Actor Command Index
|
|
this._actorCommandIndex--
|
|
// Set Index List
|
|
let indexList = this.getActorInputOrder();
|
|
// Set Actor Index
|
|
this._actorIndex = indexList[this._actorCommandIndex];
|
|
do {
|
|
if (!this.actor() || !this.actor().selectPreviousCommand()) {
|
|
// Get Actor
|
|
let actor = this.actor();
|
|
// If Actor exists
|
|
if (actor) {
|
|
// Get Current Action
|
|
let currentAction = actor.currentAction();
|
|
// Clear Current Action if it exists
|
|
if (currentAction) { currentAction.clear(); };
|
|
};
|
|
this.changeActor(indexList[this._actorCommandIndex-1], 'undecided');
|
|
// console.log(this._actorCommandIndex, this._actorIndex)
|
|
if(!!this.actor() && !this.actor().canInput()) {this._actorCommandIndex--;}
|
|
if (this._actorCommandIndex <= 0) {
|
|
this._actorIndex = -1;
|
|
this._actorCommandIndex = 0;
|
|
return;
|
|
}
|
|
}
|
|
} while (this.actor() && !this.actor().canInput());
|
|
this.clearInputtingAction();
|
|
};
|
|
//=============================================================================
|
|
// * Set Picture Display Layer
|
|
//=============================================================================
|
|
BattleManager.setPictureDisplayLayer = function(layer = 'front') {
|
|
// Set Picture Display Layer
|
|
this._pictureDisplayLayer = layer.toLowerCase();
|
|
// Get Scene
|
|
const scene = SceneManager._scene;
|
|
const spriteset = scene._spriteset;
|
|
// Set Container
|
|
let container = spriteset._pictureContainer;
|
|
// Display Layer Switch Case
|
|
switch (this._pictureDisplayLayer) {
|
|
case 'top':
|
|
// Add Container to the battle scene
|
|
scene.addChild(this._spriteset._pictureContainer);
|
|
break;
|
|
case 'front':
|
|
// Add child to original position
|
|
spriteset.addChildAt(container, 2);
|
|
break;
|
|
case 'back':
|
|
// Add child behind enemy sprites
|
|
spriteset._battleField.addChildAt(container, 0);
|
|
break;
|
|
}
|
|
};
|
|
//=============================================================================
|
|
// * Start Fade Out
|
|
//=============================================================================
|
|
BattleManager.startFadeOut = function(duration, white) {
|
|
// Start Fade Out
|
|
SceneManager._scene.startFadeOut(duration, white);
|
|
};
|
|
//=============================================================================
|
|
// * Start Fade In
|
|
//=============================================================================
|
|
BattleManager.startFadeIn = function(duration, white) {
|
|
// Start Fade Out
|
|
SceneManager._scene.startFadeIn(duration, white);
|
|
};
|
|
|
|
|
|
BattleManager.setStressSpeed = function(speed) {
|
|
this._stressSpeed = speed;
|
|
};
|
|
|
|
BattleManager.setShowHpOverlay = function(show) {
|
|
this._showLowHpOverlay = show;
|
|
};
|
|
|
|
|
|
|
|
//=============================================================================
|
|
// ** Game_Enemy
|
|
//-----------------------------------------------------------------------------
|
|
// The game object class for an enemy.
|
|
//=============================================================================
|
|
// * Determine if Enemy can be scanned
|
|
//=============================================================================
|
|
Game_Enemy.prototype.canScan = function() {
|
|
// Get Scan Immunity
|
|
var scan = this.enemy().meta.ScanImmunity;
|
|
// Return Scan State
|
|
return scan === undefined ? true : false;
|
|
};
|
|
|
|
|
|
|
|
//=============================================================================
|
|
// ** Game_Action
|
|
//-----------------------------------------------------------------------------
|
|
// The game object class for a battle action.
|
|
//=============================================================================
|
|
// Alias Listing
|
|
//=============================================================================
|
|
_TDS_.OmoriBattleSystem.Game_Action_apply = Game_Action.prototype.apply;
|
|
_TDS_.OmoriBattleSystem.Game_Action_clear = Game_Action.prototype.clear;
|
|
_TDS_.OmoriBattleSystem.Game_Action_isForOpponent = Game_Action.prototype.isForOpponent;
|
|
_TDS_.OmoriBattleSystem.Game_Action_isForFriend = Game_Action.prototype.isForFriend;
|
|
_TDS_.OmoriBattleSystem.Game_Action_needsSelection = Game_Action.prototype.needsSelection;
|
|
_TDS_.OmoriBattleSystem.Game_Action_makeTargets = Game_Action.prototype.makeTargets;
|
|
//=============================================================================
|
|
// * Apply
|
|
//=============================================================================
|
|
Game_Action.prototype.clear = function() {
|
|
// Run Original Function
|
|
_TDS_.OmoriBattleSystem.Game_Action_clear.call(this);
|
|
// Clear Target Group (0: Party, 1: Enemies)
|
|
this._targetGroup = null;
|
|
};
|
|
//=============================================================================
|
|
// * Set Target Group
|
|
//=============================================================================
|
|
Game_Action.prototype.setTargetGroup = function(index) { this._targetGroup = index; };
|
|
//=============================================================================
|
|
// * Determine if action can change target groups
|
|
//=============================================================================
|
|
Game_Action.prototype.canChangeTargetGroups = function() {
|
|
// Get Item
|
|
let item = this.item();
|
|
// Return true if item has note tags
|
|
if (item && item.meta['Enemy or Actor Select']) { return true; };
|
|
// Return false by default
|
|
return false;
|
|
};
|
|
|
|
//=============================================================================
|
|
// * Check if the user is targettable;
|
|
//=============================================================================
|
|
|
|
Game_Action.prototype.notTargetUser = function() {
|
|
const item = this.item();
|
|
if(!!item && !!item.meta["Not User"]) {return true;}
|
|
return false;
|
|
}
|
|
|
|
//=============================================================================
|
|
// * Determine if Action is for opponent
|
|
//=============================================================================
|
|
Game_Action.prototype.isForOpponent = function() {
|
|
if (this._targetGroup === 1) { return true; };
|
|
// Return Original Function
|
|
return _TDS_.OmoriBattleSystem.Game_Action_isForOpponent.call(this);
|
|
};
|
|
//=============================================================================
|
|
// * Determine if Action is for Friend
|
|
//=============================================================================
|
|
Game_Action.prototype.isForFriend = function() {
|
|
if (this._targetGroup === 0) { return true; };
|
|
// Return Original Function
|
|
return _TDS_.OmoriBattleSystem.Game_Action_isForFriend.call(this);
|
|
};
|
|
//=============================================================================
|
|
// * Determine if Action needs Selection
|
|
//=============================================================================
|
|
Game_Action.prototype.needsSelection = function() {
|
|
// If Action is for everybody return false
|
|
if (this.isForEverybody()) { return false; };
|
|
// Return Original Function
|
|
return _TDS_.OmoriBattleSystem.Game_Action_needsSelection.call(this);
|
|
};
|
|
//=============================================================================
|
|
// * Determine if Action is for everybody
|
|
//=============================================================================
|
|
Game_Action.prototype.isForEverybody = function() {
|
|
// Get Item
|
|
let item = this.item();
|
|
// If item exist
|
|
if (item) {
|
|
if (item.meta.Target && item.meta.Target.trim().toLowerCase() === 'everybody') {
|
|
return true;
|
|
}
|
|
};
|
|
// Return false by default
|
|
return false;
|
|
};
|
|
//=============================================================================
|
|
// * Make Targets
|
|
//=============================================================================
|
|
Game_Action.prototype.makeTargets = function() {
|
|
// If action is for everyone
|
|
if (this.isForEverybody()) {
|
|
// Initialize Target Array
|
|
let targets = this.friendsUnit().aliveMembers().concat(this.opponentsUnit().aliveMembers());
|
|
// Return Targets
|
|
return this.repeatTargets(targets);
|
|
};
|
|
// Return Original Function
|
|
return _TDS_.OmoriBattleSystem.Game_Action_makeTargets.call(this);
|
|
};
|
|
//=============================================================================
|
|
// * Apply
|
|
//=============================================================================
|
|
Game_Action.prototype.apply = function(target) {
|
|
// Run Original Function
|
|
_TDS_.OmoriBattleSystem.Game_Action_apply.call(this, target);
|
|
// Get Result
|
|
let result = target.result();
|
|
// Check iff hit
|
|
let hit = result.isHit();
|
|
|
|
// If Hit
|
|
if (hit) {
|
|
// Get Element Rate
|
|
let elementRate = this.calcElementRate(target);
|
|
|
|
// Set elemental results
|
|
result.elementStrong = elementRate > 1;
|
|
result.elementWeak = elementRate < 1;
|
|
|
|
console.log(this.subject().name(), elementRate);
|
|
};
|
|
|
|
|
|
// If Target is an enemy
|
|
if (target.isEnemy()) {
|
|
// Get Item
|
|
let item = this.item();
|
|
// If result was a hit
|
|
if (hit) {
|
|
// If scanning enemy
|
|
if (item && item.meta.ScanEnemy && target.canScan()) {
|
|
// Scan Enemy
|
|
$gameParty.addScannedEnemy(target.enemyId());
|
|
};
|
|
};
|
|
} else {
|
|
// If result was a hit
|
|
if (hit) {
|
|
// If HP damage is more than 0
|
|
if (result.hpDamage > 0) {
|
|
// Increase Stress Count
|
|
$gameParty.stressEnergyCount++;
|
|
};
|
|
};
|
|
};
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
//=============================================================================
|
|
// ** Game_ActionResult
|
|
//-----------------------------------------------------------------------------
|
|
// The game object class for a result of a battle action. For convinience, all
|
|
// member variables in this class are public.
|
|
//=============================================================================
|
|
// Alias Listing
|
|
//=============================================================================
|
|
_TDS_.OmoriBattleSystem.Game_ActionResult_clear = Game_ActionResult.prototype.clear;
|
|
//=============================================================================
|
|
// * Clear
|
|
//=============================================================================
|
|
Game_ActionResult.prototype.clear = function() {
|
|
// Run Original Function
|
|
_TDS_.OmoriBattleSystem.Game_ActionResult_clear.call(this);
|
|
// Set Elemental Strong & Weak flags
|
|
this.elementStrong = false;
|
|
this.elementWeak = false;
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//=============================================================================
|
|
// ** Scene_Battle
|
|
//-----------------------------------------------------------------------------
|
|
// The scene class of the battle screen.
|
|
//=============================================================================
|
|
// Alias Listing
|
|
//=============================================================================
|
|
|
|
|
|
_TDS_.OmoriBattleSystem.Scene_Battle_initialize = Scene_Battle.prototype.initialize;
|
|
_TDS_.OmoriBattleSystem.Scene_Battle_create = Scene_Battle.prototype.create;
|
|
|
|
|
|
_TDS_.OmoriBattleSystem.Scene_Battle_start = Scene_Battle.prototype.start;
|
|
_TDS_.OmoriBattleSystem.Scene_Battle_update = Scene_Battle.prototype.update
|
|
_TDS_.OmoriBattleSystem.Scene_Battle_createDisplayObjects = Scene_Battle.prototype.createDisplayObjects;
|
|
_TDS_.OmoriBattleSystem.Scene_Battle_createAllWindows = Scene_Battle.prototype.createAllWindows;
|
|
_TDS_.OmoriBattleSystem.Scene_Battle_createActorCommandWindow = Scene_Battle.prototype.createActorCommandWindow
|
|
_TDS_.OmoriBattleSystem.Scene_Battle_createStatusWindow = Scene_Battle.prototype.createStatusWindow;
|
|
_TDS_.OmoriBattleSystem.Scene_Battle_createActorWindow = Scene_Battle.prototype.createActorWindow;
|
|
_TDS_.OmoriBattleSystem.Scene_Battle_createEnemyWindow = Scene_Battle.prototype.createEnemyWindow;
|
|
_TDS_.OmoriBattleSystem.Scene_Battle_commandFight = Scene_Battle.prototype.commandFight;
|
|
_TDS_.OmoriBattleSystem.Scene_Battle_commandEscape = Scene_Battle.prototype.commandEscape;
|
|
_TDS_.OmoriBattleSystem.Scene_Battle_selectActorSelection = Scene_Battle.prototype.selectActorSelection;
|
|
_TDS_.OmoriBattleSystem.Scene_Battle_onActorOk = Scene_Battle.prototype.onActorOk;
|
|
_TDS_.OmoriBattleSystem.Scene_Battle_onActorCancel = Scene_Battle.prototype.onActorCancel;
|
|
|
|
|
|
_TDS_.OmoriBattleSystem.Scene_Battle_selectEnemySelection = Scene_Battle.prototype.selectEnemySelection;
|
|
_TDS_.OmoriBattleSystem.Scene_Battle_onEnemyOk = Scene_Battle.prototype.onEnemyOk;
|
|
_TDS_.OmoriBattleSystem.Scene_Battle_onEnemyCancel = Scene_Battle.prototype.onEnemyCancel;
|
|
|
|
|
|
|
|
_TDS_.OmoriBattleSystem.Scene_Battle_startPartyCommandSelection = Scene_Battle.prototype.startPartyCommandSelection;
|
|
_TDS_.OmoriBattleSystem.Scene_Battle_startActorCommandSelection = Scene_Battle.prototype.startActorCommandSelection;
|
|
|
|
|
|
_TDS_.OmoriBattleSystem.Scene_Battle_commandItem = Scene_Battle.prototype.commandItem;
|
|
_TDS_.OmoriBattleSystem.Scene_Battle_onItemCancel = Scene_Battle.prototype.onItemCancel;
|
|
_TDS_.OmoriBattleSystem.Scene_Battle_onItemOk = Scene_Battle.prototype.onItemOk;
|
|
|
|
|
|
_TDS_.OmoriBattleSystem.Scene_Battle_commandSkill = Scene_Battle.prototype.commandSkill;
|
|
_TDS_.OmoriBattleSystem.Scene_Battle_onSkillOk = Scene_Battle.prototype.onSkillOk;
|
|
_TDS_.OmoriBattleSystem.Scene_Battle_onSkillCancel = Scene_Battle.prototype.onSkillCancel;
|
|
|
|
_TDS_.OmoriBattleSystem.Scene_Battle_selectNextCommand = Scene_Battle.prototype.selectNextCommand;
|
|
_TDS_.OmoriBattleSystem.Scene_Battle_endCommandSelection = Scene_Battle.prototype.endCommandSelection;
|
|
//=============================================================================
|
|
// * Object Initialization
|
|
//=============================================================================
|
|
Scene_Battle.prototype.initialize = function() {
|
|
// Set Image reservation Id
|
|
this._imageReservationId = 'battle';
|
|
// Create Movement Object
|
|
this.move = new Object_Movement();
|
|
// Create Main Tone Filter
|
|
this.createMainToneFilter();
|
|
// Run Original Function
|
|
_TDS_.OmoriBattleSystem.Scene_Battle_initialize.call(this);
|
|
};
|
|
//=============================================================================
|
|
// * Start Battle
|
|
//=============================================================================
|
|
Scene_Battle.prototype.start = function() {
|
|
// Run Original Function
|
|
_TDS_.OmoriBattleSystem.Scene_Battle_start.call(this);
|
|
// Start Fade in
|
|
// Fix for Party Command Window
|
|
//this.startFadeIn(this.fadeSpeed(), $gameSwitches.value(369));
|
|
};
|
|
//=============================================================================
|
|
// * Create Fade Sprite
|
|
//=============================================================================
|
|
Scene_Battle.prototype.createFadeSprite = function(white) {
|
|
// Run Original Function
|
|
Scene_Base.prototype.createFadeSprite.call(this);
|
|
// If fade sprite exists move it to the top
|
|
if (this._fadeSprite) { this.addChild(this._fadeSprite); };
|
|
};
|
|
//=============================================================================
|
|
// * Create
|
|
//=============================================================================
|
|
Scene_Battle.prototype.create = function() {
|
|
if (BattleManager._battleRetried) {
|
|
BattleManager._waitingForRetryVideo = BattleManager._isFinalBattle;
|
|
this._retryFadeInAnim = 20;
|
|
this._currentRetryFadeInAnim = this._retryFadeInAnim;
|
|
$gameScreen.startFadeOut(1);
|
|
_TDS_.OmoriBattleSystem.Scene_Battle_create.call(this);
|
|
this._stressBar.opacity = 0;
|
|
// this._partyCommandWindow._commandSprites.forEach(function(sprite) {
|
|
// sprite.opacity = 0;
|
|
// });
|
|
this._helpWindow.opacity = 255;
|
|
this._logWindow.opacity = 255;
|
|
this._logWindow.visible = true;
|
|
this._partyCommandWindow.opacity = 0;
|
|
this._actorWindow.opacity = 255;
|
|
this._faceWindowsContainer.opacity = 255;
|
|
this._scrollTextWindow.opacity = 255;
|
|
// this._partyCommandWindow._customCursorRectSpriteContainer.opacity = 0;
|
|
} else {
|
|
_TDS_.OmoriBattleSystem.Scene_Battle_create.call(this);
|
|
}
|
|
};
|
|
//=============================================================================
|
|
// * Initialize Atlas Lists
|
|
//=============================================================================
|
|
Scene_Battle.prototype.initAtlastLists = function() {
|
|
// Run Original Function
|
|
Scene_Base.prototype.initAtlastLists.call(this);
|
|
// Add Required Atlas
|
|
this.addRequiredAtlas('battleATLAS');
|
|
};
|
|
//=============================================================================
|
|
// * Load Reserved Bitmaps
|
|
//=============================================================================
|
|
Scene_Battle.prototype.loadReservedBitmaps = function() {
|
|
// Run Original Function
|
|
Scene_Base.prototype.loadReservedBitmaps.call(this);
|
|
// Load Input Icons
|
|
ImageManager.loadInputIcons();
|
|
// Reserve System Images
|
|
ImageManager.reserveSystem('enemy_box', 0, this._imageReservationId);
|
|
ImageManager.reserveSystem('enemy_box_gradients', 0, this._imageReservationId);
|
|
ImageManager.reserveSystem('hp_icon', 0, this._imageReservationId);
|
|
};
|
|
//=============================================================================
|
|
// * Frame Update
|
|
//=============================================================================
|
|
Scene_Battle.prototype.update = function() {
|
|
// Run Original Function
|
|
_TDS_.OmoriBattleSystem.Scene_Battle_update.call(this);
|
|
|
|
|
|
|
|
if (this._currentRetryFadeInAnim >= 0) {
|
|
if (!BattleManager._waitingForRetryVideo) {
|
|
$gameScreen.startFadeIn(this._retryFadeInAnim);
|
|
var opacityPerUpdate = 255 / this._retryFadeInAnim;
|
|
this._currentRetryFadeInAnim--;
|
|
|
|
this._stressBar.opacity += opacityPerUpdate;
|
|
this._partyCommandWindow._commandSprites.forEach(function(sprite) {
|
|
sprite.opacity += opacityPerUpdate;
|
|
});
|
|
this._helpWindow.opacity += opacityPerUpdate;
|
|
this._logWindow.opacity += opacityPerUpdate;
|
|
this._logWindow.visible = true;
|
|
//this._partyCommandWindow.opacity += opacityPerUpdate;
|
|
this._actorWindow.opacity += opacityPerUpdate;
|
|
this._faceWindowsContainer.opacity += opacityPerUpdate;
|
|
this._scrollTextWindow.opacity += opacityPerUpdate;
|
|
this._partyCommandWindow._customCursorRectSpriteContainer.opacity += opacityPerUpdate;
|
|
BattleManager._battleRetried = false;
|
|
}
|
|
}
|
|
// Update Movement Object
|
|
this.move.update();
|
|
// Update Main Tone Filter
|
|
this.updateMainToneFilter();
|
|
};
|
|
//=============================================================================
|
|
// * Create Main Tone Filter
|
|
//=============================================================================
|
|
Scene_Battle.prototype.createMainToneFilter = function() {
|
|
// Using Tone Filter Flag
|
|
this._usingToneFilter = false;
|
|
// Main Status Tone
|
|
this._mainStatusTone = [0, 0, 0, 0];
|
|
// Create Main Status Filter
|
|
this._mainStatusToneFilter = new ToneFilter();
|
|
// Adjust Tone Filter
|
|
this._mainStatusToneFilter.adjustTone(this._mainStatusTone[0], this._mainStatusTone[1], this._mainStatusTone[2]);
|
|
this._mainStatusToneFilter.adjustSaturation(-this._mainStatusTone[3]);
|
|
|
|
// this._stressBar.filters = [this._mainStatusToneFilter]
|
|
// this._logWindow.filters = [this._mainStatusToneFilter]
|
|
// this._statusWindow.filters = [this._mainStatusToneFilter]
|
|
// this._faceWindowsContainer.filters = [this._mainStatusToneFilter]
|
|
// this._logWindow._scrollTextSprite.filters = [this._mainStatusToneFilter]
|
|
// this._helpWindow.filters = [this._mainStatusToneFilter]
|
|
|
|
|
|
// this._mainStatusContainer.filters = [this._mainStatusToneFilter];
|
|
// this._mainStatusToneFilter.filterArea = new Rectangle(-margin, -margin, width, height);
|
|
|
|
// this._mainStatusContainer.setBlendColor([255, 255, 0, 255])
|
|
|
|
// var mainStatusList = [this._logWindow, this._stressBar];
|
|
|
|
// for (var i = 0; i < mainStatusList.length; i++) {
|
|
// var obj = mainStatusList[i];
|
|
// obj.filters = [this._mainStatusToneFilter]
|
|
// }
|
|
|
|
// this._statusWindow.visible = false;
|
|
// this._partyCommandWindow.visible = false;
|
|
// this._actorCommandWindow.visible = false
|
|
};
|
|
//=============================================================================
|
|
// * Update Main Tone Filter
|
|
//=============================================================================
|
|
Scene_Battle.prototype.updateMainToneFilter = function() {
|
|
// Get Message Busy Flag
|
|
var messageBusy = $gameMessage.isBusy();
|
|
var isFilterNotNeededBattle = [891,444,451,134,135,136].contains($gameTroop._troopId);
|
|
// If Not using tone filter and message is busy
|
|
if (!this._usingToneFilter && messageBusy && !isFilterNotNeededBattle) {
|
|
// Set Using Tone filter flag
|
|
this._usingToneFilter = true;
|
|
// Get Main Status Objects
|
|
var objects = [this._stressBar, this._faceWindowsContainer, this._logWindow._scrollTextSprite, this._helpWindow]
|
|
// Set Main Status Objects Filters
|
|
for (var i = 0; i < objects.length; i++) { objects[i].filters = [this._mainStatusToneFilter]; };
|
|
};
|
|
// If Using Tone filter
|
|
if (this._usingToneFilter) {
|
|
// Get Rate
|
|
var rate = this._messageWindow.openness / 255;
|
|
var tone = -100 * rate;
|
|
// Set Main Status Tone
|
|
this._mainStatusTone[0] = tone;
|
|
this._mainStatusTone[1] = tone;
|
|
this._mainStatusTone[2] = tone;
|
|
// Set Main Status Tone Filter Tone
|
|
this._mainStatusToneFilter.reset();
|
|
this._mainStatusToneFilter.adjustTone(this._mainStatusTone[0], this._mainStatusTone[1], this._mainStatusTone[2]);
|
|
this._mainStatusToneFilter.adjustSaturation(-this._mainStatusTone[3]);
|
|
// If rate is 0 and message is not busy
|
|
if (rate === 0 && !messageBusy) {
|
|
// Set Using filter flag to false
|
|
this._usingToneFilter = false;
|
|
// Get Main Status Objects
|
|
var objects = [this._stressBar, this._faceWindowsContainer, this._logWindow._scrollTextSprite, this._helpWindow]
|
|
// Clear Main Status Objects Filters
|
|
for (var i = 0; i < objects.length; i++) { objects[i].filters = [this._spriteset.getToneFilter()] };
|
|
};
|
|
};
|
|
};
|
|
//=============================================================================
|
|
// * Create All Windows
|
|
//=============================================================================
|
|
Scene_Battle.prototype.createAllWindows = function() {
|
|
|
|
|
|
// Run Orignal Function
|
|
_TDS_.OmoriBattleSystem.Scene_Battle_createAllWindows.call(this);
|
|
|
|
this._partyCommandWindow.x = 140
|
|
this._partyCommandWindow.y = Graphics.height //- 124;
|
|
this._actorCommandWindow.x = 140;
|
|
this._actorCommandWindow.y = Graphics.height //- 124;
|
|
|
|
|
|
// Create Stress Bar
|
|
this.createStressBar();
|
|
|
|
|
|
// MAKE A NEW SPRITE CLASS THAT HANDLES THE BORDER EFFECT
|
|
// AND TRACKS THINGS ASYNCRONOUSLY.
|
|
|
|
var bitmap = new Bitmap(Graphics.width, Graphics.height);
|
|
// bitmap.fillAll('rgba(255, 0, 0, 0.8)');
|
|
|
|
|
|
// Create Low HP Overlay Sprite
|
|
this._lowHpOverlay = new Sprite_BattleLowHpOverlay();
|
|
this.addChild(this._lowHpOverlay)
|
|
|
|
|
|
// this._windowTest = new Window_Base(0, 0, 400, 400);
|
|
// this.addChild(this._windowTest)
|
|
|
|
|
|
// this._battlerIntroBackground = new Sprite(new Bitmap(Graphics.width, Graphics.height));
|
|
// this._battlerIntroBackground.bitmap.fillAll('rgba(255, 255, 255, 1)')
|
|
// this.addChildAt(this._battlerIntroBackground, 1);
|
|
|
|
|
|
// this._battlerIntroContainer = new Sprite(ImageManager.loadAtlas('battle_omori_intro'))
|
|
// this._battlerIntroContainer.x = (Graphics.width / 2) - 100;
|
|
// this._battlerIntroContainer.y = (Graphics.height / 2) + 22;
|
|
|
|
// this._battlerIntroContainer.setFrame(0, 0, 375, 435)
|
|
// this._battlerIntroContainer.anchor.set(0.5, 0.5)
|
|
// this.addChildAt(this._battlerIntroContainer, 2);
|
|
|
|
|
|
};
|
|
//=============================================================================
|
|
// * Update Status Window
|
|
//=============================================================================
|
|
Scene_Battle.prototype.updateStatusWindow = function() { };
|
|
//=============================================================================
|
|
// * Update Window Position
|
|
//=============================================================================
|
|
Scene_Battle.prototype.updateWindowPositions = function() { };
|
|
//=============================================================================
|
|
// * Create Display Objects
|
|
//=============================================================================
|
|
Scene_Battle.prototype.createDisplayObjects = function() {
|
|
// Run Original Function
|
|
_TDS_.OmoriBattleSystem.Scene_Battle_createDisplayObjects.call(this);
|
|
// Create Battle Intro container
|
|
this.createBattleIntroContainer();
|
|
};
|
|
//=============================================================================
|
|
// * Create Battle Intro Container
|
|
//=============================================================================
|
|
Scene_Battle.prototype.createBattleIntroContainer = function() {
|
|
// Create Battle Intro container Sprite
|
|
this._battleIntroContainer = new Sprite_BattleIntroContainer(BattleManager._battleIntro);
|
|
this.addChild(this._battleIntroContainer);
|
|
};
|
|
//=============================================================================
|
|
// * Create Actor Command Window
|
|
//=============================================================================
|
|
Scene_Battle.prototype.createActorCommandWindow = function() {
|
|
// Run Original Function
|
|
_TDS_.OmoriBattleSystem.Scene_Battle_createActorCommandWindow.call(this);
|
|
this._actorCommandWindow.setHandler('guard', this.commandItem.bind(this, 'snacks'));
|
|
this._actorCommandWindow.setHandler('item', this.commandItem.bind(this, 'toys'));
|
|
};
|
|
//=============================================================================
|
|
// * Create Status Window
|
|
//=============================================================================
|
|
Scene_Battle.prototype.createStatusWindow = function() {
|
|
// Run Original Function
|
|
_TDS_.OmoriBattleSystem.Scene_Battle_createStatusWindow.call(this);
|
|
// Create Face Windows
|
|
this.createFaceWindows();
|
|
};
|
|
//=============================================================================
|
|
// * Create Actor Window
|
|
//=============================================================================
|
|
Scene_Battle.prototype.createActorWindow = function() {
|
|
// Run Original Function
|
|
_TDS_.OmoriBattleSystem.Scene_Battle_createActorWindow.call(this);
|
|
// Set Face Windows
|
|
this._actorWindow._faceWindows = this._faceWindows;
|
|
this._actorWindow.visible = false;
|
|
// Set Group Target Swap
|
|
this._actorWindow._groupTargetSwap = this.groupTargetSwap.bind(this, 0);
|
|
};
|
|
//=============================================================================
|
|
// * Create Actor Window
|
|
//=============================================================================
|
|
Scene_Battle.prototype.createEnemyWindow = function() {
|
|
// Run Original Function
|
|
_TDS_.OmoriBattleSystem.Scene_Battle_createEnemyWindow.call(this);
|
|
// Set Group Target Swap
|
|
this._enemyWindow._groupTargetSwap = this.groupTargetSwap.bind(this, 1);
|
|
this._enemyWindow.y = Graphics.height;
|
|
};
|
|
//=============================================================================
|
|
// * Create Actor Window
|
|
//=============================================================================
|
|
Scene_Battle.prototype.groupTargetSwap = function(type) {
|
|
// Get Action
|
|
let action = BattleManager.inputtingAction();
|
|
// Clear Input
|
|
Input.update();
|
|
// If Action Exists
|
|
if (action && action.canChangeTargetGroups()) {
|
|
if (type === 0) {
|
|
action.setTargetGroup(1);
|
|
this._actorWindow.deselect();
|
|
this._actorWindow.deactivate();
|
|
this.hidePartyCommand();
|
|
this.hideItemWindow();
|
|
this.hideSkillWindow();
|
|
this._statusWindow.select(BattleManager.actor().battleStatusIndex());
|
|
this.selectEnemySelection()
|
|
} else {
|
|
action.setTargetGroup(0);
|
|
this._enemyWindow.deselect();
|
|
this._enemyWindow.deactivate();
|
|
// this._actorWindow.deselect();
|
|
this._actorWindow.activate();
|
|
this.selectActorSelection();
|
|
};
|
|
};
|
|
}
|
|
//=============================================================================
|
|
// * Create Help Window
|
|
//=============================================================================
|
|
Scene_Battle.prototype.createHelpWindow = function() {
|
|
// Create Help Window
|
|
this._helpWindow = new Window_OmoMenuHelp(360, 93);
|
|
this._helpWindow.x = 140;
|
|
this._helpWindow.y = -4
|
|
this._helpWindow._iconRate = 0.75;
|
|
this.addChild(this._helpWindow);
|
|
};
|
|
//=============================================================================
|
|
// * Create Skill Window
|
|
//=============================================================================
|
|
Scene_Battle.prototype.createSkillWindow = function() {
|
|
var wy = this._helpWindow.y + this._helpWindow.height;
|
|
var wh = this._statusWindow.y - wy;
|
|
this._skillWindow = new Window_BattleSkill(140, Graphics.height + 30, 360, 100);
|
|
this._skillWindow.setHelpWindow(this._helpWindow);
|
|
this._skillWindow.setHandler('ok', this.onSkillOk.bind(this));
|
|
this._skillWindow.setHandler('cancel', this.onSkillCancel.bind(this));
|
|
this.addWindow(this._skillWindow);
|
|
};
|
|
//=============================================================================
|
|
// * Create Item Window
|
|
//=============================================================================
|
|
Scene_Battle.prototype.createItemWindow = function() {
|
|
this._itemWindow = new Window_BattleItem(140, Graphics.height + 30, 360, 100);
|
|
this._itemWindow.setHelpWindow(this._helpWindow);
|
|
this._itemWindow.setHandler('ok', this.onItemOk.bind(this));
|
|
this._itemWindow.setHandler('cancel', this.onItemCancel.bind(this));
|
|
this.addWindow(this._itemWindow);
|
|
};
|
|
//=============================================================================
|
|
// * Command Fight
|
|
//=============================================================================
|
|
Scene_Battle.prototype.commandFight = function() {
|
|
if ($gameVariables.value(22) === 5) {
|
|
BattleManager.selectNextCommand();
|
|
let skill = $dataSkills[1];
|
|
BattleManager.inputtingAction().setSkill(skill.id);
|
|
BattleManager.actor().setLastBattleSkill(skill);
|
|
this.selectNextCommand();
|
|
return;
|
|
};
|
|
// Run Original Function
|
|
_TDS_.OmoriBattleSystem.Scene_Battle_commandFight.call(this);
|
|
};
|
|
//=============================================================================
|
|
// * Command Escape
|
|
//=============================================================================
|
|
Scene_Battle.prototype.commandEscape = function() {
|
|
// Run Original Function
|
|
_TDS_.OmoriBattleSystem.Scene_Battle_commandEscape.call(this);
|
|
|
|
|
|
// Hide Party Command
|
|
this.hidePartyCommand();
|
|
};
|
|
//=============================================================================
|
|
// * Select Actor Selection
|
|
//=============================================================================
|
|
Scene_Battle.prototype.selectActorSelection = function() {
|
|
// Run Original Function
|
|
_TDS_.OmoriBattleSystem.Scene_Battle_selectActorSelection.call(this);
|
|
// Select Selected Status Window Index
|
|
this._actorWindow.select(this._statusWindow.index());
|
|
};
|
|
//=============================================================================
|
|
// * On Actor Ok
|
|
//=============================================================================
|
|
Scene_Battle.prototype.onActorOk = function() {
|
|
// Get Action
|
|
let action = BattleManager.inputtingAction();
|
|
// Get Target
|
|
let target = $gameParty.memberAtStatusIndex(this._actorWindow.index());
|
|
// Get Actor Index
|
|
let actorIndex = target.index();
|
|
// If Action is for dead friend and target is not dead
|
|
if (action.isForDeadFriend() && !target.isDead()) {
|
|
SoundManager.playBuzzer();
|
|
this._actorWindow.activate()
|
|
return
|
|
};
|
|
if(action.notTargetUser() && BattleManager.actor().name() === target.name()) {
|
|
SoundManager.playBuzzer();
|
|
this._actorWindow.activate();
|
|
return;
|
|
}
|
|
// Run Original Function
|
|
_TDS_.OmoriBattleSystem.Scene_Battle_onActorOk.call(this);
|
|
// Set Target
|
|
action.setTarget(actorIndex);
|
|
this.hideItemWindow();
|
|
this.hideSkillWindow();
|
|
this._skillWindow.visible = true;
|
|
this._itemWindow.visible = true;
|
|
this._helpWindow.hide();
|
|
if(!BattleManager.actor()) {this._logWindow.clear();}
|
|
};
|
|
//=============================================================================
|
|
// * On Actor Cancel
|
|
//=============================================================================
|
|
Scene_Battle.prototype.onActorCancel = function() {
|
|
// Run Original Function
|
|
_TDS_.OmoriBattleSystem.Scene_Battle_onActorCancel.call(this);
|
|
// Select Actor at battle status index
|
|
this._statusWindow.select(BattleManager.actor().battleStatusIndex());
|
|
|
|
// Current Symbol Switch Case
|
|
switch (this._actorCommandWindow.currentSymbol()) {
|
|
case 'attack':
|
|
this.showPartyCommand();
|
|
break;
|
|
case 'skill':
|
|
this.showPartyCommand();
|
|
this.showSkillWindow();
|
|
break;
|
|
case 'item':
|
|
this.showPartyCommand();
|
|
this.showItemWindow();
|
|
break;
|
|
case 'guard':
|
|
this._itemWindow.show();
|
|
this._itemWindow.activate();
|
|
this._itemWindow.callUpdateHelp();
|
|
// this._itemWindow.select(1)
|
|
this._helpWindow.show();
|
|
// this._helpWindow.contents.fillAll('rgba(255, 0, 0, 0.5)')
|
|
break;
|
|
};
|
|
};
|
|
//=============================================================================
|
|
// * Select Enemy Selection
|
|
//=============================================================================
|
|
Scene_Battle.prototype.selectEnemySelection = function() {
|
|
// Run Original Function
|
|
_TDS_.OmoriBattleSystem.Scene_Battle_selectEnemySelection.call(this);
|
|
this.hidePartyCommand();
|
|
this.hideSkillWindow();
|
|
this.hideItemWindow();
|
|
};
|
|
//=============================================================================
|
|
// * On Enemy Ok
|
|
//=============================================================================
|
|
Scene_Battle.prototype.onEnemyOk = function() {
|
|
// Run Original Function
|
|
_TDS_.OmoriBattleSystem.Scene_Battle_onEnemyOk.call(this);
|
|
this.hideItemWindow();
|
|
this.hideSkillWindow();
|
|
this._skillWindow.visible = true;
|
|
this._itemWindow.visible = true;
|
|
this._helpWindow.hide();
|
|
|
|
// Clear Troop Select
|
|
$gameTroop.select(null);
|
|
if(!BattleManager.actor()) {this._logWindow.clear();}
|
|
// // Get Members
|
|
// let members = $gameTroop.members();
|
|
// for (let i = 0; i < members.length; i++) { members[i].deselect(); };
|
|
};
|
|
//=============================================================================
|
|
// * On Enemy Cancel
|
|
//=============================================================================
|
|
Scene_Battle.prototype.onEnemyCancel = function() {
|
|
// Run Original Function
|
|
_TDS_.OmoriBattleSystem.Scene_Battle_onEnemyCancel.call(this);
|
|
switch (this._actorCommandWindow.currentSymbol()) {
|
|
case 'attack':
|
|
case 'actionSkill':
|
|
this.showPartyCommand();
|
|
break;
|
|
case 'skill':
|
|
this.showPartyCommand();
|
|
this.showSkillWindow();
|
|
break;
|
|
case 'item':
|
|
this.showPartyCommand();
|
|
this.showItemWindow();
|
|
break;
|
|
}
|
|
};
|
|
//=============================================================================
|
|
// * Create Face Windows
|
|
//=============================================================================
|
|
Scene_Battle.prototype.createFaceWindows = function() {
|
|
// Create Face Windows Container
|
|
this._faceWindowsContainer = new Sprite();
|
|
this.addChild(this._faceWindowsContainer);
|
|
// Initialize
|
|
this._faceWindowsContainer._displayLayersContainer = new Sprite();
|
|
this._faceWindowsContainer.addChild(this._faceWindowsContainer._displayLayersContainer);
|
|
// Get Layers container
|
|
var layers = this._faceWindowsContainer._displayLayersContainer
|
|
// Create Layer List
|
|
var layerList = ['behind', 'statusBack', 'face', 'polaroid', 'front']
|
|
// Create Layers
|
|
for (var i = 0; i < layerList.length; i++) {
|
|
var name = '_' + layerList[i];
|
|
var layer = new Sprite();
|
|
layers[name] = layer;
|
|
layers.addChild(layer)
|
|
}
|
|
|
|
// Initialize Face Windows Array
|
|
this._faceWindows = [];
|
|
// Position Indexes
|
|
var indexes = [2, 3, 0, 1]
|
|
// Create Face Windows
|
|
for (var i = 0; i < 4; i++) {
|
|
// Get Index
|
|
var index = i;
|
|
var x = 14 + ((index % 2) * ((Graphics.width - 28) - 114));
|
|
var y = 5 + (Math.floor(index / 2) * ((Graphics.height - 16) - 164));
|
|
// Create Face Window
|
|
var faceWindow = new Window_OmoriBattleActorStatus(i, layers, x, y);
|
|
faceWindow.x = !faceWindow.actor() ? i % 2 ? Graphics.width : -faceWindow.windowWidth() : x;
|
|
faceWindow.y = y;
|
|
this._faceWindows[i] = faceWindow;
|
|
this._faceWindowsContainer.addChild(faceWindow)
|
|
};
|
|
|
|
// Create Animation Sprite for Layers
|
|
for (var i = 0; i < layerList.length; i++) {
|
|
// Get Layer
|
|
layer = layers['_' + layerList[i]]
|
|
// Create Face Animation Sprite
|
|
var sprite = new Sprite_BattleFaceAnimation();
|
|
sprite._effectTarget = sprite;
|
|
layers['_animation' + i] = sprite;
|
|
layer.addChild(sprite);
|
|
};
|
|
|
|
// Set status Windows Face Windows
|
|
this._statusWindow._faceWindows = this._faceWindows;
|
|
};
|
|
//=============================================================================
|
|
// * Create Face Windows
|
|
//=============================================================================
|
|
Scene_Battle.prototype.createStressBar = function() {
|
|
// Create Stress Bar
|
|
this._stressBar = new Sprite_StressBar();
|
|
this._stressBar.x = 140;
|
|
this._stressBar.y = Graphics.height - 56;
|
|
this._stressBar.visible = !$gameSwitches.value(41);
|
|
|
|
if ([2, 5, 6].contains($gameVariables.value(22))) {
|
|
this._stressBar.visible = false;
|
|
}
|
|
this.addChildAt(this._stressBar,2);
|
|
};
|
|
//=============================================================================
|
|
// * Start Party Command Selection
|
|
//=============================================================================
|
|
Scene_Battle.prototype.startPartyCommandSelection = function() {
|
|
// Run Original Function
|
|
_TDS_.OmoriBattleSystem.Scene_Battle_startPartyCommandSelection.call(this);
|
|
this._actorCommandWindow.open()
|
|
this._actorCommandWindow.hide();
|
|
this._partyCommandWindow.show();
|
|
this._helpWindow.hide();
|
|
this.showPartyCommand();
|
|
this.pushPartyMessage();
|
|
|
|
// // Add Starting Message
|
|
// if ($gameParty.size() === 1) {
|
|
// this.addLogCommandMessage("What will OMORI do?");
|
|
// } else {
|
|
// this.addLogCommandMessage("What will OMORI and friends do?");
|
|
// };
|
|
};
|
|
|
|
//=============================================================================
|
|
// * Push Party Message
|
|
//=============================================================================
|
|
Scene_Battle.prototype.pushPartyMessage = function() {
|
|
// Get Party Size
|
|
let size = $gameParty.size();
|
|
// Get Message Source
|
|
let source = LanguageManager.languageData().text.XX_GENERAL;
|
|
// Error Message
|
|
let message = 'ERRROR!';
|
|
/*switch ($gameVariables.value(22)) {
|
|
case 1:
|
|
if (size === 1) {
|
|
message = source.message_107.text;
|
|
} else {
|
|
message = source.message_100.text;
|
|
};
|
|
break;
|
|
case 2:
|
|
if (size === 1) {
|
|
message = source.message_101.text;
|
|
} else if (size === 2) {
|
|
message = source.message_102.text;
|
|
} else {
|
|
message = source.message_103.text;
|
|
};
|
|
break;
|
|
case 3:
|
|
case 4:
|
|
case 5:
|
|
case 6: message = source.message_101.text ;break;
|
|
};*/
|
|
switch(size) {
|
|
case 1:
|
|
message = source.message_104.text.format($gameParty.leader().name());
|
|
break;
|
|
case 2:
|
|
message = source.message_102.text.format($gameParty.leader().name(), $gameParty.members()[1].name());
|
|
break;
|
|
default:
|
|
message = source.message_100.text.format($gameParty.leader().name());
|
|
break;
|
|
}
|
|
// Add Log Command Message
|
|
this.addLogCommandMessage(message);
|
|
}
|
|
//=============================================================================
|
|
// * Start Actor Command Selection
|
|
//=============================================================================
|
|
Scene_Battle.prototype.startActorCommandSelection = function() {
|
|
// Run Original Function
|
|
_TDS_.OmoriBattleSystem.Scene_Battle_startActorCommandSelection.call(this);
|
|
// Open Party command Window
|
|
this._partyCommandWindow.open();
|
|
this._partyCommandWindow.hide();
|
|
this._actorCommandWindow.openness = 255;
|
|
this._actorCommandWindow.show();
|
|
this._helpWindow.hide();
|
|
// Select Actor at battle status index
|
|
this._statusWindow.select(BattleManager.actor().battleStatusIndex());
|
|
// Add Actor Action Prompt Log Text
|
|
this.addActorActionPromptLogText();
|
|
// Show Party Commands
|
|
this.showPartyCommand();
|
|
};
|
|
//=============================================================================
|
|
// * Add Log Command Message
|
|
//=============================================================================
|
|
Scene_Battle.prototype.addActorActionPromptLogText = function() {
|
|
// Get Actor
|
|
var actor = BattleManager.actor();
|
|
// If Actor Exists
|
|
if (actor) {
|
|
this.addLogCommandMessage(LanguageManager.languageData().text.XX_GENERAL.message_104.text.format(actor.name()));
|
|
};
|
|
};
|
|
//=============================================================================
|
|
// * Add Log Command Message
|
|
//=============================================================================
|
|
Scene_Battle.prototype.addLogCommandMessage = function(text, clear = true, instant = true) {
|
|
// Clear Log Window
|
|
if (clear) { this._logWindow.clear(); }
|
|
// If Instant
|
|
if (instant) {
|
|
// Add Text
|
|
this._logWindow.addInstantText(text);
|
|
} else {
|
|
// Add Text
|
|
this._logWindow.addText(text);
|
|
};
|
|
};
|
|
//=============================================================================
|
|
// * Command Item
|
|
//=============================================================================
|
|
Scene_Battle.prototype.commandItem = function(category = 'consumables') {
|
|
// Set Item Window Category
|
|
this._itemWindow.setCategory(category);
|
|
// Show Item Window
|
|
this.showItemWindow();
|
|
// Run Original Function
|
|
_TDS_.OmoriBattleSystem.Scene_Battle_commandItem.call(this);
|
|
};
|
|
//=============================================================================
|
|
// * On Item Cancel
|
|
//=============================================================================
|
|
Scene_Battle.prototype.onItemCancel = function() {
|
|
// Run Original Function
|
|
_TDS_.OmoriBattleSystem.Scene_Battle_onItemCancel.call(this);
|
|
this._itemWindow.show();
|
|
// Hide Item Window
|
|
this.hideItemWindow();
|
|
this._helpWindow.hide();
|
|
// Add Actor Action Prompt Log Text
|
|
this.addActorActionPromptLogText();
|
|
};
|
|
//=============================================================================
|
|
// * On Item Ok
|
|
//=============================================================================
|
|
Scene_Battle.prototype.onItemOk = function() {
|
|
// Get Action
|
|
var action = BattleManager.inputtingAction();
|
|
// Run Original Function
|
|
_TDS_.OmoriBattleSystem.Scene_Battle_onItemOk.call(this);
|
|
// Show Item Window
|
|
this._itemWindow.show();
|
|
this._helpWindow.hide();
|
|
// If Action does not need selection
|
|
if (!action.needsSelection()) {
|
|
this.hideItemWindow();
|
|
this.hideSkillWindow();
|
|
} else {
|
|
// Add Actor Action Prompt Log Text
|
|
this.addLogCommandMessage(LanguageManager.languageData().text.XX_GENERAL.message_105.text);
|
|
// If action can change target groups
|
|
if (action.canChangeTargetGroups()) {
|
|
// Add Actor Action Prompt Log Text
|
|
this.addLogCommandMessage(LanguageManager.languageData().text.XX_GENERAL.message_106.text, false);
|
|
};
|
|
};
|
|
};
|
|
//=============================================================================
|
|
// * Command Skill
|
|
//=============================================================================
|
|
Scene_Battle.prototype.commandSkill = function() {
|
|
// Run Original Function
|
|
_TDS_.OmoriBattleSystem.Scene_Battle_commandSkill.call(this);
|
|
this._skillWindow.show();
|
|
this.showSkillWindow();
|
|
};
|
|
//=============================================================================
|
|
// * On Skill Ok
|
|
//=============================================================================
|
|
Scene_Battle.prototype.onSkillOk = function() {
|
|
// Get Action
|
|
var action = BattleManager.inputtingAction();
|
|
// Run Original Function
|
|
_TDS_.OmoriBattleSystem.Scene_Battle_onSkillOk.call(this);
|
|
this._skillWindow.show();
|
|
this._helpWindow.hide();
|
|
// If Action does not need selection
|
|
if (!action.needsSelection()) {
|
|
this.hideItemWindow();
|
|
this.hideSkillWindow();
|
|
} else {
|
|
// Add Actor Action Prompt Log Text
|
|
this.addLogCommandMessage(LanguageManager.languageData().text.XX_GENERAL.message_105.text);
|
|
// If action can change target groups
|
|
if (action.canChangeTargetGroups()) {
|
|
// Add Actor Action Prompt Log Text
|
|
this.addLogCommandMessage(LanguageManager.languageData().text.XX_GENERAL.message_106.text, false);
|
|
}
|
|
};
|
|
};
|
|
//=============================================================================
|
|
// * On Skill Cancel
|
|
//=============================================================================
|
|
Scene_Battle.prototype.onSkillCancel = function() {
|
|
// Run Original Function
|
|
_TDS_.OmoriBattleSystem.Scene_Battle_onSkillCancel.call(this)
|
|
// Add Actor Action Prompt Log Text
|
|
this.addActorActionPromptLogText();
|
|
this._skillWindow.show();
|
|
this._helpWindow.hide();
|
|
this.hideSkillWindow();
|
|
};
|
|
//=============================================================================
|
|
// * Select Next Command
|
|
//=============================================================================
|
|
Scene_Battle.prototype.selectNextCommand = function() {
|
|
// Run Original Function
|
|
_TDS_.OmoriBattleSystem.Scene_Battle_selectNextCommand.call(this);
|
|
// If Not Inputting and there's no actor
|
|
if (!BattleManager.isInputting() && !BattleManager.actor()) {
|
|
this.hidePartyCommand();
|
|
};
|
|
};
|
|
//=============================================================================
|
|
// * End Command Selection
|
|
//=============================================================================
|
|
Scene_Battle.prototype.endCommandSelection = function() {
|
|
// Run Original Function
|
|
_TDS_.OmoriBattleSystem.Scene_Battle_endCommandSelection.call(this);
|
|
this._partyCommandWindow.open();
|
|
this._actorCommandWindow.open();
|
|
};
|
|
|
|
//=============================================================================
|
|
// * Hide All menu Elements
|
|
//=============================================================================
|
|
Scene_Battle.prototype.hideAllMenuElements = function(duration = 15) {
|
|
// Get Object
|
|
var obj = this._stressBar;
|
|
// Create Movement Data
|
|
var data = {
|
|
obj: obj, properties: ['y'], from: {y: obj.y}, to: {y: Graphics.height}, durations: {y: duration},
|
|
easing: Object_Movement.easeInCirc
|
|
};
|
|
this.move.startMove(data);
|
|
|
|
// Get Object
|
|
obj = this._partyCommandWindow;
|
|
// Create Movement Data
|
|
data = {
|
|
obj: obj, properties: ['y'], from: {y: obj.y}, to: {y: Graphics.height + 100}, durations: {y: duration},
|
|
easing: Object_Movement.easeInCirc
|
|
};
|
|
this.move.startMove(data);
|
|
|
|
// Get Object
|
|
obj = this._actorCommandWindow;
|
|
// Create Movement Data
|
|
data = {
|
|
obj: obj, properties: ['y'], from: {y: obj.y}, to: {y: Graphics.height + 100}, durations: {y: duration},
|
|
easing: Object_Movement.easeInCirc
|
|
};
|
|
this.move.startMove(data);
|
|
|
|
// Get Object
|
|
obj = this._logWindow;
|
|
// Create Movement Data
|
|
data = {
|
|
obj: obj, properties: ['y'], from: {y: obj.y}, to: {y: -100}, durations: {y: duration},
|
|
easing: Object_Movement.easeInCirc
|
|
};
|
|
this.move.startMove(data);
|
|
|
|
// Get Object
|
|
obj = this._helpWindow;
|
|
// Create Movement Data
|
|
data = {
|
|
obj: obj, properties: ['y'], from: {y: obj.y}, to: {y: -100}, durations: {y: duration},
|
|
easing: Object_Movement.easeInCirc
|
|
};
|
|
this.move.startMove(data);
|
|
|
|
|
|
|
|
for (var i = 0; i < this._faceWindows.length; i++) {
|
|
// Get Object
|
|
var obj = this._faceWindows[i];
|
|
// Create Movement Data
|
|
data = {
|
|
obj: obj, properties: ['x'], from: {x: obj.x}, to: {x: i % 2 ? Graphics.width : -obj.windowWidth() }, durations: {x: duration},
|
|
easing: Object_Movement.easeInCirc
|
|
};
|
|
this.move.startMove(data);
|
|
};
|
|
|
|
};
|
|
//=============================================================================
|
|
// * Show All menu Elements
|
|
//=============================================================================
|
|
Scene_Battle.prototype.showAllMenuElements = function() {
|
|
// Duration
|
|
var duration = 15;
|
|
// Get Object
|
|
var obj = this._stressBar;
|
|
// Create Movement Data
|
|
var data = {
|
|
obj: obj, properties: ['y'], from: {y: obj.y}, to: {y: Graphics.height - 56}, durations: {y: duration},
|
|
easing: Object_Movement.easeOutCirc
|
|
};
|
|
this.move.startMove(data);
|
|
|
|
// Get Object
|
|
obj = this._logWindow;
|
|
// Create Movement Data
|
|
data = {
|
|
obj: obj, properties: ['y'], from: {y: obj.y}, to: {y: -4}, durations: {y: duration},
|
|
easing: Object_Movement.easeOutCirc
|
|
};
|
|
this.move.startMove(data);
|
|
|
|
// Get Object
|
|
obj = this._helpWindow;
|
|
// Create Movement Data
|
|
data = {
|
|
obj: obj, properties: ['y'], from: {y: obj.y}, to: {y: -4}, durations: {y: duration},
|
|
easing: Object_Movement.easeOutCirc
|
|
};
|
|
this.move.startMove(data);
|
|
|
|
for (var i = 0; i < this._faceWindows.length; i++) {
|
|
// Get Object
|
|
var obj = this._faceWindows[i];
|
|
// If there's no actor continue to next window
|
|
if (!obj.actor()) { continue; }
|
|
// Create Movement Data
|
|
data = {
|
|
obj: obj, properties: ['x'], from: {x: obj.x}, to: {x: obj._homePosition.x }, durations: {x: duration},
|
|
easing: Object_Movement.easeOutCirc
|
|
};
|
|
this.move.startMove(data);
|
|
};
|
|
};
|
|
//=============================================================================
|
|
// * Show Party Command
|
|
//=============================================================================
|
|
Scene_Battle.prototype.showPartyCommand = function() {
|
|
// Duration
|
|
var duration = 15
|
|
// Get Object
|
|
var obj = this._stressBar;
|
|
// Create Movement Data
|
|
var data = {
|
|
obj: obj, properties: ['y'], from: {y: obj.y}, to: {y: Graphics.height - 140}, durations: {y: duration},
|
|
easing: Object_Movement.easeOutCirc
|
|
};
|
|
this.move.startMove(data);
|
|
|
|
// Get Object
|
|
obj = this._partyCommandWindow;
|
|
// Create Movement Data
|
|
data = {
|
|
obj: obj, properties: ['y'], from: {y: obj.y}, to: {y: Graphics.height - 92}, durations: {y: duration},
|
|
easing: Object_Movement.easeOutCirc
|
|
};
|
|
this.move.startMove(data);
|
|
|
|
// Get Object
|
|
obj = this._actorCommandWindow;
|
|
// Create Movement Data
|
|
data = {
|
|
obj: obj, properties: ['y'], from: {y: obj.y}, to: {y: Graphics.height - 92}, durations: {y: duration},
|
|
easing: Object_Movement.easeOutCirc
|
|
};
|
|
this.move.startMove(data);
|
|
};
|
|
//=============================================================================
|
|
// * Hide Party Command
|
|
//=============================================================================
|
|
Scene_Battle.prototype.hidePartyCommand = function() {
|
|
// Duration
|
|
var duration = 15
|
|
// Get Object
|
|
var obj = this._stressBar;
|
|
// Create Movement Data
|
|
var data = {
|
|
obj: obj, properties: ['y'], from: {y: obj.y}, to: {y: Graphics.height - 56}, durations: {y: duration},
|
|
easing: Object_Movement.easeInCirc
|
|
};
|
|
this.move.startMove(data);
|
|
|
|
// Get Object
|
|
obj = this._partyCommandWindow;
|
|
// Create Movement Data
|
|
data = {
|
|
obj: obj, properties: ['y'], from: {y: obj.y}, to: {y: Graphics.height}, durations: {y: duration},
|
|
easing: Object_Movement.easeInCirc
|
|
};
|
|
this.move.startMove(data);
|
|
|
|
// Get Object
|
|
obj = this._actorCommandWindow;
|
|
// Create Movement Data
|
|
data = {
|
|
obj: obj, properties: ['y'], from: {y: obj.y}, to: {y: Graphics.height}, durations: {y: duration},
|
|
easing: Object_Movement.easeInCirc
|
|
};
|
|
this.move.startMove(data);
|
|
};
|
|
//=============================================================================
|
|
// * Show Item Window
|
|
//=============================================================================
|
|
Scene_Battle.prototype.showItemWindow = function() {
|
|
// Duration
|
|
var duration = 15
|
|
// Get Object
|
|
var obj = this._itemWindow;
|
|
// Create Movement Data
|
|
var data = {
|
|
obj: obj, properties: ['y'], from: {y: obj.y}, to: {y: Graphics.height - 65}, durations: {y: duration},
|
|
easing: Object_Movement.easeOutCirc
|
|
};
|
|
this.move.startMove(data);
|
|
};
|
|
//=============================================================================
|
|
// * Hide Item Window
|
|
//=============================================================================
|
|
Scene_Battle.prototype.hideItemWindow = function() {
|
|
// Duration
|
|
var duration = 15
|
|
// Get Object
|
|
var obj = this._itemWindow;
|
|
// Create Movement Data
|
|
var data = {
|
|
obj: obj, properties: ['y'], from: {y: obj.y}, to: {y: Graphics.height + 30}, durations: {y: duration},
|
|
easing: Object_Movement.easeInCirc
|
|
};
|
|
this.move.startMove(data);
|
|
};
|
|
//=============================================================================
|
|
// * Show Skill Window
|
|
//=============================================================================
|
|
Scene_Battle.prototype.showSkillWindow = function() {
|
|
// Duration
|
|
var duration = 15
|
|
// Get Object
|
|
var obj = this._skillWindow;
|
|
// Create Movement Data
|
|
var data = {
|
|
obj: obj, properties: ['y'], from: {y: obj.y}, to: {y: Graphics.height - 65}, durations: {y: duration},
|
|
easing: Object_Movement.easeOutCirc
|
|
};
|
|
this.move.startMove(data);
|
|
};
|
|
//=============================================================================
|
|
// * Hide Skill Window
|
|
//=============================================================================
|
|
Scene_Battle.prototype.hideSkillWindow = function() {
|
|
// Duration
|
|
var duration = 15
|
|
// Get Object
|
|
var obj = this._skillWindow;
|
|
// Create Movement Data
|
|
var data = {
|
|
obj: obj, properties: ['y'], from: {y: obj.y}, to: {y: Graphics.height + 30}, durations: {y: duration},
|
|
easing: Object_Movement.easeInCirc
|
|
};
|
|
this.move.startMove(data);
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//=============================================================================
|
|
// ** Sprite_BattleFaceAnimation
|
|
//-----------------------------------------------------------------------------
|
|
// This sprite is used to show animations on the battle face
|
|
//=============================================================================
|
|
class Sprite_BattleFaceAnimation extends Sprite_Base {
|
|
constructor() { super(); }
|
|
//=============================================================================
|
|
// * Start Animation
|
|
//=============================================================================
|
|
startAnimation(animation, mirror, delay) {
|
|
var sprite = new Sprite_Battle_Animation();
|
|
sprite.setup(this._effectTarget, animation, mirror, delay);
|
|
// // If animation position is for screen
|
|
// if (animation.position === 3) {
|
|
// // console.log(this.parent.parent)
|
|
// // console.log(this._screenParent)
|
|
// this.parent.addChild(sprite);
|
|
// } else {
|
|
// Add Child
|
|
this.addChild(sprite);
|
|
// // };
|
|
// Add Sprite to animation sprites
|
|
this._animationSprites.push(sprite);
|
|
|
|
// Return Added Sprite
|
|
return sprite;
|
|
};
|
|
};
|
|
|
|
|
|
|
|
//=============================================================================
|
|
// ** Sprite_Battle_Animation
|
|
//-----------------------------------------------------------------------------
|
|
// This sprite is used to show animations in battle for the actors
|
|
//=============================================================================
|
|
function Sprite_Battle_Animation() { this.initialize.apply(this, arguments); }
|
|
Sprite_Battle_Animation.prototype = Object.create(Sprite_Animation.prototype);
|
|
Sprite_Battle_Animation.prototype.constructor = Sprite_Battle_Animation;
|
|
//=============================================================================
|
|
// * Object Initilization
|
|
//=============================================================================
|
|
Sprite_Battle_Animation.prototype.initMembers = function() {
|
|
Sprite_Animation.prototype.initMembers.call(this);
|
|
// Set Home Rectangle
|
|
this._homeRect = new Rectangle(100, 0, 114, 164)
|
|
};
|
|
//=============================================================================
|
|
// * Set Home Position
|
|
//=============================================================================
|
|
Sprite_Battle_Animation.prototype.setHomePosition = function(x, y) {
|
|
// Set Home Rect X & Y
|
|
this._homeRect.x = x; this._homeRect.y = y;
|
|
};
|
|
//=============================================================================
|
|
// * Object Initilization
|
|
//=============================================================================
|
|
Sprite_Battle_Animation.prototype.updatePosition = function() {
|
|
// If full screen
|
|
if (this._animation.position === 3) {
|
|
this.x = (Graphics.width / 2) + this.xOffset()
|
|
this.y = (Graphics.height / 2) + this.yOffset()
|
|
} else {
|
|
// Get Home Rectangle
|
|
var home = this._homeRect
|
|
// Set Position
|
|
this.x = home.x + (home.width / 2);
|
|
this.y = home.y + home.height ;
|
|
if (this._animation.position === 0) {
|
|
this.y -= home.height;
|
|
} else if (this._animation.position === 1) {
|
|
this.y -= home.height / 2;
|
|
};
|
|
};
|
|
};
|
|
//=============================================================================
|
|
// * Object Initilization
|
|
//=============================================================================
|
|
Sprite_Battle_Animation.prototype.xOffset = function() {
|
|
var node = this;
|
|
var x = this.x
|
|
while (node) {
|
|
x -= node.x;
|
|
node = node.parent;
|
|
}
|
|
return x;
|
|
}
|
|
//=============================================================================
|
|
// * Object Initilization
|
|
//=============================================================================
|
|
Sprite_Battle_Animation.prototype.yOffset = function() {
|
|
var node = this;
|
|
var y = this.y
|
|
while (node) {
|
|
y -= node.y;
|
|
node = node.parent;
|
|
}
|
|
return y;
|
|
}
|
|
|
|
|
|
|
|
//=============================================================================
|
|
// ** Sprite_StressBar
|
|
//-----------------------------------------------------------------------------
|
|
// This sprite is used to display the stress bar.
|
|
//=============================================================================
|
|
function Sprite_StressBar() { this.initialize.apply(this, arguments); }
|
|
Sprite_StressBar.prototype = Object.create(Sprite.prototype);
|
|
Sprite_StressBar.prototype.constructor = Sprite_StressBar;
|
|
//=============================================================================
|
|
// * Object Initilization
|
|
//=============================================================================
|
|
Sprite_StressBar.prototype.initialize = function() {
|
|
// Super Call
|
|
Sprite.prototype.initialize.call(this);
|
|
// Line X
|
|
this._lx = 0;
|
|
// EKG Row
|
|
this._ekgRow = 0;
|
|
// Set Pending EKG Row
|
|
this._pendingEKGRow = -1;
|
|
this._pendingIndex = -1;
|
|
this._frameCount = 0;
|
|
// Create Sprites
|
|
this.createBackgroundSprite();
|
|
this.createEKGLineSprites();
|
|
};
|
|
//=============================================================================
|
|
// * Create Create Background Sprite
|
|
//=============================================================================
|
|
Sprite_StressBar.prototype.createBackgroundSprite = function() {
|
|
// Create Background Sprite
|
|
this._background = new Sprite();
|
|
this.addChild(this._background);
|
|
this.updateBackgroundImage();
|
|
};
|
|
//=============================================================================
|
|
// * Create EKG Line Sprites
|
|
//=============================================================================
|
|
Sprite_StressBar.prototype.createEKGLineSprites = function() {
|
|
// Create EKG Line Sprite
|
|
this._ekgLine = new Sprite(new Bitmap(290, 28));
|
|
this._ekgLine.x = 20;
|
|
this._ekgLine.y = 8//14;
|
|
this.addChild(this._ekgLine);
|
|
// Create EKG Line Bitmap
|
|
this._ekgLineBitmap = new Bitmap(290, 28);
|
|
// Create EKG New Line Bitmap
|
|
this._ekgLineNewBitmap = new Bitmap(290, 28);
|
|
|
|
// Create EKG Text Sprite
|
|
this._ekgText = new Sprite(new Bitmap(33, 33));
|
|
this._ekgText.x = 320;
|
|
this._ekgText.y = 7;
|
|
this._ekgText.bitmap.fontSize = 28;
|
|
this.addChild(this._ekgText);
|
|
// Refresh EKG Bitmap
|
|
this.refreshEKGBitmap();
|
|
};
|
|
//=============================================================================
|
|
// * Refresh EKG Bitmap
|
|
//=============================================================================
|
|
Sprite_StressBar.prototype.refreshEKGBitmap = function(index = this._ekgRow) {
|
|
|
|
let ekgName = 'energy_stress_ekg_line';
|
|
switch ($gameVariables.value(22)) {
|
|
case 1: ekgName = 'energy_dw_line' ;break;
|
|
case 3: ekgName = 'energy_stress_ekg_line' ;break;
|
|
case 4: ekgName = 'energy_stress_ekg_line' ;break;
|
|
};
|
|
// Get Bitmap
|
|
var bitmap = ImageManager.loadSystem(ekgName);
|
|
// Clear & Transfer Bitmap
|
|
this._ekgLineBitmap.clear();
|
|
this._ekgLineBitmap.blt(bitmap, 0, index * 28, bitmap.width, 28, 0, 0);
|
|
// If Pending EKG Row is valid
|
|
if (this._pendingEKGRow >= 0) {
|
|
this._ekgLineNewBitmap.clear()
|
|
this._ekgLineNewBitmap.blt(bitmap, 0, this._pendingEKGRow * 28, bitmap.width, 28, 0, 0);
|
|
};
|
|
|
|
// if ($gameParty.actorIsAffectedByState(1, 20) || $gameParty.actorIsAffectedByState(8, 20)) {
|
|
// this._pendingIndex = Math.floor();
|
|
// };
|
|
};
|
|
//=============================================================================
|
|
// * Draw Stress Count Value
|
|
//=============================================================================
|
|
Sprite_StressBar.prototype.drawStressCountValue = function(value = this._ekgRow) {
|
|
// Clear Text
|
|
this._ekgText.bitmap.clear();
|
|
// Refresh EKG Bitmap
|
|
this._ekgText.bitmap.drawText(value.clamp(0, 10).padZero(2), 0, -4, this._ekgText.bitmap.width, this._ekgText.bitmap.height, 'center');
|
|
};
|
|
//=============================================================================
|
|
// * Frame Update
|
|
//=============================================================================
|
|
Sprite_StressBar.prototype.update = function() {
|
|
// Super Call
|
|
Sprite.prototype.update.call(this);
|
|
|
|
// Determine if stressed
|
|
let stressed = $gameParty.actorIsAffectedByState(1, 20) || $gameParty.actorIsAffectedByState(8, 20);
|
|
// Get Energy
|
|
let energy = $gameParty.stressEnergyCount;
|
|
|
|
// If Stressed Set energy to 10
|
|
if (stressed) { energy = 10; }
|
|
|
|
// Increase Frame Count
|
|
this._frameCount = (this._frameCount + 1) % 60;
|
|
|
|
// If Energy does not match ekg row
|
|
if (energy !== this._ekgRow) {
|
|
// If energy is at max and troop is 415
|
|
if (energy === 10 && $gameTroop._troopId === 451) {
|
|
// Set Pending EKG row to 11
|
|
this._pendingEKGRow = 11;
|
|
} else {
|
|
// Set Pending EKG Row to match energy
|
|
this._pendingEKGRow = energy;
|
|
};
|
|
|
|
// Update Background Image
|
|
this.updateBackgroundImage();
|
|
// Draw stress Count value
|
|
if(!stressed) {this.drawStressCountValue(energy);}
|
|
|
|
};
|
|
|
|
|
|
// If frame count is 0
|
|
if (this._frameCount && this._frameCount % BattleManager._stressSpeed === 0) {
|
|
// If Stressed
|
|
if (energy >= 10 && [3,4].contains($gameVariables.value(22)) && !!stressed) {
|
|
// Draw Stress Count Value
|
|
this.drawStressCountValue(Math.randomInt(11));
|
|
}
|
|
}
|
|
|
|
|
|
// Update Line
|
|
this.updateLine(stressed)
|
|
|
|
|
|
|
|
// return;
|
|
|
|
// if (Input.isTriggered('up')) {
|
|
|
|
// $gameParty.stressEnergyCount++
|
|
// return;
|
|
// }
|
|
|
|
// if (Input.isTriggered('down')) {
|
|
|
|
// $gameParty.stressEnergyCount--;
|
|
// return;
|
|
// }
|
|
|
|
|
|
|
|
// if ($gameParty.actorIsAffectedByState(1, 20) || $gameParty.actorIsAffectedByState(8, 20)) {
|
|
// energy = 10;
|
|
// }
|
|
|
|
// // If Energy count does not match EKG
|
|
// if (energy !== this._pendingEKGRow && energy !== this._ekgRow) {
|
|
|
|
// if (energy === 10 && $gameTroop._troopId === 451) {
|
|
// this._pendingEKGRow = 11;
|
|
// } else {
|
|
// this._pendingEKGRow = energy;
|
|
// };
|
|
// this.updateBackgroundImage();
|
|
// };
|
|
|
|
|
|
|
|
// if (this._frameCount && this._frameCount % BattleManager._stressSpeed == 0) {
|
|
// if ($gameParty.actorIsAffectedByState(1, 20) || $gameParty.actorIsAffectedByState(8, 20)) {
|
|
// this.refreshEKGBitmap();
|
|
// }
|
|
// }
|
|
|
|
// if (energy !== this._pendingIndex) {
|
|
// this._ekgText.bitmap.clear();
|
|
// this._ekgText.bitmap.drawText(this._pendingIndex.clamp(0, 10).padZero(2), 0, -4, this._ekgText.bitmap.width, this._ekgText.bitmap.height, 'center');
|
|
// this._pendingIndex = energy;
|
|
// }
|
|
|
|
// this._frameCount++;
|
|
// if (this._frameCount > 60) this._frameCount = 0;
|
|
|
|
// var speed = 1
|
|
// for (var i = 0; i < speed; i++) {
|
|
// this.updateLine()
|
|
// };
|
|
};
|
|
//=============================================================================
|
|
// * Determine if Line Connects
|
|
//=============================================================================
|
|
Sprite_StressBar.prototype.canLinesConnect = function(x = this._lx, bitmap = this._ekgLineBitmap, bitmap2 = this._ekgLineNewBitmap) {
|
|
//if (x <= 0) { return true; }
|
|
//if (x >= bitmap.width) { return true; };
|
|
// Points Array
|
|
var points = [];
|
|
for (var i = 0; i < bitmap.height; i++) {
|
|
if (this.isLineAtCenter(bitmap, x, i)) { points.push(i);}
|
|
};
|
|
// Go Through Points
|
|
for (var i = 0; i < points.length; i++) {
|
|
// Get Y Point
|
|
var y = points[i];
|
|
if (this.isLineAtCenter(bitmap2, x + 1, y)) {
|
|
return true;
|
|
};
|
|
};
|
|
// Return False
|
|
return true;
|
|
};
|
|
//=============================================================================
|
|
// * Determine if Line Connects
|
|
//=============================================================================
|
|
Sprite_StressBar.prototype.isLineAtCenter = function(bitmap = this._ekgLineBitmap, x = this._lx, y = 14) {
|
|
// console.log(bitmap.getAlphaPixel(x, y))
|
|
if (bitmap.getAlphaPixel(x, y) === 0) { return false; }
|
|
// Return true by default
|
|
return true;
|
|
};
|
|
//=============================================================================
|
|
// * Update Line
|
|
//=============================================================================
|
|
Sprite_StressBar.prototype.updateLine = function(stressed) {
|
|
if (this._pendingEKGRow >= 0) {
|
|
if (this.canLinesConnect()) {
|
|
this._ekgRow = this._pendingEKGRow;
|
|
this._pendingEKGRow = -1;
|
|
this.refreshEKGBitmap();
|
|
if(!stressed) {this.drawStressCountValue(this._ekgRow);}
|
|
};
|
|
};
|
|
var bitmap = this._ekgLineBitmap;
|
|
var space = 40
|
|
this._lx = (this._lx + 1) % (bitmap.width + space)
|
|
this._ekgLine.bitmap.blt(bitmap, this._lx, 0, 1, bitmap.height, this._lx, 0);
|
|
this._ekgLine.bitmap.clearRect(this._lx - space, 0, 1, bitmap.height);
|
|
};
|
|
//=============================================================================
|
|
// * Update Background Image
|
|
//=============================================================================
|
|
Sprite_StressBar.prototype.updateBackgroundImage = function() {
|
|
// Get Background Name
|
|
let backgroundName = 'StressBar_DreamWorld';
|
|
// Set Index to 0
|
|
let index = 0;
|
|
// Set Default Rows
|
|
let rows = 5;
|
|
// Get Stress
|
|
let stress = $gameParty.stressEnergyCount;
|
|
|
|
if ($gameParty.actorIsAffectedByState(1, 20) || $gameParty.actorIsAffectedByState(8, 20)) {
|
|
stress = 10;
|
|
}
|
|
|
|
switch ($gameVariables.value(22)) {
|
|
case 1:
|
|
// Set Index
|
|
index = Math.min(Math.max(Math.floor(stress / 2), 0), 4);
|
|
break;
|
|
case 3:
|
|
case 4:
|
|
backgroundName = 'StressBar_BlackSpace';
|
|
rows = 4;
|
|
if (stress === 10) {
|
|
index = 2;
|
|
} else if (stress > 6 && stress < 10) {
|
|
index = 2;
|
|
} else if (stress > 3 && stress <= 6) {
|
|
index = 1;
|
|
} else {
|
|
index = 0;
|
|
};
|
|
break;
|
|
};
|
|
// Get Bitmap
|
|
let bitmap = ImageManager.loadSystem(backgroundName);
|
|
// Get Height
|
|
let height = bitmap.height / rows;
|
|
// Set Background Bitmap
|
|
this._background.bitmap = bitmap;
|
|
// Set Background Frame
|
|
bitmap.addLoadListener(() => this._background.setFrame(0, index * height, bitmap.width, height));
|
|
};
|
|
// //=============================================================================
|
|
// // * Update Background Animation
|
|
// //=============================================================================
|
|
// Sprite_StressBar.prototype.updateBackgroundAnimation = function() {
|
|
// // Get Animation object
|
|
// let anim = this._backAnim;
|
|
// // If Animation has more than 1 frame
|
|
// if (anim.animate && anim.maxFrames > 1) {
|
|
// // Decrease Delay
|
|
// anim.delay--;
|
|
// // If Animation delay is or less
|
|
// if (anim.delay <= 0) {
|
|
// // Increase Frame
|
|
// anim.frame = (anim.frame + 1) % anim.maxFrames;
|
|
// anim.delay = anim.maxDelay;
|
|
// // Set Frame
|
|
// this._background.setFrame(0, anim.frame * this._background.height, this._background.width, this._background.height);
|
|
// };
|
|
// };
|
|
// };
|
|
|
|
|
|
|
|
|
|
//=============================================================================
|
|
// ** Sprite_Actor
|
|
//-----------------------------------------------------------------------------
|
|
// The sprite for displaying an actor.
|
|
//=============================================================================
|
|
// * Setup Animation (Overwritten to Prevent it from using animations.)
|
|
//=============================================================================
|
|
Sprite_Actor.prototype.setupAnimation = function() { };
|
|
//=============================================================================
|
|
// * Setup Animation (Overwritten to Prevent it from clearing damage)
|
|
//=============================================================================
|
|
Sprite_Actor.prototype.setupDamagePopup = function() { };
|
|
|
|
|
|
|
|
|
|
|
|
//=============================================================================
|
|
// ** Window_OmoriBattleActorStatus
|
|
//-----------------------------------------------------------------------------
|
|
// This window displays the quest list header.
|
|
//=============================================================================
|
|
function Window_OmoriBattleActorStatus() { this.initialize.apply(this, arguments); }
|
|
Window_OmoriBattleActorStatus.prototype = Object.create(Window_Base.prototype);
|
|
Window_OmoriBattleActorStatus.prototype.constructor = Window_OmoriBattleActorStatus;
|
|
//=============================================================================
|
|
// * Initialize Object
|
|
//=============================================================================
|
|
Window_OmoriBattleActorStatus.prototype.initialize = function(index, layers, x, y) {
|
|
// Set Home Position
|
|
this._homePosition = new Point(x, y);
|
|
// Set Display Layers Object
|
|
this._displayLayers = layers
|
|
// Set Actor Index
|
|
this._actorIndex = index;
|
|
// Animation Values
|
|
this._hpAnim = {current: -2, target: 0, old: -1, duration: 0 };
|
|
this._mpAnim = {current: -2, target: 0, old: -1, duration: 0 };
|
|
// Selected Flag
|
|
this._selected = false;
|
|
this._overlayOpacity = 0;
|
|
this._overlayAngle = 0;
|
|
// ACS Bubble Opacity Duration
|
|
this._acsBubbleOpacityDuration = 0;
|
|
this._acsBubbleOpacity = 0;
|
|
// Overlay Animation
|
|
this._overlayAnim = {side: 0, delay: 15}
|
|
// Initialize Damage Sprites Array
|
|
this._damageSprites = [];
|
|
this._removeDamageSprites = [];
|
|
this._popupCount = 0;
|
|
// Super Call
|
|
Window_Base.prototype.initialize.call(this, 14, 100, this.windowWidth(), this.windowHeight());
|
|
this.opacity = 0;
|
|
// Create Sprites
|
|
this.createSprites();
|
|
// Draw Contents
|
|
this.refresh();
|
|
};
|
|
//=============================================================================
|
|
// * Settings
|
|
//=============================================================================
|
|
Window_OmoriBattleActorStatus.prototype.standardPadding = function() { return 0; };
|
|
Window_OmoriBattleActorStatus.prototype.windowWidth = function() { return 114; };
|
|
Window_OmoriBattleActorStatus.prototype.windowHeight = function() { return 164; };
|
|
//=============================================================================
|
|
// * Get Actor
|
|
//=============================================================================
|
|
Window_OmoriBattleActorStatus.prototype.actor = function() {
|
|
return $gameParty.memberAtStatusIndex(this._actorIndex)
|
|
};
|
|
//=============================================================================
|
|
// * Create Sprite
|
|
//=============================================================================
|
|
Window_OmoriBattleActorStatus.prototype.createSprites = function() {
|
|
// Get Layers
|
|
var layers = this._displayLayers;
|
|
// Get Position
|
|
var pos = this._homePosition;
|
|
|
|
// Create status Back Sprite
|
|
this._statusBackSprite = new Sprite();
|
|
this._statusBackSprite.bitmap = ImageManager.loadSystem('faceset_states')
|
|
this._statusBackSprite.x = pos.x + 7;
|
|
this._statusBackSprite.y = pos.y + 17;
|
|
this.setStatusBack(0, false);
|
|
layers._statusBack.addChild(this._statusBackSprite);
|
|
|
|
// Create Face Sprite
|
|
this._faceSprite = new Sprite_OmoMenuStatusFace();
|
|
this._faceSprite.x = pos.x + (this.width - 106) / 2;
|
|
this._faceSprite.y = pos.y + 15
|
|
layers._face.addChild(this._faceSprite);
|
|
// Set Actor
|
|
this._faceSprite.actor = this.actor();
|
|
|
|
// Face Mask
|
|
this._faceMask = new Sprite(new Bitmap(this.width - 14, 92))
|
|
this._faceMask.x = 7;
|
|
this._faceMask.y = 25;
|
|
this._faceMask.bitmap.fillAll('rgba(255, 255, 255, 1)')
|
|
this._faceSprite.mask = this._faceMask;
|
|
this.addChild(this._faceMask);
|
|
|
|
|
|
// // Face Mask
|
|
// this._faceMask = new PIXI.Graphics();
|
|
// this._faceMask.beginFill(0xFFF);
|
|
// // this._faceMask.drawRect(7, 25, this.width - 14, 92);
|
|
// this._faceMask.endFill();
|
|
// // this._faceSprite.mask = this._faceMask
|
|
// this.addChild(this._faceMask)
|
|
|
|
// Create Polaroid Sprite
|
|
this._polaroidSprite = new Sprite(ImageManager.loadSystem('player_box'));
|
|
this._polaroidSprite.x = pos.x;
|
|
this._polaroidSprite.y = pos.y;
|
|
layers._polaroid.addChild(this._polaroidSprite);
|
|
|
|
// Create HP Bar
|
|
this._hpBarSprite = new Sprite(ImageManager.loadSystem('bar_gradients'));
|
|
this._hpBarSprite.x = pos.x + 28
|
|
this._hpBarSprite.y = pos.y + 127;
|
|
this._hpBarSprite.setFrame(0, 0, 81, 12);
|
|
layers._polaroid.addChild(this._hpBarSprite);
|
|
|
|
// Create HP Bar
|
|
this._mpBarSprite = new Sprite(ImageManager.loadSystem('bar_gradients'));
|
|
this._mpBarSprite.x = pos.x + 28
|
|
this._mpBarSprite.y = pos.y + 146;
|
|
this._mpBarSprite.setFrame(0, 19, 81, 12);
|
|
layers._polaroid.addChild(this._mpBarSprite);
|
|
|
|
// Create State Sprite
|
|
this._stateSprite = new Sprite(ImageManager.loadSystem('statelist'));
|
|
this._stateSprite.anchor.set(0.5, 0.5);
|
|
this._stateSprite.x = pos.x + this.width / 2;
|
|
this._stateSprite.y = pos.y + 14;
|
|
this._stateSprite.setFrame(0, 0 * 24, 134, 24)
|
|
layers._polaroid.addChild(this._stateSprite);
|
|
|
|
// Create Selected Overlay
|
|
this._selectedOverlay = new Sprite(ImageManager.loadSystem('target_selected'))
|
|
this._selectedOverlay.x = pos.x + -12
|
|
this._selectedOverlay.y = pos.y + -3
|
|
this._selectedOverlay.opacity = 0;
|
|
layers._polaroid.addChild(this._selectedOverlay);
|
|
|
|
// Create Status Particle Emitters
|
|
this.createStatusParticleEmitters();
|
|
|
|
// Create ACS Bubble Sprites
|
|
this.createACSBubbleSprites();
|
|
|
|
layers._polaroid.addChild(this._windowContentsSprite)
|
|
this._windowContentsSprite.x = pos.x;
|
|
this._windowContentsSprite.y = pos.y;
|
|
|
|
// Create Damage Container
|
|
this._damageContainer = new Sprite();
|
|
layers._polaroid.addChild(this._damageContainer);
|
|
};
|
|
|
|
//=============================================================================
|
|
// * Create Status Particle Emitters
|
|
//=============================================================================
|
|
Window_OmoriBattleActorStatus.prototype.createStatusParticleEmitters = function() {
|
|
// Get Layers
|
|
var layers = this._displayLayers;
|
|
// Get Position
|
|
var pos = this._homePosition;
|
|
// Get Layer List
|
|
var layerList = [layers._statusBack, layers._face, layers._polaroid]
|
|
// Initialize Particle Emitters
|
|
this._statusParticleEmitters = [];
|
|
// Go Through Layer List
|
|
for (var i = 0; i < layerList.length; i++) {
|
|
// Get Layer
|
|
var layer = layerList[i];
|
|
// Create Particle Emitter
|
|
var sprite = new Sprite_BattleFaceStatusEmitter();
|
|
sprite.x = pos.x + this.width / 2;
|
|
sprite.y = pos.y + 120;
|
|
// sprite.mask = this._faceMask
|
|
// Add Particle to Array
|
|
this._statusParticleEmitters[i] = sprite;
|
|
// Add Particle Emitter to Layer
|
|
layer.addChild(sprite);
|
|
};
|
|
// Set The Mask of the last sprite to null
|
|
sprite.mask = null;
|
|
};
|
|
//=============================================================================
|
|
// * Create ACS Bubble Sprites
|
|
//=============================================================================
|
|
Window_OmoriBattleActorStatus.prototype.createACSBubbleSprites = function() {
|
|
// Create ACS Bubble container
|
|
this._acsBubbleContainer = new Sprite();
|
|
this._acsBubbleContainer.opacity = 0;
|
|
this.addChild(this._acsBubbleContainer);
|
|
// Action Chain Skills Bubble Sprites
|
|
this._acsBubbleSprites = [];
|
|
// Bubbles
|
|
var bubbles = [[0, 1, 2], [4, 5,6], [9, 8, 7], [12, 11, 10]];
|
|
// Create Bubble Sprites
|
|
for (var i = 0; i < 3; i++) {
|
|
// Create Sprite
|
|
var sprite = new Sprite_ACSBubble(this._actorIndex);
|
|
sprite.updatePosition(i);
|
|
this._acsBubbleSprites[i] = sprite;
|
|
this._acsBubbleContainer.addChild(sprite);
|
|
};
|
|
};
|
|
//=============================================================================
|
|
// * Refresh
|
|
//=============================================================================
|
|
Window_OmoriBattleActorStatus.prototype.refresh = function() {
|
|
// Get Actor
|
|
var actor = this.actor();
|
|
// If Actor Exists
|
|
if (actor) {
|
|
this.setStatusBack(actor.statusBackIndex());
|
|
this.setStatusHeader(actor.statusListIndex());
|
|
this._faceSprite.setAnimRow(actor.statusFaceIndex())
|
|
this.setupStatusParticles(actor.statusStateParticlesData())
|
|
};
|
|
// Draws Actor Index for testing and tracking
|
|
// this.contents.drawText(this._actorIndex, 10, 0, 50, 50);
|
|
};
|
|
//=============================================================================
|
|
// * Draw HP
|
|
//=============================================================================
|
|
Window_OmoriBattleActorStatus.prototype.drawHP = function(hp, maxHP) {
|
|
this.contents.fontSize = 16;
|
|
var y = 112
|
|
this.contents.clearRect(0, y + 10, this.width, 24);
|
|
var maxText = ' ' + maxHP
|
|
var width = this.textWidth(maxText) + 11;
|
|
this.drawText(hp, 0, y, this.width - width, 'right');
|
|
this.drawText(maxText, 0, y, this.width - 10,'right');
|
|
this.drawText('/', 0, y + 1, this.width - width + 5,'right');
|
|
this.resetFontSettings();
|
|
};
|
|
//=============================================================================
|
|
// * Draw HP
|
|
//=============================================================================
|
|
Window_OmoriBattleActorStatus.prototype.drawMP = function(mp, maxMP) {
|
|
this.contents.fontSize = 16;
|
|
var y = 131;
|
|
this.contents.clearRect(0, y + 10, this.width, 24);
|
|
var maxText = ' ' + maxMP
|
|
var width = this.textWidth(maxText) + 11;
|
|
this.drawText(mp, 0, y, this.width - width, 'right');
|
|
this.drawText(maxText, 0, y, this.width - 10,'right');
|
|
this.drawText('/', 0, y + 1, this.width - width + 5,'right');
|
|
this.resetFontSettings()
|
|
};
|
|
//=============================================================================
|
|
// * Frame Update
|
|
//=============================================================================
|
|
Window_OmoriBattleActorStatus.prototype.update = function() {
|
|
// Super Call
|
|
Window_Base.prototype.update.call(this);
|
|
// Update Positions
|
|
this.updatePositions();
|
|
// Update Status back fading
|
|
this.updateStatusBackFade();
|
|
// Update Bars
|
|
this.updateBars();
|
|
// Update Animation
|
|
this.updateAnimation();
|
|
// Update Overlay
|
|
this.updateOverlay()
|
|
// Update Damage
|
|
this.updateDamage();
|
|
// Update ACS Bubbles
|
|
this.updateACSBubbles();
|
|
};
|
|
//=============================================================================
|
|
// * Update Positions
|
|
//=============================================================================
|
|
Window_OmoriBattleActorStatus.prototype.updatePositions = function() {
|
|
|
|
|
|
this._statusBackSprite.x = this.x + 7;
|
|
this._statusBackSprite.y = this.y + 17;
|
|
|
|
this._faceSprite.x = this.x + (this.width - 106) / 2;
|
|
this._faceSprite.y = this.y + 15
|
|
|
|
this._polaroidSprite.x = this.x;
|
|
this._polaroidSprite.y = this.y;
|
|
|
|
this._hpBarSprite.x = this.x + 28
|
|
this._hpBarSprite.y = this.y + 127;
|
|
|
|
this._mpBarSprite.x = this.x + 28
|
|
this._mpBarSprite.y = this.y + 146;
|
|
|
|
this._stateSprite.x = this.x + this.width / 2;
|
|
this._stateSprite.y = this.y + 14;
|
|
|
|
this._selectedOverlay.x = this.x + -12
|
|
this._selectedOverlay.y = this.y + -3
|
|
|
|
this._windowContentsSprite.x = this.x;
|
|
this._windowContentsSprite.y = this.y;
|
|
|
|
// Go Through Layer List
|
|
for (var i = 0; i < this._statusParticleEmitters.length; i++) {
|
|
// Create Particle Emitter
|
|
var sprite = this._statusParticleEmitters[i]
|
|
sprite.x = this.x + this.width / 2;
|
|
sprite.y = this.y + 120;
|
|
};
|
|
};
|
|
//=============================================================================
|
|
// * Set Status Header
|
|
//=============================================================================
|
|
Window_OmoriBattleActorStatus.prototype.setStatusHeader = function(index) {
|
|
this._stateSprite._frame.y = index * 24;
|
|
this._stateSprite._refresh()
|
|
};
|
|
//=============================================================================
|
|
// * Start Animation
|
|
//=============================================================================
|
|
Window_OmoriBattleActorStatus.prototype.setStatusBack = function(index, fade = true) {
|
|
|
|
// If Fade flag
|
|
if (fade) {
|
|
// Create Sprite
|
|
var sprite = new Sprite(ImageManager.loadSystem('faceset_states'));
|
|
// Get Status Back Frame
|
|
var frame = this._statusBackSprite._frame;
|
|
// Set Sprite Frame
|
|
sprite.setFrame(frame.x, frame.y, frame.width, frame.height);
|
|
// Add Sprite to Status Back Sprite
|
|
this._statusBackSprite.addChildAt(sprite, 0)
|
|
};
|
|
var width = 100, height = 100;
|
|
var sx = (index % 4) * height;
|
|
var sy = Math.floor(index / 4) * width;
|
|
this._statusBackSprite.setFrame(sx, sy, width, height);
|
|
};
|
|
//=============================================================================
|
|
// * Setup Status State Particles
|
|
//=============================================================================
|
|
Window_OmoriBattleActorStatus.prototype.setupStatusParticles = function(data) {
|
|
// Get Layers
|
|
var layers = ['behind', 'front', 'top'];
|
|
// If Data Exists
|
|
if (data) {
|
|
// Go through layers
|
|
for (var i = 0; i < layers.length; i++) {
|
|
// Get Layer Data
|
|
var layerData = data[layers[i]];
|
|
// Get Particles
|
|
var particles = this._statusParticleEmitters[i];
|
|
// If Layer Data Exists
|
|
if (layerData) {
|
|
particles.setupGenerator(layerData)
|
|
particles.activate();
|
|
} else {
|
|
// Clear and Deactivate
|
|
particles.clear(); particles.deactivate();
|
|
}
|
|
}
|
|
} else {
|
|
// Go through layers
|
|
for (var i = 0; i < layers.length; i++) {
|
|
// Get Particles
|
|
var particles = this._statusParticleEmitters[i];
|
|
// Clear and Deactivate
|
|
particles.clear(); particles.deactivate();
|
|
}
|
|
};
|
|
};
|
|
//=============================================================================
|
|
// * Start Animation
|
|
//=============================================================================
|
|
Window_OmoriBattleActorStatus.prototype.startAnimation = function(layer, animation, mirror, delay) {
|
|
// Set Default Animation Layer
|
|
var animLayer = this._displayLayers._animation4
|
|
switch (layer) {
|
|
case 0: animLayer = this._displayLayers._animation0 ;break;
|
|
case 1: animLayer = this._displayLayers._animation1 ;break;
|
|
case 2: animLayer = this._displayLayers._animation2 ;break;
|
|
case 3: animLayer = this._displayLayers._animation4 ;break;
|
|
};
|
|
// Get Layers
|
|
var sprite = animLayer.startAnimation(animation, false, 0);
|
|
sprite.setHomePosition(this._homePosition.x, this._homePosition.y);
|
|
};
|
|
//=============================================================================
|
|
// * Update Animation
|
|
//=============================================================================
|
|
Window_OmoriBattleActorStatus.prototype.updateAnimation = function() {
|
|
// Get Actor
|
|
var actor = this.actor();
|
|
// If Actor
|
|
if (actor) {
|
|
while (actor.isAnimationRequested()) {
|
|
var data = actor.shiftAnimation();
|
|
var animation = $dataAnimations[data.animationId];
|
|
var mirror = data.mirror;
|
|
var delay = animation.position === 3 ? 0 : data.delay;
|
|
var layer = DataManager.animationLayer(animation);
|
|
this.startAnimation(layer, animation, mirror, delay);
|
|
};
|
|
};
|
|
};
|
|
//=============================================================================
|
|
// * Update Status Back Fade
|
|
//=============================================================================
|
|
Window_OmoriBattleActorStatus.prototype.updateStatusBackFade = function() {
|
|
// If Status Back Sprite has children
|
|
if (this._statusBackSprite.children.length > 0) {
|
|
// Remove Flag
|
|
var remove = false;
|
|
// Get Children
|
|
var children = this._statusBackSprite.children;
|
|
// Go Through children
|
|
for (var i = 0; i < children.length; i++) {
|
|
var sprite = children[i];
|
|
// Decrease Opacity
|
|
sprite.opacity -= 10;
|
|
// If sprite opacity is 0 or less
|
|
if (sprite.opacity <= 0) { remove = true; };
|
|
};
|
|
// If remove flag is true
|
|
if (remove) {
|
|
// Go Through children
|
|
children.forEach(function(child) {
|
|
// If Child opacity is 0 or less remove from parent
|
|
if (child.opacity <= 0) { this._statusBackSprite.removeChild(child); };
|
|
}, this);
|
|
}
|
|
};
|
|
};
|
|
//=============================================================================
|
|
// * Update Damage
|
|
//=============================================================================
|
|
Window_OmoriBattleActorStatus.prototype.updateDamage = function() {
|
|
// Get Actor
|
|
var actor = this.actor();
|
|
// If Actor Exists
|
|
if (actor) {
|
|
if (actor.isDamagePopupRequested()) {
|
|
// Create Damage sprite
|
|
var damage = new Sprite_Damage();
|
|
damage.x = this.width / 2;
|
|
damage.y = this.height - (40 + (20 * Math.floor(actor._damagePopup.length / 3))) + (40 * this._popupCount);
|
|
damage.x += this._homePosition.x;
|
|
damage.y += this._homePosition.y + 2;
|
|
damage.setup(actor);
|
|
// Get Result
|
|
var result = actor._damagePopup[0] || actor.result();
|
|
this._damageContainer.addChild(damage);
|
|
this._damageSprites.push(damage);
|
|
// If Damage is more than 0
|
|
if (result.hpDamage > 0) {
|
|
// Set Damage Face Animation
|
|
if(!$gameTemp._secondChance || actor.actorId() !== 1) {this._faceSprite.setAnimRow(9)}
|
|
};
|
|
this._popupCount++;
|
|
// Clear Results
|
|
//actor.clearDamagePopup();
|
|
//actor.clearResult();
|
|
}
|
|
else {
|
|
if(this._popupCount > 0) {this._popupCount = 0;}
|
|
}
|
|
};
|
|
|
|
// Go Through Damage Sprites
|
|
for (var i = 0; i < this._damageSprites.length; i++) {
|
|
// Get Sprite
|
|
var sprite = this._damageSprites[i];
|
|
// If Damage is not playing anymore
|
|
if (!sprite.isPlaying()) { this._removeDamageSprites.push(sprite); };
|
|
};
|
|
// If Removed Damage Sprites length is more than 0
|
|
if (this._removeDamageSprites.length > 0) {
|
|
// Go Through Removed Damage Sprites
|
|
for (var i = 0; i < this._removeDamageSprites.length; i++) {
|
|
// Get Sprite
|
|
var sprite = this._removeDamageSprites[i];
|
|
// Get Index
|
|
var index = this._damageSprites.indexOf(sprite);
|
|
// If Index exist
|
|
if (index >= 0) { this._damageSprites.splice(index, 1); };
|
|
// Remove Sprite
|
|
this._damageContainer.removeChild(sprite);
|
|
};
|
|
// Clear Remove Damage sprites
|
|
this._removeDamageSprites = [];
|
|
};
|
|
};
|
|
//=============================================================================
|
|
// * Update Bars
|
|
//=============================================================================
|
|
Window_OmoriBattleActorStatus.prototype.updateBars = function() {
|
|
// Get Actor
|
|
var actor = this.actor();
|
|
|
|
// If Actor Exists
|
|
if (actor) {
|
|
// Get Animation
|
|
var anim = this._hpAnim
|
|
if (actor.hp !== anim.old) {
|
|
anim.target = actor.hp;
|
|
anim.old = actor.hp
|
|
anim.duration = Math.abs(anim.current - anim.target).clamp(0, 30);;
|
|
};
|
|
anim = this._mpAnim
|
|
if (actor.mp !== anim.old) {
|
|
anim.target = actor.mp;
|
|
anim.old = actor.mp
|
|
anim.duration = Math.abs(anim.current - anim.target).clamp(0, 30);;
|
|
};
|
|
};
|
|
|
|
// If HP Animation Duration is more than 0
|
|
if (this._hpAnim.duration > 0) {
|
|
var anim = this._hpAnim;
|
|
anim.current = (anim.current * (anim.duration - 1) + anim.target) / anim.duration;
|
|
anim.duration--;
|
|
this.drawHP(Math.round(anim.current), actor.mhp)
|
|
var width = (anim.current / actor.mhp) * 81;
|
|
this._hpBarSprite._frame.width = width;
|
|
this._hpBarSprite._refresh();
|
|
}
|
|
// If MP Animation Duration is more than 0
|
|
if (this._mpAnim.duration > 0) {
|
|
var anim = this._mpAnim;
|
|
anim.current = (anim.current * (anim.duration - 1) + anim.target) / anim.duration;
|
|
anim.duration--;
|
|
this.drawMP(Math.round(anim.current), actor.mmp)
|
|
var width = (anim.current / actor.mmp) * 81;
|
|
this._mpBarSprite._frame.width = width;
|
|
this._mpBarSprite._refresh();
|
|
};
|
|
};
|
|
//=============================================================================
|
|
// * Update Bars
|
|
//=============================================================================
|
|
Window_OmoriBattleActorStatus.prototype.updateOverlay = function() {
|
|
// If Selected
|
|
if (this._selected) {
|
|
// Get Animation
|
|
var anim = this._overlayAnim;
|
|
// If Animation delay is 0
|
|
if (anim.delay <= 0) {
|
|
if (anim.side === 0) {
|
|
this._selectedOverlay.opacity += 15;
|
|
if (this._selectedOverlay.opacity >= 255) {
|
|
anim.side = 1; anim.delay = 40;
|
|
};
|
|
} else {
|
|
this._selectedOverlay.opacity -= 15;
|
|
if (this._selectedOverlay.opacity <= 0) {
|
|
anim.side = 0; anim.delay = 10;
|
|
};
|
|
};
|
|
} else {
|
|
// Decrease Delay
|
|
anim.delay--
|
|
};
|
|
} else if (this._selectedOverlay.opacity > 0 || this._overlayAnim.side === 1) {
|
|
// Decrease Opacity
|
|
this._selectedOverlay.opacity -= 25;
|
|
// If Overlay opacity is 0 or less (Finished fading out)
|
|
if (this._selectedOverlay.opacity <= 0) {
|
|
// Reset Side & Delay
|
|
this._overlayAnim.side = 0;
|
|
this._overlayAnim.delay = 0;
|
|
};
|
|
};
|
|
};
|
|
//=============================================================================
|
|
// * Show ACS Bubbles
|
|
//=============================================================================
|
|
Window_OmoriBattleActorStatus.prototype.showACSBubbles = function(duration = 15) {
|
|
this._acsBubbleOpacityDuration = duration;
|
|
this._acsBubbleOpacity = 255
|
|
};
|
|
//=============================================================================
|
|
// * Hide ACS Bubbles
|
|
//=============================================================================
|
|
Window_OmoriBattleActorStatus.prototype.hideACSBubbles = function(duration = 15) {
|
|
this._acsBubbleOpacityDuration = duration;
|
|
this._acsBubbleOpacity = 0
|
|
};
|
|
//=============================================================================
|
|
// * Setup ACS Bubbles
|
|
//=============================================================================
|
|
Window_OmoriBattleActorStatus.prototype.setupACSBubbles = function(list) {
|
|
// Get Actor
|
|
var actor = this.actor();
|
|
for (var i = 0; i < this._acsBubbleSprites.length; i++) {
|
|
// Get Skill
|
|
var data = list[i];
|
|
// Get Bubble
|
|
var bubble = this._acsBubbleSprites[i];
|
|
// Update Position
|
|
bubble.updatePosition(i);
|
|
// If Data
|
|
if (data) {
|
|
// Get Skill
|
|
var skill = data[1];
|
|
// Bubble Index
|
|
var bubbleIndex = skill.meta.ChainSkillIcon === undefined ? 0 : Number(skill.meta.ChainSkillIcon);
|
|
// If Skill is Chain Skill Energy Release And Energy is at max
|
|
if (skill.meta.ChainSkillEnergyRelease && $gameParty.stressEnergyCount >= 10) {
|
|
// Change Index
|
|
bubbleIndex = $gameParty.size() === 1 ? 3 : 2;
|
|
bubble.startShake();
|
|
} else {
|
|
bubble.stopShake();
|
|
};
|
|
// Set Bubble Index
|
|
bubble.setBubbleIndex(bubbleIndex);
|
|
bubble.setArrowDirection(data[0]);
|
|
actor.canUse(skill) ? bubble.activate() : bubble.deactivate();
|
|
};
|
|
};
|
|
};
|
|
//=============================================================================
|
|
// * Select ACS Bubble
|
|
//=============================================================================
|
|
Window_OmoriBattleActorStatus.prototype.selectACSBubble = function(direction) {
|
|
for (var i = 0; i < this._acsBubbleSprites.length; i++) {
|
|
// Get Bubble
|
|
var bubble = this._acsBubbleSprites[i];
|
|
if (bubble._arrowDirection === direction) {
|
|
bubble.fadeOpacity(255, 5)
|
|
} else {
|
|
bubble.deactivate();
|
|
bubble.fadeOpacity(0, 5)
|
|
};
|
|
};
|
|
};
|
|
//=============================================================================
|
|
// * Update ACS Bubbles
|
|
//=============================================================================
|
|
Window_OmoriBattleActorStatus.prototype.updateACSBubbles = function() {
|
|
// Get Sprite
|
|
var sprite = this._acsBubbleContainer;
|
|
// If ACS Bubble duration is more than 0
|
|
if (this._acsBubbleOpacityDuration > 0) {
|
|
var d = this._acsBubbleOpacityDuration;
|
|
sprite.opacity = (sprite.opacity * (d - 1) + this._acsBubbleOpacity) / d;
|
|
this._acsBubbleOpacityDuration--;
|
|
};
|
|
};
|
|
|
|
|
|
|
|
//=============================================================================
|
|
// ** Window_ActorCommand
|
|
//-----------------------------------------------------------------------------
|
|
// The window for selecting an actor's action on the battle screen.
|
|
//=============================================================================
|
|
// Alias Listing
|
|
//=============================================================================
|
|
_TDS_.OmoriBattleSystem.Window_ActorCommand_makeCommandList = Window_ActorCommand.prototype.makeCommandList;
|
|
//=============================================================================
|
|
// * Object Initilization
|
|
//=============================================================================
|
|
Window_ActorCommand.prototype.initialize = function() {
|
|
// Set Custom Cursor X Offset
|
|
this._customCursorXOffset = 0;
|
|
// Set Max Command Columns
|
|
this._commandMaxCols = 2;
|
|
// Super Call
|
|
Window_Command.prototype.initialize.call(this, 0, 0);
|
|
// Create Command Sprites
|
|
this.createCommandSprites()
|
|
this.opacity = 0;
|
|
this.deactivate();
|
|
this._actor = null;
|
|
this.openness = 0;
|
|
};
|
|
//=============================================================================
|
|
// * Settings
|
|
//=============================================================================
|
|
Window_ActorCommand.prototype.windowWidth = function() { return 360; };
|
|
Window_ActorCommand.prototype.numVisibleRows = function() { return 4; };
|
|
Window_ActorCommand.prototype.isUsingCustomCursorRectSprite = function() { return true; };
|
|
Window_ActorCommand.prototype.maxCols = function() { return this._commandMaxCols; };
|
|
Window_ActorCommand.prototype.standardPadding = function() { return 0; };
|
|
Window_ActorCommand.prototype.itemHeight = function() { return 59 - 17; };
|
|
Window_ActorCommand.prototype.itemWidth = function() { return 178; };
|
|
Window_ActorCommand.prototype.customCursorRectXOffset = function() { return this._customCursorXOffset; }
|
|
Window_ActorCommand.prototype.customCursorRectYOffset = function() { return 0; }
|
|
Window_ActorCommand.prototype.spacing = function() { return 4; };
|
|
//=============================================================================
|
|
// * Item Rect
|
|
//=============================================================================
|
|
Window_ActorCommand.prototype.itemRect = function(index) {
|
|
// Get Rect
|
|
var rect = Window_Command.prototype.itemRect.call(this, index);
|
|
// rect.x += 15;
|
|
// rect.y -= 5;
|
|
// console.log(index, rect)
|
|
return rect;
|
|
};
|
|
//=============================================================================
|
|
// * Make Command List
|
|
//=============================================================================
|
|
Window_ActorCommand.prototype.makeCommandList = function() {
|
|
// Run Original Function
|
|
_TDS_.OmoriBattleSystem.Window_ActorCommand_makeCommandList.call(this);
|
|
// If world index is 3
|
|
if ($gameVariables.value(22) === 3 || $gameVariables.value(22) === 4) {
|
|
// Remove all commands past the second one
|
|
this._list.splice(2, 99);
|
|
};
|
|
};
|
|
//=============================================================================
|
|
// * Draw Item
|
|
//=============================================================================
|
|
Window_ActorCommand.prototype.drawItem = function(index) {};
|
|
//=============================================================================
|
|
// * Determine if Current Item is Enabled
|
|
//=============================================================================
|
|
Window_ActorCommand.prototype.isCurrentItemEnabled = function() {
|
|
// If Command is disabled return false
|
|
if (this._actor && this._actor.isBattleCommandDisabled(this.index())) { return false; }
|
|
|
|
// Return Original Function
|
|
return Window_Command.prototype.isCurrentItemEnabled.call(this);
|
|
};
|
|
//=============================================================================
|
|
// * Create Command Sprites
|
|
//=============================================================================
|
|
Window_ActorCommand.prototype.createCommandSprites = function() {
|
|
// Set Command Name
|
|
let commandName = 'BattleCommands_DreamWorld';
|
|
// Set Default Custom cursor X Offset
|
|
this._customCursorXOffset = 12;
|
|
// Set Default Max Columns
|
|
this._commandMaxCols = 2;
|
|
// Set Command
|
|
switch ($gameVariables.value(22)) {
|
|
case 1:
|
|
commandName = 'BattleCommands_DreamWorld';
|
|
this._commandMaxCols = 2;
|
|
break;
|
|
case 2: commandName = 'BattleCommands_Faraway' ;break;
|
|
case 3:
|
|
commandName = 'BattleCommands_BlackSpace';
|
|
this._customCursorXOffset = 90;
|
|
this._commandMaxCols = 1;
|
|
// commandName = 'BattleCommands_BS_ATK_SKILL';
|
|
// this._commandMaxCols = 1;
|
|
// this._customCursorXOffset = 90;
|
|
// break;
|
|
case 4:
|
|
commandName = 'BattleCommands_BlackSpace';
|
|
this._customCursorXOffset = 90;
|
|
this._commandMaxCols = 1;
|
|
break;
|
|
case 5:
|
|
commandName = 'BattleCommands_BlackSpace';
|
|
this._customCursorXOffset = 90;
|
|
this._commandMaxCols = 1;
|
|
break;
|
|
};
|
|
// Initialize Command Sprites Array
|
|
this._commandSprites = [];
|
|
// Get Bitmap
|
|
var bitmap = ImageManager.loadSystem(commandName);
|
|
var sw = bitmap.width / this._commandMaxCols;
|
|
var sh = bitmap.height / 2;
|
|
|
|
for (var i = 0; i < 4; i++) {
|
|
// Create Command Sprite
|
|
let sprite = new Sprite(bitmap);
|
|
// Get Item Rectangle
|
|
let rect = this.itemRect(i);
|
|
|
|
let sx = (i % this._commandMaxCols) * sw;
|
|
let sy = Math.floor(i / this._commandMaxCols) * sh;
|
|
sprite.setFrame(sx, sy, sw, sh, 0, 0);
|
|
// sprite.x = rect.x - ((i % 2) * 2);
|
|
sprite.x = rect.x;
|
|
sprite.y = rect.y;
|
|
this._commandSprites[i] = sprite;
|
|
this.addChildToBack(sprite)
|
|
};
|
|
};
|
|
|
|
|
|
|
|
//=============================================================================
|
|
// ** Window_BattleStatus
|
|
//-----------------------------------------------------------------------------
|
|
// The window for displaying the status of party members on the battle screen.
|
|
//=============================================================================
|
|
// * Object Initilization
|
|
//=============================================================================
|
|
Window_BattleStatus.prototype.initialize = function() {
|
|
// Super Call
|
|
Window_Selectable.prototype.initialize.call(this, 30, 0, 1, 1);
|
|
// Window_Selectable.prototype.initialize.call(this, 30 + 100, 0 + 100, 1 + 300, 1 + 300);
|
|
this.opacity = 0;
|
|
};
|
|
//=============================================================================
|
|
// * Update Arrows
|
|
//=============================================================================
|
|
Window_BattleStatus.prototype._updateArrows = function() {
|
|
this._downArrowSprite.visible = false;
|
|
this._upArrowSprite.visible = false;
|
|
};
|
|
//=============================================================================
|
|
// * Settings
|
|
//=============================================================================
|
|
Window_BattleStatus.prototype.maxCols = function() { return 2;};
|
|
//=============================================================================
|
|
// * Refresh
|
|
//=============================================================================
|
|
Window_BattleStatus.prototype.refresh = function() {
|
|
// If Face Windows Exist
|
|
if (this._faceWindows) {
|
|
// Go Through Face Windows
|
|
for (var i = 0; i < this._faceWindows.length; i++) {
|
|
// Refresh Face Windows
|
|
this._faceWindows[i].refresh();
|
|
};
|
|
};
|
|
};
|
|
//=============================================================================
|
|
// * Update Cursor
|
|
//=============================================================================
|
|
Window_BattleStatus.prototype.updateCursor = function() {
|
|
// Super Call
|
|
Window_Selectable.prototype.updateCursor.call(this);
|
|
// Update Selected Face Windows
|
|
this.updateSelectedFaceWindows();
|
|
};
|
|
//=============================================================================
|
|
// * Update Selected face windows
|
|
//=============================================================================
|
|
Window_BattleStatus.prototype.updateSelectedFaceWindows = function() {
|
|
// If Face Windows Exist
|
|
if (this._faceWindows) {
|
|
// Go Through Face Windows
|
|
for (var i = 0; i < this._faceWindows.length; i++) {
|
|
// Set Selected State of face window
|
|
this._faceWindows[i]._selected = i === this._index;
|
|
};
|
|
};
|
|
};
|
|
//=============================================================================
|
|
// * Find Next Index in Direction
|
|
//=============================================================================
|
|
Window_BattleStatus.prototype.findNextIndexInDirection = function(direction, index = this.index()) {
|
|
switch (direction) {
|
|
case 'up':
|
|
// Index Switch Case
|
|
switch (index) {
|
|
case 2: // Omori
|
|
if ($gameParty.memberAtStatusIndex(0)) { return 0; };
|
|
if ($gameParty.memberAtStatusIndex(1)) { return 1; };
|
|
|
|
break;
|
|
case 3: // Hero
|
|
if ($gameParty.memberAtStatusIndex(1)) { return 1; };
|
|
if ($gameParty.memberAtStatusIndex(0)) { return 0; };
|
|
break;
|
|
};
|
|
break;
|
|
case 'down':
|
|
// Index Switch Case
|
|
switch (index) {
|
|
case 0: // Aubrey
|
|
if ($gameParty.memberAtStatusIndex(2)) { return 2; };
|
|
if ($gameParty.memberAtStatusIndex(3)) { return 3; };
|
|
break;
|
|
case 1: // Kel
|
|
if ($gameParty.memberAtStatusIndex(3)) { return 3; };
|
|
if ($gameParty.memberAtStatusIndex(2)) { return 2; };
|
|
break;
|
|
};
|
|
|
|
break;
|
|
case 'left':
|
|
// Index Switch Case
|
|
switch (index) {
|
|
case 1: // Kel
|
|
if ($gameParty.memberAtStatusIndex(0)) { return 0; };
|
|
if ($gameParty.memberAtStatusIndex(2)) { return 2; };
|
|
break;
|
|
case 3: // Hero
|
|
if ($gameParty.memberAtStatusIndex(2)) { return 2; };
|
|
if ($gameParty.memberAtStatusIndex(0)) { return 0; };
|
|
break;
|
|
};
|
|
|
|
break;
|
|
case 'right':
|
|
// Index Switch Case
|
|
switch (index) {
|
|
case 0: // Aubrey
|
|
if ($gameParty.memberAtStatusIndex(1)) { return 1; };
|
|
if ($gameParty.memberAtStatusIndex(3)) { return 3; };
|
|
break;
|
|
case 2: // Omori
|
|
if ($gameParty.memberAtStatusIndex(3)) { return 3; };
|
|
if ($gameParty.memberAtStatusIndex(1)) { return 1; };
|
|
break;
|
|
|
|
};
|
|
break;
|
|
};
|
|
// Return provided Index
|
|
return index;
|
|
};
|
|
//=============================================================================
|
|
// * Update Index from Direction
|
|
//=============================================================================
|
|
Window_BattleStatus.prototype.updateIndexFromDirection = function(direction, index = this.index()) {
|
|
// If Index is more than -1
|
|
if (index >= 0) {
|
|
// Set Index
|
|
this._index = this.findNextIndexInDirection(direction, index);
|
|
// Update Cursor
|
|
this.updateCursor();
|
|
// Update Selected face windows
|
|
this.updateSelectedFaceWindows();
|
|
};
|
|
};
|
|
//=============================================================================
|
|
// * Cursor Up
|
|
//=============================================================================
|
|
Window_BattleStatus.prototype.cursorUp = function(wrap) {
|
|
this.updateIndexFromDirection('up');
|
|
};
|
|
//=============================================================================
|
|
// * Cursor Down
|
|
//=============================================================================
|
|
Window_BattleStatus.prototype.cursorDown = function(wrap) {
|
|
this.updateIndexFromDirection('down');
|
|
};
|
|
//=============================================================================
|
|
// * Cursor Left
|
|
//=============================================================================
|
|
Window_BattleStatus.prototype.cursorLeft = function(wrap) {
|
|
this.updateIndexFromDirection('left');
|
|
};
|
|
//=============================================================================
|
|
// * Cursor Left
|
|
//=============================================================================
|
|
Window_BattleStatus.prototype.cursorRight = function(wrap) {
|
|
this.updateIndexFromDirection('right');
|
|
};
|
|
//=============================================================================
|
|
// * Show Actor chain Skill bubbles
|
|
//=============================================================================
|
|
Window_BattleStatus.prototype.showActorChainSkillBubbles = function(actor, list) {
|
|
// Go Through Windows
|
|
for (var i = 0; i < this._faceWindows.length; i++) {
|
|
var win = this._faceWindows[i];
|
|
var selected = win.actor() === actor;
|
|
if (selected) {
|
|
win.showACSBubbles(15);
|
|
win.setupACSBubbles(list);
|
|
} else {
|
|
win.hideACSBubbles(15);
|
|
};
|
|
};
|
|
};
|
|
//=============================================================================
|
|
// * Select Actor Chain Skill Bubble
|
|
//=============================================================================
|
|
Window_BattleStatus.prototype.selectActorChainSkillBubble = function(actor, direction) {
|
|
// Go Through Windows
|
|
for (var i = 0; i < this._faceWindows.length; i++) {
|
|
var win = this._faceWindows[i];
|
|
var selected = win.actor() === actor;
|
|
// If Selected
|
|
if (selected) {
|
|
win.selectACSBubble(direction)
|
|
break
|
|
};
|
|
};
|
|
};
|
|
|
|
|
|
|
|
//=============================================================================
|
|
// ** Window_BattleActor
|
|
//-----------------------------------------------------------------------------
|
|
// The window for selecting a target actor on the battle screen.
|
|
//=============================================================================
|
|
// * Frame Update
|
|
//=============================================================================
|
|
Window_BattleActor.prototype.update = function() {
|
|
// Super Call
|
|
Window_Selectable.prototype.update.call(this);
|
|
// If Input Shift is triggered
|
|
if (this.active && Input.isTriggered('shift')) {
|
|
// Call Group Target Swap
|
|
if (this._groupTargetSwap) { this._groupTargetSwap(); };
|
|
};
|
|
};
|
|
//=============================================================================
|
|
// * Determine if ok is enabled
|
|
//=============================================================================
|
|
Window_BattleActor.prototype.isOkEnabled = function() {
|
|
// let actor = this.actor();
|
|
// if (this._selectDead && actor) return actor.isDead();
|
|
return Window_Selectable.prototype.isOkEnabled.call(this);
|
|
};
|
|
|
|
|
|
|
|
//=============================================================================
|
|
// ** Window_BattleEnemy
|
|
//-----------------------------------------------------------------------------
|
|
// The window for selecting a target enemy on the battle screen.
|
|
//=============================================================================
|
|
// * Frame Update
|
|
//=============================================================================
|
|
Window_BattleEnemy.prototype.update = function() {
|
|
// Super Call
|
|
Window_Selectable.prototype.update.call(this);
|
|
// If Input Shift is triggered
|
|
if (this.active && Input.isTriggered('shift')) {
|
|
// Call Group Target Swap
|
|
if (this._groupTargetSwap) { this._groupTargetSwap(); };
|
|
};
|
|
};
|
|
|
|
|
|
|
|
//=============================================================================
|
|
// ** Window_PartyCommand
|
|
//-----------------------------------------------------------------------------
|
|
// The window for selecting an actor's action on the battle screen.
|
|
//=============================================================================
|
|
// * Object Initilization
|
|
//=============================================================================
|
|
Window_PartyCommand.prototype.initialize = function() {
|
|
Window_Command.prototype.initialize.call(this, 0, 0);
|
|
this.opacity = 0;
|
|
this.createCommandSprites();
|
|
this.createEscapeBlockSprites();
|
|
this.deactivate();
|
|
};
|
|
//=============================================================================
|
|
// * Settings
|
|
//=============================================================================
|
|
Window_PartyCommand.prototype.windowWidth = function() { return 360; };
|
|
Window_PartyCommand.prototype.numVisibleRows = function() { return 4; };
|
|
Window_PartyCommand.prototype.isUsingCustomCursorRectSprite = function() { return true; };
|
|
Window_PartyCommand.prototype.maxCols = function() { return 1; };
|
|
Window_PartyCommand.prototype.standardPadding = function() { return 0; };
|
|
Window_PartyCommand.prototype.itemHeight = function() { return 39; };
|
|
|
|
const _old_Window_Party_Command_maxTopRow = Window_PartyCommand.prototype.maxTopRow;
|
|
Window_PartyCommand.prototype.maxTopRow = function() {
|
|
if(typeof this.maxRows !== "function") {return 0;}
|
|
return _old_Window_Party_Command_maxTopRow.call(this);
|
|
}
|
|
//=============================================================================
|
|
// * Play Ok sound
|
|
//=============================================================================
|
|
Window_PartyCommand.prototype.playOkSound = function() {
|
|
// If world index is 5
|
|
if (SceneManager.currentWorldIndex() === 5) {
|
|
AudioManager.playSe({name: "SE_play", pan: 0, pitch: 100, volume: 90});
|
|
return
|
|
}
|
|
// Play Default Ok sound
|
|
Window_Command.prototype.playOkSound.call(this);
|
|
};
|
|
//=============================================================================
|
|
// * Item Rect
|
|
//=============================================================================
|
|
Window_PartyCommand.prototype.itemRect = function(index) {
|
|
// Get Rect
|
|
var rect = Window_Command.prototype.itemRect.call(this, index);
|
|
if ($gameVariables.value(22) === 5) {
|
|
rect.x += 95;
|
|
rect.y += 20;
|
|
} else {
|
|
rect.x += [60, 80][index]
|
|
};
|
|
return rect;
|
|
};
|
|
//=============================================================================
|
|
// * Make Command List
|
|
//=============================================================================
|
|
Window_PartyCommand.prototype.makeCommandList = function() {
|
|
this.addCommand(TextManager.fight, 'fight');
|
|
if ($gameVariables.value(22) !== 5) {
|
|
this.addCommand(TextManager.escape, 'escape', BattleManager.canEscape());
|
|
};
|
|
};
|
|
//=============================================================================
|
|
// * Draw Item
|
|
//=============================================================================
|
|
Window_PartyCommand.prototype.drawItem = function(index) { };
|
|
//=============================================================================
|
|
// * Create Escape Block Sprites
|
|
//=============================================================================
|
|
Window_PartyCommand.prototype.createEscapeBlockSprites = function() {
|
|
// Create Escape Block Container
|
|
this._escapeBlockContainer = new Sprite();
|
|
this.addChild(this._escapeBlockContainer);
|
|
};
|
|
//=============================================================================
|
|
// * Create Command Sprites
|
|
//=============================================================================
|
|
Window_PartyCommand.prototype.createCommandSprites = function() {
|
|
// Set Command Name
|
|
let commandName = 'party_command';
|
|
let commandsSize = 2;
|
|
// Set Command
|
|
switch ($gameVariables.value(22)) {
|
|
case 1: commandName = 'PartyCommands_DreamWorld' ;break;
|
|
case 2: commandName = 'PartyCommands_Faraway' ;break;
|
|
// case 3: commandName = 'party_command' ;break;
|
|
case 3: commandName = 'PartyCommands_BlackSpace' ;break;
|
|
case 4: commandName = 'PartyCommands_BlackSpace' ;break;
|
|
case 5: commandName = 'PartyCommands_FinalBattle'; commandsSize = 1 ;break;
|
|
};
|
|
// Hard code it to for simplicty sake
|
|
//if (BattleManager._battleRetried && $gameTroop._troopId == 891) {
|
|
if ($gameVariables.value(1220) >= 5 && $gameTroop._troopId == 891) {
|
|
commandName = 'PartyCommands_FinalBattle';
|
|
commandsSize = 1;
|
|
}
|
|
|
|
// Initialize Command Sprites Array
|
|
this._commandSprites = [];
|
|
// Get Bitmap
|
|
let bitmap = ImageManager.loadSystem(commandName);
|
|
bitmap.addLoadListener(() => {
|
|
if (commandsSize > 1) {
|
|
let height = bitmap.height / commandsSize;
|
|
for (var i = 0; i < commandsSize; i++) {
|
|
var sprite = new Sprite(bitmap);
|
|
sprite.setFrame(0, i * height, 360, height);
|
|
sprite.y = i * (height + 3);
|
|
|
|
|
|
this._commandSprites[i] = sprite;
|
|
this.addChildToBack(sprite)
|
|
};
|
|
} else {
|
|
let sprite = new Sprite(bitmap);
|
|
sprite.setFrame(0, 0, 360, bitmap.height);
|
|
sprite.y = 0;
|
|
this._commandSprites[i] = sprite;
|
|
this.addChildToBack(sprite)
|
|
};
|
|
})
|
|
|
|
};
|
|
//=============================================================================
|
|
// * Process Ok
|
|
//=============================================================================
|
|
Window_PartyCommand.prototype.processOk = function() {
|
|
// Get World Index
|
|
let world = $gameVariables.value(22);
|
|
// Get Current Command symbol
|
|
let symbol = this.currentSymbol();
|
|
// If escape command and world is 4 or 5
|
|
if (symbol === 'escape' && (world === 4 || world === 5)) {
|
|
// If Escape Block Container has no children
|
|
if (this._escapeBlockContainer.children.length === 0) {
|
|
// Start Escape Block Effect
|
|
this.startEscapeBlockEffect()
|
|
};
|
|
return;
|
|
};
|
|
// Remove Children
|
|
this._escapeBlockContainer.removeChildren();
|
|
// Run Original Function
|
|
Window_Command.prototype.processOk.call(this);
|
|
};
|
|
//=============================================================================
|
|
// * Start Escape Block Effect
|
|
//=============================================================================
|
|
Window_PartyCommand.prototype.startEscapeBlockEffect = function() {
|
|
// Set Spacing
|
|
let spacing = [20, 0, 30]
|
|
for (var s = 0; s < 2; s++) {
|
|
for (var i = 0; i < 3; i++) {
|
|
// Create Sprite
|
|
let sprite = new Sprite_BattleBSRedHand(s);
|
|
sprite.x = s === 0 ? (this.width - 60) + spacing[i] : -0 - spacing[i];
|
|
sprite.y = (this.itemRect(1).y - 25) + i * 13;
|
|
this._escapeBlockContainer.addChild(sprite);
|
|
};
|
|
};
|
|
};
|
|
|
|
|
|
|
|
|
|
//=============================================================================
|
|
// ** Sprite_BattleBSRedHand
|
|
//-----------------------------------------------------------------------------
|
|
// This sprite is used to display red hands in battle menus
|
|
//=============================================================================
|
|
function Sprite_BattleBSRedHand() { this.initialize.apply(this, arguments); }
|
|
Sprite_BattleBSRedHand.prototype = Object.create(Sprite.prototype);
|
|
Sprite_BattleBSRedHand.prototype.constructor = Sprite_BattleBSRedHand;
|
|
//=============================================================================
|
|
// * Object Initilization
|
|
//=============================================================================
|
|
Sprite_BattleBSRedHand.prototype.initialize = function(side = 0) {
|
|
// Super Call
|
|
Sprite.prototype.initialize.call(this);
|
|
// Set Side
|
|
this._side = side;
|
|
// Setup Bitmap
|
|
this.setupBitmap(side);
|
|
|
|
AudioManager.playSe({name: "SE_red_hands", pan: 0, pitch: 100, volume: 90});
|
|
// Set Move speed
|
|
this._moveSpeed = side === 0 ? -4 : 4
|
|
// Initialize Phase
|
|
this._phase = 0;
|
|
// Initialize Animation
|
|
this._animation = {frame: Math.randomInt(4), frames: [0, 1, 2, 1], count: 0, delay: 7};
|
|
// Initialize Opacity
|
|
this.opacity = 0;
|
|
};
|
|
//=============================================================================
|
|
// * Setup bitmap
|
|
//=============================================================================
|
|
Sprite_BattleBSRedHand.prototype.setupBitmap = function(side) {
|
|
// Get Bitmap
|
|
let bitmap = ImageManager.loadSystem('bsRedHands');
|
|
let width = bitmap.width / 3;
|
|
let height = bitmap.height / 2;
|
|
// Set Bitmap
|
|
this.bitmap = bitmap;
|
|
// Set Frame
|
|
this.setFrame(0, side * height, width, height);
|
|
};
|
|
//=============================================================================
|
|
// * Frame Update
|
|
//=============================================================================
|
|
Sprite_BattleBSRedHand.prototype.update = function() {
|
|
// Super Call
|
|
Sprite.prototype.update.call(this);
|
|
// Update Animation
|
|
this.updateAnimation();
|
|
};
|
|
//=============================================================================
|
|
// * Update Animation
|
|
//=============================================================================
|
|
Sprite_BattleBSRedHand.prototype.updateAnimation = function() {
|
|
|
|
if (this._phase === 0) {
|
|
// Increase Opacity
|
|
this.opacity += 30;
|
|
// Move by Amount of Move Speed
|
|
this.x += this._moveSpeed;
|
|
// Set Phase
|
|
if (this.opacity >= 255) { this._phase = 1;};
|
|
} else if (this._phase === 1) {
|
|
// Move Flag
|
|
let move = true;
|
|
// If side is 0
|
|
if (this._side === 0) {
|
|
move = this.x > 170;
|
|
} else {
|
|
move = this.x < 130;
|
|
};
|
|
// If can move
|
|
if (move) {
|
|
// Move by Amount of Move Speed
|
|
this.x += this._moveSpeed;
|
|
} else {
|
|
// Set Phase
|
|
this._phase = 2;
|
|
};
|
|
} else {
|
|
// Decrease Opacity
|
|
this.opacity -= 10;
|
|
|
|
// If Opacity is 0 or less
|
|
if (this.opacity <= 0) {
|
|
// Remove Child
|
|
this.parent.removeChild(this);
|
|
};
|
|
};
|
|
|
|
// Get Animation
|
|
let anim = this._animation;
|
|
// Decrease Animation Count
|
|
anim.count--;
|
|
// If animation count is 0 or less
|
|
if (anim.count <= 0) {
|
|
// Increase Frame
|
|
anim.frame = (anim.frame + 1) % anim.frames.length;
|
|
// Set Frame
|
|
this.setFrame(anim.frames[anim.frame] * this.width, this._frame.y, this.width, this.height);
|
|
// Resets Animation Count
|
|
anim.count = anim.delay;
|
|
};
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
//=============================================================================
|
|
// ** Window_ItemListBack
|
|
//-----------------------------------------------------------------------------
|
|
// This window displays the quest list header.
|
|
//=============================================================================
|
|
function Window_ItemListBack() { this.initialize.apply(this, arguments); }
|
|
Window_ItemListBack.prototype = Object.create(Window_Base.prototype);
|
|
Window_ItemListBack.prototype.constructor = Window_ItemListBack;
|
|
//=============================================================================
|
|
// * Initialize Object
|
|
//=============================================================================
|
|
Window_ItemListBack.prototype.initialize = function(width, height) {
|
|
// Super Call
|
|
Window_Base.prototype.initialize.call(this, 0, -30, width, height);
|
|
// Draw Separator
|
|
this.contents.fillRect(0, 28, this.contents.width, 2, 'rgba(255, 255, 255, 2)')
|
|
};
|
|
//=============================================================================
|
|
// * Settings
|
|
//=============================================================================
|
|
Window_ItemListBack.prototype.standardPadding = function() { return 4 };
|
|
Window_ItemListBack.prototype.standardFontSize = function() { return 20; };
|
|
//=============================================================================
|
|
// * Calculate Text Height
|
|
//=============================================================================
|
|
Window_ItemListBack.prototype.setItem = function(item) {
|
|
// Clear Rect
|
|
this.contents.clearRect(0, 0, this.contents.width, 28);
|
|
// If Item
|
|
if (DataManager.isItem(item)) {
|
|
// Set Bitmap Font color to null
|
|
this.contents.bitmapFontColor = null;
|
|
// Draw Item Count
|
|
this.contents.drawText(`QUANTIDADE: x${$gameParty.battleNumItems(item)}`, 6, 2, 100, 20);
|
|
/*this.contents.drawText('EFFECT:', 0, 2, this.contents.width - 148, 20, 'right');
|
|
// Set Default HP Bonus
|
|
var hpBonus = 'N\\A', hpValue = 0;
|
|
// If There's an HP bonus
|
|
if (item.meta.HpEffect) {
|
|
// Get Effect
|
|
var effect = item.meta.HpEffect;
|
|
// Rate Check
|
|
var rateCheck = effect.match(/%$/) !== null;
|
|
// Set HP Value
|
|
hpValue = Number(effect.replace(/%$/, ''));
|
|
// Set HP Bonus
|
|
hpBonus = effect.trim();
|
|
};*/
|
|
|
|
// Set Default MP Bonus
|
|
/*var mpBonus = 'N\\A', mpValue = 0;
|
|
// If There's an MP bonus
|
|
if (item.meta.MpEffect) {
|
|
// Get Effect
|
|
var effect = item.meta.MpEffect;
|
|
// // Rate Check
|
|
// var rateCheck = effect.match(/%$/) !== null;
|
|
// Set HP Value
|
|
mpValue = Number(effect.replace(/%$/, ''));
|
|
// Set HP Bonus
|
|
mpBonus = effect.trim();
|
|
};*/
|
|
|
|
// Set Color
|
|
/*if (hpValue > 0) {
|
|
// Set HP Bonus Value
|
|
hpBonus = '+' + hpBonus;
|
|
this.contents.bitmapFontColor = BitmapFontManager.hexToRGB(this.powerUpColor());
|
|
} else if (hpBonus < 0) {
|
|
this.contents.bitmapFontColor = BitmapFontManager.hexToRGB(this.powerDownColor());
|
|
};
|
|
this.contents.drawText(hpBonus, this.contents.width - 119, 2, 42, 20, 'center');*/
|
|
|
|
// Set Bitmap Font color to null
|
|
/* this.contents.bitmapFontColor = null;
|
|
if (mpValue > 0) {
|
|
// Adjust MP Bonus
|
|
mpBonus = '+' + mpBonus;
|
|
this.contents.bitmapFontColor = BitmapFontManager.hexToRGB(this.powerUpColor());
|
|
} else if (mpBonus < 0) {
|
|
this.contents.bitmapFontColor = BitmapFontManager.hexToRGB(this.powerDownColor());
|
|
};
|
|
this.contents.drawText(mpBonus, this.contents.width - 49, 2, 42, 20, 'center');
|
|
// Draw Icons
|
|
this.drawHPIcon(this.contents.width - 137, 6);
|
|
this.drawMPIcon(this.contents.width - 70, 6);*/
|
|
};
|
|
// If Skill
|
|
if (DataManager.isSkill(item)) {
|
|
// Set Bitmap Font color to null
|
|
this.contents.bitmapFontColor = null;
|
|
this.contents.drawText('CUSTO:', 6, 2, 100, 20);
|
|
this.contents.drawText(this._actor.skillMpCost(item), 0, 2, 95, 20, 'right');
|
|
this.drawMPIcon(100, 6);
|
|
};
|
|
};
|
|
|
|
|
|
|
|
|
|
//=============================================================================
|
|
// ** Window_BattleItem
|
|
//-----------------------------------------------------------------------------
|
|
// The window for selecting an item to use on the battle screen.
|
|
//=============================================================================
|
|
// * Object Initialization
|
|
//=============================================================================
|
|
Window_BattleItem.prototype.initialize = function(x, y, width, height) {
|
|
this._arrowBitmap = new Bitmap(50, 50);
|
|
this._arrowBitmap.fillAll('rgba(255, 0, 0, 1)')
|
|
// Super Call
|
|
Window_ItemList.prototype.initialize.call(this, x, y + 30, width, 90);
|
|
// Create Back Window
|
|
this._backWindow = new Window_ItemListBack(width, height)
|
|
this.addChildToBack(this._backWindow);
|
|
this.opacity = 0;
|
|
this.hide();
|
|
|
|
};
|
|
//=============================================================================
|
|
// * Settings
|
|
//=============================================================================
|
|
Window_BattleItem.prototype.isUsingCustomCursorRectSprite = function() { return true; };
|
|
Window_BattleItem.prototype.includes = function(item) { return $gameParty.canUse(item); };
|
|
Window_BattleItem.prototype.lineHeight = function() { return 24; };
|
|
Window_BattleItem.prototype.spacing = function() { return 0; };
|
|
Window_BattleItem.prototype.standardPadding = function() { return 10; };
|
|
Window_BattleItem.prototype.customCursorRectXOffset = function() { return -24; }
|
|
//=============================================================================
|
|
// * Determine if Item should be included
|
|
//=============================================================================
|
|
Window_BattleItem.prototype.includes = function(item) {
|
|
if (!DataManager.isItem(item)) { return false; };
|
|
if (!$gameParty.canUse(item)) { return false; }
|
|
if ($gameParty.battleNumItems(item) <= 0) { return false; };
|
|
// Category Switch Case
|
|
switch (this._category) {
|
|
case 'toys':
|
|
return DataManager.isToyItem(item);
|
|
case 'snacks':
|
|
return DataManager.isConsumableItem(item);
|
|
};
|
|
// Return false by default
|
|
return false;;
|
|
};
|
|
//=============================================================================
|
|
// * Item Rect
|
|
//=============================================================================
|
|
Window_BattleItem.prototype.itemRect = function(index) {
|
|
// Get Rect
|
|
var rect = Window_SkillList.prototype.itemRect.call(this, index);
|
|
rect.x += 36;
|
|
return rect;
|
|
};
|
|
//=============================================================================
|
|
// * Draw Item
|
|
//=============================================================================
|
|
Window_BattleItem.prototype.drawItem = function(index) {
|
|
var item = this._data[index];
|
|
this.contents.fontSize = 24;
|
|
if (item) {
|
|
var rect = this.itemRect(index);
|
|
rect.width -= this.textPadding();
|
|
rect.width -= 40;
|
|
this.changePaintOpacity(this.isEnabled(item));
|
|
// Get Name
|
|
var name = DataManager.itemShortName(item);
|
|
this.contents.drawText(name, rect.x, rect.y, rect.width, rect.height);
|
|
this.changePaintOpacity(1);
|
|
};
|
|
};
|
|
//=============================================================================
|
|
// * Refresh Arrows
|
|
//=============================================================================
|
|
Window_BattleItem.prototype._refreshArrows = function() {
|
|
// Super Call
|
|
Window_ItemList.prototype._refreshArrows.call(this);
|
|
this._upArrowSprite.x = this._width - 12;
|
|
this._downArrowSprite.x = this._upArrowSprite.x;
|
|
this._downArrowSprite.y = this.height - 33;
|
|
};
|
|
//=============================================================================
|
|
// * Update Help
|
|
//=============================================================================
|
|
Window_BattleItem.prototype.updateHelp = function() {
|
|
// Super Call
|
|
Window_ItemList.prototype.updateHelp.call(this);
|
|
if (this._backWindow) {
|
|
this._backWindow._actor = this._actor;
|
|
this._backWindow.setItem(this.item());
|
|
};
|
|
};
|
|
//=============================================================================
|
|
// * On Cursor Down
|
|
//=============================================================================
|
|
Window_BattleItem.prototype.cursorDown = function(wrap) {
|
|
var index = this.index();
|
|
var maxItems = this.maxItems();
|
|
var maxCols = this.maxCols();
|
|
if (index < maxItems - maxCols) {
|
|
this.select((index + maxCols) % maxItems);
|
|
} else if (index < maxItems && maxItems > 2 && index === maxItems - 2) {
|
|
this.select(maxItems-1);
|
|
}
|
|
};
|
|
|
|
|
|
|
|
|
|
//=============================================================================
|
|
// ** Window_BattleSkill
|
|
//-----------------------------------------------------------------------------
|
|
// The window for selecting skills to use on the battle screen.
|
|
//=============================================================================
|
|
// * Object Initialization
|
|
//=============================================================================
|
|
Window_BattleSkill.prototype.initialize = function(x, y, width, height) {
|
|
// Super Call
|
|
Window_SkillList.prototype.initialize.call(this, x, y + 30, width, 90);
|
|
// Create Back Window
|
|
this._backWindow = new Window_ItemListBack(width, height)
|
|
this.addChildToBack(this._backWindow);
|
|
this.opacity = 0;
|
|
this.hide();
|
|
};
|
|
//=============================================================================
|
|
// * Settings
|
|
//=============================================================================
|
|
Window_BattleSkill.prototype.isUsingCustomCursorRectSprite = function() { return true; };
|
|
//Window_BattleSkill.prototype.includes = function(item) { return Window_SkillList.prototype.includes };
|
|
Window_BattleSkill.prototype.lineHeight = function() { return 22; };
|
|
Window_BattleSkill.prototype.spacing = function() { return 0; };
|
|
Window_BattleSkill.prototype.standardPadding = function() { return 10; };
|
|
Window_BattleSkill.prototype.customCursorRectXOffset = function() { return -28; }
|
|
//=============================================================================
|
|
// * Determine if Item Should be included
|
|
//=============================================================================
|
|
Window_BattleSkill.prototype.includes = function(item) {
|
|
if (item) { return true; }
|
|
return false;
|
|
};
|
|
//=============================================================================
|
|
// * Item Rect
|
|
//=============================================================================
|
|
Window_BattleSkill.prototype.itemRect = function(index) {
|
|
// Get Rect
|
|
var rect = Window_SkillList.prototype.itemRect.call(this, index);
|
|
rect.x += 36;
|
|
return rect;
|
|
};
|
|
//=============================================================================
|
|
// * Select Last
|
|
//=============================================================================
|
|
Window_BattleSkill.prototype.selectLast = function() {
|
|
// Return 0 if not remembering command
|
|
if (!ConfigManager.commandRemember) { return this.select(0); };
|
|
// Run Original Function
|
|
Window_SkillList.prototype.selectLast.call(this);
|
|
};
|
|
//=============================================================================
|
|
// * Draw Item
|
|
//=============================================================================
|
|
Window_BattleSkill.prototype.drawItem = function(index) {
|
|
var item = this._data[index];
|
|
this.contents.fontSize = 24;
|
|
if (item) {
|
|
var rect = this.itemRect(index);
|
|
rect.width -= this.textPadding();
|
|
rect.width -= 40;
|
|
this.changePaintOpacity(this.isEnabled(item));
|
|
// Get Name
|
|
var name = DataManager.itemShortName(item);
|
|
this.contents.drawText(name, rect.x + 5, rect.y, rect.width, rect.height);
|
|
this.changePaintOpacity(1);
|
|
};
|
|
};
|
|
//=============================================================================
|
|
// * Refresh Arrows
|
|
//=============================================================================
|
|
Window_BattleSkill.prototype._refreshArrows = function() {
|
|
// Super Call
|
|
Window_SkillList.prototype._refreshArrows.call(this);
|
|
var w = this._width;
|
|
var h = this._height;
|
|
var p = 24;
|
|
var q = p/2;
|
|
this._downArrowSprite.move(w - q, (h - q) + 6);
|
|
this._upArrowSprite.move(w - q, q + 1);
|
|
};
|
|
//=============================================================================
|
|
// * Update Help
|
|
//=============================================================================
|
|
Window_BattleSkill.prototype.updateHelp = function() {
|
|
// Super Call
|
|
Window_SkillList.prototype.updateHelp.call(this);
|
|
if (this._backWindow) {
|
|
this._backWindow._actor = this._actor;
|
|
this._backWindow.setItem(this.item());
|
|
};
|
|
};
|
|
|
|
|
|
|
|
//=============================================================================
|
|
// ** AudioManager
|
|
//-----------------------------------------------------------------------------
|
|
// Adding a custom channel for Danger's BGS;
|
|
//
|
|
//=============================================================================
|
|
|
|
AudioManager._dangerBgs = null;
|
|
AudioManager._dangerBgsBuffer = null;
|
|
|
|
AudioManager.playDangerBgs = function(bgs, pos) {
|
|
if (!!AudioManager._dangerBgs && AudioManager._dangerBgs.name === bgs.name) {
|
|
this.updateDangerBgsParameters(bgs);
|
|
} else {
|
|
this.stopDangerBgs();
|
|
if (bgs.name) {
|
|
this._dangerBgsBuffer = this.createBuffer('bgs', bgs.name);
|
|
this.updateDangerBgsParameters(bgs);
|
|
this._dangerBgsBuffer.play(true, pos || 0);
|
|
}
|
|
}
|
|
this.updateDangersBgs(bgs, pos);
|
|
};
|
|
|
|
AudioManager.stopDangerBgs = function() {
|
|
if (this._dangerBgsBuffer) {
|
|
this._dangerBgsBuffer.stop();
|
|
this._dangerBgsBuffer = null;
|
|
this._dangerBgs = null;
|
|
}
|
|
};
|
|
|
|
AudioManager.updateDangerBgsParameters = function(bgs) {
|
|
this.updateBufferParameters(this._dangerBgsBuffer, this._bgsVolume, bgs);
|
|
};
|
|
|
|
AudioManager.updateDangersBgs = function(bgs, pos) {
|
|
this._dangerBgs = {
|
|
name: bgs.name,
|
|
volume: bgs.volume,
|
|
pitch: bgs.pitch,
|
|
pan: bgs.pan,
|
|
pos: pos
|
|
};
|
|
};
|
|
|
|
AudioManager.fadeOutDangerBgs = function(duration) {
|
|
if (this._dangerBgsBuffer && this._dangerBgs) {
|
|
this._dangerBgsBuffer.fadeOut(duration);
|
|
this._dangerBgs = null;
|
|
}
|
|
};
|
|
|
|
//=============================================================================
|
|
// ** Sprite_ScrollingText
|
|
//-----------------------------------------------------------------------------
|
|
// This sprite is used to display scrolling text in log type
|
|
// situations.
|
|
//=============================================================================
|
|
function Sprite_ScrollingText() { this.initialize.apply(this, arguments); }
|
|
Sprite_ScrollingText.prototype = Object.create(Sprite.prototype);
|
|
Sprite_ScrollingText.prototype.constructor = Sprite_ScrollingText;
|
|
//=============================================================================
|
|
// * Object Initilization
|
|
//=============================================================================
|
|
Sprite_ScrollingText.prototype.initialize = function() {
|
|
// Super Call
|
|
Sprite.prototype.initialize.call(this);
|
|
this.x = 14;
|
|
this.y = 4;
|
|
this.width = 360 - 28;
|
|
this.height = 88 - 4;
|
|
this.bitmap = new Bitmap(this.width, this.height);
|
|
// Area Mask
|
|
this._areaMask = new PIXI.Graphics();
|
|
this._areaMask.beginFill(0xFFF);
|
|
this._areaMask.drawRect(0, 0, this.width, this.height);
|
|
this._areaMask.endFill()
|
|
this.mask = this._areaMask
|
|
this.addChild(this._areaMask);
|
|
// Create Line Sprites Container
|
|
this._lineSpritesContainer = new Sprite();
|
|
this.addChild(this._lineSpritesContainer);
|
|
|
|
// List of Sprites
|
|
this._list = [];
|
|
// Remove List
|
|
this._removeList = [];
|
|
// Create Window
|
|
this._window = new Window_ScrollingTextSource(this.width, this.height);
|
|
this._window.y = this.height;
|
|
this.addChild(this._window);
|
|
};
|
|
//=============================================================================
|
|
// * Clear
|
|
//=============================================================================
|
|
Sprite_ScrollingText.prototype.clear = function() {
|
|
for (var i = 0; i < this._list.length; i++) {
|
|
this._lineSpritesContainer.removeChild(this._list[i])
|
|
}
|
|
this._list = [];
|
|
};
|
|
//=============================================================================
|
|
// * Line Width
|
|
//=============================================================================
|
|
Sprite_ScrollingText.prototype.lineWidth = function() {
|
|
return this.width;
|
|
};
|
|
//=============================================================================
|
|
// * Add Line
|
|
//=============================================================================
|
|
Sprite_ScrollingText.prototype.addLine = function(text) {
|
|
// Get Last
|
|
var last = this._list[this._list.length - 1];
|
|
// Get Text Data
|
|
var textData = this._window.drawTextEx(text, 0, -4);
|
|
// Create Bitmap
|
|
var bitmap = new Bitmap(this.lineWidth(), textData.height);
|
|
// bitmap.fillAll('rgba(255, 0, 0, 0.5)')
|
|
// Transfer Window Contents
|
|
bitmap.blt(this._window.contents, 0, 0, bitmap.width, bitmap.height, 0, 0);
|
|
// Create Sprite
|
|
var sprite = new Sprite(bitmap);
|
|
sprite.y = last ? last.y + last.height : 0;
|
|
sprite.opacity = 0;
|
|
this._list.push(sprite)
|
|
this._lineSpritesContainer.addChild(sprite);
|
|
// Return Sprite
|
|
return sprite;
|
|
};
|
|
//=============================================================================
|
|
// * Frame Update
|
|
//=============================================================================
|
|
Sprite_ScrollingText.prototype.update = function() {
|
|
// Super Call
|
|
Sprite.prototype.update.call(this);
|
|
// Update Lines
|
|
this.updateLines();
|
|
};
|
|
//=============================================================================
|
|
// * Update Lines
|
|
//=============================================================================
|
|
Sprite_ScrollingText.prototype.updateLines = function() {
|
|
// If List is more than 0
|
|
if (this._list.length > 0) {
|
|
// Get First
|
|
var first = this._list[0];
|
|
// Get Last Sprite
|
|
var last = this._list[this._list.length - 1];
|
|
// Needs scrolling flag
|
|
var needsScrolling = first.y < 0 && first.y >= -first.height || last.y + last.height > this.height;
|
|
// If Needs scrolling
|
|
if (needsScrolling ) {
|
|
first.y = Math.max(first.y - 3, -first.height);
|
|
first.opacity -= 20;
|
|
};
|
|
// If first has reached removal position
|
|
if (first.y <= -first.height) {
|
|
// Get Sprite
|
|
var sprite = this._list.shift();
|
|
this._lineSpritesContainer.removeChild(sprite);
|
|
// Get Next Sprite
|
|
var next = this._list[0];
|
|
// If Next Sprite Exists set the Y to 0
|
|
if (next) { next.y = 0; };
|
|
};
|
|
|
|
var fadeInSpeed = 30;
|
|
if (first.y >= 0 && first.opacity < 255) { first.opacity += fadeInSpeed; };
|
|
|
|
for (var i = 1; i < this._list.length; i++) {
|
|
var sprite = this._list[i];
|
|
var prev = this._list[i-1];
|
|
sprite.y = (prev.y + prev.height)
|
|
|
|
if (sprite.opacity < 255 && (sprite.y > 0 && sprite.y <= this.height)) {
|
|
sprite.opacity += fadeInSpeed;
|
|
};
|
|
};
|
|
};
|
|
};
|
|
|
|
|
|
|
|
|
|
//=============================================================================
|
|
// ** Window_ScrollingTextSource
|
|
//-----------------------------------------------------------------------------
|
|
// This window displays the quest list header.
|
|
//=============================================================================
|
|
function Window_ScrollingTextSource() { this.initialize.apply(this, arguments); }
|
|
Window_ScrollingTextSource.prototype = Object.create(Window_Base.prototype);
|
|
Window_ScrollingTextSource.prototype.constructor = Window_ScrollingTextSource;
|
|
//=============================================================================
|
|
// * Initialize Object
|
|
//=============================================================================
|
|
Window_ScrollingTextSource.prototype.initialize = function(width, height) {
|
|
// Super Call
|
|
Window_Base.prototype.initialize.call(this, 0, 0, width, height);
|
|
};
|
|
//=============================================================================
|
|
// * Settings
|
|
//=============================================================================
|
|
Window_ScrollingTextSource.prototype.standardPadding = function() { return 0 };
|
|
Window_ScrollingTextSource.prototype.standardFontSize = function() { return 24; };
|
|
//=============================================================================
|
|
// * Clear Functions
|
|
//=============================================================================
|
|
Window_ScrollingTextSource.prototype._refreshBack = function() {};
|
|
Window_ScrollingTextSource.prototype._refreshFrame = function() { };
|
|
Window_ScrollingTextSource.prototype._refreshCursor = function() { };
|
|
Window_ScrollingTextSource.prototype._refreshArrows = function() { };
|
|
Window_ScrollingTextSource.prototype._refreshPauseSign = function() { };
|
|
Window_ScrollingTextSource.prototype._updateCursor = function() {
|
|
this._windowCursorSprite.visible = false;
|
|
};
|
|
Window_ScrollingTextSource.prototype._updateArrows = function() {
|
|
this._downArrowSprite.visible = false
|
|
this._upArrowSprite.visible = false
|
|
};
|
|
Window_ScrollingTextSource.prototype._updatePauseSign = function() {
|
|
var sprite = this._windowPauseSignSprite;
|
|
sprite.visible = false;
|
|
};
|
|
//=============================================================================
|
|
// * Calculate Text Height
|
|
//=============================================================================
|
|
Window_ScrollingTextSource.prototype.calcTextHeight = function(textState, all) {
|
|
return Window_Base.prototype.calcTextHeight.call(this, textState, all) - 5;
|
|
};
|
|
//=============================================================================
|
|
// * Draw Text Ex
|
|
//=============================================================================
|
|
Window_ScrollingTextSource.prototype.drawTextEx = function(text, x, y) {
|
|
// Clear Contents
|
|
this.contents.clear();
|
|
// Reset Bitmap Font Color
|
|
this.contents.bitmapFontColor = null;
|
|
if (text) {
|
|
var textState = { index: 0, x: x, y: y, left: x };
|
|
textState.text = this.convertEscapeCharacters(text);
|
|
textState.height = this.calcTextHeight(textState, false);
|
|
this.resetFontSettings();
|
|
while (textState.index < textState.text.length) {
|
|
this.processCharacter(textState);
|
|
}
|
|
return textState
|
|
} else {
|
|
return 0;
|
|
};
|
|
};
|
|
//=============================================================================
|
|
// * Process Draw Input Icon
|
|
//=============================================================================
|
|
Window_ScrollingTextSource.prototype.processDrawInputIcon = function(input, textState) {
|
|
// Get Key
|
|
var key = Input.inputKeyCode(input);
|
|
// Get Rect
|
|
var rect = this.contents.keyIconRects(key).up;
|
|
// Add Padding Space
|
|
textState.x += 4;
|
|
// Draw Key Icon
|
|
this.contents.drawAlginedKeyIcon(key, textState.x, textState.y + 5, rect.width, textState.height);
|
|
// Increase Texstate X position
|
|
textState.x += rect.width + 4;
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//=============================================================================
|
|
// ** Window_BattleLog
|
|
//-----------------------------------------------------------------------------
|
|
// The window for displaying battle progress. No frame is displayed, but it is
|
|
// handled as a window for convenience.
|
|
//=============================================================================
|
|
// Alias Listing
|
|
//=============================================================================
|
|
_TDS_.OmoriBattleSystem.Window_BattleLog_initialize = Window_BattleLog.prototype.initialize;
|
|
_TDS_.OmoriBattleSystem.Window_BattleLog_clear = Window_BattleLog.prototype.clear;
|
|
_TDS_.OmoriBattleSystem.Window_BattleLog_addText = Window_BattleLog.prototype.addText;
|
|
_TDS_.OmoriBattleSystem.Window_BattleLog_isBusy = Window_BattleLog.prototype.isBusy;
|
|
_TDS_.OmoriBattleSystem.Window_BattleLog_update = Window_BattleLog.prototype.update;
|
|
_TDS_.OmoriBattleSystem.Window_BattleLog_updateWait = Window_BattleLog.prototype.updateWait;
|
|
_TDS_.OmoriBattleSystem.Window_BattleLog_showChainSkillList = Window_BattleLog.prototype.showChainSkillList;
|
|
_TDS_.OmoriBattleSystem.Window_BattleLog_hideChainSkillList = Window_BattleLog.prototype.hideChainSkillList;
|
|
_TDS_.OmoriBattleSystem.Window_BattleLog_updateChainkSkillInput = Window_BattleLog.prototype.updateChainkSkillInput
|
|
_TDS_.OmoriBattleSystem.Window_BattleLog_updateChainkSkillInput = Window_BattleLog.prototype.updateChainkSkillInput
|
|
_TDS_.OmoriBattleSystem.Window_BattleLog_performDamage = Window_BattleLog.prototype.performDamage;
|
|
//=============================================================================
|
|
// * Object Initialization
|
|
//=============================================================================
|
|
Window_BattleLog.prototype.initialize = function() {
|
|
// Run Original Function
|
|
_TDS_.OmoriBattleSystem.Window_BattleLog_initialize.call(this);
|
|
// Wait for Input Flag
|
|
this._waitingForInput = false;
|
|
// Set Initial Position
|
|
this.x = 140;
|
|
this.y = -4;
|
|
// Create Scrolling Text
|
|
this.createScrollTextSprite();
|
|
// Set Opacity
|
|
this.opacity = 255;
|
|
};
|
|
//=============================================================================
|
|
// * Settings
|
|
//=============================================================================
|
|
Window_BattleLog.prototype.windowWidth = function() { return 360; };
|
|
Window_BattleLog.prototype.windowHeight = function() { return 93 };
|
|
//=============================================================================
|
|
// * Clear Functions (Prevent usage)
|
|
//=============================================================================
|
|
Window_BattleLog.prototype.drawLineText = function() { };
|
|
Window_BattleLog.prototype.refresh = function() { };
|
|
//=============================================================================
|
|
// * Create Scroll Text Sprite
|
|
//=============================================================================
|
|
Window_BattleLog.prototype.createScrollTextSprite = function() {
|
|
// Create Scroll Text Sprite
|
|
this._scrollTextSprite = new Sprite_ScrollingText();
|
|
this.addChild(this._scrollTextSprite);
|
|
};
|
|
//=============================================================================
|
|
// * Clear
|
|
//=============================================================================
|
|
Window_BattleLog.prototype.clear = function() {
|
|
// Run Original Function
|
|
_TDS_.OmoriBattleSystem.Window_BattleLog_clear.call(this);
|
|
// Clear
|
|
this._scrollTextSprite.clear();
|
|
};
|
|
//=============================================================================
|
|
// * Add Text
|
|
//=============================================================================
|
|
Window_BattleLog.prototype.addText = function(text) {
|
|
// // If Scroll Text Sprite Exists Add it
|
|
if (this._scrollTextSprite) {
|
|
this._scrollTextSprite.addLine(text);
|
|
if (ConfigManager.battleLogSpeed === 1) {
|
|
this.push('wait');
|
|
|
|
} else if (ConfigManager.battleLogSpeed === 2) {
|
|
let currentSkill = !!BattleManager._action && BattleManager._action._item ? BattleManager._action._item.object() : null;
|
|
let skillId = !!DataManager.isSkill(currentSkill) ? currentSkill.id : 0;
|
|
let ACS_SKILLS = [
|
|
46,47,48,49,50,51,52,53,54,55,56,57,59,60,61, // OMORI ACS, RELEASE ENERGY AND RELEASE STRESS
|
|
86,87,88,89,90,91,92,93,94,97,98,99,100,101, // AUBREY ACS
|
|
126,127,128,129,130,131,132,133,134,137,138,139, // KEL ACS
|
|
168,167,170,171,172,173,174,175,176,178,179,180 // HERO ACS
|
|
];
|
|
if(ACS_SKILLS.contains(skillId)) {
|
|
this.push("wait");
|
|
}
|
|
else if(BattleManager._phase === "endBattle" || BattleManager._phase === "victory") {
|
|
this.push("wait");
|
|
}
|
|
else {
|
|
this.push('wait');
|
|
this.push('wait');
|
|
}
|
|
}
|
|
};
|
|
// Run Original Function
|
|
_TDS_.OmoriBattleSystem.Window_BattleLog_addText.call(this, text);
|
|
};
|
|
//=============================================================================
|
|
// * Add Instant Text
|
|
//=============================================================================
|
|
Window_BattleLog.prototype.addInstantText = function(text) {
|
|
// If Scroll Text Sprite Exists Add it
|
|
if (this._scrollTextSprite) {
|
|
// Add Sprite
|
|
var sprite = this._scrollTextSprite.addLine(text);
|
|
sprite.opacity = 255;
|
|
};
|
|
};
|
|
//=============================================================================
|
|
// * Play Sound Effect
|
|
//=============================================================================
|
|
Window_BattleLog.prototype.playSE = function(se) {
|
|
// Play Sound Effect
|
|
AudioManager.playSe(se);
|
|
};
|
|
//=============================================================================
|
|
// * Wait For Input
|
|
//=============================================================================
|
|
Window_BattleLog.prototype.waitForInput = function() { this._waitingForInput = true; };
|
|
//=============================================================================
|
|
// * Wait For Input
|
|
//=============================================================================
|
|
Window_BattleLog.prototype.waitFrames = function(frames) { this._waitCount = frames; };
|
|
//=============================================================================
|
|
// * Determine if busy
|
|
//=============================================================================
|
|
Window_BattleLog.prototype.isBusy = function() {
|
|
// Return Original Function
|
|
return _TDS_.OmoriBattleSystem.Window_BattleLog_isBusy.call(this) || this._waitingForInput;
|
|
};
|
|
//=============================================================================
|
|
// * Frame Update
|
|
//=============================================================================
|
|
Window_BattleLog.prototype.update = function() {
|
|
// Run Original Function
|
|
_TDS_.OmoriBattleSystem.Window_BattleLog_update.call(this);
|
|
// Update Scroll Text Sprite
|
|
|
|
this._scrollTextSprite.update();
|
|
|
|
};
|
|
//=============================================================================
|
|
// * Update Wait
|
|
//=============================================================================
|
|
Window_BattleLog.prototype.updateWait = function() {
|
|
// Return Original Function & Update Input Wait Check
|
|
return _TDS_.OmoriBattleSystem.Window_BattleLog_updateWait.call(this) || this.updateInputWait();
|
|
};
|
|
//=============================================================================
|
|
// * Update Input Wait
|
|
//=============================================================================
|
|
Window_BattleLog.prototype.updateInputWait = function() {
|
|
// If Waiting for Input and OK is pressed
|
|
if (this._waitingForInput && Input.isTriggered('ok')) {
|
|
// Set Waiting for Input flag to false
|
|
this._waitingForInput = false;
|
|
};
|
|
// console.log(this._waitingForInput )
|
|
// Return Waiting for Input State
|
|
return this._waitingForInput;
|
|
};
|
|
//=============================================================================
|
|
// * Show Chain Skill List
|
|
//=============================================================================
|
|
Window_BattleLog.prototype.showChainSkillList = function(subject, skill) {
|
|
// Disable Show Chain Skill
|
|
if ($gameSwitches.value(41)) { return; }
|
|
// Run Original Function
|
|
_TDS_.OmoriBattleSystem.Window_BattleLog_showChainSkillList.call(this, subject, skill);
|
|
if (subject === undefined) { return; }
|
|
if (!subject.isActor()) { return; }
|
|
if (!DataManager.isSkill(skill)) { return; }
|
|
// Get Chain Window
|
|
var chainWindow = BattleManager._activeChainSkillWindow;
|
|
// If Chain Window is more than 0
|
|
if (chainWindow._chainSkills.length > 0) {
|
|
// Show Actor Chain Skill Bubbles
|
|
BattleManager._statusWindow.showActorChainSkillBubbles(subject, chainWindow._chainSkills);
|
|
// Set Chain Window Y Position
|
|
chainWindow.y = Graphics.height;
|
|
};
|
|
};
|
|
//=============================================================================
|
|
// * Hide Chain Skill List
|
|
//=============================================================================
|
|
Window_BattleLog.prototype.hideChainSkillList = function() {
|
|
// Run Original Function
|
|
_TDS_.OmoriBattleSystem.Window_BattleLog_hideChainSkillList.call(this);
|
|
// Show Actor Chain Skill Bubbles
|
|
BattleManager._statusWindow.showActorChainSkillBubbles(null);
|
|
};
|
|
//=============================================================================
|
|
// * Update Chain Skill Input
|
|
//=============================================================================
|
|
Window_BattleLog.prototype.updateChainkSkillInput = function() {
|
|
// Get Chain Window
|
|
var chainWindow = BattleManager._activeChainSkillWindow;
|
|
// Get Last Input
|
|
var lastInput = chainWindow.chainInput;
|
|
// Run Original Function
|
|
_TDS_.OmoriBattleSystem.Window_BattleLog_updateChainkSkillInput.call(this);
|
|
// Get Chain Window
|
|
var chainWindow = BattleManager._activeChainSkillWindow;
|
|
// If Chain input is not null and last input is null
|
|
if (chainWindow.chainInput !== null && lastInput === null) {
|
|
// Get Subject
|
|
var subject = chainWindow._battler;
|
|
// Select Actor Chain Skill Bubble
|
|
BattleManager._statusWindow.selectActorChainSkillBubble(subject, chainWindow.chainInput);
|
|
}
|
|
};
|
|
//=============================================================================
|
|
// * Show Global Defeat Message
|
|
//=============================================================================
|
|
Window_BattleLog.prototype.showGlobalDefeatMessage = function() {
|
|
// Show Message
|
|
// $gameMessage.showLanguageMessage('xx_battle_text.message_1002')
|
|
};
|
|
//=============================================================================
|
|
// * Perform Damage
|
|
//=============================================================================
|
|
Window_BattleLog.prototype.performDamage = function(target) {
|
|
// Initialize Result
|
|
/*let result;
|
|
// If Target is enemy
|
|
if (target.isEnemy()) {
|
|
// Get Result
|
|
result = target.result();
|
|
// If result is not elementally weak or strong
|
|
if (!result.elementWeak && !result.elementStrong && SceneManager.currentWorldIndex() !== 3) {
|
|
// Set result to null
|
|
result = null;
|
|
};
|
|
};
|
|
// If result has not been remove block enemy sound
|
|
if (result) { SoundManager._blockEnemySound = true; };
|
|
|
|
console.log(result);
|
|
console.log('ALERT ELEMENT!!!!!!!')
|
|
|
|
// Run Original Function
|
|
_TDS_.OmoriBattleSystem.Window_BattleLog_performDamage.call(this, target);
|
|
// If result exists
|
|
if (result) {
|
|
|
|
console.log("Is strong: " + result.elementStrong, "Is weak: " + result.elementWeak);
|
|
// If Element strong
|
|
if (result.elementStrong) {
|
|
// Play Elemental Damage sound
|
|
AudioManager.playSe({ name: "se_impact_double", volume: ConfigManager.seVolume, pitch: 100, pan: 0});
|
|
} else if (result.elementWeak) {
|
|
// Play Elemental Damage sound
|
|
AudioManager.playSe({ name: "se_impact_soft", volume: ConfigManager.seVolume, pitch: 100, pan: 0});
|
|
};
|
|
}
|
|
// Unblock sound
|
|
SoundManager._blockEnemySound = false;*/
|
|
return _TDS_.OmoriBattleSystem.Window_BattleLog_performDamage.call(this, target);
|
|
};
|
|
|
|
|
|
|
|
//=============================================================================
|
|
// ** Sprite_EnemyBattlerStatus
|
|
//-----------------------------------------------------------------------------
|
|
// This sprite is used to display the status of the enemy in battle.
|
|
//=============================================================================
|
|
function Sprite_EnemyBattlerStatus() { this.initialize.apply(this, arguments); }
|
|
Sprite_EnemyBattlerStatus.prototype = Object.create(Sprite.prototype);
|
|
Sprite_EnemyBattlerStatus.prototype.constructor = Sprite_EnemyBattlerStatus;
|
|
//=============================================================================
|
|
// * Object Initilization
|
|
//=============================================================================
|
|
Sprite_EnemyBattlerStatus.prototype.initialize = function() {
|
|
// Super Call
|
|
Sprite.prototype.initialize.call(this);
|
|
// Create Bitmap
|
|
this.bitmap = new Bitmap(1, 1);
|
|
// Create Cursor Sprite
|
|
this.createCursorSprite();
|
|
};
|
|
//=============================================================================
|
|
// * Create Cursor Sprite
|
|
//=============================================================================
|
|
Sprite_EnemyBattlerStatus.prototype.createCursorSprite = function() {
|
|
// Get Bitmap
|
|
var bitmap = ImageManager.loadSystem('ACSArrows');
|
|
// Create Cursor Sprite
|
|
this._cursorSprite = new Sprite(bitmap);
|
|
this._cursorSprite.setFrame(0, 0, bitmap.width / 4, bitmap.height);
|
|
this.addChild(this._cursorSprite);
|
|
// Set Cursor Position
|
|
this.setCursorPosition(0);
|
|
};
|
|
//=============================================================================
|
|
// * Minimun Width
|
|
//=============================================================================
|
|
Sprite_EnemyBattlerStatus.prototype.minWidth = function() { return 120 };
|
|
//=============================================================================
|
|
// * Refresh Bitmap
|
|
//=============================================================================
|
|
Sprite_EnemyBattlerStatus.prototype.refreshBitmap = function(battler) {
|
|
// If Battler Exists
|
|
if (battler) {
|
|
// Set Font Size
|
|
this.bitmap.fontSize = 24;
|
|
// this.bitmap.updateBitmapFont();
|
|
// Get Battler Name
|
|
var name = battler.name();
|
|
// Get NameWidth
|
|
var nameWidth = this.bitmap.measureTextWidth(name, true);
|
|
// Recreate Bitmap
|
|
this.bitmap = new Bitmap(Math.max(this.minWidth(), nameWidth + 20), 57);
|
|
this.bitmap.fontSize = 24;
|
|
this.bitmap.fillAll('rgba(255, 0, 0, 1)')
|
|
// Get Back Bitmap
|
|
var backBitmap = ImageManager.loadSystem('enemy_box');
|
|
// Make Background
|
|
this.bitmap.blt(backBitmap, 0, 0, 7, backBitmap.height, 0, 0);
|
|
this.bitmap.blt(backBitmap, 7, 0, 1, backBitmap.height, 7, 0, this.width - 14);
|
|
this.bitmap.blt(backBitmap, 8, 0, 7, backBitmap.height, this.width - 7, 0);
|
|
// Draw Name
|
|
this.bitmap.drawText(name, 0, 0, this.width, 27, 'center');
|
|
var bar = ImageManager.loadSystem('enemy_box_gradients')
|
|
var icon = ImageManager.loadSystem('hp_icon');
|
|
var sx = (this.width - (bar.width + icon.width)) / 2
|
|
var barHeight = bar.height / 2;
|
|
this.bitmap.blt(icon, 0, 0, icon.width, icon.height, sx, this.height - (icon.height + 7));
|
|
sx += icon.width;
|
|
this.bitmap.blt(bar, 0, barHeight, bar.width, barHeight, sx, this.height - (barHeight + 9))
|
|
this.bitmap.blt(bar, 0, 0, battler.hpRate() * bar.width, barHeight, sx, this.height - (barHeight + 9))
|
|
// If Scanned
|
|
if (battler.isScanned()) {
|
|
// Draw HP
|
|
this.bitmap.drawText(`${battler.hp}/${battler.mhp}`, sx, this.height - 29, bar.width - 3, 20, 'right');
|
|
}
|
|
// Refresh Cursor
|
|
this.setCursorPosition(battler.battleStatusCursorPosition());
|
|
};
|
|
};
|
|
//=============================================================================
|
|
// * Refresh Cursor
|
|
//=============================================================================
|
|
Sprite_EnemyBattlerStatus.prototype.setCursorPosition = function(position = 0) {
|
|
// X Position
|
|
var x = 0
|
|
// Get Width
|
|
var width = this._cursorSprite.width;
|
|
// Switch Case Position
|
|
switch (position) {
|
|
case 0: // Top
|
|
x = 3 * this._cursorSprite.width;
|
|
this._cursorSprite.x = (this.width - width) / 2
|
|
this._cursorSprite.y = -this._cursorSprite.height + 4;
|
|
break;
|
|
case 1: // Left
|
|
x = 2 * this._cursorSprite.width;
|
|
this._cursorSprite.x = -this._cursorSprite.width + 4;
|
|
this._cursorSprite.y = (this.height - this._cursorSprite.height) / 2;
|
|
break;
|
|
case 2: // Right
|
|
x = 1 * this._cursorSprite.width;
|
|
this._cursorSprite.x = this.width - 5
|
|
this._cursorSprite.y = (this.height - this._cursorSprite.height) / 2;
|
|
break;
|
|
case 3: // Bottom
|
|
x = 0 * this._cursorSprite.width;
|
|
this._cursorSprite.x = (this.width - width) / 2
|
|
this._cursorSprite.y = this.height - 4;
|
|
break;
|
|
}
|
|
// Set Cursor Frame X Position
|
|
this._cursorSprite._frame.x = x;
|
|
this._cursorSprite._refresh();
|
|
};
|
|
|
|
|
|
|
|
//=============================================================================
|
|
// ** Sprite_Enemy
|
|
//-----------------------------------------------------------------------------
|
|
// The sprite for displaying an enemy.
|
|
//=============================================================================
|
|
// Alias Listing
|
|
//=============================================================================
|
|
_TDS_.OmoriBattleSystem.Sprite_Enemy_initMembers = Sprite_Enemy.prototype.initMembers;
|
|
_TDS_.OmoriBattleSystem.Sprite_Enemy_setBattler = Sprite_Enemy.prototype.setBattler;
|
|
_TDS_.OmoriBattleSystem.Sprite_Enemy_update = Sprite_Enemy.prototype.update;
|
|
_TDS_.OmoriBattleSystem.Sprite_Enemy_updateCollapse = Sprite_Enemy.prototype.updateCollapse;
|
|
//=============================================================================
|
|
// * Initialize Members
|
|
//=============================================================================
|
|
Sprite_Enemy.prototype.initMembers = function() {
|
|
// Run Original Function
|
|
_TDS_.OmoriBattleSystem.Sprite_Enemy_initMembers.call(this);
|
|
// Create Status Sprite
|
|
this.createStatusSprite();
|
|
// Set Fall on death flag to false
|
|
this._fallOnDeath = false;
|
|
// Locked Pattern
|
|
this._fallLockedPattern = null;
|
|
};
|
|
//=============================================================================
|
|
// * Set Battler
|
|
// =============================================================================
|
|
Sprite_Enemy.prototype.setBattler = function(battler) {
|
|
// Run Original Function
|
|
_TDS_.OmoriBattleSystem.Sprite_Enemy_setBattler.call(this, battler);
|
|
// If Enemy Exists
|
|
if (this._enemy) {
|
|
// Set Fall On Death flag
|
|
this._fallOnDeath = this._enemy.enemy().meta.FallOnDeath;
|
|
} else {
|
|
// Set Fall on Death to false
|
|
this._fallOnDeath = false;
|
|
}
|
|
// Locked Pattern
|
|
this._fallLockedPattern = null;
|
|
};
|
|
//=============================================================================
|
|
// * Update Collapse
|
|
// =============================================================================
|
|
Sprite_Enemy.prototype.updateCollapse = function() {
|
|
if (this._fallOnDeath) {
|
|
// If Fall Lock Pattern is not null
|
|
if (this._fallLockedPattern !== null) {
|
|
// Set Pattern
|
|
this._pattern = this._fallLockedPattern;
|
|
};
|
|
// If On last frame of motion
|
|
if (this._pattern >= this.motionFrames() - 2 || this._fallLockedPattern !== null) {
|
|
// Get Target Y
|
|
var targetY = Graphics.height + this._mainSprite.height;
|
|
// Move Position
|
|
this._offsetY += Math.abs(targetY - this._homeY) / 32;
|
|
// If fall locked pattern is null
|
|
if (this._fallLockedPattern === null) {
|
|
// Set Fall Locked Pattern
|
|
this._fallLockedPattern = this._pattern;
|
|
};
|
|
} else {
|
|
// Reset Duration to 0
|
|
this._effectDuration = 32;
|
|
};
|
|
} else {
|
|
// Run Original Function
|
|
_TDS_.OmoriBattleSystem.Sprite_Enemy_updateCollapse.call(this);
|
|
};
|
|
};
|
|
//=============================================================================
|
|
// * Frame Update
|
|
//=============================================================================
|
|
Sprite_Enemy.prototype.update = function() {
|
|
// Run Original Function
|
|
_TDS_.OmoriBattleSystem.Sprite_Enemy_update.call(this);
|
|
// Update Status Sprite
|
|
this.updateStatusSprite();
|
|
|
|
|
|
// if (Input.isTriggered('control')) {
|
|
// // this._fallOnDeath = true;
|
|
// this._enemy.setHp(0)
|
|
// // this.startCollapse()
|
|
// }
|
|
};
|
|
//=============================================================================
|
|
// * Create Status Sprite
|
|
//=============================================================================
|
|
Sprite_Enemy.prototype.createStatusSprite = function() {
|
|
// Set Status Sprite
|
|
this._statusSprite = new Sprite_EnemyBattlerStatus();
|
|
//this.parent.addChild(this._statusSprite);
|
|
// Status Shift Positions
|
|
this._statusSprite.z = 2;
|
|
this._statusShiftPositions = [[-1, -1], [0, -1], [1, -1], [-1, 0], [0, 0], [1, 0], [-1, 1], [0, 1], [1, 1]]
|
|
};
|
|
//=============================================================================
|
|
// * Update Status Sprite
|
|
//=============================================================================
|
|
Sprite_Enemy.prototype.updateStatusSpritePosition = function() {
|
|
// Set Initial Center Position
|
|
this._statusSprite.x = -(this._statusSprite.width / 2)
|
|
this._statusSprite.y = -((this.height + this._statusSprite.height) / 2);
|
|
// Get Position
|
|
var position = this._enemy.battleStatusPosition();
|
|
// Shift Status Sprite Position
|
|
this.shiftStatusSpritePosition(...this._statusShiftPositions[position])
|
|
// Adjust by offsets
|
|
this._statusSprite.x += this._enemy.battleStatusXOffset();
|
|
this._statusSprite.y += this._enemy.battleStatusYOffset();
|
|
// Get Last Index
|
|
var lastIndex = this.children.length-1;
|
|
// If Index of status sprite is less than last index
|
|
/*if (this.children.indexOf(this._statusSprite) < lastIndex ) {
|
|
this.addChildAt(this._statusSprite, lastIndex);
|
|
};*/
|
|
let globalPosition = this.toGlobal(this._statusSprite);
|
|
this._statusSprite.position.set(globalPosition.x, globalPosition.y);
|
|
if(!!this.parent) {
|
|
if(!this._statusSprite.parent) {
|
|
this.parent.parent.parent.parent.addChild(this._statusSprite)
|
|
if(!!this._enemy.enemy().meta["sprite mirrored"]) {this._statusSprite.scale.x = -1;}
|
|
}
|
|
}
|
|
};
|
|
//=============================================================================
|
|
// * Shift Status Sprite Position
|
|
//=============================================================================
|
|
Sprite_Enemy.prototype.shiftStatusSpritePosition = function(x, y) {
|
|
// X Coordinate Shift
|
|
switch (x) {
|
|
case -1: // Left
|
|
this._statusSprite.x -= (this.width / 2);
|
|
break;
|
|
case 1: // Right
|
|
this._statusSprite.x += (this.width / 2);
|
|
break;
|
|
};
|
|
// Y Coordinate Shift
|
|
switch (y) {
|
|
case -1: // Top
|
|
this._statusSprite.y -= (this.height / 2);
|
|
break;
|
|
case 1: // Bottom
|
|
this._statusSprite.y += (this.height / 2);
|
|
break;
|
|
};
|
|
};
|
|
//=============================================================================
|
|
// * Update Status Sprite
|
|
//=============================================================================
|
|
Sprite_Enemy.prototype.updateStatusSprite = function() {
|
|
// If Enemy
|
|
if (this._enemy) {
|
|
// Get Selected State
|
|
var selected = this._enemy.isSelected()
|
|
// If Selected and status sprite is not visible
|
|
if (selected && !this._statusSprite.visible) {
|
|
// Refresh Status Sprite
|
|
this._statusSprite.refreshBitmap(this._enemy);
|
|
// Update Status Sprite Position
|
|
this.updateStatusSpritePosition();
|
|
}
|
|
// Set Visibility
|
|
this._statusSprite.visible = selected;
|
|
};
|
|
};
|
|
//=============================================================================
|
|
// * Damage Offset X
|
|
//=============================================================================
|
|
Sprite_Enemy.prototype.damageOffsetX = function() { return this._enemy ? this._enemy.battleDamageXOffset(): 0; };
|
|
//=============================================================================
|
|
// * Damage Offset Y
|
|
//=============================================================================
|
|
Sprite_Enemy.prototype.damageOffsetY = function() { return this._enemy ? this._enemy.battleDamageYOffset(): -8; };
|
|
|
|
|
|
|
|
//=============================================================================
|
|
// ** Sprite_Damage
|
|
//-----------------------------------------------------------------------------
|
|
// The sprite for displaying a popup damage.
|
|
//=============================================================================
|
|
// Alias Listing
|
|
//=============================================================================
|
|
_TDS_.OmoriBattleSystem.Sprite_Damage_setup = Sprite_Damage.prototype.setup;
|
|
//=============================================================================
|
|
// * Setup
|
|
//=============================================================================
|
|
Sprite_Damage.prototype.setup = function(target) {
|
|
// // Set Duration
|
|
// this._duration = 40;
|
|
// Run Original Function
|
|
_TDS_.OmoriBattleSystem.Sprite_Damage_setup.call(this, target);
|
|
};
|
|
//=============================================================================
|
|
// * Digit Height
|
|
//=============================================================================
|
|
Sprite_Damage.prototype.digitHeight = function() {
|
|
return this._damageBitmap ? this._damageBitmap.height / 7 : 0;
|
|
};
|
|
//=============================================================================
|
|
// * Create Miss
|
|
//=============================================================================
|
|
Sprite_Damage.prototype.createMiss = function() {
|
|
var w = this.digitWidth();
|
|
var h = this.digitHeight();
|
|
var sprite = this.createChildSprite();
|
|
sprite.setFrame(0, 4 * h, 48, h);
|
|
};
|
|
//=============================================================================
|
|
// * Create Miss
|
|
//=============================================================================
|
|
Sprite_Damage.prototype.createImmune = function() {
|
|
var w = this.digitWidth();
|
|
var h = this.digitHeight();
|
|
var sprite = this.createChildSprite();
|
|
sprite.setFrame(0, 5 * h, 82, h);
|
|
};
|
|
//=============================================================================
|
|
// * Create Digits
|
|
//=============================================================================
|
|
Sprite_Damage.prototype.createDigits = function(baseRow, value) {
|
|
var string = Math.abs(value).toString();
|
|
var row = baseRow + (value < 0 ? 1 : 0);
|
|
var w = this.digitWidth();
|
|
var h = this.digitHeight();
|
|
for (var i = 0; i < string.length; i++) {
|
|
var sprite = this.createChildSprite();
|
|
var n = Number(string[i]);
|
|
sprite.setFrame(n * w, row * h, w, h);
|
|
sprite.x = (i - (string.length - 1) / 2) * (w - 8);
|
|
}
|
|
};
|
|
//=============================================================================
|
|
// * Create Child Sprite
|
|
//=============================================================================
|
|
Sprite_Damage.prototype.createChildSprite = function() {
|
|
var sprite = new Sprite();
|
|
sprite.bitmap = this._damageBitmap;
|
|
sprite.anchor.set(0.5, 1);
|
|
sprite.y = -50;
|
|
sprite.opacity = 0;
|
|
this.addChild(sprite);
|
|
return sprite;
|
|
};
|
|
//=============================================================================
|
|
// * Frame Update
|
|
//=============================================================================
|
|
Sprite_Damage.prototype.update = function() {
|
|
// Super Call
|
|
Sprite.prototype.update.call(this);
|
|
// If Duration is more than 0
|
|
if (this._duration > 0) {
|
|
// Previously Done Flag
|
|
var prevDone = true;
|
|
for (var i = 0; i < this.children.length; i++) {
|
|
// Get Sprite
|
|
var sprite = this.children[i];
|
|
// If Previous is done update child
|
|
if (prevDone) { this.updateChild(sprite); };
|
|
// Set Previous done flag
|
|
prevDone = (sprite.y >= -20);
|
|
};
|
|
// If Previous is done decrease duration
|
|
if (prevDone) { this._duration--; };
|
|
}
|
|
this.updateFlash();
|
|
this.updateOpacity();
|
|
if (!BattleManager._showDamage) {
|
|
this.opacity = 0;
|
|
}
|
|
|
|
};
|
|
//=============================================================================
|
|
// * Update Child
|
|
//=============================================================================
|
|
Sprite_Damage.prototype.updateChild = function(sprite) {
|
|
// Move Sprite
|
|
sprite.y = Math.min(sprite.y + 6, 0);
|
|
// Increase Opacity of Sprite
|
|
if (this._duration > 10) { sprite.opacity += 20};
|
|
// Set Sprite Blend Color
|
|
sprite.setBlendColor(this._flashColor);
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
//=============================================================================
|
|
// ** Sprite_ACSBubble
|
|
//-----------------------------------------------------------------------------
|
|
// This sprite is used to display ACS Bubbles
|
|
//=============================================================================
|
|
function Sprite_ACSBubble() { this.initialize.apply(this, arguments); }
|
|
Sprite_ACSBubble.prototype = Object.create(Sprite.prototype);
|
|
Sprite_ACSBubble.prototype.constructor = Sprite_ACSBubble;
|
|
//=============================================================================
|
|
// * Object Initilization
|
|
//=============================================================================
|
|
Sprite_ACSBubble.prototype.initialize = function(actorIndex) {
|
|
// Super Call
|
|
Sprite.prototype.initialize.call(this);
|
|
// Active Flag
|
|
this._active = true;
|
|
// Set Actor Index
|
|
this._actorIndex = actorIndex;
|
|
// Bubble Index
|
|
this._bubbleIndex = 0;
|
|
// Target Opacity
|
|
this._targetOpacity = 0;
|
|
// Opacity Duration
|
|
this._opacityDuration = 0;
|
|
// Arrow Direction
|
|
this._arrowDirection = 2;
|
|
// Arrow Move Direction (0: up/down, 1: Left/Right)
|
|
this._arrowMoveDirection = 0;
|
|
this._arrowPositions = {2: [0, 0], 4: [0, 0], 6: [0, 0], 8: [0, 0]};
|
|
// Shake Flag
|
|
this._shake = false;
|
|
this.createArrowSprite();
|
|
this.setBubbleIndex(0);
|
|
this.updatePosition(0);
|
|
};
|
|
//=============================================================================
|
|
// * Activate & Deactivate
|
|
//=============================================================================
|
|
Sprite_ACSBubble.prototype.activate = function() { this._active = true; this.show() };
|
|
Sprite_ACSBubble.prototype.deactivate = function() { this._active = false; this.fadeOpacity(180, 10) };
|
|
//=============================================================================
|
|
// * Create Arrow Sprite
|
|
//=============================================================================
|
|
Sprite_ACSBubble.prototype.createArrowSprite = function() {
|
|
this._arrowSprite = new Sprite(ImageManager.loadSystem('ACSArrows'));
|
|
this._arrowSprite.anchor.set(0.5, 0.5);
|
|
this.addChild(this._arrowSprite);
|
|
this.setArrowDirection(this._arrowDirection);
|
|
};
|
|
//=============================================================================
|
|
// * Set Arrow Direction
|
|
//=============================================================================
|
|
Sprite_ACSBubble.prototype.setArrowDirection = function(direction) {
|
|
// Arrow Direction
|
|
this._arrowDirection = direction;
|
|
// Get Bitmap
|
|
var bitmap = ImageManager.loadSystem('ACSArrows');
|
|
// Get Width
|
|
var width = bitmap.width / 4;
|
|
// Reset anchor
|
|
this._arrowSprite.anchor.set(0.5, 0.5);
|
|
// Direction Switch
|
|
switch (direction) {
|
|
case 'down':
|
|
case 2: // Down
|
|
this._arrowSprite.setFrame(0, 0, width, bitmap.height);
|
|
this._arrowMoveDirection = 0;
|
|
direction = 2;
|
|
break;
|
|
case'left':
|
|
case 4: // Left
|
|
this._arrowSprite.setFrame(2 * width, 0, width, bitmap.height);
|
|
this._arrowMoveDirection = 1;
|
|
direction = 4;
|
|
break;
|
|
case 'right':
|
|
case 6: // Right
|
|
this._arrowSprite.setFrame(1 * width, 0, width, bitmap.height);
|
|
this._arrowMoveDirection = 1;
|
|
direction = 6;
|
|
break;
|
|
case 'up':
|
|
case 8: // Up
|
|
this._arrowSprite.setFrame(3 * width, 0, width, bitmap.height);
|
|
this._arrowMoveDirection = 0;
|
|
direction = 8;
|
|
break;
|
|
};
|
|
// Get Position
|
|
var position = this._arrowPositions[direction];
|
|
// If Position Exists
|
|
if (position) {
|
|
// Set Arrow Sprite Position
|
|
this._arrowSprite.x = position[0];
|
|
this._arrowSprite.y = position[1];
|
|
};
|
|
};
|
|
//=============================================================================
|
|
// * Set Bubble Index
|
|
//=============================================================================
|
|
Sprite_ACSBubble.prototype.setBubbleIndex = function(index) {
|
|
// Get Bitmap
|
|
var bitmap = ImageManager.loadSystem('ACS_Bubble');
|
|
// Get Width & Height
|
|
var width = bitmap.width / 7, height = bitmap.height / 2;
|
|
// Set Bitmap
|
|
this.bitmap = bitmap;
|
|
var x = (index % 7) * width
|
|
var y = Math.floor(index / 7) * height;
|
|
this.setFrame(x, y, width, height);
|
|
// Set Bubble Index
|
|
this._bubbleIndex = index;
|
|
// Index Arrow Positions
|
|
if ([0, 1, 2, 3].contains(index)) {
|
|
// Set Arrow Positions
|
|
this._arrowPositions = {2: [70, 85], 4: [15, 45], 6: [120, 45], 8: [70, 10]};
|
|
} else if ([4, 5, 6].contains(index)) {
|
|
// Set Arrow Positions
|
|
this._arrowPositions = {2: [65, 95], 4: [5, 55], 6: [125, 55], 8: [65, 10]};
|
|
} else if ([7, 8, 9].contains(index)) {
|
|
// Set Arrow Positions
|
|
this._arrowPositions = {2: [60, 85], 4: [5, 45], 6: [115, 45], 8: [60, 5]};
|
|
} else if ([10, 11, 12].contains(index)) {
|
|
// Set Arrow Positions
|
|
this._arrowPositions = {2: [60, 90], 4: [5, 50], 6: [115, 50], 8: [60, 15]};
|
|
};
|
|
// Set Arrow Position
|
|
this.setArrowDirection(this._arrowDirection);
|
|
};
|
|
//=============================================================================
|
|
// * Update Position
|
|
//=============================================================================
|
|
Sprite_ACSBubble.prototype.updatePosition = function(position) {
|
|
// // Set Position
|
|
// this.x = 0; this.y = 0;
|
|
// return;
|
|
switch (this._actorIndex) {
|
|
case 0: // AUBREY
|
|
switch (position) {
|
|
case 0: this.x = 110; this.y = 45 ;break;
|
|
case 1: this.x = 90; this.y = 110 ;break;
|
|
case 2: this.x = 5; this.y = 140 ;break;
|
|
}
|
|
break;
|
|
case 1: // HERO
|
|
switch (position) {
|
|
case 0: this.x = -115; this.y = 45 ;break;
|
|
case 1: this.x = -105; this.y = 110 ;break;
|
|
case 2: this.x = -15; this.y = 140 ;break;
|
|
}
|
|
break;
|
|
case 2: // OMORI
|
|
switch (position) {
|
|
case 0: this.x = 5; this.y = -80 ;break;
|
|
case 1: this.x = 95; this.y = -55 ;break;
|
|
case 2: this.x = 110; this.y = 10 ;break;
|
|
}
|
|
break;
|
|
case 3: // KEL
|
|
switch (position) {
|
|
case 0: this.x = -5; this.y = -70 ;break;
|
|
case 1: this.x = -95; this.y = -55 ;break;
|
|
case 2: this.x = -105; this.y = 10 ;break;
|
|
}
|
|
break;
|
|
default:
|
|
// Set Position
|
|
this.x = 0; this.y = 0;
|
|
break;
|
|
};
|
|
};
|
|
//=============================================================================
|
|
// * Fade Opacity
|
|
//=============================================================================
|
|
Sprite_ACSBubble.prototype.fadeOpacity = function(opacity, duration) {
|
|
// Target Opacity
|
|
this._targetOpacity = opacity;
|
|
// Opacity Duration
|
|
this._opacityDuration = duration;
|
|
};
|
|
//=============================================================================
|
|
// * Show
|
|
//=============================================================================
|
|
Sprite_ACSBubble.prototype.show = function(duration = 15) {
|
|
this.fadeOpacity(255, duration);
|
|
};
|
|
//=============================================================================
|
|
// * Hide
|
|
//=============================================================================
|
|
Sprite_ACSBubble.prototype.hide = function(duration = 15) {
|
|
this.fadeOpacity(0, duration)
|
|
};
|
|
//=============================================================================
|
|
// * Start Shake
|
|
//=============================================================================
|
|
Sprite_ACSBubble.prototype.startShake = function() {
|
|
// Set Shake Flag to true
|
|
this._shake = true;
|
|
};
|
|
//=============================================================================
|
|
// * Stop Shake
|
|
//=============================================================================
|
|
Sprite_ACSBubble.prototype.stopShake = function() {
|
|
// Set Shake Flag to true
|
|
this._shake = false;
|
|
// Reset Anchor
|
|
this.anchor.set(0, 0);
|
|
// Reset Blend Color
|
|
this.setBlendColor([0, 0, 0, 0]);
|
|
};
|
|
//=============================================================================
|
|
// * Frame Update
|
|
//=============================================================================
|
|
Sprite_ACSBubble.prototype.update = function() {
|
|
// Super Call
|
|
Sprite.prototype.update.call(this);
|
|
// Update Arrow Direction
|
|
this.updateArrowDirection();
|
|
// Update Opcity
|
|
this.updateOpacity();
|
|
// Update Shake
|
|
this.updateShake();
|
|
};
|
|
//=============================================================================
|
|
// * Update Arrow Direction
|
|
//=============================================================================
|
|
Sprite_ACSBubble.prototype.updateArrowDirection = function() {
|
|
// If Active
|
|
if (this._active) {
|
|
// If Arrow Direction is 0
|
|
if (this._arrowMoveDirection === 0) {
|
|
this._arrowSprite.anchor.y = 0.5 + (Math.sin(Graphics.frameCount * 0.13) * 0.15);
|
|
} else {
|
|
this._arrowSprite.anchor.x = 0.5 + (Math.sin(Graphics.frameCount * 0.13) * 0.15);
|
|
};
|
|
};
|
|
};
|
|
//=============================================================================
|
|
// * Update Opacity
|
|
//=============================================================================
|
|
Sprite_ACSBubble.prototype.updateOpacity = function() {
|
|
// If Opacity duration is more than 0
|
|
if (this._opacityDuration > 0) {
|
|
var d = this._opacityDuration;
|
|
this.opacity = (this.opacity * (d - 1) + this._targetOpacity) / d;
|
|
this._opacityDuration--;
|
|
};
|
|
// If Active
|
|
if (this._active) {
|
|
this._arrowSprite.setColorTone([0, 0, 0, 0]);
|
|
} else {
|
|
this._arrowSprite.setColorTone([-80, -80, -80, 255]);
|
|
return;
|
|
};
|
|
};
|
|
//=============================================================================
|
|
// * Update Shake
|
|
//=============================================================================
|
|
Sprite_ACSBubble.prototype.updateShake = function() {
|
|
// If Shake is true
|
|
if (this._shake) {
|
|
// Get Shake Power
|
|
var power = 0.01
|
|
if (Math.random() >= 0.5) {
|
|
this.anchor.x = power;
|
|
} else {
|
|
this.anchor.x = -power;
|
|
};
|
|
if (Math.random() >= 0.5) {
|
|
this.anchor.y = power;
|
|
} else {
|
|
this.anchor.y = -power;
|
|
};
|
|
var alpha = 64 + (Math.sin(Graphics.frameCount * 0.3) * 64);
|
|
this.setBlendColor([255, 0, 0, alpha]);
|
|
};
|
|
};
|
|
|
|
|
|
|
|
//=============================================================================
|
|
// ** Sprite_BattleLowHpOverlay
|
|
//-----------------------------------------------------------------------------
|
|
// This sprite is used to display the status of the enemy in battle.
|
|
//=============================================================================
|
|
function Sprite_BattleLowHpOverlay() { this.initialize.apply(this, arguments); }
|
|
Sprite_BattleLowHpOverlay.prototype = Object.create(Sprite.prototype);
|
|
Sprite_BattleLowHpOverlay.prototype.constructor = Sprite_BattleLowHpOverlay;
|
|
//=============================================================================
|
|
// * Object Initilization
|
|
//=============================================================================
|
|
Sprite_BattleLowHpOverlay.prototype.initialize = function() {
|
|
// Super Call
|
|
Sprite.prototype.initialize.call(this);
|
|
// Set Bitmap
|
|
this.bitmap = ImageManager.loadPicture('battle_lowhealth');
|
|
// Get Actor
|
|
this._actor = $gameParty.getOmori();
|
|
// Set Opacity
|
|
this.opacity = 102;
|
|
// Opacity Chage Values
|
|
this._opacityChange = 0;
|
|
this._opacitySpeed = 5;
|
|
this._opacitySide = 0;
|
|
this._activeOpacity = -60;
|
|
this._oldHp = null;
|
|
// this._activeOpacity = 255;
|
|
// Hidden Flag
|
|
this._hidden = false;
|
|
// Set Beep Counter
|
|
this._beepCounter = 0;
|
|
// Set Danger Rate
|
|
this._dangerRate = 0;
|
|
// Set HP Rate
|
|
this._hpRate = 1;
|
|
// Set Original BGM
|
|
this._originalBGM = AudioManager.makeEmptyAudioObject();
|
|
// AudioManager.saveBgm
|
|
// this.setBlendColor([255, 0, 255, 255])
|
|
};
|
|
//=============================================================================
|
|
// * Frame Update
|
|
//=============================================================================
|
|
Sprite_BattleLowHpOverlay.prototype.update = function() {
|
|
// Super Call
|
|
Sprite.prototype.update.call(this);
|
|
if (BattleManager._showLowHpOverlay == false) {
|
|
this._hidden = true;
|
|
this.opacity = 0;
|
|
return;
|
|
};
|
|
|
|
|
|
if (BattleManager._hideLowHpOverlay) {
|
|
if (this.opacity > 0) {
|
|
this.opacity -= 10;
|
|
}
|
|
return;
|
|
}
|
|
|
|
// Set Visibility
|
|
this.visible = !$gameSwitches.value(93);
|
|
// If Actor Exists
|
|
if (this._actor) {
|
|
// If Actor HP does not match old HP
|
|
if (this._actor.hp !== this._oldHp) {
|
|
// If BGM has changed
|
|
if (!AudioManager.isCurrentBgm(this._originalBGM)) {
|
|
// Save BGM
|
|
this._originalBGM = AudioManager.saveBgm();
|
|
};
|
|
// Get low HP Rate (20%)
|
|
var lowHpRate = 0.2;
|
|
// Get HP Rate
|
|
this._hpRate = this._actor.hpRate();
|
|
var dangerMax = this._actor.mhp * lowHpRate;
|
|
this._dangerRate = this._actor.hp / dangerMax;
|
|
// Update Old HP
|
|
this._oldHp = this._actor.hp;
|
|
// Set Hidden State
|
|
this._hidden = (this._hpRate > lowHpRate);
|
|
// Reset Opacity Speed
|
|
this._opacitySpeed = 0;
|
|
// Get Original Volume
|
|
var originalVolume = this._originalBGM.volume;
|
|
// Set Volume
|
|
var volume = originalVolume;
|
|
// If Not hidden
|
|
if (!this._hidden) {
|
|
// Set Opacity Speed
|
|
this._opacitySpeed = 4 + (5 - (5 * this._dangerRate));
|
|
// If Actor HP is 0
|
|
if (this._actor.hp === 0) {
|
|
// Set Volume to 0
|
|
volume = 0;
|
|
// Play Low HP Background Sound
|
|
AudioManager.playDangerBgs({name: '[sfx]battle_flatline', volume: 0, pitch: 100 })
|
|
|
|
} else {
|
|
// Play Low HP Background Sound
|
|
AudioManager.playDangerBgs({name: 'boss_something_heartbeat', volume: 40, pitch: 100 + (50 - (50 * this._dangerRate)) })
|
|
// Set Volume
|
|
// volume = originalVolume * (this._hpRate <= 0.05 ? 0.05 : this._dangerRate);
|
|
volume = 50;
|
|
}
|
|
} else {
|
|
// Fadeout Background sound
|
|
AudioManager.fadeOutDangerBgs(1);
|
|
};
|
|
// Get Current BGM
|
|
var bgm = AudioManager._currentBgm;
|
|
// If BGM
|
|
if (bgm) {
|
|
// Set BGM Volume
|
|
//bgm.volume = volume;
|
|
// Update BGM Parameters
|
|
//AudioManager.updateBgmParameters(bgm);
|
|
};
|
|
};
|
|
};
|
|
// Update Opacity Changes
|
|
if (this._hidden && this._activeOpacity > -60) {
|
|
this._activeOpacity = Math.max(this._activeOpacity - 5, -60);
|
|
} else if (!this._hidden && this._activeOpacity < 80) {
|
|
this._activeOpacity = Math.min(this._activeOpacity + 5, 80);
|
|
};
|
|
|
|
// If Opacity side is 0
|
|
if (this._opacitySide === 0) {
|
|
var max = 60;
|
|
this._opacityChange = Math.min(this._opacityChange + this._opacitySpeed, max);
|
|
if (this._opacityChange === max) { this._opacitySide = 1; };
|
|
// console.log(this._opacityChange)
|
|
} else {
|
|
var min = -60;
|
|
this._opacityChange = Math.max(this._opacityChange - this._opacitySpeed, min);
|
|
if (this._opacityChange === min) { this._opacitySide = 0; };
|
|
}
|
|
// Set Opacity
|
|
this.opacity = this._activeOpacity + this._opacityChange;
|
|
|
|
if (!this._hidden && this._actor.hp > 0 && this._hpRate <= 0.1) {
|
|
// Decrease Beep Counter
|
|
this._beepCounter--;
|
|
// If Beep Counter is 0 or less
|
|
if (this._beepCounter <= 0) {
|
|
// Play Low HP Background Sound
|
|
// AudioManager.playSe({name: '[sfx]battle_ekg_beep', volume: 100, pitch: 100 + (30 - (30 * this._dangerRate)) })
|
|
AudioManager.playSe({name: '[sfx]battle_ekg_beep', volume: 50, pitch: 100 })
|
|
this._beepCounter = 100 - (20 - (20 * this._dangerRate));
|
|
};
|
|
};
|
|
|
|
// if (Input.isTriggered('shift')) {
|
|
|
|
// this._actor.setHp(6)
|
|
// // this._hidden = !this._hidden;
|
|
// };
|
|
|
|
// if (Input.isRepeated('left')) {
|
|
// this._actor.setHp(this._actor.hp - 1);
|
|
|
|
// }
|
|
// if (Input.isRepeated('right')) {
|
|
// this._actor.setHp(this._actor.hp + 1);
|
|
// }
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
//=============================================================================
|
|
// ** Sprite_BattleIntroContainer
|
|
//-----------------------------------------------------------------------------
|
|
// This sprite is used to display battle introductions.
|
|
//=============================================================================
|
|
function Sprite_BattleIntroContainer() { this.initialize.apply(this, arguments); }
|
|
Sprite_BattleIntroContainer.prototype = Object.create(Sprite.prototype);
|
|
Sprite_BattleIntroContainer.prototype.constructor = Sprite_BattleIntroContainer;
|
|
//=============================================================================
|
|
// * Object Initilization
|
|
//=============================================================================
|
|
Sprite_BattleIntroContainer.prototype.initialize = function(type) {
|
|
// Super Call
|
|
Sprite.prototype.initialize.call(this);
|
|
// Set Type
|
|
this._type = type;
|
|
// If type exists
|
|
if (type) {
|
|
// Type Switch Case
|
|
switch (type.toLowerCase()) {
|
|
case 'finalbattle': this.setupFinalBattleAnimation(); break;
|
|
};
|
|
};
|
|
};
|
|
//=============================================================================
|
|
// * Setup Animation: Final Battle
|
|
//=============================================================================
|
|
Sprite_BattleIntroContainer.prototype.setupFinalBattleAnimation = function() {
|
|
let bitmap = ImageManager.loadPicture('omori_prebattle');
|
|
// Create Animation Sprite
|
|
SceneManager._scene.hideAllMenuElements(1);
|
|
this._animationSprite = new Sprite();
|
|
this.addChild(this._animationSprite);
|
|
// Get Battler Sprite
|
|
this._battlerSprite = SceneManager._scene._spriteset._enemySprites[0];
|
|
this._battlerSprite._battler.hide();
|
|
this._battlerSprite.visible = false;
|
|
this._smallDelay = 15;
|
|
bitmap.addLoadListener(() => {
|
|
this._animationSprite.bitmap = bitmap;
|
|
// Get Width & Height
|
|
const width = bitmap.width / 6;
|
|
const height = bitmap.height / 4;
|
|
|
|
this._animationSprite.setFrame(0, 0, width, height);
|
|
this._animationSprite.x = 67;
|
|
this._animationSprite.y = Graphics.height - height;
|
|
|
|
// Initialize Animation Data
|
|
this._animationData = {index: 0, frames: 21, count: 10, delay: 10, };
|
|
})
|
|
};
|
|
//=============================================================================
|
|
// * Frame Update
|
|
//=============================================================================
|
|
Sprite_BattleIntroContainer.prototype.update = function() {
|
|
// Super Call
|
|
Sprite.prototype.update.call(this);
|
|
// If type exists
|
|
if (this._type) {
|
|
// Type Switch Case
|
|
switch (this._type.toLowerCase()) {
|
|
case 'finalbattle': this.updateFinalBattleAnimation();break;
|
|
};
|
|
};
|
|
};
|
|
//=============================================================================
|
|
// * Update Final Battle Animation
|
|
//=============================================================================
|
|
Sprite_BattleIntroContainer.prototype.updateFinalBattleAnimation = function() {
|
|
// Get Animation Data
|
|
if(!this._animationSprite || !this._animationSprite.bitmap) {return;}
|
|
let scene = SceneManager._scene;
|
|
if(!scene._gpWhite) {return;}
|
|
if(this._smallDelay > 0) {return this._smallDelay--;}
|
|
if(!!scene._gpWhite.parent) {
|
|
if(scene._gpWhite.alpha > 0) {return scene._gpWhite.alpha -= 0.05;}
|
|
else {
|
|
$gameScreen.startTint([0,0,0,0], 1); // Makes tint Equal to 0;
|
|
scene.removeChild(scene._gpWhite);
|
|
}
|
|
}
|
|
let anim = this._animationData;
|
|
// Decrease Animation Count
|
|
anim.count--;
|
|
// If animation count is 0 or less
|
|
if (anim.count <= 0) {
|
|
// Set Animation Count
|
|
anim.count = anim.delay;
|
|
// If Animation Index is less than animation frames
|
|
if (anim.index < anim.frames) {
|
|
// Increase Animation Index
|
|
anim.index++;
|
|
} else {
|
|
this.visible = false;
|
|
this.parent.removeChild(this);
|
|
if(!this._battlerSprite._appeared) {
|
|
this._battlerSprite._battler.appear();
|
|
this._battlerSprite._effectDuration = 0;
|
|
this._battlerSprite._appeared = true;
|
|
this._battlerSprite.opacity = 255;
|
|
}
|
|
// Clear Battle Intro
|
|
BattleManager.setBattleIntro(null);
|
|
// show All menu elements
|
|
SceneManager._scene.showAllMenuElements(30);
|
|
};
|
|
// Get Width & Height
|
|
let width = this._animationSprite.width;
|
|
let height = this._animationSprite.height;
|
|
// Set Animation Sprite Frame
|
|
this._animationSprite.setFrame((anim.index % 6) * width, Math.floor(anim.index / 6) * height, width, height);
|
|
};
|
|
};
|
|
|