707 lines
29 KiB
JavaScript
707 lines
29 KiB
JavaScript
//=============================================================================
|
|
// TDS Omori Bestiary
|
|
// Version: 1.0
|
|
//=============================================================================
|
|
// Add to Imported List
|
|
var Imported = Imported || {} ; Imported.TDS_OmoriBestiary = true;
|
|
// Initialize Alias Object
|
|
var _TDS_ = _TDS_ || {} ; _TDS_.OmoriBestiary = _TDS_.OmoriBestiary || {};
|
|
//=============================================================================
|
|
/*:
|
|
* @plugindesc
|
|
* Bestiary for Omori.
|
|
*
|
|
* @author TDS
|
|
*
|
|
*/
|
|
//=============================================================================
|
|
|
|
|
|
|
|
//=============================================================================
|
|
// ** Game_Party
|
|
//-----------------------------------------------------------------------------
|
|
// The game object class for the party. Information such as gold and items is
|
|
// included.
|
|
//=============================================================================
|
|
// Alias Listing
|
|
//=============================================================================
|
|
_TDS_.OmoriBestiary.Game_Party_initialize = Game_Party.prototype.initialize;
|
|
//=============================================================================
|
|
// * Object Initialize
|
|
//=============================================================================
|
|
Game_Party.prototype.initialize = function() {
|
|
// Run Original Function
|
|
_TDS_.OmoriBestiary.Game_Party_initialize.call(this);
|
|
// Create List of Defeated Enemies
|
|
this._defeatedEnemies = [];
|
|
};
|
|
//=============================================================================
|
|
// * Add Defeated Enemy
|
|
//=============================================================================
|
|
Game_Party.prototype.addDefeatedEnemy = function(id) {
|
|
// Of Defeated Enemies array does not contain ID
|
|
if (!this._defeatedEnemies.contains(id)) {
|
|
// Add ID to defeated enemies array
|
|
this._defeatedEnemies.push(id);
|
|
};
|
|
let allEnemies = Object.keys(LanguageManager.getTextData('Bestiary', 'Information')).map(Number);
|
|
if(allEnemies.every(enemyId => this._defeatedEnemies.contains(enemyId))) {
|
|
$gameSystem.unlockAchievement("FOES_FILED"); // Unlock complete bestiary achievement;
|
|
}
|
|
};
|
|
|
|
|
|
|
|
//=============================================================================
|
|
// ** Game_Enemy
|
|
//-----------------------------------------------------------------------------
|
|
// The game object class for an enemy.
|
|
//=============================================================================
|
|
// Alias Listing
|
|
//=============================================================================
|
|
_TDS_.OmoriBestiary.Game_Enemy_die = Game_Enemy.prototype.die;
|
|
_TDS_.OmoriBestiary.Game_Enemy_appear = Game_Enemy.prototype.appear;
|
|
_TDS_.OmoriBestiary.Game_Enemy_onBattleStart = Game_Enemy.prototype.onBattleStart
|
|
//=============================================================================
|
|
// * Die
|
|
//=============================================================================
|
|
Game_Enemy.prototype.die = function() {
|
|
// Run Original Fucntion
|
|
_TDS_.OmoriBestiary.Game_Enemy_die.call(this);
|
|
// Add Defeated Enemy
|
|
$gameParty.addDefeatedEnemy(this.baseId());
|
|
};
|
|
//=============================================================================
|
|
// * Appear
|
|
//=============================================================================
|
|
Game_Enemy.prototype.appear = function() {
|
|
// Run Original Function
|
|
_TDS_.OmoriBestiary.Game_Enemy_appear.call(this);
|
|
// Add Defeated Enemy
|
|
$gameParty.addDefeatedEnemy(this.baseId());
|
|
};
|
|
//=============================================================================
|
|
// * On battle start processing
|
|
//=============================================================================
|
|
Game_Enemy.prototype.onBattleStart = function() {
|
|
// Run Original Function
|
|
_TDS_.OmoriBestiary.Game_Enemy_onBattleStart.call(this);
|
|
// If enemy has appeared
|
|
if (this.isAppeared()) {
|
|
// Add Defeated Enemy
|
|
$gameParty.addDefeatedEnemy(this.baseId());
|
|
};
|
|
};
|
|
|
|
|
|
|
|
//=============================================================================
|
|
// ** Scene_OmoriBestiary
|
|
//-----------------------------------------------------------------------------
|
|
// This scene is used to show the bestiary.
|
|
//=============================================================================
|
|
function Scene_OmoriBestiary() { this.initialize.apply(this, arguments);}
|
|
Scene_OmoriBestiary.prototype = Object.create(Scene_BaseEX.prototype);
|
|
Scene_OmoriBestiary.prototype.constructor = Scene_OmoriBestiary;
|
|
//=============================================================================
|
|
// * Object Initialization
|
|
//=============================================================================
|
|
Scene_OmoriBestiary.prototype.initialize = function() {
|
|
// Set Image reservation id
|
|
this._imageReservationId = 'bestiary';
|
|
// Create Enemy Object
|
|
this._enemy = new Game_Enemy(1, 0, 0);
|
|
// Super Call
|
|
Scene_BaseEX.prototype.initialize.call(this);
|
|
};
|
|
//=============================================================================
|
|
// * Initialize Atlas Lists
|
|
//=============================================================================
|
|
Scene_OmoriBestiary.prototype.initAtlastLists = function() {
|
|
// Super Call
|
|
Scene_BaseEX.prototype.initAtlastLists.call(this);
|
|
|
|
// // Go Through List of Entries
|
|
// for (let [id, obj] of Object.entries(LanguageManager.getTextData('Bestiary', 'Information'))) {
|
|
// // Reserve Battleback
|
|
// ImageManager.reserveBattleback1(obj.background.name, 0, this._imageReservationId);
|
|
// // Get Filename
|
|
// var name = $dataEnemies[Number(id)].sideviewBattler[0];
|
|
// // If name
|
|
// if (name) { ImageManager.reserveSvActor(name, 0, this._imageReservationId); };
|
|
// }
|
|
};
|
|
//=============================================================================
|
|
// * Start
|
|
//=============================================================================
|
|
Scene_OmoriBestiary.prototype.start = function() {
|
|
// Super Call
|
|
Scene_BaseEX.prototype.start.call(this);
|
|
// Start Fade in
|
|
this.startFadeIn(this.slowFadeSpeed(), false);
|
|
};
|
|
//=============================================================================
|
|
// * Create
|
|
//=============================================================================
|
|
Scene_OmoriBestiary.prototype.create = function() {
|
|
// Super Call
|
|
Scene_BaseEX.prototype.create.call(this);
|
|
|
|
this.createEnemyWindow();
|
|
this.createEnemyNameWindow();
|
|
this.createEnemyListWindow();
|
|
|
|
// Create Enemy Text Window
|
|
this._enemyTextWindow = new Window_OmoBestiaryEnemyText();
|
|
this._enemyTextWindow.y = Graphics.height - this._enemyTextWindow.height
|
|
this._enemyTextWindow.x = Graphics.width - this._enemyTextWindow.width;
|
|
this._enemyTextWindow.visible = false;
|
|
this.addChild(this._enemyTextWindow)
|
|
|
|
this.onListChangeUpdate();
|
|
};
|
|
//=============================================================================
|
|
// * Create Enemy Window
|
|
//=============================================================================
|
|
Scene_OmoriBestiary.prototype.createEnemyWindow = function() {
|
|
// Create Enemy Window
|
|
this._enemyWindow = new Window_OmoBestiaryEnemy(this._enemy);
|
|
this.addChild(this._enemyWindow);
|
|
};
|
|
//=============================================================================
|
|
// * Create Enemy Name Window
|
|
//=============================================================================
|
|
Scene_OmoriBestiary.prototype.createEnemyNameWindow = function() {
|
|
// Create Enemy Name Window
|
|
this._enemyNameWindow = new Window_OmoBestiaryEnemyName();
|
|
this._enemyNameWindow.x = Graphics.width - this._enemyNameWindow.width;
|
|
this.addChild(this._enemyNameWindow)
|
|
};
|
|
//=============================================================================
|
|
// * Create Enemy List Window
|
|
//=============================================================================
|
|
Scene_OmoriBestiary.prototype.createEnemyListWindow = function() {
|
|
// Create Enemy List Window
|
|
this._enemyListWindow = new Window_OmoBestiaryEnemyList();
|
|
this._enemyListWindow.x = Graphics.width - this._enemyListWindow.width;
|
|
this._enemyListWindow.y = Graphics.height - this._enemyListWindow.height;
|
|
this._enemyListWindow.setHandler('ok', this.onEnemyListOk.bind(this))
|
|
this._enemyListWindow.setHandler('cancel', this.popScene.bind(this))
|
|
this._enemyListWindow._onCursorChangeFunct = this.onListChangeUpdate.bind(this);
|
|
this.addChild(this._enemyListWindow);
|
|
};
|
|
//=============================================================================
|
|
// * Frame Update
|
|
//=============================================================================
|
|
Scene_OmoriBestiary.prototype.update = function() {
|
|
// Super Call
|
|
Scene_BaseEX.prototype.update.call(this);
|
|
|
|
// If Enemy Text Window is visible
|
|
if (this._enemyTextWindow.visible) {
|
|
if (Input.isTriggered('cancel')) {
|
|
SoundManager.playCancel();
|
|
this._enemyListWindow._onCursorChangeFunct = undefined;
|
|
this._enemyListWindow.activate();
|
|
this._enemyTextWindow.visible = false;
|
|
this._enemyListWindow._onCursorChangeFunct = this.onListChangeUpdate.bind(this);
|
|
return;
|
|
}
|
|
if (Input.isTriggered('left')) {
|
|
this._enemyListWindow.selectPreviousEnemy();
|
|
this.onListChangeUpdate();
|
|
this.onEnemyListOk();
|
|
};
|
|
if (Input.isTriggered('right')) {
|
|
this._enemyListWindow.selectNextEnemy();
|
|
this.onListChangeUpdate();
|
|
this.onEnemyListOk()
|
|
};
|
|
};
|
|
};
|
|
//=============================================================================
|
|
// * On List Change Update
|
|
//=============================================================================
|
|
Scene_OmoriBestiary.prototype.onListChangeUpdate = function() {
|
|
// Get Enemy ID
|
|
var enemyId = this._enemyListWindow.enemyId();
|
|
// Get Enemy Sprite
|
|
var enemySprite = this._enemyWindow._enemySprite;
|
|
// If the enemy ID is more than 0
|
|
if (enemyId > 0) {
|
|
this._enemyWindow.clearOpacity();
|
|
enemySprite.removeChildren();
|
|
// If enemy ID has changed transform
|
|
this._enemy.transform(enemyId);
|
|
// Get Data
|
|
var data = LanguageManager.getTextData('Bestiary', 'Information')[enemyId];
|
|
// Get Background Data
|
|
var background = data.background;
|
|
// Draw Name
|
|
this._enemyNameWindow.drawName(this._enemyListWindow.enemyName(data));
|
|
// Set Home Position
|
|
enemySprite.setHome(data.position.x, data.position.y)
|
|
// Set Enemy Sprite to visible
|
|
enemySprite.visible = true;
|
|
// Start Enemy Sprite Motion
|
|
enemySprite.startMotion("other");
|
|
// Update Enemy Sprite
|
|
enemySprite.update();
|
|
// Set Background
|
|
this._enemyWindow.setBackground(background.name, background.x, background.y)
|
|
} else {
|
|
// Make Enemy Sprite invisible
|
|
enemySprite.setHome(-Graphics.width, -Graphics.height)
|
|
// Draw Name
|
|
this._enemyNameWindow.drawName(LanguageManager.getTextData('Bestiary', 'EmptyEnemyName'))
|
|
// Set Background
|
|
this._enemyWindow.setBackground(null);
|
|
};
|
|
};
|
|
//=============================================================================
|
|
// * [OK] Enemy List
|
|
//=============================================================================
|
|
Scene_OmoriBestiary.prototype.onEnemyListOk = function() {
|
|
// Get Enemy ID
|
|
var enemyId = this._enemyListWindow.enemyId();
|
|
// Get Data
|
|
var data = LanguageManager.getTextData('Bestiary', 'Information')[enemyId];
|
|
// Make Enemy Text Window Visible
|
|
this._enemyTextWindow.visible = true;
|
|
|
|
// Get Lines
|
|
var lines = data.text.split(/[\r\n]/g);
|
|
// Get Conditional Text
|
|
var conditionalText = data.conditionalText;
|
|
// If Conditional Text Exists
|
|
if (conditionalText) {
|
|
// Go through conditional text
|
|
for (var i = 0; i < conditionalText.length; i++) {
|
|
// Get text Data
|
|
var textData = conditionalText[i];
|
|
// Check if all switches are active
|
|
if (textData.switchIds.every(function(id) { return $gameSwitches.value(id); })){
|
|
// Get Line Index
|
|
var lineIndex = textData.line === null ? lines.length : textData.line;
|
|
// Get Extra Lines
|
|
var extraLines = textData.text.split(/[\r\n]/g);
|
|
// Add extra lines to main lines array
|
|
lines.splice(lineIndex, 0, ...extraLines)
|
|
};
|
|
};
|
|
}
|
|
|
|
// Draw Lines
|
|
this._enemyTextWindow.drawLines(lines);
|
|
// Get Character
|
|
var character = this._enemyTextWindow._enemyCharacter;
|
|
let sprite = this._enemyTextWindow._characterSprite;
|
|
// If Character Data Exists
|
|
if (data.character) {
|
|
// Set Character Image
|
|
character.setImage(data.character.name, data.character.index);
|
|
} else {
|
|
// Set Character Image to nothing
|
|
character.setImage('', 0);
|
|
};
|
|
// Update Sprite
|
|
sprite.update()
|
|
// Update Character
|
|
this._enemyTextWindow.updateCharacter();
|
|
this._enemyTextWindow._characterSprite.update();
|
|
};
|
|
|
|
|
|
|
|
|
|
//=============================================================================
|
|
// ** Window_OmoBestiaryEnemy
|
|
//-----------------------------------------------------------------------------
|
|
// This window is used to show the enemy and the background for it.
|
|
//=============================================================================
|
|
function Window_OmoBestiaryEnemy() { this.initialize.apply(this, arguments); }
|
|
Window_OmoBestiaryEnemy.prototype = Object.create(Window_Base.prototype);
|
|
Window_OmoBestiaryEnemy.prototype.constructor = Window_OmoBestiaryEnemy;
|
|
//=============================================================================
|
|
// * Object Initialization
|
|
//=============================================================================
|
|
Window_OmoBestiaryEnemy.prototype.initialize = function(enemy) {
|
|
// Super Call
|
|
Window_Base.prototype.initialize.call(this, 0, 0, Graphics.width / 2, Graphics.height);
|
|
// Get Enemy Object
|
|
this._enemy = enemy
|
|
// Create Cover Mask
|
|
this.createCoverMask();
|
|
// Create Background Sprite
|
|
this.createBackgroundSprite();
|
|
// Create Enemy Sprite
|
|
this.createEnemySprite();
|
|
};
|
|
//=============================================================================
|
|
// * Standard Padding
|
|
//=============================================================================
|
|
Window_OmoBestiaryEnemy.prototype.standardPadding = function() { return 5; }
|
|
Window_OmoBestiaryEnemy.prototype.isUsingCustomCursorRectSprite = function() { return true; }
|
|
Window_OmoBestiaryEnemy.prototype.customCursorRectYOffset = function() { return -7; }
|
|
//=============================================================================
|
|
// * Refresh Arrows
|
|
//=============================================================================
|
|
Window_OmoBestiaryEnemy.prototype._refreshArrows = function() { };
|
|
//=============================================================================
|
|
// * Create Cover Mask
|
|
//=============================================================================
|
|
Window_OmoBestiaryEnemy.prototype.createCoverMask = function() {
|
|
// Get Padding
|
|
var padding = this.standardPadding();
|
|
// Face Mask
|
|
this._coverMask = new PIXI.Graphics();
|
|
this._coverMask.beginFill(0xFFF);
|
|
this._coverMask.drawRect(padding, padding, this.width - (padding * 2), this.height - (padding * 2));
|
|
this._coverMask.endFill();
|
|
this.addChild(this._coverMask)
|
|
};
|
|
//=============================================================================
|
|
// * Create Background Sprite
|
|
//=============================================================================
|
|
Window_OmoBestiaryEnemy.prototype.createBackgroundSprite = function() {
|
|
// Create Background Sprite
|
|
this._backgroundSprite = new Sprite(ImageManager.loadBattleback1('battleback_vf_default'));
|
|
this._backgroundSprite.mask = this._coverMask;
|
|
this.addChild(this._backgroundSprite);
|
|
};
|
|
//=============================================================================
|
|
// * Create Enemy Sprite
|
|
//=============================================================================
|
|
Window_OmoBestiaryEnemy.prototype.createEnemySprite = function() {
|
|
// Create Background Sprite
|
|
this._enemySprite = new Sprite_Enemy(this._enemy);
|
|
this._enemySprite.mask = this._coverMask;
|
|
this._enemySprite.createShadowSprite = function() { this._shadowSprite = new Sprite(); }
|
|
this._enemySprite.getCurrentMotion = function() {
|
|
let other = this._enemy.getSideviewMotion("other");
|
|
if(!other) {return this._enemy.getSideviewMotion("walk")}
|
|
return other;
|
|
}
|
|
this.addChild(this._enemySprite);
|
|
};
|
|
//=============================================================================
|
|
// * Set Background
|
|
//=============================================================================
|
|
Window_OmoBestiaryEnemy.prototype.setBackground = function(name = null, x = 0, y = 0) {
|
|
// If name
|
|
if (name) {
|
|
// Set Background Bitmap
|
|
this._backgroundSprite.bitmap = ImageManager.loadBattleback1(name)
|
|
this._backgroundSprite.x = x;
|
|
this._backgroundSprite.y = y;
|
|
} else {
|
|
// Set Background Bitmap to null
|
|
this._backgroundSprite.bitmap = null;
|
|
}
|
|
this._opDelay = 6;
|
|
};
|
|
|
|
//=============================================================================
|
|
// * Clear Opacity
|
|
//=============================================================================
|
|
Window_OmoBestiaryEnemy.prototype.clearOpacity = function() {
|
|
this._enemySprite.opacity = 0;
|
|
this._backgroundSprite.opacity = 0;
|
|
}
|
|
|
|
//=============================================================================
|
|
// * Update Opacity
|
|
//=============================================================================
|
|
|
|
Window_OmoBestiaryEnemy.prototype.updateBEOpacity = function() {
|
|
if(this._enemySprite.opacity >= 255 && this._backgroundSprite.opacity >= 255) {return;}
|
|
this._enemySprite.opacity = Math.min(this._enemySprite.opacity + 8, 255);
|
|
this._backgroundSprite.opacity = Math.min(this._backgroundSprite.opacity + 8, 255);
|
|
}
|
|
|
|
//=============================================================================
|
|
// * Main Update Method
|
|
//=============================================================================
|
|
|
|
Window_OmoBestiaryEnemy.prototype.update = function() {
|
|
Window_Base.prototype.update.call(this);
|
|
if(--this._opDelay > 0) {return;}
|
|
this.updateBEOpacity();
|
|
}
|
|
|
|
//=============================================================================
|
|
// ** Window_OmoBestiaryEnemyName
|
|
//-----------------------------------------------------------------------------
|
|
// This window is used to show the enemy name as a header
|
|
//=============================================================================
|
|
function Window_OmoBestiaryEnemyName() { this.initialize.apply(this, arguments); }
|
|
Window_OmoBestiaryEnemyName.prototype = Object.create(Window_Base.prototype);
|
|
Window_OmoBestiaryEnemyName.prototype.constructor = Window_OmoBestiaryEnemyName;
|
|
//=============================================================================
|
|
// * Object Initialization
|
|
//=============================================================================
|
|
Window_OmoBestiaryEnemyName.prototype.initialize = function() {
|
|
// Super Call
|
|
Window_Base.prototype.initialize.call(this, 0, 0, Graphics.width / 2, 48);
|
|
};
|
|
//=============================================================================
|
|
// * Standard Padding
|
|
//=============================================================================
|
|
Window_OmoBestiaryEnemyName.prototype.standardPadding = function() { return 4; }
|
|
//=============================================================================
|
|
// * Draw Name
|
|
//=============================================================================
|
|
Window_OmoBestiaryEnemyName.prototype.drawName = function(name) {
|
|
// Clear Contents
|
|
this.contents.clear()
|
|
// Draw Name
|
|
this.contents.drawText(name, 15, 0, this.contents.width - 30, this.contents.height);
|
|
};
|
|
|
|
|
|
|
|
//=============================================================================
|
|
// ** Window_OmoBestiaryEnemyText
|
|
//-----------------------------------------------------------------------------
|
|
// This window is used to show the enemy information text.
|
|
//=============================================================================
|
|
function Window_OmoBestiaryEnemyText() { this.initialize.apply(this, arguments); }
|
|
Window_OmoBestiaryEnemyText.prototype = Object.create(Window_Base.prototype);
|
|
Window_OmoBestiaryEnemyText.prototype.constructor = Window_OmoBestiaryEnemyText;
|
|
//=============================================================================
|
|
// * Object Initialization
|
|
//=============================================================================
|
|
Window_OmoBestiaryEnemyText.prototype.initialize = function() {
|
|
// Super Call
|
|
Window_Base.prototype.initialize.call(this, 0, 0, Graphics.width / 2, Graphics.height - 48);
|
|
// Create Character
|
|
this.createCharacter();
|
|
};
|
|
//=============================================================================
|
|
// * Create Character
|
|
//=============================================================================
|
|
Window_OmoBestiaryEnemyText.prototype.createCharacter = function() {
|
|
// Create Character Object
|
|
this._enemyCharacter = new Game_Character();
|
|
// Set Character Image Properties
|
|
this._enemyCharacter.setImage('', 0)
|
|
this._enemyCharacter.setWalkAnime(true)
|
|
this._enemyCharacter.setStepAnime(true)
|
|
// Create Sprite Character
|
|
this._characterSprite = new Sprite_Character(this._enemyCharacter);
|
|
this._characterSprite.updatePosition = function() {};
|
|
this.addChild(this._characterSprite);
|
|
};
|
|
//=============================================================================
|
|
// * Draw Information
|
|
//=============================================================================
|
|
Window_OmoBestiaryEnemyText.prototype.drawInformation = function(information) {
|
|
// Clear Contents
|
|
this.contents.clear();
|
|
// Get Lines
|
|
var lines = information.split(/[\r\n]/g);
|
|
// Go Through Lines
|
|
for (var i = 0; i < lines.length; i++) {
|
|
// Draw Line
|
|
this.drawText(lines[i], 0, -10 + (i * 24), this.contents.width, 24);
|
|
};
|
|
};
|
|
//=============================================================================
|
|
// * Draw Information
|
|
//=============================================================================
|
|
Window_OmoBestiaryEnemyText.prototype.drawLines = function(lines) {
|
|
// Clear Contents
|
|
this.contents.clear();
|
|
// Go Through Lines
|
|
for (var i = 0; i < lines.length; i++) {
|
|
// Draw Line
|
|
this.drawText(lines[i], 0, -8 + (i * 28), this.contents.width, 24);
|
|
};
|
|
};
|
|
//=============================================================================
|
|
// * Frame Update
|
|
//=============================================================================
|
|
Window_OmoBestiaryEnemyText.prototype.update = function() {
|
|
// Super Call
|
|
Window_Base.prototype.update.call(this);
|
|
// Update Character
|
|
this.updateCharacter();
|
|
};
|
|
//=============================================================================
|
|
// * Update Character
|
|
//=============================================================================
|
|
Window_OmoBestiaryEnemyText.prototype.updateCharacter = function() {
|
|
// Update Character
|
|
this._enemyCharacter.update();
|
|
// Get Sprite
|
|
var sprite = this._characterSprite;
|
|
// Set Sprite Position
|
|
sprite.x = this.width - (sprite._frame.width / 2) - 10;
|
|
sprite.y = this.height - 10;
|
|
};
|
|
|
|
|
|
|
|
//=============================================================================
|
|
// ** Window_OmoBestiaryEnemyList
|
|
//-----------------------------------------------------------------------------
|
|
// This window is used to show a list of enemy names.
|
|
//=============================================================================
|
|
function Window_OmoBestiaryEnemyList() { this.initialize.apply(this, arguments); }
|
|
Window_OmoBestiaryEnemyList.prototype = Object.create(Window_Command.prototype);
|
|
Window_OmoBestiaryEnemyList.prototype.constructor = Window_OmoBestiaryEnemyList;
|
|
//=============================================================================
|
|
// * Object Initialization
|
|
//=============================================================================
|
|
Window_OmoBestiaryEnemyList.prototype.initialize = function() {
|
|
// Get Entries for Sorted Bestiary list
|
|
this._sortedBestiaryList = Object.entries(LanguageManager.getTextData('Bestiary', 'Information'));
|
|
// Sort list
|
|
this._sortedBestiaryList.sort(function(a, b) {
|
|
var indexA = a[1].listIndex === undefined ? Number(a[0]) : a[1].listIndex
|
|
var indexB = b[1].listIndex === undefined ? Number(b[0]) : b[1].listIndex
|
|
return indexA - indexB
|
|
});
|
|
// Super Call
|
|
Window_Command.prototype.initialize.call(this, 0, 0);
|
|
};
|
|
//=============================================================================
|
|
// * Settings
|
|
//=============================================================================
|
|
Window_OmoBestiaryEnemyList.prototype.windowWidth = function() { return Graphics.width / 2; };
|
|
Window_OmoBestiaryEnemyList.prototype.windowHeight = function() { return Graphics.height - 48; };
|
|
Window_OmoBestiaryEnemyList.prototype.isUsingCustomCursorRectSprite = function() { return true; };
|
|
Window_OmoBestiaryEnemyList.prototype.customCursorRectXOffset = function() { return 14; }
|
|
Window_OmoBestiaryEnemyList.prototype.customCursorRectYOffset = function() { return 0; }
|
|
Window_OmoBestiaryEnemyList.prototype.customCursorRectTextXOffset = function() { return 30; }
|
|
Window_OmoBestiaryEnemyList.prototype.customCursorRectTextYOffset = function() { return -7; }
|
|
Window_OmoBestiaryEnemyList.prototype.customCursorRectTextWidthOffset = function() { return 0; }
|
|
Window_OmoBestiaryEnemyList.prototype.customCursorRectBitmapName = function() { return 'cursor_menu'; }
|
|
//=============================================================================
|
|
// * Get Enemy ID
|
|
//=============================================================================
|
|
Window_OmoBestiaryEnemyList.prototype.enemyId = function(index = this._index) {
|
|
return this._list[index].ext;
|
|
};
|
|
//=============================================================================
|
|
// * Select Next Enemy
|
|
//=============================================================================
|
|
Window_OmoBestiaryEnemyList.prototype.selectNextEnemy = function() {
|
|
// Get Starting Index
|
|
var index = (this.index() + 1)
|
|
if(index >= this.maxItems()) {
|
|
index = 0;
|
|
}
|
|
var selected = false;
|
|
// Go Through Items
|
|
for (var i = index; i < this.maxItems(); i++) {
|
|
// If item has a valid ID
|
|
if (this._list[i].ext !== 0) {
|
|
// audio
|
|
AudioManager.playSe({name: "SE_turn_page", pan: 0, pitch: 100, volume: 90});
|
|
// Select it
|
|
this.select(i);
|
|
selected = true;
|
|
break;
|
|
};
|
|
};
|
|
if(!!selected) {return;}
|
|
};
|
|
//=============================================================================
|
|
// * Select Previous Enemy
|
|
//=============================================================================
|
|
Window_OmoBestiaryEnemyList.prototype.selectPreviousEnemy = function() {
|
|
// Get Starting Index
|
|
var index = (this.index() - 1) < 0 ? this.maxItems() - 1 : this.index() - 1;
|
|
// Go Through Items
|
|
for (var i = index; i >= 0; i--) {
|
|
// If item has a valid Id
|
|
if (this._list[i].ext !== 0) {
|
|
// audio
|
|
AudioManager.playSe({name: "SE_turn_page", pan: 0, pitch: 100, volume: 90});
|
|
// Select it
|
|
this.select(i);
|
|
break;
|
|
};
|
|
};
|
|
};
|
|
//=============================================================================
|
|
// * Make Command List
|
|
//=============================================================================
|
|
Window_OmoBestiaryEnemyList.prototype.makeCommandList = function() {
|
|
// Get List
|
|
var list = $gameParty._defeatedEnemies;
|
|
// Go Through List of Entries
|
|
for (let [id, obj] of this._sortedBestiaryList) {
|
|
// Get Index
|
|
var index = Number(id);
|
|
// If Defeated Enemy list contains id
|
|
if (list.contains(index)) {
|
|
// Add Command
|
|
this.addCommand(this.enemyName(obj), 'ok', true, index)
|
|
} else {
|
|
// Add Empty Command
|
|
this.addCommand('------------------------------', 'nothing', false, 0)
|
|
};
|
|
};
|
|
};
|
|
//=============================================================================
|
|
// * Get Enemy Name
|
|
//=============================================================================
|
|
Window_OmoBestiaryEnemyList.prototype.enemyName = function(obj) {
|
|
// If object has conditional names
|
|
if (obj.conditionalNames) {
|
|
// Get Names
|
|
const names = obj.conditionalNames
|
|
// Go Through Names
|
|
for (var i = 0; i < names.length; i++) {
|
|
// Get Data
|
|
const data = names[i];
|
|
// Check Switches
|
|
let switches = data.switches.every(arr => $gameSwitches.value(arr[0]) === arr[1])
|
|
|
|
if (switches) {
|
|
return data.name;
|
|
};
|
|
};
|
|
};
|
|
// Return default name
|
|
return obj.name
|
|
};
|
|
//=============================================================================
|
|
// * Draw Item
|
|
//=============================================================================
|
|
Window_OmoBestiaryEnemyList.prototype.drawItem = function(index) {
|
|
var rect = this.itemRectForText(index);
|
|
var align = this.itemTextAlign();
|
|
this.resetTextColor();
|
|
this.changePaintOpacity(true);
|
|
this.drawText(this.commandName(index), rect.x, rect.y, rect.width - rect.x, align);
|
|
};
|
|
//=============================================================================
|
|
// * Refresh Arrows
|
|
//=============================================================================
|
|
Window_OmoBestiaryEnemyList.prototype._refreshArrows = function() {
|
|
// Run Original Function
|
|
Window_Command.prototype._refreshArrows.call(this);
|
|
var w = this._width;
|
|
var h = this._height;
|
|
var p = 28;
|
|
var q = p/2;
|
|
this._downArrowSprite.move(w - q, h - q);
|
|
this._upArrowSprite.move(w - q, q);
|
|
};
|
|
//=============================================================================
|
|
// * Call Update Help
|
|
//=============================================================================
|
|
Window_OmoBestiaryEnemyList.prototype.callUpdateHelp = function() {
|
|
// Super Call
|
|
Window_Command.prototype.callUpdateHelp.call(this);
|
|
// If active
|
|
if (this.active) {
|
|
// If On Cursor Change Function Exists
|
|
if (this._onCursorChangeFunct) { this._onCursorChangeFunct(); };
|
|
|
|
};
|
|
};
|