6644 lines
258 KiB
JavaScript
6644 lines
258 KiB
JavaScript
//=============================================================================
|
|
// TDS Omori BASE
|
|
// Version: 1.6
|
|
//=============================================================================
|
|
// Add to Imported List
|
|
var Imported = Imported || {}; Imported.TDS_OmoriBASE = true;
|
|
// Initialize Alias Object
|
|
var _TDS_ = _TDS_ || {}; _TDS_.OmoriBASE = _TDS_.OmoriBASE || {};
|
|
//=============================================================================
|
|
/*:
|
|
* @plugindesc
|
|
* Contains base functions and standards for OMORI.
|
|
*
|
|
* @author TDS
|
|
*
|
|
*/
|
|
//=============================================================================
|
|
|
|
|
|
|
|
window.focus();
|
|
|
|
|
|
//=============================================================================
|
|
// ** Bitmap
|
|
//-----------------------------------------------------------------------------
|
|
// The basic object that represents an image.
|
|
//=============================================================================
|
|
// Alias Listing
|
|
//=============================================================================
|
|
_TDS_.OmoriBASE.Bitmap_initialize = Bitmap.prototype.initialize;
|
|
//=============================================================================
|
|
// * Object Initialization
|
|
//=============================================================================
|
|
Bitmap.prototype.initialize = function (width, height) {
|
|
// Run Original Function
|
|
_TDS_.OmoriBASE.Bitmap_initialize.call(this, width, height);
|
|
// Default Input Icons
|
|
this._defaultInputIcons = 'gamepadBlack24';
|
|
};
|
|
//=============================================================================
|
|
// * Get Default Input Icons
|
|
//=============================================================================
|
|
Bitmap.prototype.defaultInputIcons = function () {
|
|
return ConfigManager.gamepadTips ? this._defaultInputIcons : 'keyboardBlack24';
|
|
}
|
|
|
|
//=============================================================================
|
|
// * Determine Vendor Gamepad
|
|
//=============================================================================
|
|
|
|
Bitmap.prototype.determineVendorRect = function () {
|
|
let gamepads = navigator.getGamepads();
|
|
let currentGamepad;
|
|
currentGamepad = !Input._lastGamepad ? gamepads[0] : gamepads[Input._lastGamepad];
|
|
let rectChange = 72;
|
|
let index = 2; // O - Default; 1 - SONY; 2 - XBOX, -1 Special Mapping;
|
|
if (!currentGamepad) { return rectChange * index; }
|
|
let gId = currentGamepad.id.toLowerCase();
|
|
if (gId.contains("0810") && gId.contains("e501")) { index = -1; } // Particular unbranded controllers;
|
|
else if (gId.contains("0079") && gId.contains("0011")) { index = -1; } // Dragon Inc
|
|
else if (gId.contains("054c")) { index = 1; } // SONY
|
|
else if (gId.contains("045e")) { index = 2; } // MICROSOFT
|
|
else if (gId.contains("xbox")) { index = 2; } // XBOX
|
|
else if (gId.contains("playstation")) { index = 1; } // PLAYSTATION
|
|
else if (gId.contains("ps2")) { index = 1; } // PLAYSTATION
|
|
else if (gId.contains("ps3")) { index = 1; } // PLAYSTATION
|
|
else if (gId.contains("ps4")) { index = 1; } // PLAYSTATION
|
|
else if (gId.contains("ps5")) { index = 1; } // PLAYSTATION
|
|
else if (gId.contains("switch")) { index = 0; } // NINTENDO SWITCH
|
|
else if (currentGamepad.mapping === "standard") { index = 2 }
|
|
return rectChange * index;
|
|
}
|
|
//=============================================================================
|
|
// * Draw Input Icon
|
|
//=============================================================================
|
|
Bitmap.prototype.keyIconRects = function (key, type = this.defaultInputIcons(), side = 0) {
|
|
// Get Language Data
|
|
var data = LanguageManager.languageData().text.System.InputIcons[type];
|
|
// Get Rects
|
|
let kk = data.rects[key];
|
|
let foundKey = !!kk;
|
|
if (!kk) {
|
|
kk = {
|
|
"up": { x: 0, y: 0, width: 24, height: 24 },
|
|
"down": { x: 24, y: 0, width: 24, height: 24 }
|
|
}
|
|
}
|
|
var rects = JsonEx.makeDeepCopy(kk);
|
|
// If Rects Don't Exist set it to empty
|
|
if (rects === undefined) { rects = data.rects.EMPTY; }
|
|
// Return Rect
|
|
if (type === "gamepadBlack24" && !!foundKey) {
|
|
let vendorRect = this.determineVendorRect();
|
|
rects.up.x -= vendorRect;
|
|
rects.down.x -= vendorRect;
|
|
}
|
|
return rects;
|
|
};
|
|
//=============================================================================
|
|
// * Draw Input Icon
|
|
//=============================================================================
|
|
Bitmap.prototype.drawKeyIcon = function (key, x, y, type = this.defaultInputIcons(), side = 0) {
|
|
// Get Language Data
|
|
var data = LanguageManager.languageData().text.System.InputIcons[type];
|
|
// Get Source
|
|
var source = ImageManager.loadSystem('Input/' + data.source);
|
|
// Get Rects
|
|
var rects = data.rects[key];
|
|
let rectsFound = !!rects;
|
|
// If Rects Don't Exist set it to empty
|
|
if (rects === undefined) {
|
|
rects = {
|
|
"up": { x: 0, y: 0, width: 24, height: 24 },
|
|
"down": { x: 24, y: 0, width: 24, height: 24 }
|
|
}
|
|
}
|
|
// Get Rect
|
|
var rect = side === 0 ? rects.up : rects.down;
|
|
// Determine key type;
|
|
let rectX = rect.x;
|
|
if (!!rectsFound) {
|
|
if (type === "gamepadBlack24") {
|
|
rectX -= this.determineVendorRect();
|
|
}
|
|
}
|
|
// Transfer Rect to self
|
|
this.blt(source, rectX, rect.y, rect.width, rect.height, x, y);
|
|
};
|
|
//=============================================================================
|
|
// * Draw Input Icon
|
|
//=============================================================================
|
|
Bitmap.prototype.drawInputIcon = function (input, x, y, gamepad = true, type = this.defaultInputIcons(), side = 0) {
|
|
// Get Key Map
|
|
gamepad = ConfigManager.gamepadTips;
|
|
var map = gamepad ? Input.gamepadMapper : Input.keyMapper;
|
|
// Get Key
|
|
var key = Object.keys(map).find(key => map[key] === input);
|
|
// Draw Key Icon
|
|
this.drawKeyIcon(key, x, y, type, side);
|
|
};
|
|
//=============================================================================
|
|
// * Draw Aligned Key Icon
|
|
//=============================================================================
|
|
Bitmap.prototype.drawAlginedKeyIcon = function (input, x, y, width, height, align = 'center', type = this.defaultInputIcons(), side = 0) {
|
|
// Get Language Data
|
|
var data = LanguageManager.languageData().text.System.InputIcons[type];
|
|
// Get Source
|
|
var source = ImageManager.loadSystem('Input/' + data.source);
|
|
// Get Rects
|
|
var rects = this.keyIconRects(input, type);
|
|
// Get Rect
|
|
var rect = side === 0 ? rects.up : rects.down;
|
|
// Get Center X & Y Positions
|
|
var cx = 0, cy = (height - rect.height) / 2;
|
|
// Alignment switch case
|
|
switch (align) {
|
|
case 'center': cx = (width - rect.width) / 2; break;
|
|
case 'right': cx = (width - rect.width)
|
|
break;
|
|
};
|
|
// Transfer Rect to self
|
|
this.blt(source, rect.x, rect.y, rect.width, rect.height, x + cx, y + cy);
|
|
}
|
|
|
|
|
|
|
|
//=============================================================================
|
|
// ** WebAudio
|
|
//-----------------------------------------------------------------------------
|
|
// The audio object of Web Audio API.
|
|
//=============================================================================
|
|
// * Fade to
|
|
//=============================================================================
|
|
WebAudio.prototype._fadeTo = function (vol, duration) {
|
|
if (this._gainNode) {
|
|
var gain = this._gainNode.gain;
|
|
var currentTime = WebAudio._context.currentTime;
|
|
gain.setValueAtTime(gain.value, currentTime);
|
|
gain.linearRampToValueAtTime(vol, currentTime + duration);
|
|
}
|
|
};
|
|
|
|
|
|
//=============================================================================
|
|
// ** AudioManager
|
|
//-----------------------------------------------------------------------------
|
|
// The static class that handles BGM, BGS, ME and SE.
|
|
//=============================================================================
|
|
// * Class Variables
|
|
//=============================================================================
|
|
// Extra Buffers array
|
|
AudioManager._extraBuffers = [];
|
|
//=============================================================================
|
|
// * Fade BGM to
|
|
//=============================================================================
|
|
AudioManager.fadeBgmTo = function (volume, duration) {
|
|
if (this._bgmBuffer && this._currentBgm) {
|
|
this._bgmBuffer._fadeTo(volume / 100, duration / 60);
|
|
};
|
|
};
|
|
//=============================================================================
|
|
// * Fade BGS to
|
|
//=============================================================================
|
|
AudioManager.fadeBgsTo = function (volume, duration) {
|
|
if (this._bgsBuffer && this._currentBgs) {
|
|
this._bgsBuffer._fadeTo(volume / 100, duration / 60);
|
|
};
|
|
};
|
|
//=============================================================================
|
|
// * Loop Current ME
|
|
//=============================================================================
|
|
AudioManager.loopCurrentME = function () {
|
|
// If ME Buffer exists
|
|
if (this._meBuffer) {
|
|
// Get Position
|
|
var pos = this._meBuffer.seek();
|
|
// Replay ME (With looping)
|
|
this._meBuffer.play(true, pos || 0);
|
|
};
|
|
};
|
|
//=============================================================================
|
|
// * Play Current BGM once
|
|
//=============================================================================
|
|
AudioManager.playCurrentBGMOnce = function (switchId = 0) {
|
|
// If BGM Buffer exists
|
|
if (this._bgmBuffer) {
|
|
// Get Position
|
|
var pos = this._bgmBuffer.seek();
|
|
// Replay BGM (With no looping)
|
|
this._bgmBuffer.play(false, pos || 0);
|
|
// Set Stop Listener to BGM Buffer
|
|
this._bgmBuffer.addStopListener(function () {
|
|
// If Switch Id is more than 0
|
|
if (switchId > 0) {
|
|
// Turn on Switch
|
|
$gameSwitches.setValue(switchId, true);
|
|
}
|
|
})
|
|
}
|
|
};
|
|
//=============================================================================
|
|
// * Play To Extra Buffer
|
|
//=============================================================================
|
|
AudioManager.playToExtraBuffer = function (index, type, sound, pos, loop = true) {
|
|
// Get Buffer
|
|
let buffer = this._extraBuffers[index];
|
|
// If Buffer Exists
|
|
if (buffer) {
|
|
const path = require('path');
|
|
// Get Folders
|
|
const folders = buffer._url.split('/');
|
|
// If type matches the folder of the buffer
|
|
if (type === folders[folders.length - 2]) {
|
|
// Update Buffer Parameters
|
|
this.updateBufferParameters(buffer, sound.volume, sound);
|
|
return;
|
|
} else {
|
|
// Stop the existing buffer
|
|
AudioManager.StopExtraBuffer(index);
|
|
};
|
|
};
|
|
// If Sound has a valid name
|
|
if (sound.name) {
|
|
// Create Buffer
|
|
buffer = this.createBuffer(type, sound.name);
|
|
// Update Buffer Parameters
|
|
this.updateBufferParameters(buffer, sound.volume, sound);
|
|
// Play buffer
|
|
buffer.play(loop, pos || 0);
|
|
// If not looping
|
|
if (loop === false) {
|
|
// Add Stop listener to buffer if it does not loop
|
|
buffer.addStopListener(this.StopExtraBuffer.bind(this, index));
|
|
}
|
|
// Set Buffet at index
|
|
this._extraBuffers[index] = buffer;
|
|
}
|
|
};
|
|
//=============================================================================
|
|
// * Stop Extra Buffer
|
|
//=============================================================================
|
|
AudioManager.StopExtraBuffer = function (index) {
|
|
// Get Etra Buffer
|
|
let buffer = this._extraBuffers[index];
|
|
// If Buffer Exists
|
|
if (buffer) {
|
|
// Stop Buffer
|
|
buffer.stop();
|
|
// Remove buffer at index
|
|
this._extraBuffers[index] = null;
|
|
};
|
|
};
|
|
//=============================================================================
|
|
// * Stop Extra Buffer
|
|
//=============================================================================
|
|
AudioManager.fadeoutExtraBuffer = function (index, duration) {
|
|
// Get Etra Buffer
|
|
let buffer = this._extraBuffers[index];
|
|
// If Buffer Exists
|
|
if (buffer) {
|
|
// Fadeout Buffer
|
|
buffer.fadeOut(duration);
|
|
// Remove buffer at index
|
|
this._extraBuffers[index] = null;
|
|
};
|
|
};
|
|
//=============================================================================
|
|
// * Clear Extra Buffers
|
|
//=============================================================================
|
|
AudioManager.ClearExtraBuffers = function () {
|
|
// Go through Extra Buffers
|
|
for (var i = 0; i < this._extraBuffers.length; i++) {
|
|
// Stop Extra Buffers
|
|
AudioManager.StopExtraBuffer(i);
|
|
};
|
|
};
|
|
|
|
|
|
|
|
//=============================================================================
|
|
// ** Window
|
|
//-----------------------------------------------------------------------------
|
|
// The window in the game.
|
|
//=============================================================================
|
|
// * Define Openness (Set, Get)
|
|
//=============================================================================
|
|
Object.defineProperty(Window.prototype, 'openness', {
|
|
get: function () { return this._openness; },
|
|
set: function (value) {
|
|
if (this._openness !== value) {
|
|
this._openness = value.clamp(0, 255);
|
|
// Openess Animations (0: Vertical, 1: Horizontal, 2: All)
|
|
if (this._opennessType === 0) {
|
|
this._windowSpriteContainer.scale.y = this._openness / 255;
|
|
this._windowSpriteContainer.y = this.height / 2 * (1 - this._openness / 255);
|
|
} else if (this._opennessType === 1) {
|
|
this._windowSpriteContainer.x = this.width / 2 * (1 - this._openness / 255);
|
|
this._windowSpriteContainer.scale.x = this._openness / 255;
|
|
} else if (this._opennessType === 2) {
|
|
this._windowSpriteContainer.scale.y = this._openness / 255;
|
|
this._windowSpriteContainer.y = this.height / 2 * (1 - this._openness / 255);
|
|
this._windowSpriteContainer.x = this.width / 2 * (1 - this._openness / 255);
|
|
this._windowSpriteContainer.scale.x = this._openness / 255;
|
|
};
|
|
};
|
|
},
|
|
configurable: true
|
|
});
|
|
|
|
|
|
|
|
|
|
//=============================================================================
|
|
// ** Sprite
|
|
//-----------------------------------------------------------------------------
|
|
// The basic object that is rendered to the game screen.
|
|
//=============================================================================
|
|
// * Scale X Value
|
|
//=============================================================================
|
|
Object.defineProperty(Sprite.prototype, 'scaleX', {
|
|
get: function () { return this.scale.x; },
|
|
set: function (value) { this.scale.x = value; },
|
|
configurable: true
|
|
});
|
|
//=============================================================================
|
|
// * Scale Y Value
|
|
//=============================================================================
|
|
Object.defineProperty(Sprite.prototype, 'scaleY', {
|
|
get: function () { return this.scale.y; },
|
|
set: function (value) { this.scale.y = value; },
|
|
configurable: true
|
|
});
|
|
|
|
|
|
|
|
//=============================================================================
|
|
// ** Input
|
|
//-----------------------------------------------------------------------------
|
|
// The static class that handles input data from the keyboard and gamepads.
|
|
//=============================================================================
|
|
// * Get Input Key Code
|
|
//=============================================================================
|
|
Input.inputKeyCode = function (input, gamepad = false) {
|
|
// Get Key Map
|
|
gamepad = ConfigManager.gamepadTips;
|
|
var map = gamepad ? Input.gamepadMapper : Input.keyMapper;
|
|
// Return Key Code
|
|
return Object.keys(map).find(key => map[key] === input);
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
//=============================================================================
|
|
// ** Scene_Boot
|
|
//-----------------------------------------------------------------------------
|
|
// The scene class for initializing the entire game.
|
|
//=============================================================================
|
|
// Alias Listing
|
|
//=============================================================================
|
|
_TDS_.OmoriBASE.Scene_Boot_loadSystemWindowImage = Scene_Boot.prototype.loadSystemWindowImage;
|
|
//=============================================================================
|
|
// * Load System Images
|
|
//=============================================================================
|
|
Scene_Boot.prototype.loadSystemWindowImage = function () {
|
|
// Run Original Function
|
|
_TDS_.OmoriBASE.Scene_Boot_loadSystemWindowImage.call(this);
|
|
// ImageManager.reserveSystem("hp_icon");
|
|
// ImageManager.reserveSystem("mp_icon");
|
|
// ImageManager.reserveSystem("equip_arrow");
|
|
// ImageManager.reserveSystem("newtagmenud");
|
|
};
|
|
|
|
|
|
|
|
//=============================================================================
|
|
// ** DataManager
|
|
//-----------------------------------------------------------------------------
|
|
// The static class that manages the database and game objects.
|
|
//=============================================================================
|
|
// Alias Listing
|
|
//=============================================================================
|
|
_TDS_.OmoriBASE.DataManager_makeSavefileInfo = DataManager.makeSavefileInfo;
|
|
//=============================================================================
|
|
// * Make Save File Information
|
|
//=============================================================================
|
|
DataManager.makeSavefileInfo = function () {
|
|
// Get Info
|
|
var info = _TDS_.OmoriBASE.DataManager_makeSavefileInfo.call(this);
|
|
// Set World Index
|
|
info.worldIndex = $gameVariables.value(22);
|
|
// Return info
|
|
return info;
|
|
};
|
|
//=============================================================================
|
|
// * Determine if Item has Toy Item Tag
|
|
//=============================================================================
|
|
DataManager.hasToyItemTag = function (item) { return item && item.note.match(/<Is Toy>/i); };
|
|
//=============================================================================
|
|
// * Determine if Item type
|
|
//=============================================================================
|
|
DataManager.isKeyItem = function (item) { return this.isItem(item) && item.itypeId === 2 };
|
|
DataManager.isConsumableItem = function (item) { return this.isItem(item) && item.itypeId === 1 && !this.hasToyItemTag(item); };
|
|
DataManager.isToyItem = function (item) { return this.isItem(item) && item.itypeId === 1 && this.hasToyItemTag(item); };
|
|
//=============================================================================
|
|
// * Get Blackletter Items
|
|
//=============================================================================
|
|
DataManager.getBlackletterItems = function () {
|
|
// Initialize List
|
|
var list = [];
|
|
// Go through ID's for blackletters
|
|
for (var i = 850; i < 876; i++) {
|
|
// Get Item
|
|
var item = $dataItems[i];
|
|
// If item has blackletter data
|
|
if (item.meta.Blackletter) { list.push(item); };
|
|
};
|
|
// Return List
|
|
return list;
|
|
};
|
|
//=============================================================================
|
|
// * Get Item Short Name
|
|
//=============================================================================
|
|
DataManager.itemShortName = function (item) {
|
|
// If Item has short name
|
|
if (item.meta.ShortName) {
|
|
// Set Item Short Name
|
|
item.shortName = item.meta.ShortName.trim();
|
|
} else {
|
|
// Set Short Name
|
|
item.shortName = item.name;
|
|
}
|
|
// Return item short name
|
|
return item.shortName;
|
|
};
|
|
//=============================================================================
|
|
// * Get Item Icon Data
|
|
//=============================================================================
|
|
DataManager.getItemIconGraphicsData = function (item) {
|
|
// If Item has Icon Graphics Data already set
|
|
if (item.meta.IconGraphicsData) { return item.meta.IconGraphicsData; };
|
|
// Initialize Data
|
|
var data = { name: '', index: 0, rows: 1, columns: 1 };
|
|
// Set Item Icon Index
|
|
if (item.meta.IconIndex) { data.index = Number(item.meta.IconIndex); }
|
|
// Apply Properties to data
|
|
if (this.isKeyItem(item)) {
|
|
data.name = 'itemImportant'; data.rows = 15, data.columns = 8;
|
|
} else if (this.isConsumableItem(item)) {
|
|
data.name = 'itemConsumables'; data.rows = 12, data.columns = 8;
|
|
} else if (this.isToyItem(item)) {
|
|
data.name = 'itemConsumables'; data.rows = 12, data.columns = 8;
|
|
} else if (this.isWeapon(item)) {
|
|
data.name = 'itemWeapons'; data.rows = 5, data.columns = 9;
|
|
} else if (this.isArmor(item)) {
|
|
data.name = 'itemCharms'; data.rows = 13, data.columns = 7;
|
|
};
|
|
// Set Item Icon Graphics Data
|
|
item.meta.IconGraphicsData = data;
|
|
// Get Item Icon Data
|
|
return data;
|
|
};
|
|
//=============================================================================
|
|
// * Get Blackletter hangman word
|
|
//=============================================================================
|
|
DataManager.hangmanWord = function () { return "WELCOME TO BLACK SPACE"; };
|
|
//=============================================================================
|
|
// * Get Blackletter Collection State (Completed, Failed, Incomplete)
|
|
//=============================================================================
|
|
DataManager.blackLetterCollectionState = function (word = this.hangmanWord()) {
|
|
// Get BlackletterItems
|
|
var items = this.getBlackletterItems();
|
|
// Get Unique Letters Array
|
|
var letters = [...new Set(word.replace(/\s/g, '').split(''))].map(function (l) { return l.toUpperCase(); });
|
|
// Initialize Right and Wrong Counts
|
|
var rightCount = 0, wrongCount = 0;
|
|
// Go through items
|
|
for (var i = 0; i < items.length; i++) {
|
|
// Get item
|
|
var item = items[i];
|
|
// If Party has item
|
|
if ($gameParty.hasItem(item)) {
|
|
// Get Blackletter from Item
|
|
var blackletter = item.meta.Blackletter.trim().toUpperCase();
|
|
// If Letters contains blackletter
|
|
if (letters.contains(blackletter)) {
|
|
// Increase Right Count
|
|
rightCount++;
|
|
} else {
|
|
// Increase Wrong Count
|
|
wrongCount++;
|
|
};
|
|
};
|
|
};
|
|
// Return 1 if wrong count is more or equal to 14 (Failure)
|
|
if (wrongCount >= 14) { return 1; };
|
|
// Return 0 if right count is or equal to the letters (Sucess)
|
|
if (rightCount >= letters.length) { return 0; };
|
|
// Return 2 by default (Incomplete)
|
|
return 2;
|
|
};
|
|
//=============================================================================
|
|
// * Get animation Layer
|
|
//=============================================================================
|
|
DataManager.animationLayer = function (animation) {
|
|
// If Animation Exists
|
|
if (animation) {
|
|
// If Animation Layer Is not undefined return it
|
|
if (animation._animationLayer !== undefined) { return animation._animationLayer; }
|
|
// Get Match
|
|
var match = /<Layer:\s*(\d+)>/i.exec(animation.name);
|
|
// Set Animation Layer
|
|
animation._animationLayer = match ? Number(match[1]) : 3;
|
|
// Return Animation Layer
|
|
return animation._animationLayer;
|
|
};
|
|
// Return default animation layer
|
|
return 3;
|
|
};
|
|
//=============================================================================
|
|
// * Convert Atlas JSON to YAML
|
|
//=============================================================================
|
|
DataManager.covertAtlasJSONtoYAML = function (name, folder = '') {
|
|
const path = require('path');
|
|
const fs = require('fs');
|
|
const yaml = require('./js/libs/js-yaml-master')
|
|
const base = path.dirname(process.mainModule.filename);
|
|
const filePath = path.join(base, name);
|
|
const filename = path.basename(filePath);
|
|
// Make JSON Object
|
|
let jsonObj = JSON.parse(fs.readFileSync(filePath + '.json', { encoding: 'utf8' }));
|
|
// Make Yaml Object
|
|
let yamlObj = {};
|
|
// Get Image Name
|
|
const image = path.basename(jsonObj.meta.image, '.png');
|
|
// Get Frames
|
|
const frames = jsonObj.frames;
|
|
// Go Through List of Entries and replace messages
|
|
for (let [key, value] of Object.entries(frames)) {
|
|
// Create Destination Rectangle
|
|
let rect = { x: value.spriteSourceSize.x, y: value.spriteSourceSize.y, width: value.sourceSize.w, height: value.sourceSize.h };
|
|
// Create Source rectangle
|
|
let srcRect = { x: value.frame.x, y: value.frame.y, width: value.frame.w, height: value.frame.h };
|
|
// Create Yaml Key Object
|
|
yamlObj[path.join(folder, key).replace(/\\/g, '/')] = { atlasName: image, rect: rect, sourceRect: srcRect };
|
|
};
|
|
fs.writeFileSync(filePath + '.yaml', jsyaml.safeDump(yamlObj, { flowLevel: 1 }));
|
|
};
|
|
|
|
// img/pictures/OMO_BS.png:
|
|
// atlasName: Omori_TitleScreen
|
|
// rect: {x: 0, y: 0, width: 918, height: 351}
|
|
// sourceRect: {x: 0, y: 351, width: 918 , height: 351}
|
|
|
|
// img/pictures/OMO_RS.png:
|
|
// atlasName: Omori_TitleScreen
|
|
// rect: {x: 0, y: 0, width: 918, height: 351}
|
|
// sourceRect: {x: 0, y: 702, width: 918 , height: 351}
|
|
|
|
|
|
|
|
|
|
//=============================================================================
|
|
// ** ConfigManager
|
|
//-----------------------------------------------------------------------------
|
|
// The static class that manages the configuration data.
|
|
//=============================================================================
|
|
// Alias Listing
|
|
//=============================================================================
|
|
_TDS_.OmoriBASE.ConfigManager_makeData = ConfigManager.makeData;
|
|
_TDS_.OmoriBASE.ConfigManager_applyData = ConfigManager.applyData;
|
|
//=============================================================================
|
|
// * Class Variables
|
|
//=============================================================================
|
|
ConfigManager.characterStrafe = true;
|
|
ConfigManager.characterTurning = true;
|
|
ConfigManager.battleAnimations = true;
|
|
ConfigManager.battleAnimationSpeed = 0;
|
|
ConfigManager.battleLogSpeed = 1;
|
|
ConfigManager.screenResolution = 0;
|
|
ConfigManager.fullScreen = false;
|
|
ConfigManager.menuAnimations = true;
|
|
ConfigManager.gamepadTips = false;
|
|
ConfigManager.textSkip = false;
|
|
//=============================================================================
|
|
// * Check Event Trigger Touch
|
|
//=============================================================================
|
|
ConfigManager.makeData = function () {
|
|
// Get Original Config
|
|
var config = _TDS_.OmoriBASE.ConfigManager_makeData.call(this);
|
|
// Set Config Settings
|
|
config.characterStrafe = this.characterStrafe;
|
|
config.battleAnimations = this.battleAnimations;
|
|
config.battleAnimationSpeed = 0;
|
|
config.battleLogSpeed = this.battleLogSpeed;
|
|
config.screenResolution = this.screenResolution;
|
|
config.fullScreen = this.fullScreen;
|
|
config.menuAnimations = this.menuAnimations;
|
|
config.keyboardInputMap = Input.keyMapper;
|
|
config.gamepadInputMap = Input.gamepadMapper;
|
|
config.gamepadTips = this.gamepadTips;
|
|
config.textSkip = this.textSkip;
|
|
// Return Config
|
|
return config;
|
|
};
|
|
//=============================================================================
|
|
// * Apply Data
|
|
//=============================================================================
|
|
ConfigManager.applyData = function (config) {
|
|
// Run Original Function
|
|
_TDS_.OmoriBASE.ConfigManager_applyData.call(this, config);
|
|
// List of Values to Check
|
|
var initCheckList = ['characterStrafe', 'battleAnimations',
|
|
'battleAnimationSpeed', 'battleLogSpeed', 'screenResolution',
|
|
'fullScreen', 'menuAnimations']
|
|
// Go Through Checl List
|
|
for (var i = 0; i < initCheckList.length; i++) {
|
|
// Get Name
|
|
var name = initCheckList[i];
|
|
// Set Default value if undefined
|
|
if (config[name] === undefined) { config[name] = this[name]; };
|
|
};
|
|
// Set Screen Size
|
|
Yanfly.Param.ScreenWidth = 640 * (config.screenResolution + 1);
|
|
Yanfly.Param.ScreenHeight = 480 * (config.screenResolution + 1);
|
|
SceneManager._screenWidth = Yanfly.Param.ScreenWidth;
|
|
SceneManager._screenHeight = Yanfly.Param.ScreenHeight;
|
|
// SceneManager._boxWidth = Yanfly.Param.ScreenWidth;
|
|
// SceneManager._boxHeight = Yanfly.Param.ScreenHeight
|
|
//Yanfly.updateResolution();
|
|
//Yanfly.moveToCenter();
|
|
this.characterTurning = config.characterTurning;
|
|
this.characterStrafe = config.characterStrafe;
|
|
this.battleAnimations = config.battleAnimations;
|
|
this.battleAnimationSpeed = config.battleAnimationSpeed;
|
|
this.battleLogSpeed = config.battleLogSpeed === undefined ? 1 : config.battleLogSpeed;
|
|
this.screenResolution = config.screenResolution;
|
|
this.fullScreen = config.fullScreen;
|
|
this.menuAnimations = config.menuAnimations;
|
|
this.gamepadTips = config.gamepadTips || false;
|
|
this.textSkip = config.textSkip || false;
|
|
// Set Input Maps
|
|
Input.keyMapper = config.keyboardInputMap;
|
|
Input.gamepadMapper = config.gamepadInputMap;
|
|
// Set Default keys if undefined
|
|
if (Input.keyMapper === undefined) { this.setDefaultKeyboardKeyMap(); };
|
|
if (Input.gamepadMapper === undefined) { this.setDefaultGamepadKeyMap(); };
|
|
// If Full Screen Request full screen
|
|
Yanfly.updateResolution();
|
|
Yanfly.moveToCenter();
|
|
|
|
if ($gameSwitches) {
|
|
// If Character Press Turn strafing exists
|
|
if (_TDS_.CharacterPressTurn_Strafing) {
|
|
// Set Strafe Switch
|
|
$gameSwitches.setValue(_TDS_.CharacterPressTurn_Strafing.params.strafingDisableSwitchID, this.characterStrafe);
|
|
// Set Turning Switch
|
|
$gameSwitches.setValue(_TDS_.CharacterPressTurn_Strafing.params.pressDisableSwitchID, this.characterTurning)
|
|
};
|
|
};
|
|
};
|
|
//=============================================================================
|
|
// * Set Default Keyboard Map
|
|
//=============================================================================
|
|
ConfigManager.setDefaultKeyboardKeyMap = function () {
|
|
Input.keyMapper = {
|
|
9: 'tab', // tab
|
|
90: 'ok', // enter
|
|
16: 'shift', // shift
|
|
17: 'control', // control
|
|
65: 'tag', // A
|
|
88: 'escape', // X
|
|
37: 'left', // left arrow
|
|
38: 'up', // up arrow
|
|
39: 'right', // right arrow
|
|
40: 'down', // down arrow
|
|
81: 'pageup', // Q
|
|
87: 'pagedown', // W
|
|
120: 'debug' // F9
|
|
};
|
|
};
|
|
//=============================================================================
|
|
// * Set Default Gamepad Key Map
|
|
//=============================================================================
|
|
ConfigManager.setDefaultGamepadKeyMap = function () {
|
|
Input.gamepadMapper = {
|
|
0: 'ok', // A
|
|
1: 'escape', // B
|
|
2: 'shift', // X
|
|
3: 'tag', // Y
|
|
4: 'pageup', // LB
|
|
5: 'pagedown', // RB
|
|
|
|
6: 'SIX6',
|
|
7: 'SEVEN7',
|
|
8: 'tab',
|
|
9: 'NINE9',
|
|
10: 'TEN10',
|
|
11: 'ELEVEN11',
|
|
|
|
12: 'up', // D-pad up
|
|
13: 'down', // D-pad down
|
|
14: 'left', // D-pad left
|
|
15: 'right', // D-pad right
|
|
16: 'SIXTEEN16',
|
|
};
|
|
};
|
|
//=============================================================================
|
|
// * Set Default Keyboard Inputs
|
|
//=============================================================================
|
|
ConfigManager.setDefaultKeyboardKeyMap();
|
|
ConfigManager.setDefaultGamepadKeyMap();
|
|
|
|
|
|
|
|
ConfigManager.restoreDefaultConfig = function () {
|
|
const fs = require("fs");
|
|
const path = require('path');
|
|
var base = path.dirname(process.mainModule.filename);
|
|
base = path.join(base, 'save/');
|
|
if (fs.existsSync(base + "config.rpgsave")) { fs.unlinkSync(base + "config.rpgsave"); }
|
|
ConfigManager.characterStrafe = true;
|
|
ConfigManager.characterTurning = true;
|
|
ConfigManager.battleAnimations = true;
|
|
ConfigManager.battleAnimationSpeed = 0;
|
|
ConfigManager.battleLogSpeed = 1;
|
|
ConfigManager.screenResolution = 0;
|
|
ConfigManager.fullScreen = false;
|
|
ConfigManager.menuAnimations = true;
|
|
ConfigManager.gamepadTips = false;
|
|
ConfigManager.alwaysDash = false;
|
|
ConfigManager.textSkip = false;
|
|
this.setDefaultKeyboardKeyMap();
|
|
this.setDefaultGamepadKeyMap();
|
|
AudioManager._bgmVolume = 70;
|
|
AudioManager._bgsVolume = 90;
|
|
AudioManager._meVolume = 90;
|
|
AudioManager._seVolume = 90;
|
|
ConfigManager.bgmVolume = 70
|
|
ConfigManager.bgsVolume = 90
|
|
ConfigManager.meVolume = 90
|
|
ConfigManager.seVolume = 90
|
|
ConfigManager.applyData(ConfigManager);
|
|
let needsRestore = confirm(LanguageManager.languageData().text.System.plugins.optionsMenu.alertMessages["restoreGeneral"]);
|
|
if (!!needsRestore) { DataManager._restoreGlobalInfo(); }
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//=============================================================================
|
|
// ** SceneManager
|
|
//-----------------------------------------------------------------------------
|
|
// The static class that manages scene transitions.
|
|
//=============================================================================
|
|
// Alias Listing
|
|
//=============================================================================
|
|
_TDS_.OmoriBASE.SceneManager_updateMain = SceneManager.updateMain;
|
|
_TDS_.OmoriBASE.SceneManager_isCurrentSceneBusy = SceneManager.isCurrentSceneBusy;
|
|
//=============================================================================
|
|
// * Class Variables
|
|
//=============================================================================
|
|
SceneManager._windowOriginX = null;
|
|
SceneManager._windowOriginY = null;
|
|
SceneManager._windowShakeDuration = 0;
|
|
//=============================================================================
|
|
// * Determine if Current Scene is Busy
|
|
//=============================================================================
|
|
SceneManager.isCurrentSceneBusy = function () {
|
|
// If There are images in the request queue return true
|
|
if (ImageManager._requestQueue._queue.length > 0) { return true; }
|
|
// Run Original Function
|
|
return _TDS_.OmoriBASE.SceneManager_isCurrentSceneBusy.call(this);
|
|
};
|
|
//=============================================================================
|
|
// * Get Current World Index
|
|
//=============================================================================
|
|
SceneManager.currentWorldIndex = function () {
|
|
// Get World Index
|
|
var index = $gameVariables.value(22);
|
|
// Return index if its more than 0
|
|
if (index > 0) { return index; };
|
|
// Return 1 (Dream world) as default
|
|
return 1;
|
|
};
|
|
//=============================================================================
|
|
// * Update Main
|
|
//=============================================================================
|
|
SceneManager.startWindowShake = function (duration) {
|
|
// Save Window Positions
|
|
if (SceneManager._windowOriginX === null) { SceneManager._windowOriginX = window.screenX; };
|
|
if (SceneManager._windowOriginY === null) { SceneManager._windowOriginY = window.screenY; };
|
|
// Set Shake Duration
|
|
SceneManager._windowShakeDuration = duration;
|
|
// Set Scene Pivo Point
|
|
this._scene.pivot.x = Graphics.width / 2;
|
|
this._scene.pivot.y = Graphics.height / 2;
|
|
};
|
|
//=============================================================================
|
|
// * Stop Window Shake
|
|
//=============================================================================
|
|
SceneManager.stopWindowShake = function (duration) {
|
|
// Get Scene
|
|
var scene = this._scene;
|
|
// Reset Scene Properties
|
|
scene.scale.x = 1.0;
|
|
scene.scale.y = 1.0;
|
|
scene.x = 0;
|
|
scene.y = 0;
|
|
scene.pivot.x = 0;
|
|
scene.pivot.y = 0;
|
|
// If Window Origin Positions X & Y are not null
|
|
if (SceneManager._windowOriginX !== null && SceneManager._windowOriginY !== null) {
|
|
// Reset Window Position
|
|
window.moveTo(SceneManager._windowOriginX, SceneManager._windowOriginY);
|
|
}
|
|
// Reset Shake Duration
|
|
SceneManager._windowShakeDuration = 0;
|
|
};
|
|
//=============================================================================
|
|
// * Update Main
|
|
//=============================================================================
|
|
SceneManager.updateMain = function () {
|
|
// Run Original Function
|
|
_TDS_.OmoriBASE.SceneManager_updateMain.call(this);
|
|
|
|
// if (Input.isTriggered('control')) {
|
|
// this.startWindowShake(20);
|
|
// };
|
|
|
|
// Update Window shake
|
|
this.updateWindowShake();
|
|
};
|
|
//=============================================================================
|
|
// * Update Window Shake
|
|
//=============================================================================
|
|
SceneManager.updateWindowShake = function () {
|
|
// If Duration is more than 0
|
|
if (SceneManager._windowShakeDuration > 0) {
|
|
// Decrease Duration
|
|
SceneManager._windowShakeDuration--;
|
|
// Get Scene
|
|
var scene = this._scene;
|
|
|
|
// Get Sin
|
|
var sin = Math.sin(Graphics.frameCount)
|
|
// Set Scene Position
|
|
scene.x = Math.randomInt(Graphics.width / 2) * sin;
|
|
scene.y = Math.randomInt(Graphics.height / 2) * sin;
|
|
|
|
scene.x += Math.randomInt(200) * sin;
|
|
scene.y += Math.randomInt(200) * sin;
|
|
|
|
scene.scale.x = 1.0 + Math.random();
|
|
scene.scale.y = 1.0 + Math.random();
|
|
// Reverse Zoom X 50% of the time
|
|
if (Math.randomInt(100) > 50) { scene.scale.x = -scene.scale.x; };
|
|
// Reverse Zoom Y 5% of the time
|
|
if (Math.randomInt(100) < 5) { scene.scale.y = -scene.scale.y; };
|
|
// Set Shake Power
|
|
var shakePower = 75;
|
|
// Get Window X & Y Offset
|
|
var screenX = Math.randomInt(100) > 50 ? -Math.randomInt(shakePower) : Math.randomInt(shakePower);
|
|
var screenY = Math.randomInt(100) > 50 ? -Math.randomInt(shakePower) : Math.randomInt(shakePower);
|
|
// Move Window to Position
|
|
window.moveTo(SceneManager._windowOriginX + screenX, SceneManager._windowOriginY + screenY);
|
|
|
|
// If Duration is 0 or less
|
|
if (SceneManager._windowShakeDuration <= 0) {
|
|
// Stop Window Shake
|
|
this.stopWindowShake();
|
|
};
|
|
};
|
|
};
|
|
|
|
|
|
|
|
//=============================================================================
|
|
// ** ImageManager
|
|
//-----------------------------------------------------------------------------
|
|
// The static class that loads images, creates bitmap objects and retains them.
|
|
//=============================================================================
|
|
// Alias Listing
|
|
//=============================================================================
|
|
_TDS_.OmoriBASE.ImageManager_loadNormalBitmap = ImageManager.loadNormalBitmap;
|
|
//=============================================================================
|
|
// * Determine if Ready
|
|
//=============================================================================
|
|
ImageManager.isReady = function () {
|
|
return this._imageCache.isReady() && this._requestQueue._queue.length <= 0;
|
|
};
|
|
//=============================================================================
|
|
// * Load Input Icons
|
|
//=============================================================================
|
|
ImageManager.loadInputIcons = function () {
|
|
this.reserveSystem('Input/24x24_black_all', 0, 'system');
|
|
this.reserveSystem('Input/24x24_all', 0, 'system');
|
|
};
|
|
|
|
|
|
//=============================================================================
|
|
// ** SoundManager
|
|
//-----------------------------------------------------------------------------
|
|
// The static class that plays sound effects defined in the database.
|
|
//=============================================================================
|
|
// Alias Listing
|
|
//=============================================================================
|
|
_TDS_.OmoriBASE.SoundManager_playEnemyDamage = SoundManager.playEnemyDamage;
|
|
_TDS_.OmoriBASE.SoundManager_playActorCollapse = SoundManager.playActorCollapse;
|
|
//=============================================================================
|
|
// * Play Enemy Damage Sound Effect
|
|
//=============================================================================
|
|
SoundManager._blockEnemySound = false;
|
|
//=============================================================================
|
|
// * Play Enemy Damage Sound Effect
|
|
//=============================================================================
|
|
SoundManager.playEnemyDamage = function () {
|
|
// Return if enemy sound is being blocked
|
|
if (SoundManager._blockEnemySound) { return; }
|
|
// Current World Index Switch Case
|
|
if ($gameParty.inBattle() && [445].contains($gameTroop._troopId)) { return _TDS_.OmoriBASE.SoundManager_playEnemyDamage.call(this); }
|
|
switch (SceneManager.currentWorldIndex()) {
|
|
case 3: // Black Space
|
|
AudioManager.playStaticSe({ name: 'BA_sad', volume: 100, pitch: 0, pan: 0 })
|
|
break;
|
|
default:
|
|
// Run Original Function
|
|
_TDS_.OmoriBASE.SoundManager_playEnemyDamage.call(this);
|
|
break;
|
|
};
|
|
};
|
|
//=============================================================================
|
|
// * Play Actor Collapse Sound
|
|
//=============================================================================
|
|
SoundManager.playActorCollapse = function () {
|
|
// If in battle and switch 95 is on return
|
|
if ($gameParty.inBattle() && $gameSwitches.value(95)) { return; }
|
|
// Run Original Function
|
|
_TDS_.OmoriBASE.SoundManager_playActorCollapse.call(this);
|
|
};
|
|
|
|
|
|
|
|
//=============================================================================
|
|
// ** Game_Temp
|
|
//-----------------------------------------------------------------------------
|
|
// The game object class for temporary data that is not included in save data.
|
|
//=============================================================================
|
|
// * Determine if Common Event is for battle use only
|
|
//=============================================================================
|
|
Game_Temp.prototype.isCommonEventForBattleOnly = function (id) {
|
|
// Set Default ID
|
|
if (id === undefined) { id = this._commonEventId; }
|
|
// Get Common Event
|
|
var commonEvent = $dataCommonEvents[id]
|
|
// If Common event exists
|
|
if (commonEvent) {
|
|
// Return Regexp Match
|
|
return commonEvent.name.match(/\[BATTLEONLY\]/i);
|
|
} else {
|
|
return false;
|
|
};
|
|
};
|
|
|
|
|
|
|
|
//=============================================================================
|
|
// ** Game_System
|
|
//-----------------------------------------------------------------------------
|
|
// The game object class for the system data.
|
|
//=============================================================================
|
|
// Alias Listing
|
|
//=============================================================================
|
|
_TDS_.OmoriBASE.Game_System_initialize = Game_System.prototype.initialize;
|
|
_TDS_.OmoriBASE.Game_System_onAfterLoad = Game_System.prototype.onAfterLoad;
|
|
//=============================================================================
|
|
// * Object Initialization
|
|
//=============================================================================
|
|
Game_System.prototype.initialize = function () {
|
|
// Run Original Function
|
|
_TDS_.OmoriBASE.Game_System_initialize.call(this);
|
|
// It's Magic!
|
|
this._originalMagicalSeed = Math.randomInt(100);
|
|
// It's Just magical
|
|
this._magicalSeed = this._originalMagicalSeed;
|
|
};
|
|
//=============================================================================
|
|
// * Replant Magical Seed
|
|
//=============================================================================
|
|
Game_System.prototype.replantMagicalSeed = function (seed = this._originalMagicalSeed) {
|
|
this._magicalSeed = seed;
|
|
};
|
|
//=============================================================================
|
|
// * Grow Magical Seed
|
|
//=============================================================================
|
|
Game_System.prototype.growMagicalSeed = function () {
|
|
this._magicalSeed = ((this._magicalSeed + 1) % 100).clamp(1, 100)
|
|
};
|
|
//=============================================================================
|
|
// * Get Magical Seed
|
|
//=============================================================================
|
|
Game_System.prototype.getMagicalSeed = function (offset = 0, float = true) {
|
|
// Set Value
|
|
const value = this._magicalSeed + offset;
|
|
// Get Base Number
|
|
const base = 2516837;
|
|
// Grow Magical Seed
|
|
this.growMagicalSeed();
|
|
// Return Value
|
|
return float ? value * 16807 % base / base : value * 16807 % base;
|
|
}
|
|
//=============================================================================
|
|
// * After Load Processing
|
|
//=============================================================================
|
|
Game_System.prototype.onAfterLoad = function () {
|
|
// Run Original Function
|
|
_TDS_.OmoriBASE.Game_System_onAfterLoad.call(this);
|
|
// Run Common Event
|
|
$gameTemp.reserveCommonEvent(40);
|
|
// If Character starfing exists
|
|
if (_TDS_.CharacterPressTurn_Strafing) {
|
|
// Set Strafe Switch
|
|
$gameSwitches.setValue(_TDS_.CharacterPressTurn_Strafing.params.strafingDisableSwitchID, ConfigManager.characterStrafe)
|
|
};
|
|
};
|
|
|
|
|
|
//=============================================================================
|
|
// ** Game_Picture
|
|
//-----------------------------------------------------------------------------
|
|
// The game object class for a picture.
|
|
//=============================================================================
|
|
// Alias Listing
|
|
//=============================================================================
|
|
_TDS_.OmoriBASE.Game_Picture_initBasic = Game_Picture.prototype.initBasic;
|
|
//=============================================================================
|
|
// * Initialize Basic
|
|
//=============================================================================
|
|
Game_Picture.prototype.initBasic = function () {
|
|
// Run Original Function
|
|
_TDS_.OmoriBASE.Game_Picture_initBasic.call(this);
|
|
// Pinned to map flag
|
|
this._pinnedToMap = false;
|
|
};
|
|
//=============================================================================
|
|
// * Pin Picture to Map
|
|
//=============================================================================
|
|
Game_Picture.prototype.pinToMap = function (state = true) { this._pinnedToMap = state; };
|
|
//=============================================================================
|
|
// * Determine if Pinned to map
|
|
//=============================================================================
|
|
Game_Picture.prototype.isPinnedToMap = function () { return this._pinnedToMap; };
|
|
Game_Picture.prototype.followShake = function (value) { return this._followShake = value }
|
|
Game_Picture.prototype.isFollowingShake = function () { return !!this._followShake }
|
|
|
|
|
|
|
|
//=============================================================================
|
|
// ** Game_Message
|
|
//-----------------------------------------------------------------------------
|
|
// The game object class for the state of the message window that displays text
|
|
// or selections, etc.
|
|
//=============================================================================
|
|
// Alias Listing
|
|
//=============================================================================
|
|
_TDS_.OmoriBASE.Game_Message_clear = Game_Message.prototype.clear;
|
|
//=============================================================================
|
|
// * Clear
|
|
//=============================================================================
|
|
Game_Message.prototype.clear = function () {
|
|
// Run Original Function
|
|
_TDS_.OmoriBASE.Game_Message_clear.call(this);
|
|
// Clear Extra Faces Array
|
|
this._extraFaces = [];
|
|
// Face Background Color
|
|
this._faceBackgroundColor = null;
|
|
};
|
|
//=============================================================================
|
|
// * Get Extra Faces
|
|
//=============================================================================
|
|
Game_Message.prototype.extraFaces = function () { return this._extraFaces };
|
|
//=============================================================================
|
|
// * Get Face Count
|
|
//=============================================================================
|
|
Game_Message.prototype.faceCount = function () {
|
|
// Set Initial Count
|
|
var count = this._faceName === '' ? 0 : 1;
|
|
// Return total amount of faces
|
|
return count + this._extraFaces.length;
|
|
};
|
|
//=============================================================================
|
|
// * Set Extra Face
|
|
//=============================================================================
|
|
Game_Message.prototype.setExtraFace = function (index, faceName, faceIndex, color = null) {
|
|
// Set Extra Faces Face at Index
|
|
this._extraFaces[index] = { faceName: faceName, faceIndex: faceIndex, color: color };
|
|
};
|
|
|
|
|
|
//=============================================================================
|
|
// ** Game_Map
|
|
//-----------------------------------------------------------------------------
|
|
// The game object class for a map. It contains scrolling and passage
|
|
// determination functions.
|
|
//=============================================================================
|
|
// Alias Listing
|
|
//=============================================================================
|
|
_TDS_.OmoriBASE.Game_Map_initialize = Game_Map.prototype.initialize;
|
|
_TDS_.OmoriBASE.Game_Map_setup = Game_Map.prototype.setup;
|
|
_TDS_.OmoriBASE.Game_Map_setupScroll = Game_Map.prototype.setupScroll;
|
|
_TDS_.OmoriBASE.Game_Map_updateScroll = Game_Map.prototype.updateScroll;
|
|
//=============================================================================
|
|
// * Object Initialization
|
|
//=============================================================================
|
|
Game_Map.prototype.initialize = function () {
|
|
// Run Original Function
|
|
_TDS_.OmoriBASE.Game_Map_initialize.call(this);
|
|
// Initialize Region Move Directions
|
|
this._regionMovedirections = {};
|
|
};
|
|
//=============================================================================
|
|
// * Setup
|
|
//=============================================================================
|
|
Game_Map.prototype.setup = function (mapId) {
|
|
// Run Original Function
|
|
_TDS_.OmoriBASE.Game_Map_setup.call(this, mapId);
|
|
// Setup Position Move Direction
|
|
this.setupPositionMoveDirection();
|
|
};
|
|
//=============================================================================
|
|
// * Setup Scrolling
|
|
//=============================================================================
|
|
Game_Map.prototype.setupScroll = function () {
|
|
// Run Original Function
|
|
_TDS_.OmoriBASE.Game_Map_setupScroll.call(this);
|
|
// Initialize Scrolling Values
|
|
this._scrollStart = null;
|
|
this._scrollTarget = null;
|
|
this._scrollDuration = 0;
|
|
this._scrollingTime = 0;
|
|
};
|
|
//=============================================================================
|
|
// * Setup Position Move Direction
|
|
//=============================================================================
|
|
Game_Map.prototype.setupPositionMoveDirection = function () {
|
|
// Initialize Region Move Directions
|
|
this._regionMovedirections = {};
|
|
};
|
|
//=============================================================================
|
|
// * Set Region Move direction
|
|
//=============================================================================
|
|
Game_Map.prototype.setRegionMoveDirection = function (regionId, direction = 0) {
|
|
this._regionMovedirections[regionId] = direction;
|
|
};
|
|
//=============================================================================
|
|
// * Get Position Auto Move Direction
|
|
//=============================================================================
|
|
Game_Map.prototype.positionAutoMoveDirection = function (x, y) {
|
|
// Get Region ID
|
|
var regionId = this.regionId(x, y);
|
|
// If region move directions exist
|
|
if (this._regionMovedirections[regionId] !== undefined) { return this._regionMovedirections[regionId]; };
|
|
// Return 0 by default
|
|
return 0;
|
|
};
|
|
//=============================================================================
|
|
// * Scroll to target
|
|
//=============================================================================
|
|
Game_Map.prototype.scrollToTarget = function (x, y, duration) {
|
|
// Get End X & Y Values
|
|
const endX = this.width() - this.screenTileX();
|
|
const endY = this.height() - this.screenTileY();
|
|
// Clamp X & Y Target values
|
|
x = endX < 0 ? endX / 2 : x.clamp(0, endX)
|
|
y = endY < 0 ? endY / 2 : y.clamp(0, endY);
|
|
// Set Scrolling Target
|
|
this._scrollStart = new Point(this._displayX, this._displayY);
|
|
this._scrollTarget = new Point(x, y);
|
|
this._scrollDuration = duration;
|
|
this._scrollingTime = 0;
|
|
};
|
|
//=============================================================================
|
|
// * Update Scrolling
|
|
//=============================================================================
|
|
Game_Map.prototype.updateScroll = function () {
|
|
// If Scrolling Duration is more than 0
|
|
if (this._scrollDuration > 0) {
|
|
// Update Lerp Scrolling
|
|
this.updateLerpScrolling();
|
|
return;
|
|
}
|
|
// Run Original Function
|
|
_TDS_.OmoriBASE.Game_Map_updateScroll.call(this);
|
|
|
|
// if (Input.isTriggered('control')) {
|
|
// this.scrollToTarget(Math.randomInt($dataMap.width), Math.randomInt($dataMap.height), 60);
|
|
// // this.scrollToTarget(0, 0, 60);
|
|
// return;
|
|
// }
|
|
};
|
|
//=============================================================================
|
|
// * Update Linear Interpolation Scrolling
|
|
//=============================================================================
|
|
Game_Map.prototype.updateLerpScrolling = function () {
|
|
// Increase Scrolling Time
|
|
this._scrollingTime++;
|
|
// Get Time, X and Y coordinates
|
|
let t = this._scrollingTime / this._scrollDuration;
|
|
let x = (1 - t) * this._scrollStart.x + t * this._scrollTarget.x;
|
|
let y = (1 - t) * this._scrollStart.y + t * this._scrollTarget.y;
|
|
// Set Display Position
|
|
this.setDisplayPos(x, y);
|
|
// If Scrolling time is equal or more than scroll duration
|
|
if (this._scrollingTime >= this._scrollDuration) {
|
|
// Reset Scrolling Values
|
|
this._scrollTarget = null;
|
|
this._scrollDuration = 0;
|
|
}
|
|
};
|
|
|
|
|
|
_TDS_.OmoriBASE.Game_Map_isDashDisabled = Game_Map.prototype.isDashDisabled;
|
|
Game_Map.prototype.isDashDisabled = function () {
|
|
return _TDS_.OmoriBASE.Game_Map_isDashDisabled.call(this) || this.isLadder($gamePlayer.x, $gamePlayer.y);
|
|
};
|
|
|
|
|
|
|
|
//=============================================================================
|
|
// ** Game_Event
|
|
//-----------------------------------------------------------------------------
|
|
// The game object class for an event. It contains functionality for event page
|
|
// switching and running parallel process events.
|
|
//=============================================================================
|
|
// Alias Listing
|
|
//=============================================================================
|
|
_TDS_.OmoriBASE.Game_Event_isEventAllTouchTrigger = Game_Event.prototype.checkEventTriggerTouch;
|
|
_TDS_.OmoriBASE.Game_Event_setupCopyEvent = Game_Event.prototype.setupCopyEvent;
|
|
_TDS_.OmoriBASE.Game_Event_canSeePlayer = Game_Event.prototype.canSeePlayer;
|
|
_TDS_.OmoriBASE.Game_Event_updateChaseMovement = Game_Event.prototype.updateChaseMovement;
|
|
//=============================================================================
|
|
// * Determine if Event is All Touch Trigger
|
|
//=============================================================================
|
|
Game_Event.prototype.isEventAllTouchTrigger = function () {
|
|
if (this._allTouchTrigger) { return true; }
|
|
// Get Event
|
|
var event = this.event();
|
|
// If event exists
|
|
if (event) {
|
|
// If event has meta data
|
|
if (event.meta) { return event.meta.AllTouchTrigger; };
|
|
};
|
|
// Return false by default
|
|
return false;
|
|
};
|
|
//=============================================================================
|
|
// * Check Event Trigger Touch
|
|
//=============================================================================
|
|
Game_Event.prototype.setupCopyEvent = function () {
|
|
// Run Original Function
|
|
_TDS_.OmoriBASE.Game_Event_setupCopyEvent.call(this);
|
|
// If Copied Event
|
|
if (this._copiedEvent) {
|
|
// Set All Touch Trigger flag for events
|
|
this._allTouchTrigger = this.event().note.contains('<AllTouchTrigger>')
|
|
};
|
|
};
|
|
//=============================================================================
|
|
// * Check Event Trigger Touch
|
|
//=============================================================================
|
|
Game_Event.prototype.checkEventTriggerTouch = function (x, y) {
|
|
// Run Original Function
|
|
_TDS_.OmoriBASE.Game_Event_isEventAllTouchTrigger.call(this, x, y);
|
|
// If It's an all touch event and its not starting already
|
|
if (this.isEventAllTouchTrigger() && !this.isStarting()) {
|
|
if (!$gameMap.isEventRunning()) {
|
|
if ($gamePlayer.pos(x, y)) {
|
|
if (!this.isJumping() && this.isNormalPriority()) {
|
|
this.start();
|
|
};
|
|
};
|
|
};
|
|
};
|
|
};
|
|
// //=============================================================================
|
|
// // * Determine if Event can see player
|
|
// //=============================================================================
|
|
// Game_Event.prototype.canSeePlayer = function() {
|
|
// // Return False if map character tag opacity is more than 0
|
|
// if (SceneManager._scene._mapCharacterTag.opacity > 0) { return false; };
|
|
// // Return Original Function
|
|
// return _TDS_.OmoriBASE.Game_Event_canSeePlayer.call(this);
|
|
// };
|
|
|
|
|
|
Game_Event.prototype.updateChaseMovement = function () {
|
|
// Return if map character tag opacity is more than 0
|
|
if (SceneManager._scene._mapCharacterTag.opacity > 0) { return; };
|
|
|
|
// Run Original Function
|
|
_TDS_.OmoriBASE.Game_Event_updateChaseMovement.call(this);
|
|
|
|
};
|
|
|
|
|
|
//=============================================================================
|
|
// ** Game_Interpreter
|
|
//-----------------------------------------------------------------------------
|
|
// The interpreter for running event commands.
|
|
//=============================================================================
|
|
_TDS_.OmoriBASE.Game_Interpreter_clear = Game_Interpreter.prototype.clear;
|
|
_TDS_.OmoriBASE.Game_Interpreter_terminate = Game_Interpreter.prototype.terminate;
|
|
_TDS_.OmoriBASE.Game_Interpreter_requestImages = Game_Interpreter.requestImages;
|
|
//=============================================================================
|
|
// * Clear
|
|
//=============================================================================
|
|
Game_Interpreter.prototype.clear = function () {
|
|
// Run Original Function
|
|
_TDS_.OmoriBASE.Game_Interpreter_clear.call(this);
|
|
// Reset Requested Image Count
|
|
this._requestedImageCount = 0;
|
|
};
|
|
//=============================================================================
|
|
// * Setup Event
|
|
//=============================================================================
|
|
Game_Interpreter.prototype.setup = function (list, eventId) {
|
|
this.clear();
|
|
this._mapId = $gameMap.mapId();
|
|
this._eventId = eventId || 0;
|
|
this._list = list;
|
|
this._requestedImageCount = Game_Interpreter.requestImages(list, undefined, this._eventId);
|
|
};
|
|
//=============================================================================
|
|
// * Terminate
|
|
//=============================================================================
|
|
Game_Interpreter.prototype.terminate = function () {
|
|
// If Images were requested
|
|
if (this._requestedImageCount > 0) {
|
|
// Release Temporary Images
|
|
ImageManager.releaseReservation(this.temporaryReservationId());
|
|
};
|
|
// Run Original Function
|
|
_TDS_.OmoriBASE.Game_Interpreter_terminate.call(this);
|
|
};
|
|
//=============================================================================
|
|
// * Get Temporary Reservation ID
|
|
//=============================================================================
|
|
Game_Interpreter.prototype.temporaryReservationId = function () {
|
|
return 'TEMP_EVENT_' + this._eventId;
|
|
};
|
|
//=============================================================================
|
|
// * Wait on Bitmap
|
|
//=============================================================================
|
|
Game_Interpreter.prototype.waitForBitmap = function (bitmap) {
|
|
// If Bitmap is not ready and width and height less than 0
|
|
if (ImageManager.isReady() && bitmap && (!bitmap.isReady() || bitmap.width <= 0 || bitmap.height <= 0)) {
|
|
// Wait 10 frames
|
|
this.wait(10);
|
|
// Go through list in reverse
|
|
for (var i = this._index; i >= 0; i--) {
|
|
// Get Command
|
|
const command = this._list[i];
|
|
// If at the top of the script call
|
|
if (command.code === 355) {
|
|
this._index = i - 1;
|
|
break;
|
|
};
|
|
}
|
|
};
|
|
};
|
|
//=============================================================================
|
|
// * Request Images
|
|
//=============================================================================
|
|
Game_Interpreter.requestImages = function (list, commonList, id = 0) {
|
|
// Set Count
|
|
let count = 0;
|
|
// If List Exists
|
|
if (list) {
|
|
// If List exists
|
|
if (list) {
|
|
// Get First Command
|
|
const command = list[0];
|
|
// If its an event command and contains the tag
|
|
if (command.code === 108 && command.parameters[0].contains("<IgnoreEventImageLoading>")) {
|
|
return 0;
|
|
};
|
|
};
|
|
// Get Temporary Reservation ID
|
|
const reservationId = 'TEMP_EVENT_' + id;
|
|
// Go Through list
|
|
for (var i = 0; i < list.length; i++) {
|
|
// Get Command
|
|
const command = list[i];
|
|
// Command Code Switch Case
|
|
switch (command.code) {
|
|
// Plugin Command
|
|
case 356:
|
|
// Get Arguments and command name
|
|
const args = command.parameters[0].split(" ");
|
|
const commandName = args.shift();
|
|
// If Command Name is for showing message
|
|
if (commandName === 'ShowMessage') {
|
|
// Get Message Data
|
|
const data = LanguageManager.getMessageData(args[0]);
|
|
// If Fceset is not empty
|
|
if (data.faceset !== "") {
|
|
// Request Face Image
|
|
ImageManager.reserveFace(data.faceset, 0, reservationId);
|
|
// Increase Count
|
|
count++;
|
|
};
|
|
// If Data has Extra Faces
|
|
if (data.extraFaces) {
|
|
// Go Through Extra Fraces
|
|
for (var i = 0; i < data.extraFaces.length; i++) {
|
|
// Request Extra Faces Image
|
|
ImageManager.loadFace(data.extraFaces[i].faceset);
|
|
/// Increase Load Count
|
|
count++;
|
|
};
|
|
};
|
|
};
|
|
break;
|
|
}
|
|
};
|
|
};
|
|
// Run Original Function
|
|
_TDS_.OmoriBASE.Game_Interpreter_requestImages.call(this, list, commonList);
|
|
// Return Total Count
|
|
return count;
|
|
}
|
|
//=============================================================================
|
|
// * Set Character Input Icon
|
|
//=============================================================================
|
|
Game_Interpreter.prototype.setCharacterInputIcon = function (input, id = 0) {
|
|
// Get Character
|
|
var character = this.character(id);
|
|
// If Character Exists
|
|
if (character) {
|
|
// Setup Input Icon
|
|
character.setupInputIcon(input);
|
|
};
|
|
};
|
|
//=============================================================================
|
|
// * Remove Character Input Icon
|
|
//=============================================================================
|
|
Game_Interpreter.prototype.removeCharacterInputIcon = function (id) {
|
|
// Get Character
|
|
var character = this.character(id);
|
|
// If Character Exists
|
|
if (character) {
|
|
// Clear Input Icon
|
|
character.clearInputIcon();
|
|
};
|
|
};
|
|
//=============================================================================
|
|
// * Pin Picture to map
|
|
//=============================================================================
|
|
Game_Interpreter.prototype.pinPictureToMap = function (pictureId, state = true) {
|
|
// Get Picture
|
|
var picture = $gameScreen.picture(pictureId);
|
|
// If Picture exists set pin to map state
|
|
if (picture) { picture.pinToMap(state); };
|
|
};
|
|
|
|
Game_Interpreter.prototype.pictureFollowShake = function (pictureId, state = true) {
|
|
// Get Picture
|
|
var picture = $gameScreen.picture(pictureId);
|
|
// If Picture exists set pin to map state
|
|
if (picture) { picture.followShake(state); };
|
|
};
|
|
//=============================================================================
|
|
// * Key Item Culling (Force to 1)
|
|
//=============================================================================
|
|
Game_Interpreter.prototype.keyItemCull = function () {
|
|
// List of Items to cull
|
|
var list = [850, 851, 852, 853, 854, 855, 856, 857, 858, 859, 860, 861, 862, 863, 864, 865, 866, 867, 868, 869, 870, 871, 872, 873, 874, 875];
|
|
// Set Quantity of Items in list to 1
|
|
for (var i = 0; i < list.length; i++) {
|
|
// Get Item Id
|
|
var id = list[i];
|
|
// If Item Exists
|
|
if ($gameParty._items[id]) { $gameParty._items[id] = 1; };
|
|
};
|
|
};
|
|
//=============================================================================
|
|
// * Set event Icon
|
|
//=============================================================================
|
|
Game_Interpreter.prototype.setEventIcon = function (eventId, img, index) {
|
|
var map = $gameMap.mapId();
|
|
var event = $gameMap.event(eventId);
|
|
if (!$eventData.hasCategory("eventcon")) $eventData.addCategory("eventcon");
|
|
$eventData.setValueExt("eventcon", map, eventId, [img, index]);
|
|
event.removeEventcon();
|
|
event.setupEventcon(img, index);
|
|
event.refresh();
|
|
};
|
|
//=============================================================================
|
|
// * Change World Item Container
|
|
//=============================================================================
|
|
Game_Interpreter.prototype.changeWorldItemContainer = function (world = SceneManager.currentWorldIndex()) {
|
|
// Change World Item Container
|
|
$gameParty.changeWorldItemContainer(world);
|
|
};
|
|
//=============================================================================
|
|
// * Setup Ambience
|
|
//=============================================================================
|
|
Game_Interpreter.prototype.setupAmbience = function (name, x = 0, y = 0, custom = false) {
|
|
// Get Ambience Data
|
|
var data = $gamePlayer._ambienceData;
|
|
// Set Ambience Data
|
|
data.name = name;
|
|
data.x = x; data.y = data.useCustomPosition = custom;
|
|
// Setup Ambience Bitmap
|
|
SceneManager._scene._spriteset.setupAmbienceBitmaps(data.name);
|
|
};
|
|
//=============================================================================
|
|
// * Initialize Singing Mini Game
|
|
//=============================================================================
|
|
Game_Interpreter.prototype.initSingingMiniGame = function () {
|
|
// Initialize Singing Mini Game
|
|
$gameTemp._singingMiniGame = { singingLevel: 26, finished: false };
|
|
// Get Mole Events
|
|
$gameTemp._singingMiniGame.events = $gameMap.events().filter(function (event) { return event.event().meta.SingingMole });
|
|
// Get Tomato Events
|
|
$gameTemp._singingMiniGame.tomatoEvents = $gameMap.events().filter(function (event) { return event.event().meta.Tomato });
|
|
// Go through Events
|
|
for (var i = 0; i < $gameTemp._singingMiniGame.events.length; i++) {
|
|
// Get Mole Event
|
|
var event = $gameTemp._singingMiniGame.events[i];
|
|
// Get Tomato Event
|
|
var tomato = $gameTemp._singingMiniGame.tomatoEvents[i];
|
|
tomato.setDirectionFix(false)
|
|
tomato.setImage('DW_SleepingMoles', 0);
|
|
tomato.setDirection(4)
|
|
tomato.setDirectionFix(true)
|
|
tomato.setPosition(event._x, event._y);
|
|
tomato._opacity = 0;
|
|
// Initialize Singing Variables
|
|
event._singing = { level: 3, oldLevel: 3, maxTimer: 120, timerVariance: 5, timerSize: 30 }
|
|
// Reset Timer
|
|
event._singing.timer = event._singing.maxTimer + ((1 + Math.randomInt(event._singing.timerVariance)) * event._singing.timerSize)
|
|
// Set Tomato Event
|
|
event._singing.tomato = tomato;
|
|
event.setImage('DW_SleepingMoles', 0);
|
|
event.setDirection(2);
|
|
event.setStepAnime(true)
|
|
};
|
|
// Play BGM
|
|
AudioManager.playBgm({ name: 'event_bride_miraculously_good', volume: 100, pitch: 100 });
|
|
};
|
|
//=============================================================================
|
|
// * Wake Up singing moles
|
|
//=============================================================================
|
|
Game_Interpreter.prototype.wakeUpSingingMoles = function (x = $gamePlayer._x) {
|
|
// If there's no singing mini game return
|
|
if (!$gameTemp._singingMiniGame) { return; };
|
|
// If Mini game is finished
|
|
if ($gameTemp._singingMiniGame.finished) { return; }
|
|
// Get Events
|
|
var events = $gameTemp._singingMiniGame.events;
|
|
// Go Through Events
|
|
for (var i = 0; i < events.length; i++) {
|
|
// Get Event
|
|
var event = events[i];
|
|
// If Event X matches set X
|
|
if (event._x === x) {
|
|
// Get Singing values
|
|
var singing = event._singing;
|
|
// Get Tomato Event
|
|
var tomato = singing.tomato;
|
|
// If Singing level is less than 2
|
|
if (singing.level < 2 && !tomato._inThrowMotion) {
|
|
// Set Tomato Direction
|
|
tomato.setDirectionFix(false)
|
|
tomato.setDirection(4)
|
|
tomato.setDirectionFix(true)
|
|
tomato.setPosition(tomato.x, 15);
|
|
tomato._opacity = 255;
|
|
tomato.setMoveSpeed(2)
|
|
tomato._inThrowMotion = true;
|
|
tomato._fadeOutDelay = 20;
|
|
tomato.jump(0, -$gameMap.deltaY(tomato._y, event._y))
|
|
};
|
|
};
|
|
};
|
|
};
|
|
//=============================================================================
|
|
// * Update Singing Mini Game
|
|
//=============================================================================
|
|
Game_Interpreter.prototype.updateSingingMiniGame = function () {
|
|
// If mini game finished
|
|
if ($gameTemp._singingMiniGame.finished) {
|
|
// Get Events
|
|
var events = $gameTemp._singingMiniGame.events;
|
|
// Go Through Events
|
|
for (var i = 0; i < events.length; i++) {
|
|
// Get Event
|
|
var event = events[i];
|
|
// Get Singing values
|
|
var singing = event._singing;
|
|
// Get Tomato
|
|
var tomato = singing.tomato;
|
|
// If Tomato has been thrown but is finished jumping
|
|
if (tomato._inThrowMotion && !tomato.isJumping()) {
|
|
tomato.setDirectionFix(false)
|
|
tomato.setDirection(8)
|
|
tomato.setDirectionFix(true)
|
|
// tomato._opacity = 0;
|
|
tomato._inThrowMotion = false;
|
|
tomato.setMoveSpeed(event.moveSpeed());
|
|
// Reset Singing Level
|
|
singing.oldLevel = singing.level = 2;
|
|
// Refresh Singing event Graphics
|
|
this.refreshSingingEventGraphics(event);
|
|
continue;
|
|
};
|
|
|
|
if (!tomato._inThrowMotion && tomato._opacity > 0) {
|
|
if (tomato._fadeOutDelay > 0) {
|
|
tomato._fadeOutDelay--
|
|
} else {
|
|
tomato._opacity -= 25;
|
|
}
|
|
}
|
|
}
|
|
// console.log($gameTemp._singingMiniGame.singingLevel)
|
|
return;
|
|
};
|
|
|
|
// If audio manager has bgm buffer
|
|
if (AudioManager._bgmBuffer) {
|
|
// Get song position
|
|
var pos = AudioManager._bgmBuffer.seek();
|
|
// If song is over
|
|
if (pos >= 31) {
|
|
// Stop BGM
|
|
AudioManager.stopBgm();
|
|
// Set Finished Flag to true
|
|
$gameTemp._singingMiniGame.finished = true;
|
|
return
|
|
}
|
|
};
|
|
|
|
// Get Events
|
|
var events = $gameTemp._singingMiniGame.events;
|
|
// Set Level Count
|
|
var singingLevel = 0;
|
|
// Go Through Events
|
|
for (var i = 0; i < events.length; i++) {
|
|
// Get Event
|
|
var event = events[i];
|
|
// Get Singing values
|
|
var singing = event._singing;
|
|
// Get Tomato
|
|
var tomato = singing.tomato;
|
|
// If Tomato has been thrown but is finished jumping
|
|
if (tomato._inThrowMotion && !tomato.isJumping()) {
|
|
tomato.setDirectionFix(false)
|
|
tomato.setDirection(8)
|
|
AudioManager.playSe({ name: "ft_gross", volume: 100, pitch: 100 });
|
|
tomato.setDirectionFix(true)
|
|
// tomato._opacity = 0;
|
|
tomato._inThrowMotion = false;
|
|
tomato.setMoveSpeed(event.moveSpeed());
|
|
tomato.jump(0, 0)
|
|
// Jump
|
|
event.jump(0, 0);
|
|
// Reset Singing Level
|
|
singing.oldLevel = singing.level = 2;
|
|
// Reset Timer
|
|
singing.timer = singing.maxTimer + (1 + Math.randomInt(singing.timerVariance) * singing.timerSize);
|
|
|
|
// Refresh Singing event Graphics
|
|
this.refreshSingingEventGraphics(event);
|
|
// Increase Singing Level
|
|
singingLevel += singing.level;
|
|
continue;
|
|
};
|
|
|
|
if (!tomato._inThrowMotion && tomato._opacity > 0) {
|
|
if (tomato._fadeOutDelay > 0) {
|
|
tomato._fadeOutDelay--
|
|
} else {
|
|
tomato._opacity -= 25;
|
|
}
|
|
}
|
|
|
|
// If Singing Timer is 0 or less
|
|
if (singing.timer <= 0) {
|
|
// Decrease Singing Level
|
|
if (singing.level > 0) { singing.level--; };
|
|
// Reset Timer
|
|
singing.timer = singing.maxTimer + (1 + Math.randomInt(singing.timerVariance) * singing.timerSize);
|
|
} else {
|
|
// Decrease Singing Timer
|
|
singing.timer--;
|
|
}
|
|
// If Singing Level is not the same as old level
|
|
if (singing.level !== singing.oldLevel) {
|
|
// Update Old Level
|
|
singing.oldLevel = singing.level;
|
|
// Refresh Singing event Graphics
|
|
this.refreshSingingEventGraphics(event);
|
|
};
|
|
// Increase Singing Level
|
|
singingLevel += singing.level;
|
|
};
|
|
// If Singing Level does not match old singing level
|
|
if (singingLevel !== $gameTemp._singingMiniGame.singingLevel) {
|
|
// Set Singing Level
|
|
$gameTemp._singingMiniGame.singingLevel = singingLevel;
|
|
// Update Singing Event BGM
|
|
this.updateSingingEventBGM(singingLevel);
|
|
};
|
|
};
|
|
//=============================================================================
|
|
// * Update Singing Mini Game
|
|
//=============================================================================
|
|
Game_Interpreter.prototype.refreshSingingEventGraphics = function (event) {
|
|
// Get Singing values
|
|
var singing = event._singing;
|
|
// Singing Level switch case
|
|
switch (singing.level) {
|
|
case 0:
|
|
event.setImage('DW_SleepingMoles', 1);
|
|
event.setDirection(4);
|
|
break;
|
|
case 1:
|
|
event.setImage('DW_SleepingMoles', 1);
|
|
event.setDirection(2);
|
|
break;
|
|
case 2:
|
|
event.setImage('DW_SleepingMoles', 0);
|
|
event.setDirection(2);
|
|
break;
|
|
};
|
|
};
|
|
//=============================================================================
|
|
// * Update Singing Event BGM
|
|
//=============================================================================
|
|
Game_Interpreter.prototype.updateSingingEventBGM = function (singingCount) {
|
|
// Set Song Level
|
|
var level = 0;
|
|
// Check Singing count to set level
|
|
if (singingCount > 20) {
|
|
level = 2;
|
|
} else if (singingCount < 20 && singingCount > 6) {
|
|
level = 1;
|
|
} else {
|
|
level = 0;
|
|
}
|
|
// Get Song Name
|
|
var name = ['event_bride_absolute_evil', 'event_bride_horrible', 'event_bride_miraculously_good'][level]
|
|
// Get BGM Buffer
|
|
var bgm = AudioManager._bgmBuffer;
|
|
// Play BGM
|
|
AudioManager.playBgm({ name: name, volume: 100, pitch: 100 }, bgm ? bgm.seek() : undefined, false);
|
|
};
|
|
|
|
|
|
|
|
|
|
//=============================================================================
|
|
// ** Game_Action
|
|
//-----------------------------------------------------------------------------
|
|
// The game object class for a battle action.
|
|
//=============================================================================
|
|
// Alias Listing
|
|
//=============================================================================
|
|
_TDS_.OmoriBASE.Game_Action_testItemEffect = Game_Action.prototype.testItemEffect;
|
|
//=============================================================================
|
|
// * Test Item Effect
|
|
//=============================================================================
|
|
Game_Action.prototype.testItemEffect = function (target, effect) {
|
|
// If Code is for Common Events
|
|
if (effect.code === Game_Action.EFFECT_COMMON_EVENT) {
|
|
// If Not in battle and the common event is for battle only
|
|
if (!$gameParty.inBattle() && $gameTemp.isCommonEventForBattleOnly(effect.dataId)) {
|
|
return false;
|
|
};
|
|
};
|
|
// Return Original Function
|
|
return _TDS_.OmoriBASE.Game_Action_testItemEffect.call(this, target, effect);
|
|
};
|
|
|
|
|
|
_TDS_.OmoriBASE.Game_Actor_changeLevel = Game_Actor.prototype.changeLevel;
|
|
Game_Actor.prototype.changeLevel = function (level, show) {
|
|
_TDS_.OmoriBASE.Game_Actor_changeLevel.call(this, level, show);
|
|
if ($gameParty.inBattle()) {
|
|
AudioManager.playSe({ name: "BA_Level_Up", volume: 100, pitch: 100 });
|
|
}
|
|
};
|
|
|
|
//=============================================================================
|
|
// ** Game_Party
|
|
//-----------------------------------------------------------------------------
|
|
// The game object class for the party. Information such as gold and items is
|
|
// included.
|
|
//=============================================================================
|
|
// Alias Listing
|
|
//=============================================================================
|
|
_TDS_.OmoriBASE.Game_Party_initialize = Game_Party.prototype.initialize;
|
|
_TDS_.OmoriBASE.Game_Party_allMembers = Game_Party.prototype.allMembers
|
|
_TDS_.OmoriBASE.Game_Party_gainItem = Game_Party.prototype.gainItem
|
|
//=============================================================================
|
|
// * Object Initialize
|
|
//=============================================================================
|
|
Game_Party.prototype.initialize = function () {
|
|
// Run Original Function
|
|
_TDS_.OmoriBASE.Game_Party_initialize.call(this);
|
|
// Initialize Scanned Enemy List
|
|
this._scannedEnemyList = [];
|
|
// Black letters list
|
|
this._blackLetters = [];
|
|
// BlackLetter Index
|
|
this._blackLetterIndex = 0;
|
|
// Set Last Item Data
|
|
this._lastItemData = { id: 0, type: 0, amount: 0 }
|
|
// Initialize Stress Energy Count
|
|
this.stressEnergyCount = 0;
|
|
// Initialize World Items container
|
|
this.initWorldItemsContainer();
|
|
};
|
|
//=============================================================================
|
|
// * Stress Energy Count
|
|
//=============================================================================
|
|
Object.defineProperty(Game_Party.prototype, 'stressEnergyCount', {
|
|
get: function () { return this._stressEnergyCount; },
|
|
set: function (value) {
|
|
this._stressEnergyCount = value.clamp(0, 10);
|
|
},
|
|
configurable: true
|
|
});
|
|
//=============================================================================
|
|
// * Determine if Party has type of items
|
|
//=============================================================================
|
|
Game_Party.prototype.hasKeyItems = function (hidden = false) {
|
|
return this.items().some(function (item) {
|
|
if (!hidden && item.meta.HideInMenu) { return false; }
|
|
return DataManager.isKeyItem(item)
|
|
})
|
|
};
|
|
Game_Party.prototype.hasConsumableItems = function (hidden = false) {
|
|
return this.items().some(function (item) {
|
|
if (!hidden && item.meta.HideInMenu) { return false; }
|
|
return DataManager.isConsumableItem(item)
|
|
})
|
|
};
|
|
Game_Party.prototype.hasToyItems = function (hidden = false) {
|
|
return this.items().some(function (item) {
|
|
if (!hidden && item.meta.HideInMenu) { return false; }
|
|
return DataManager.isToyItem(item)
|
|
})
|
|
};
|
|
//=============================================================================
|
|
// * Determine if Party has valid pocket items
|
|
//=============================================================================
|
|
Game_Party.prototype.hasValidPocketItems = function () {
|
|
return this.items().some(function (item) {
|
|
if (item.meta.HideInMenu) { return false; }
|
|
if (DataManager.isKeyItem(item) || DataManager.isConsumableItem(item) || DataManager.isToyItem(item)) { return true; };
|
|
return false;
|
|
})
|
|
};
|
|
//=============================================================================
|
|
// * Determine if Party is in Faraway
|
|
//=============================================================================
|
|
Game_Party.prototype.isInFaraway = function () { return $gameSwitches.value(7); };
|
|
//=============================================================================
|
|
// * Initialize Worlds Item container
|
|
//=============================================================================
|
|
Game_Party.prototype.initWorldItemsContainer = function () {
|
|
// Initialize World Item container Object
|
|
this._worldItemsContainer = {}
|
|
// Set Last World Item Index
|
|
this._lastWorldItemIndex = SceneManager.currentWorldIndex();
|
|
// Create 5 world item container objects
|
|
for (var i = 0; i < 5; i++) {
|
|
// Set World Container Object
|
|
this._worldItemsContainer[i] = { items: {}, weapons: {}, armors: {} }
|
|
};
|
|
};
|
|
//=============================================================================
|
|
// * Change Worlds Item container
|
|
//=============================================================================
|
|
Game_Party.prototype.changeWorldItemContainer = function (world = SceneManager.currentWorldIndex()) {
|
|
// Get Last Container & New Container
|
|
var lastContainer = this._worldItemsContainer[this._lastWorldItemIndex];
|
|
var newContainer = this._worldItemsContainer[world];
|
|
// Save current to current container
|
|
Object.assign(lastContainer.items, this._items);
|
|
Object.assign(lastContainer.weapons, this._weapons);
|
|
Object.assign(lastContainer.armors, this._armors);
|
|
// Set Item Lists
|
|
this._items = newContainer.items;
|
|
this._weapons = newContainer.weapons;
|
|
this._armors = newContainer.armors;
|
|
// Update Last World Item Index
|
|
this._lastWorldItemIndex = world;
|
|
// Get Containers
|
|
var containers = [[this._items, $dataItems], [this._weapons, $dataWeapons], [this._armors, $dataArmors]];
|
|
// Go through Containers
|
|
for (var i = 0; i < containers.length; i++) {
|
|
// Get List
|
|
var container = containers[i][0];
|
|
var itemData = containers[i][1];
|
|
var list = Object.keys(container);
|
|
// Go through container list
|
|
for (var i2 = 0; i2 < list.length; i2++) {
|
|
// Get ID
|
|
var id = list[i2];
|
|
// Get Item
|
|
var item = itemData[id];
|
|
// If Item exists but does not match the world index
|
|
if (item && item.meta.WorldIndex && Number(item.meta.WorldIndex) !== world) {
|
|
// Delete Item from container
|
|
delete container[id];
|
|
};
|
|
};
|
|
};
|
|
};
|
|
//=============================================================================
|
|
// * Get Number of Items available in battle
|
|
//=============================================================================
|
|
Game_Party.prototype.battleNumItems = function (item) {
|
|
// Get Container
|
|
let container = this.itemContainer(item);
|
|
// Set starting total
|
|
let total = container ? container[item.id] || 0 : 0;
|
|
// Get All members
|
|
let members = this.allMembers();
|
|
// Get Active Actor
|
|
let actor = BattleManager.actor();
|
|
// Get Actor Current Action
|
|
let currentAction = actor.currentAction();
|
|
// Go through members
|
|
for (var i = 0; i < members.length; i++) {
|
|
// Get Member
|
|
let member = members[i];
|
|
// Go Through Actions
|
|
for (var i2 = 0; i2 < member._actions.length; i2++) {
|
|
// Get Actions
|
|
let action = member._actions[i2];
|
|
// If action is the current one for selecting continue on
|
|
if (action === currentAction) { continue; };
|
|
// If Action is for an item and it matches the id
|
|
if (action.isItem() && action._item.itemId() === item.id) { total--; };
|
|
};
|
|
}
|
|
// Return total
|
|
return Math.max(0, total);
|
|
};
|
|
//=============================================================================
|
|
// * Get All Members
|
|
//=============================================================================
|
|
Game_Party.prototype.allMembers = function () {
|
|
// If in Faraway
|
|
if (this.isInFaraway()) {
|
|
return this._actors.map(function (id) {
|
|
// Get Actor
|
|
var actor = $gameActors.actor(id);
|
|
// If Actor has Faraway Id
|
|
if (actor._farawayActorId) { return $gameActors.actor(actor._farawayActorId); };
|
|
// Return Default Actor
|
|
return actor
|
|
});
|
|
} else {
|
|
// Return Original Function
|
|
return _TDS_.OmoriBASE.Game_Party_allMembers.call(this);
|
|
}
|
|
};
|
|
//=============================================================================
|
|
// * Get Last Gained Item
|
|
//=============================================================================
|
|
Game_Party.prototype.lastGainedItem = function () {
|
|
switch (this._lastItemData.type) {
|
|
case 0: return $dataItems[this._lastItemData.id]; break;
|
|
case 1: return $dataWeapons[this._lastItemData.id]; break;
|
|
case 2: return $dataArmors[this._lastItemData.id]; break;
|
|
};
|
|
};
|
|
//=============================================================================
|
|
// * Gain Item
|
|
//=============================================================================
|
|
Game_Party.prototype.gainItem = function (item, amount, includeEquip) {
|
|
// // If Amount is more than 0
|
|
if (item) {
|
|
// Get Container
|
|
var container = this.itemContainer(item);
|
|
// Get Equipment and Armor Type
|
|
var equipmentType = item.etypeId
|
|
var armorType = item.atypeId
|
|
// Set Last Gained Item Type (Item)
|
|
this._lastItemData.type = 0;
|
|
// Set Item ID
|
|
this._lastItemData.id = item.id
|
|
// Set Last Item Data Amount
|
|
this._lastItemData.amount = amount;
|
|
// If Weapon
|
|
if (armorType === undefined && equipmentType !== undefined) {
|
|
// Set Last Gained Item Type (Weapon)
|
|
this._lastItemData.type = 1;
|
|
} else if (armorType !== undefined && equipmentType !== undefined) {
|
|
// Set Last Gained Item Type (Armor)
|
|
this._lastItemData.type = 2;
|
|
};
|
|
|
|
if (this.inBattle()) {
|
|
// AudioManager.playSe({name: "SYS_NewSkill", volume: 100, pitch: 100});
|
|
}
|
|
|
|
};
|
|
// Run Original Function
|
|
_TDS_.OmoriBASE.Game_Party_gainItem.call(this, item, amount, includeEquip);
|
|
};
|
|
//=============================================================================
|
|
// * Sort Members for Tag
|
|
//=============================================================================
|
|
Game_Party.prototype.sortMembersForTag = function (leaderId) {
|
|
// Get Default Party Configuration
|
|
|
|
|
|
/*var original = [1, 2, 3, 4];
|
|
|
|
if ($gameSwitches.value(1038)) {
|
|
original = [1,2,3,4];
|
|
} else if ($gameSwitches.value(1037)) {
|
|
original = [1,2,3];
|
|
} else if ($gameSwitches.value(1036)) {
|
|
original = [1,3];
|
|
}*/
|
|
if ($gameVariables.value(22) === 2) {
|
|
original = [8, 10, 9, 11];
|
|
// Set Party
|
|
this._actors = original.clone();
|
|
// Get Index
|
|
var index = this._actors.indexOf(leaderId);
|
|
// If Index is valid
|
|
if (index > -1) {
|
|
this._actors.splice(index, 1);
|
|
this._actors.splice(0, 0, leaderId);
|
|
};
|
|
}
|
|
else {
|
|
let leader = this._actors.splice(this._actors.indexOf(leaderId), 1);
|
|
this._actors.sort((a, b) => a - b)
|
|
this._actors = [...leader, ...this._actors]
|
|
}
|
|
// Refresh Player
|
|
$gamePlayer.refresh();
|
|
};
|
|
//=============================================================================
|
|
// * Add Scanned Enemy
|
|
//=============================================================================
|
|
Game_Party.prototype.addScannedEnemy = function (id) {
|
|
// Add Scanned Enemy to list
|
|
if (!this._scannedEnemyList.contains(id)) { this._scannedEnemyList.push(id); };
|
|
};
|
|
//=============================================================================
|
|
// * Get Member at Status Index
|
|
//=============================================================================
|
|
Game_Party.prototype.memberAtStatusIndex = function (index) {
|
|
return this.battleMembers().find(function (actor) {
|
|
return actor.battleStatusIndex() === index;
|
|
});
|
|
};
|
|
//=============================================================================
|
|
// * Get Last Black letter obtained
|
|
//=============================================================================
|
|
Game_Party.prototype.lastBlackLetter = function (obj = false) {
|
|
// If there are blackletters
|
|
if (this._blackLetters.length > 0) {
|
|
// Get Item
|
|
var item = $dataItems[this._blackLetters[this._blackLetters.length - 1]];
|
|
// Return the last item or letter
|
|
return obj ? item : item.meta.Blackletter.trim().toUpperCase();
|
|
};
|
|
// Return empty or null
|
|
return obj ? null : " ";
|
|
};
|
|
|
|
|
|
|
|
|
|
//=============================================================================
|
|
// ** Game_Troop
|
|
//-----------------------------------------------------------------------------
|
|
// The game object class for a troop and the battle-related data.
|
|
//=============================================================================
|
|
// Alias Listing
|
|
//=============================================================================
|
|
_TDS_.OmoriBASE.Game_Troop_clear = Game_Troop.prototype.clear;
|
|
_TDS_.OmoriBASE.Game_Troop_setup = Game_Troop.prototype.setup;
|
|
_TDS_.OmoriBASE.Game_Troop_meetsConditions = Game_Troop.prototype.meetsConditions;
|
|
_TDS_.OmoriBASE.Game_Troop_isAllDead = Game_Troop.prototype.isAllDead;
|
|
//=============================================================================
|
|
// * Setup
|
|
//=============================================================================
|
|
// Game_Troop.prototype.setup = function(troopId) {
|
|
// // Run Original Function
|
|
// _TDS_.OmoriBASE.Game_Troop_setup.call(this, troopId);
|
|
// // Apply Battle Position Offsets
|
|
// this._enemies.forEach(function(e) { e.applyBattlePositionOffsets(); }, this);
|
|
// };
|
|
//=============================================================================
|
|
// * Ignore page conditions
|
|
//=============================================================================
|
|
Game_Troop.prototype.ignorePage = function (page) {
|
|
// If Ignore Pages does not Contains Page
|
|
if (!this._ingorePages.contains(page)) {
|
|
// Add to ignore pages array
|
|
this._ingorePages.push(page);
|
|
};
|
|
};
|
|
//=============================================================================
|
|
// * Stop Ignore page conditions
|
|
//=============================================================================
|
|
Game_Troop.prototype.stopIgnorePage = function (page) {
|
|
// Get Index
|
|
var index = this._ingorePages.indexOf(page);
|
|
// If Index exists delete it
|
|
if (index >= 0) { this._ingorePages.splice(index, 1); }
|
|
};
|
|
//=============================================================================
|
|
// * Clear
|
|
//=============================================================================
|
|
Game_Troop.prototype.clear = function () {
|
|
// Run Original Function
|
|
_TDS_.OmoriBASE.Game_Troop_clear.call(this);
|
|
// Clear Ignore Pages Array
|
|
this._ingorePages = [];
|
|
};
|
|
//=============================================================================
|
|
// * Determine if conditions are met
|
|
//=============================================================================
|
|
Game_Troop.prototype.meetsConditions = function (page) {
|
|
// Get Page Index
|
|
var pageIndex = this.troop().pages.indexOf(page);
|
|
// If Ignore Pages does Contains Page
|
|
if (this._ingorePages.contains(pageIndex)) { return false; };
|
|
// Return Original Function
|
|
return _TDS_.OmoriBASE.Game_Troop_meetsConditions.call(this, page);
|
|
};
|
|
//=============================================================================
|
|
// * Determine if all dead
|
|
//=============================================================================
|
|
Game_Troop.prototype.isAllDead = function () {
|
|
// If Battle Intro is active return false
|
|
if (BattleManager.isBattleIntroActive()) { return false; };
|
|
// Return Original Function
|
|
return _TDS_.OmoriBASE.Game_Troop_isAllDead.call(this);
|
|
};
|
|
|
|
//=============================================================================
|
|
// ** Game_Actor
|
|
//-----------------------------------------------------------------------------
|
|
// The game object class for an actor.
|
|
//=============================================================================
|
|
// Alias Listing
|
|
//=============================================================================
|
|
_TDS_.OmoriBASE.Game_Actor_setup = Game_Actor.prototype.setup;
|
|
_TDS_.OmoriBASE.Game_Actor_initMembers = Game_Actor.prototype.initMembers;
|
|
_TDS_.OmoriBASE.Game_Actor_initSkills = Game_Actor.prototype.initSkills;
|
|
_TDS_.OmoriBASE.Game_Actor_canPaySkillCost = Game_Actor.prototype.canPaySkillCost;
|
|
_TDS_.OmoriBASE.Game_Actor_paySkillCost = Game_Actor.prototype.paySkillCost;
|
|
_TDS_.OmoriBASE.Game_Actor_displayLevelUp = Game_Actor.prototype.displayLevelUp;
|
|
_TDS_.OmoriBASE.Game_Actor_onBattleStart = Game_Actor.prototype.onBattleStart;
|
|
_TDS_.OmoriBASE.Game_Actor_performVictory = Game_Actor.prototype.performVictory
|
|
_TDS_.OmoriBASE.Game_Actor_addState = Game_Actor.prototype.addState
|
|
//=============================================================================
|
|
// * Get Actor Battle Status Face Name
|
|
//=============================================================================
|
|
Game_Actor.prototype.battleStatusFaceName = function () {
|
|
// If Battle Face Name Exists return it
|
|
if (this._battleFaceName) { return this._battleFaceName; };
|
|
// Get Name
|
|
var name = this.actor().meta.BattleStatusFaceName;
|
|
// Return Trimmed Name
|
|
if (name) { return name.trim(); }
|
|
return;
|
|
};
|
|
//=============================================================================
|
|
// * Get Actor Menu Status Face Name
|
|
//=============================================================================
|
|
Game_Actor.prototype.menuStatusFaceName = function () {
|
|
// Get Name
|
|
let name = this.actor().meta.MenuStatusFaceName;
|
|
// Return Trimmed Name
|
|
if (name) { return name.trim(); }
|
|
return;
|
|
};
|
|
//=============================================================================
|
|
// * Initialize Members
|
|
//=============================================================================
|
|
Game_Actor.prototype.initMembers = function () {
|
|
// Run Original Function
|
|
_TDS_.OmoriBASE.Game_Actor_initMembers.call(this);
|
|
// Initialize Equipped Skills
|
|
this._equippedSkills = [];
|
|
// Initialize Locked Equipment Slots
|
|
this._lockedEquipmentSlots = [];
|
|
// Disabled Battle Commands
|
|
this._disabledBattleCommands = [];
|
|
// Set Faraway ActorID to null
|
|
this._farawayActorId = null;
|
|
// Use Victory Face Flag
|
|
this._useVictoryFace = false;
|
|
// Battle Face Name
|
|
this._battleFaceName = null;
|
|
};
|
|
//=============================================================================
|
|
// * Setup
|
|
//=============================================================================
|
|
Game_Actor.prototype.setup = function (actorId) {
|
|
// Run Original Function
|
|
_TDS_.OmoriBASE.Game_Actor_setup.call(this, actorId);
|
|
// Get Actor
|
|
var actor = $dataActors[actorId];
|
|
// Get Faraway Actor ID
|
|
var farawayActorId = actor.meta.FarawayActorId;
|
|
if (farawayActorId) {
|
|
this._farawayActorId = Number(farawayActorId);
|
|
};
|
|
};
|
|
//=============================================================================
|
|
// * On Battle Start
|
|
//=============================================================================
|
|
Game_Actor.prototype.onBattleStart = function () {
|
|
// Run Original Function
|
|
_TDS_.OmoriBASE.Game_Actor_onBattleStart.call(this);
|
|
// Set Victory Face to False
|
|
this._useVictoryFace = false;
|
|
};
|
|
//=============================================================================
|
|
// * Perform Victory
|
|
//=============================================================================
|
|
Game_Actor.prototype.performVictory = function () {
|
|
// Run Original Function
|
|
_TDS_.OmoriBASE.Game_Actor_performVictory.call(this);
|
|
// Set Use Victory face flag to true
|
|
this._useVictoryFace = true;
|
|
};
|
|
//=============================================================================
|
|
// * Determine if can pay skill cost
|
|
//=============================================================================
|
|
Game_Actor.prototype.canPaySkillCost = function (skill) {
|
|
// If in Battle
|
|
if ($gameParty.inBattle()) {
|
|
// If Skill has Energy Cost
|
|
if (skill.meta.EnergyCost) {
|
|
// If skill does not have energy cost
|
|
if (Number(skill.meta.EnergyCost) > $gameParty.stressEnergyCount) { return false; }
|
|
};
|
|
};
|
|
// Return Original Function
|
|
return _TDS_.OmoriBASE.Game_Actor_canPaySkillCost.call(this, skill);
|
|
};
|
|
//=============================================================================
|
|
// * Pay Skill Cost
|
|
//=============================================================================
|
|
Game_Actor.prototype.paySkillCost = function (skill) {
|
|
// Run Original function
|
|
_TDS_.OmoriBASE.Game_Actor_paySkillCost.call(this, skill);
|
|
// If in Battle
|
|
if ($gameParty.inBattle()) {
|
|
// If Skill has Energy Cost
|
|
if (skill.meta.EnergyCost) {
|
|
// Reduce Stress Energy Count
|
|
$gameParty.stressEnergyCount -= Number(skill.meta.EnergyCost);
|
|
};
|
|
};
|
|
};
|
|
//=============================================================================
|
|
// * Determine if Equipment Slot is locked
|
|
//=============================================================================
|
|
Game_Actor.prototype.isEquipmentSlotLocked = function (slot) {
|
|
return this._lockedEquipmentSlots.contains(slot);
|
|
};
|
|
|
|
//=============================================================================
|
|
// * Determine if Equipment Slot is locked
|
|
//=============================================================================
|
|
Game_Actor.prototype.isSkillLocked = function () {
|
|
return this._lockedEquipmentSlots.contains(slot);
|
|
};
|
|
//=============================================================================
|
|
// * Lock Equipment Slots
|
|
//=============================================================================
|
|
Game_Actor.prototype.lockEquipmentSlots = function () {
|
|
for (var i = 0; i < arguments.length; i++) {
|
|
var slot = arguments[i];
|
|
if (!this._lockedEquipmentSlots.contains(slot)) { this._lockedEquipmentSlots.push(slot); };
|
|
};
|
|
};
|
|
//=============================================================================
|
|
// * Unlock Equipment Slots
|
|
//=============================================================================
|
|
Game_Actor.prototype.unlockEquipmentSlots = function () {
|
|
// Get Slots
|
|
var slots = Array.from(arguments);
|
|
this._lockedEquipmentSlots = this._lockedEquipmentSlots.filter(function (slotId) {
|
|
return !slots.contains(slotId);
|
|
}, this)
|
|
};
|
|
//=============================================================================
|
|
// * Determine if Battle Command is disabled
|
|
//=============================================================================
|
|
Game_Actor.prototype.isBattleCommandDisabled = function (index) { return this._disabledBattleCommands.contains(index); };
|
|
//=============================================================================
|
|
// * Disable Battle Command
|
|
//=============================================================================
|
|
Game_Actor.prototype.disableBattleCommands = function () {
|
|
for (var i = 0; i < arguments.length; i++) {
|
|
var command = arguments[i];
|
|
if (!this._disabledBattleCommands.contains(command)) { this._disabledBattleCommands.push(command); };
|
|
};
|
|
};
|
|
//=============================================================================
|
|
// * Enable Battle Command
|
|
//=============================================================================
|
|
Game_Actor.prototype.enableBattleCommands = function () {
|
|
// Get Commands
|
|
var commands = Array.from(arguments);
|
|
this._disabledBattleCommands = this._disabledBattleCommands.filter(function (id) {
|
|
return !commands.contains(id);
|
|
}, this);
|
|
};
|
|
//=============================================================================
|
|
// * Get Status State Particles Data
|
|
//=============================================================================
|
|
Game_Actor.prototype.statusStateParticlesData = function () {
|
|
// Get Main State
|
|
var state = this.states()[0];
|
|
// If State Exists
|
|
if (state) {
|
|
// If State Particle Data is not undefined
|
|
if (state.meta.particlesData === undefined) {
|
|
// Initialize State Particle Data
|
|
state.meta.particlesData = {}
|
|
// Get Layers
|
|
var layers = ['Behind', 'Front', 'Top'];
|
|
// Go through Layers
|
|
for (var i = 0; i < layers.length; i++) {
|
|
// Get Layer Name
|
|
var layer = layers[i]
|
|
// Get Particle Name
|
|
var particleName = state.meta["Particle" + layer];
|
|
// If Particle Name Exists
|
|
if (particleName) {
|
|
// Set Particle Data for Particle Name
|
|
state.meta.particlesData[layer.toLowerCase()] = particleName.trim().toLowerCase();
|
|
};
|
|
};
|
|
};
|
|
// Return State particle Data
|
|
return state.meta.particlesData;
|
|
};
|
|
// Return default
|
|
return null;
|
|
};
|
|
//=============================================================================
|
|
// * Get Status Face Index
|
|
//=============================================================================
|
|
Game_Actor.prototype.statusFaceIndex = function () {
|
|
if (!!$gameTemp._secondChance && this.actorId() === 1) { return 3; }
|
|
if (!!$gameTemp._damagedPlayer) { return 2; }
|
|
// If Use victory face and is alive
|
|
if (this._useVictoryFace && this.isAlive()) {
|
|
// Return victory face
|
|
return 10;
|
|
};
|
|
// Check for second Chance;
|
|
// Get Main State
|
|
var state = this.states()[0];
|
|
// If State
|
|
if (state) {
|
|
// If Alt switch index exist
|
|
if (state.meta.AltIndexSwitch) {
|
|
// If alt switch is on
|
|
if ($gameSwitches.value(Number(state.meta.AltIndexSwitch))) {
|
|
// Return alternate face index
|
|
return Number(state.meta.AltStateFaceIndex)
|
|
};
|
|
}
|
|
// If face index exists return it
|
|
//if(state.id === this.deathStateId() && this.actorId() === 1) {return 9;}
|
|
if (state.meta.StateFaceIndex) { return Number(state.meta.StateFaceIndex); };
|
|
};
|
|
// Get Fear Index
|
|
const fearIndex = this.actor().meta.FearBattleFaceIndex;
|
|
// If Fear index is valid and switch 92 is on
|
|
if (fearIndex && $gameSwitches.value(92)) {
|
|
return Number(fearIndex)
|
|
}
|
|
// Return default
|
|
return 0;
|
|
};
|
|
//=============================================================================
|
|
// * Get Status Back Index
|
|
//=============================================================================
|
|
Game_Actor.prototype.statusBackIndex = function () {
|
|
// Omori
|
|
if ($gameTemp._secondChance && this.actorId() === 1) { return 11; }
|
|
// Get Main State
|
|
var state = this.states()[0];
|
|
// If State
|
|
if (state && state.meta.StateBackIndex) {
|
|
return Number(state.meta.StateBackIndex);
|
|
};
|
|
// Return default
|
|
return 0;
|
|
};
|
|
//=============================================================================
|
|
// * Get Status List Index
|
|
//=============================================================================
|
|
Game_Actor.prototype.statusListIndex = function () {
|
|
// Get Main State
|
|
var state = this.states()[0];
|
|
// If State
|
|
if (state) {
|
|
// Get World Index
|
|
let worldIndex = SceneManager.currentWorldIndex();
|
|
// Get Tag Name
|
|
let tagName = 'World_' + worldIndex + '_StateListIndex'
|
|
// If State has world state list index
|
|
if (state.meta[tagName]) {
|
|
return Number(state.meta[tagName]);
|
|
} else if (state.meta.StateListIndex) {
|
|
return Number(state.meta.StateListIndex);
|
|
};
|
|
};
|
|
// Return default
|
|
return 0;
|
|
};
|
|
//=============================================================================
|
|
// * Get Party Member Status Order
|
|
//=============================================================================
|
|
Game_Actor.prototype.battleStatusIndex = function () {
|
|
return Number(this.actor().meta.BattleStatusIndex);
|
|
};
|
|
//=============================================================================
|
|
// * Initialize Skills
|
|
//=============================================================================
|
|
Game_Actor.prototype.initSkills = function () {
|
|
// Run Original Function
|
|
_TDS_.OmoriBASE.Game_Actor_initSkills.call(this);
|
|
// Set Initial Equipped Skills
|
|
this._equippedSkills = [0, 0, 0, 0];
|
|
// Locked Equipped Skills
|
|
this._lockedEquippedSkills = [false, false, false, false];
|
|
// Set Locked Skills
|
|
this._lockedSkills = [];
|
|
};
|
|
//=============================================================================
|
|
// * Get Skills
|
|
//=============================================================================
|
|
Game_Actor.prototype.skills = function () {
|
|
// Get List
|
|
var list = [];
|
|
this._equippedSkills.concat(this.addedSkills()).forEach(function (id) {
|
|
if (!$dataSkills[id]) {
|
|
list.push(null);
|
|
} else {
|
|
if (!list.contains($dataSkills[id])) {
|
|
list.push($dataSkills[id]);
|
|
};
|
|
};
|
|
});
|
|
return list;
|
|
};
|
|
//=============================================================================
|
|
// * Get List of Skills
|
|
//=============================================================================
|
|
Game_Actor.prototype.skillsList = function () {
|
|
var list = [];
|
|
this._skills.concat(this.addedSkills()).forEach(function (id) {
|
|
if (!list.contains($dataSkills[id])) {
|
|
list.push($dataSkills[id]);
|
|
}
|
|
});
|
|
return list;
|
|
};
|
|
//=============================================================================
|
|
// * Determine if Skill Equip Slot is locked
|
|
//=============================================================================
|
|
Game_Actor.prototype.isEquipSkillSlotLocked = function (slot) {
|
|
// Get Skill Id
|
|
const skillId = this._equippedSkills[slot];
|
|
if (this._lockedSkills.contains(skillId)) { return true; }
|
|
return this._lockedEquippedSkills[slot];
|
|
};
|
|
//=============================================================================
|
|
// * Determine if Skill is equippable
|
|
//=============================================================================
|
|
Game_Actor.prototype.canEquipSkill = function (skill) {
|
|
// If skill does not exist
|
|
if (!skill) { return false; }
|
|
// If Equipped Skill contains skill id
|
|
if (this._equippedSkills.contains(skill.id)) { return false; };
|
|
// If Hide in menu tag exists
|
|
if (skill.meta.HideInMenu) { return false; }
|
|
// Return true;
|
|
return true;
|
|
};
|
|
//=============================================================================
|
|
// * Get Equippable Skills
|
|
//=============================================================================
|
|
Game_Actor.prototype.equipableSkills = function () {
|
|
// Initialize List
|
|
var list = [];
|
|
// Go through Skills
|
|
for (var i = 0; i < this._skills.length; i++) {
|
|
// Get Skill ID
|
|
var id = this._skills[i];
|
|
// Get Skill
|
|
var skill = $dataSkills[id];
|
|
// If Skill can be equipped add it to list
|
|
if (this.canEquipSkill(skill)) { list.push($dataSkills[id]); };
|
|
};
|
|
// Return List
|
|
return list
|
|
};
|
|
//=============================================================================
|
|
// * Lock Equip Skill
|
|
//=============================================================================
|
|
Game_Actor.prototype.lockEquipSkill = function () {
|
|
// Go Through arguments skill ids
|
|
for (var i = 0; i < arguments.length; i++) {
|
|
// Get ID
|
|
const id = arguments[i];
|
|
// If Locked Skills array does not contain skill id
|
|
if (!this._lockedSkills.contains(id)) {
|
|
// Add skill to locked skills
|
|
this._lockedSkills.push(id);
|
|
};
|
|
};
|
|
};
|
|
//=============================================================================
|
|
// * Unlock Equip Skill
|
|
//=============================================================================
|
|
Game_Actor.prototype.unlockEquipSkill = function () {
|
|
// Get List of Arrays
|
|
const list = Array.from(arguments);
|
|
// Remove locked skill
|
|
this._lockedSkills = this._lockedSkills.filter(id => !list.contains(id));
|
|
};
|
|
//=============================================================================
|
|
// * Equip Skill
|
|
//=============================================================================
|
|
Game_Actor.prototype.equipSkill = function (equipIndex, skillId) {
|
|
this._equippedSkills[equipIndex] = skillId;
|
|
};
|
|
//=============================================================================
|
|
// * Unequip Skill
|
|
//=============================================================================
|
|
Game_Actor.prototype.unequipSkill = function (equipIndex, learn) {
|
|
// Set learn flag to true
|
|
if (learn === undefined) { learn = true; }
|
|
// Get Skill Id
|
|
var skillId = this._equippedSkills[equipIndex];
|
|
// If Learn and Skill Id is more than 0
|
|
if (learn && skillId > 0) { this.learnSkill(skillId); }
|
|
// Set Skill Id at equip index to 0
|
|
this._equippedSkills[equipIndex] = 0;
|
|
};
|
|
//=============================================================================
|
|
// * Display Level Up
|
|
//=============================================================================
|
|
Game_Actor.prototype.displayLevelUp = function (newSkills) {
|
|
// If In Battle
|
|
if (SceneManager._scene.constructor === Scene_Battle) {
|
|
// Create Level Up Data Object
|
|
this._levelUpData = { level: this._level, skills: newSkills };
|
|
};
|
|
// Run Original Function
|
|
_TDS_.OmoriBASE.Game_Actor_displayLevelUp.call(this, newSkills);
|
|
};
|
|
//=============================================================================
|
|
// * Change Experience
|
|
//=============================================================================
|
|
Game_Actor.prototype.changeExp = function (exp, show) {
|
|
this._exp[this._classId] = Math.max(exp, 0);
|
|
var lastLevel = this._level;
|
|
// Use skillsList instead of skills to track total number skills
|
|
var lastSkills = this.skillsList();
|
|
while (!this.isMaxLevel() && this.currentExp() >= this.nextLevelExp()) {
|
|
this.levelUp();
|
|
}
|
|
while (this.currentExp() < this.currentLevelExp()) {
|
|
this.levelDown();
|
|
}
|
|
if (show && this._level > lastLevel) {
|
|
this.displayLevelUp(this.findNewSkills(lastSkills));
|
|
}
|
|
this.refresh();
|
|
};
|
|
//=============================================================================
|
|
// * Find new Skills
|
|
//=============================================================================
|
|
Game_Actor.prototype.findNewSkills = function (lastSkills) {
|
|
// Use skillsList instead of skills to track total number skills
|
|
var newSkills = this.skillsList();
|
|
for (var i = 0; i < lastSkills.length; i++) {
|
|
var index = newSkills.indexOf(lastSkills[i]);
|
|
if (index >= 0) {
|
|
newSkills.splice(index, 1);
|
|
}
|
|
};
|
|
return newSkills;
|
|
};
|
|
// //=============================================================================
|
|
// // * Add State
|
|
// //=============================================================================
|
|
// Game_Actor.prototype.addState = function(stateId) {
|
|
// // If state id is 20 and actor ID is 1 or 8
|
|
// if (stateId === 20 && [1, 8].contains(this.actorId())) {
|
|
// // If State can be added
|
|
// if (this.isStateAddable(stateId)) {
|
|
// // If not affected by state
|
|
// if (!this.isStateAffected(stateId)) {
|
|
// // Set Energy to max
|
|
// $gameParty.energy = 10;
|
|
// };
|
|
// };
|
|
// };
|
|
// // Run Original Function
|
|
// _TDS_.OmoriBASE.Game_Actor_addState.call(this, stateId);
|
|
// };
|
|
|
|
|
|
|
|
|
|
//=============================================================================
|
|
// ** Game_Enemy
|
|
//-----------------------------------------------------------------------------
|
|
// The game object class for an enemy.
|
|
//=============================================================================
|
|
// Alias Listing
|
|
//=============================================================================
|
|
_TDS_.OmoriBASE.Game_Enemy_setup = Game_Enemy.prototype.setup;
|
|
_TDS_.OmoriBASE.Game_Enemy_screenX = Game_Enemy.prototype.screenX;
|
|
_TDS_.OmoriBASE.Game_Enemy_screenY = Game_Enemy.prototype.screenY;
|
|
//=============================================================================
|
|
// * Setup
|
|
//=============================================================================
|
|
Game_Enemy.prototype.setup = function (enemyId, x, y) {
|
|
// Run Original Function
|
|
_TDS_.OmoriBASE.Game_Enemy_setup.call(this, enemyId, x, y);
|
|
// State Transforming flag
|
|
this._isStateTransforming = false;
|
|
// Apply Battle Position Offsets
|
|
this.applyBattlePositionOffsets();
|
|
};
|
|
//=============================================================================
|
|
// * Add State
|
|
//=============================================================================
|
|
Game_Enemy.prototype.addState = function (stateId) {
|
|
// Run Original Function
|
|
Game_Battler.prototype.addState.call(this, stateId);
|
|
// Refresh Emotion State transform
|
|
this.refreshEmotionStateTransform();
|
|
};
|
|
//=============================================================================
|
|
// * Remove State
|
|
//=============================================================================
|
|
Game_Enemy.prototype.removeState = function (stateId) {
|
|
// Run Original Function
|
|
Game_Battler.prototype.removeState.call(this, stateId);
|
|
// Refresh Emotion State transform
|
|
this.refreshEmotionStateTransform();
|
|
};
|
|
//=============================================================================
|
|
// * Get State Emotion
|
|
//=============================================================================
|
|
Game_Battler.prototype.getStateEmotion = function () {
|
|
// Get States
|
|
var states = this.states();
|
|
// Go Through States
|
|
for (var i = 0; i < states.length; i++) {
|
|
// Get STate
|
|
var state = states[i];
|
|
// If State has transform emotion
|
|
if (state.meta.TransformEmotion) {
|
|
// Return Transform Emotion
|
|
return state.meta.TransformEmotion.trim().toLowerCase();
|
|
}
|
|
};
|
|
// Return normal by default
|
|
return "normal";
|
|
};
|
|
//=============================================================================
|
|
// * Refresh Emotion State Transform
|
|
//=============================================================================
|
|
Game_Enemy.prototype.refreshEmotionStateTransform = function () {
|
|
// If Not Dead
|
|
if (!this.isDead() && !this._isStateTransforming) {
|
|
// Get Emotion
|
|
var emotion = this.getStateEmotion();
|
|
// Get base Id
|
|
var baseId = this.enemy().meta.TransformBaseID;
|
|
// Set Base ID
|
|
baseId = baseId ? Number(baseId) : this._enemyId;
|
|
// Set Transform ID
|
|
var transformId = this._enemyId;
|
|
// Switch Case Emotion
|
|
switch (emotion) {
|
|
case 'normal': transformId = baseId; break;
|
|
case 'happy': transformId = baseId + 1; break;
|
|
case 'sad': transformId = baseId + 2; break;
|
|
case 'angry': transformId = baseId + 3; break;
|
|
break;
|
|
};
|
|
// If Transform Id
|
|
if (transformId !== this._enemyId) {
|
|
this._isStateTransforming = true;
|
|
if (this.name() === "SPACE EX-HUSBAND") {
|
|
$gameScreen.setFlashWait(60)
|
|
$gameScreen.startFlash([255, 255, 255, 255], 130)
|
|
}
|
|
this.transform(transformId)
|
|
this._isStateTransforming = false;
|
|
};
|
|
};
|
|
|
|
};
|
|
//=============================================================================
|
|
// * Get Base ID
|
|
//=============================================================================
|
|
Game_Enemy.prototype.baseId = function () {
|
|
// Get Base ID
|
|
var baseId = this.enemy().meta.TransformBaseID;
|
|
let foeId = this.enemy().meta.FoeEntry;
|
|
// Return base ID
|
|
if (!!foeId) { return parseInt(foeId.trim()) }
|
|
return baseId ? Number(baseId) : this._enemyId;
|
|
};
|
|
//=============================================================================
|
|
// * Determine if Enemy has been scanned
|
|
//=============================================================================
|
|
Game_Enemy.prototype.isScanned = function () { return $gameParty._scannedEnemyList.contains(this.enemyId()); };
|
|
//=============================================================================
|
|
// * Get Battle Status Position
|
|
//=============================================================================
|
|
Game_Enemy.prototype.battleStatusPosition = function () {
|
|
var meta = this.enemy().meta;
|
|
if (meta.StatusPosition) { return Number(meta.StatusPosition); };
|
|
return 4
|
|
};
|
|
//=============================================================================
|
|
// * Get Battle Status Cursor Position
|
|
//=============================================================================
|
|
Game_Enemy.prototype.battleStatusCursorPosition = function () {
|
|
var meta = this.enemy().meta;
|
|
if (meta.StatusCursorPosition) { return Number(meta.StatusCursorPosition); };
|
|
return 3;
|
|
};
|
|
//=============================================================================
|
|
// * Get Battle Status X Offset
|
|
//=============================================================================
|
|
Game_Enemy.prototype.battleStatusXOffset = function () {
|
|
var meta = this.enemy().meta;
|
|
if (meta.StatusXOffset) { return Number(meta.StatusXOffset); };
|
|
return 0;
|
|
};
|
|
//=============================================================================
|
|
// * Get Battle Status Y Offset
|
|
//=============================================================================
|
|
Game_Enemy.prototype.battleStatusYOffset = function () {
|
|
var meta = this.enemy().meta;
|
|
if (meta.StatusYOffset) { return Number(meta.StatusYOffset); };
|
|
return 0;
|
|
};
|
|
//=============================================================================
|
|
// * Apply Battle Positions Offsets
|
|
//=============================================================================
|
|
Game_Enemy.prototype.applyBattlePositionOffsets = function () {
|
|
// Get Data
|
|
var data = $dataEnemies[this.baseId()];
|
|
// Set Offset if it does exist
|
|
if (data.meta.PositionOffsetX === undefined) {
|
|
var match = data.note.match(/<(?:Position Offset X):[ ]*([-]?\d+)>/i);
|
|
data.meta.PositionOffsetX = match ? Number(match[1]) : 0
|
|
};
|
|
// Set Offset if it does exist
|
|
if (data.meta.PositionOffsetY === undefined) {
|
|
var match = data.note.match(/<(?:Position Offset Y):[ ]*([-]?\d+)>/i);
|
|
data.meta.PositionOffsetY = match ? Number(match[1]) : 0
|
|
};
|
|
// Increase Position by X & YOffsets
|
|
this._screenX += data.meta.PositionOffsetX;
|
|
this._screenY += data.meta.PositionOffsetY;
|
|
};
|
|
//=============================================================================
|
|
// * Get Battle Damage X Offset
|
|
//=============================================================================
|
|
Game_Enemy.prototype.battleDamageXOffset = function () {
|
|
var meta = this.enemy().meta;
|
|
if (meta.DamageOffsetX) { return Number(meta.DamageOffsetX); };
|
|
return 0;
|
|
};
|
|
//=============================================================================
|
|
// * Get Battle Damage Y Offset
|
|
//=============================================================================
|
|
Game_Enemy.prototype.battleDamageYOffset = function () {
|
|
var meta = this.enemy().meta;
|
|
if (meta.DamageOffsetY) { return Number(meta.DamageOffsetY); };
|
|
return 0;
|
|
};
|
|
|
|
|
|
//=============================================================================
|
|
// ** Game_CharacterBase
|
|
//-----------------------------------------------------------------------------
|
|
// The superclass of Game_Character. It handles basic information, such as
|
|
// coordinates and images, shared by all characters.
|
|
//=============================================================================
|
|
// Alias Listing
|
|
//=============================================================================
|
|
_TDS_.OmoriBASE.Game_CharacterBase_initMembers = Game_CharacterBase.prototype.initMembers;
|
|
_TDS_.OmoriBASE.Game_CharacterBase_update = Game_CharacterBase.prototype.update;
|
|
_TDS_.OmoriBASE.Game_CharacterBase_setImage = Game_CharacterBase.prototype.setImage;
|
|
//=============================================================================
|
|
// * Initialize Members
|
|
//=============================================================================
|
|
Game_CharacterBase.prototype.initMembers = function () {
|
|
// Set Single Frame Flag to false
|
|
this._singleFrame = false;
|
|
// Run Original Function
|
|
_TDS_.OmoriBASE.Game_CharacterBase_initMembers.call(this);
|
|
// Clear Bobble
|
|
this.clearBobble();
|
|
// Clear Input Icon
|
|
this.clearInputIcon();
|
|
// Clear Spin
|
|
this.clearSpin();
|
|
// Clear Shadow
|
|
this.clearShadow();
|
|
// Clear custom Frame Animations
|
|
this.clearCustomFrameAnimation();
|
|
|
|
// this._customFrameAnimationList.push({duration: 20, name: 'DW_OMORI', index: 4, direction: 2, frame: 0})
|
|
// this._customFrameAnimationList.push({duration: 20, name: 'DW_OMORI', index: 4, direction: 2, frame: 1})
|
|
// this._customFrameAnimationList.push({duration: 20, name: 'DW_OMORI', index: 4, direction: 2, frame: 2})
|
|
};
|
|
//=============================================================================
|
|
// * Frame Update
|
|
//=============================================================================
|
|
Game_CharacterBase.prototype.update = function () {
|
|
// Run Original Function
|
|
_TDS_.OmoriBASE.Game_CharacterBase_update.call(this);
|
|
// Update Spinning
|
|
this.updateSpinning();
|
|
// Update Custom Frame Animation
|
|
this.updateCustomFrameAnimation();
|
|
};
|
|
//=============================================================================
|
|
// * Determine if Single Frame
|
|
//=============================================================================
|
|
Game_CharacterBase.prototype.isSingleFrame = function () { return this._singleFrame; };
|
|
//=============================================================================
|
|
// * Get Position Auto Move Direction
|
|
//=============================================================================
|
|
Game_CharacterBase.prototype.positionAutoMoveDirection = function () {
|
|
return $gameMap.positionAutoMoveDirection(this._x, this._y);
|
|
};
|
|
//=============================================================================
|
|
// * Set Image
|
|
//=============================================================================
|
|
Game_CharacterBase.prototype.setImage = function (characterName, characterIndex) {
|
|
// Run Original Function
|
|
_TDS_.OmoriBASE.Game_CharacterBase_setImage.call(this, characterName, characterIndex);
|
|
// Set Single Frame Flag
|
|
this._singleFrame = characterName.match(/\[SF\]/g) !== null;
|
|
};
|
|
//=============================================================================
|
|
// * Clear Shadow
|
|
//=============================================================================
|
|
Game_CharacterBase.prototype.clearShadow = function () { this._shadow = null; };
|
|
//=============================================================================
|
|
// * Setup Shadow
|
|
//=============================================================================
|
|
Game_CharacterBase.prototype.setupShadow = function () {
|
|
// Setup Shadow
|
|
this._shadow = { opacity: 160, angle: 180, x: 0, y: 0, scaleY: 1 };
|
|
// Return Shadow
|
|
return this._shadow;
|
|
};
|
|
//=============================================================================
|
|
// * Clear Bobble
|
|
//=============================================================================
|
|
Game_CharacterBase.prototype.clearBobble = function () {
|
|
// Set Bobble to null
|
|
this._bobble = null;
|
|
};
|
|
//=============================================================================
|
|
// * Set Bobble
|
|
//=============================================================================
|
|
Game_CharacterBase.prototype.setBobble = function (base, speed, amplitude) {
|
|
// Set Bobble Object
|
|
this._bobble = { base: 0.5, speed: 0.05, amplitude: 1.25 };
|
|
// Set Values
|
|
if (base !== undefined) { this._bobble.base = base; };
|
|
if (speed !== undefined) { this._bobble.speed = speed; };
|
|
if (amplitude !== undefined) { this._bobble.amplitude = amplitude; };
|
|
};
|
|
//=============================================================================
|
|
// * Clear Input Icon
|
|
//=============================================================================
|
|
Game_CharacterBase.prototype.clearInputIcon = function () {
|
|
// Set Input Icon to null
|
|
this._inputIcon = null;
|
|
};
|
|
//=============================================================================
|
|
// * Setup Input Icon
|
|
//=============================================================================
|
|
Game_CharacterBase.prototype.setupInputIcon = function (input, key = false, gamepad = false) {
|
|
// Set Input Icon Data
|
|
this._inputIcon = { input: input, key: key, gamepad: gamepad };
|
|
// Return Input Icon Data
|
|
return this._inputIcon;
|
|
}
|
|
//=============================================================================
|
|
// * Clear Spin
|
|
//=============================================================================
|
|
Game_CharacterBase.prototype.clearSpin = function () {
|
|
this._spinCount = 0;
|
|
this._spinDelay = 0;
|
|
this._spinDelayCount = 0;
|
|
}
|
|
//=============================================================================
|
|
// * Start Spin
|
|
//=============================================================================
|
|
Game_CharacterBase.prototype.startSpin = function (times, delay = 10) {
|
|
this._spinCount = times;
|
|
this._spinDelay = delay;
|
|
this._spinDelayCount = delay;
|
|
}
|
|
//=============================================================================
|
|
// * Update Spinning
|
|
//=============================================================================
|
|
Game_CharacterBase.prototype.updateSpinning = function () {
|
|
// If Spin count is more than 0
|
|
if (this._spinCount > 0) {
|
|
// Decrease Spin delay count
|
|
this._spinDelayCount--;
|
|
// If Spin Delay count is 0 or less
|
|
if (this._spinDelayCount <= 0) {
|
|
// Decrease Spin Count
|
|
this._spinCount--;
|
|
// Change
|
|
switch (this.direction()) {
|
|
case 2: this._direction = 6; break;
|
|
case 4: this._direction = 2; break;
|
|
case 6: this._direction = 8; break;
|
|
case 8: this._direction = 4; break;
|
|
};
|
|
// Reset Spin Delay Count
|
|
this._spinDelayCount = this._spinDelay;
|
|
};
|
|
};
|
|
};
|
|
//=============================================================================
|
|
// * Clear Custom Frame Animations
|
|
//=============================================================================
|
|
Game_CharacterBase.prototype.clearCustomFrameAnimation = function () {
|
|
this._customFrameAnimation = null;
|
|
};
|
|
//=============================================================================
|
|
// * Clear Custom Frame Animations
|
|
//=============================================================================
|
|
Game_CharacterBase.prototype.startCustomFrameAnimation = function (list, repeats = 0) {
|
|
// Get First Animation
|
|
var firstAnim = list[0];
|
|
// Set Custom Frame Animation
|
|
this._customFrameAnimation = { index: 0, count: firstAnim.duration, repeat: repeats, animationList: list.clone() }
|
|
// If first frame has SE play it
|
|
if (firstAnim.se) { AudioManager.playSe(firstAnim.se); };
|
|
};
|
|
//=============================================================================
|
|
// * Start Preset Frame Animation
|
|
//=============================================================================
|
|
Game_CharacterBase.prototype.startPresetFrameAnimation = function (name) {
|
|
|
|
// switch (name) {
|
|
// case 'TEST':
|
|
// var dur = 10
|
|
// var name = 'DW_OMORI'
|
|
// var list = [];
|
|
|
|
// switch (this.direction()) {
|
|
// case 2: // Down
|
|
// list.push({duration: dur, name: name, index: 7, direction: 4, frame: 0})
|
|
// list.push({duration: dur, name: name, index: 7, direction: 4, frame: 1})
|
|
// list.push({duration: dur, name: name, index: 7, direction: 4, frame: 2})
|
|
// list.push({duration: dur, name: name, index: 7, direction: 4, frame: 1, se: {name: '', volume: 100, pitch: 100, pan: 100}})
|
|
// break;
|
|
// case 4: // Left
|
|
// break;
|
|
// case 6: // Right
|
|
// break;
|
|
// case 8: // Up
|
|
// break;
|
|
// };
|
|
// this.startCustomFrameAnimation(list, 2)
|
|
// break;
|
|
// case 'STAB':
|
|
|
|
|
|
// break;
|
|
// }
|
|
};
|
|
//=============================================================================
|
|
// * Update Custom Frame Animation
|
|
//=============================================================================
|
|
Game_CharacterBase.prototype.updateCustomFrameAnimation = function () {
|
|
// Get Data
|
|
var data = this._customFrameAnimation;
|
|
// If Custom frame Animation has animations
|
|
if (data) {
|
|
// Get Animation
|
|
var anim = data.animationList[data.index];
|
|
// Reduce Duration
|
|
data.count--;
|
|
// Set Animation Data
|
|
this.setImage(anim.name, anim.index);
|
|
this._direction = anim.direction;
|
|
this.setPattern(anim.frame);
|
|
// If Data count is 0 or less
|
|
if (data.count <= 0) {
|
|
// Increase Index
|
|
data.index = (data.index + 1) % data.animationList.length;
|
|
// Get New Animation
|
|
var newAnim = data.animationList[data.index];
|
|
// Reset Count
|
|
data.count = newAnim.duration;
|
|
// If new animation has sound effect, play it
|
|
if (newAnim.se) { AudioManager.playSe(se); };
|
|
|
|
if (data.index >= data.animationList.length - 1) {
|
|
// Decrease Repeats
|
|
data.repeat--;
|
|
// If repeat is 0 or less
|
|
if (data.repeat <= 0) {
|
|
this.clearCustomFrameAnimation();
|
|
return;
|
|
}
|
|
};
|
|
};
|
|
};
|
|
};
|
|
|
|
|
|
|
|
//=============================================================================
|
|
// ** Game_Player
|
|
//-----------------------------------------------------------------------------
|
|
// The game object class for the player. It contains event starting
|
|
// determinants and map scrolling functions.
|
|
//=============================================================================
|
|
// Alias Listing
|
|
//=============================================================================
|
|
_TDS_.OmoriBASE.Game_Player_initMembers = Game_Player.prototype.initMembers;
|
|
_TDS_.OmoriBASE.Game_Player_getInputDirection = Game_Player.prototype.getInputDirection;
|
|
_TDS_.OmoriBASE.Game_Player_updateNonmoving = Game_Player.prototype.updateNonmoving
|
|
//=============================================================================
|
|
// * Initialize Members
|
|
//=============================================================================
|
|
Game_Player.prototype.initMembers = function () {
|
|
// Clear Blocked Inputs
|
|
this.clearBlockedMovementInputs();
|
|
// Clear Ambience Data
|
|
this.clearAmbienceData();
|
|
// Run Original Function
|
|
_TDS_.OmoriBASE.Game_Player_initMembers.call(this);
|
|
};
|
|
//=============================================================================
|
|
// * Clear Blocked Inputs
|
|
//=============================================================================
|
|
Game_Player.prototype.clearBlockedMovementInputs = function () {
|
|
// Clear Blocked Inputs Array
|
|
this._blockedMovementInputs = [];
|
|
};
|
|
//=============================================================================
|
|
// * Block Movement Inputs
|
|
//=============================================================================
|
|
Game_Player.prototype.blockMovementInputs = function () {
|
|
// Go through directions
|
|
for (var i = 0; i < arguments.length; i++) {
|
|
// Get Direction
|
|
var dir = arguments[i]
|
|
// Get Index
|
|
var index = this._blockedMovementInputs.indexOf(dir)
|
|
// If blocked movement inputs does not contain direction
|
|
if (index === -1) { this._blockedMovementInputs.push(dir) }
|
|
};
|
|
};
|
|
//=============================================================================
|
|
// * Unblock Movement Inputs
|
|
//=============================================================================
|
|
Game_Player.prototype.unblockMovementInputs = function () {
|
|
// Go through directions
|
|
for (var i = 0; i < arguments.length; i++) {
|
|
// Get Direction
|
|
var dir = arguments[i]
|
|
// Get Index
|
|
var index = this._blockedMovementInputs.indexOf(dir)
|
|
// If blocked movement inputs contains input
|
|
if (index > -1) { this._blockedMovementInputs.splice(index, 1) }
|
|
};
|
|
};
|
|
//=============================================================================
|
|
// * Get Input Direction
|
|
//=============================================================================
|
|
Game_Player.prototype.getInputDirection = function () {
|
|
// Get Original Direction
|
|
var direction = _TDS_.OmoriBASE.Game_Player_getInputDirection.call(this);
|
|
// If blocked movement inputs exist
|
|
if (this._blockedMovementInputs) {
|
|
// Get Index
|
|
var index = this._blockedMovementInputs.indexOf(direction)
|
|
// If Index is more than -1
|
|
if (index > -1) { return 0; };
|
|
};
|
|
// Return direction
|
|
return direction;
|
|
};
|
|
//=============================================================================
|
|
// * Update Non Moving
|
|
//=============================================================================
|
|
Game_Player.prototype.updateNonmoving = function (wasMoving) {
|
|
// Run Original Function
|
|
_TDS_.OmoriBASE.Game_Player_updateNonmoving.call(this, wasMoving);
|
|
// If No map event is running
|
|
if (!$gameMap.isEventRunning()) {
|
|
// If was moving
|
|
if (wasMoving) {
|
|
// Get Position Auto Move Direction
|
|
var dir = this.positionAutoMoveDirection();
|
|
// If it's more than 0 move in that direction
|
|
if (dir > 0) {
|
|
this.moveStraight(dir);
|
|
// this.gatherFollowers();
|
|
};
|
|
};
|
|
};
|
|
};
|
|
//=============================================================================
|
|
// * Clear Ambience Data
|
|
//=============================================================================
|
|
Game_Player.prototype.clearAmbienceData = function () {
|
|
// Initialize Ambience Data
|
|
this._ambienceData = { name: '', x: 0, y: 0, opacity: 255, useCustomPosition: false };
|
|
};
|
|
//=============================================================================
|
|
// * Get Ambience Screen X
|
|
//=============================================================================
|
|
Game_Player.prototype.ambienceScreenX = function () {
|
|
// Get Ambience Data
|
|
var data = this._ambienceData;
|
|
if (data.useCustomPosition) { return data.x; };
|
|
return this.screenX();
|
|
}
|
|
//=============================================================================
|
|
// * Get Ambience Screen Y
|
|
//=============================================================================
|
|
Game_Player.prototype.ambienceScreenY = function () {
|
|
// Get Ambience Data
|
|
var data = this._ambienceData;
|
|
if (data.useCustomPosition) { return data.y; };
|
|
return this.screenY() - 10;
|
|
}
|
|
|
|
|
|
|
|
//=============================================================================
|
|
// ** Game_Follower
|
|
//-----------------------------------------------------------------------------
|
|
// The game object class for a follower. A follower is an allied character,
|
|
// other than the front character, displayed in the party.
|
|
//=============================================================================
|
|
// * Update Position Audio Move
|
|
//=============================================================================
|
|
Game_Follower.prototype.updatePositionAutoMove = function () {
|
|
// Get Position Auto Move Direction
|
|
var dir = this.positionAutoMoveDirection();
|
|
// If it's more than 0 move in that direction
|
|
if (dir > 0 && !this.isMoving()) {
|
|
this.moveStraight(dir);
|
|
return true;
|
|
}
|
|
return false;
|
|
};
|
|
|
|
|
|
|
|
//=============================================================================
|
|
// ** Game_Followers
|
|
//-----------------------------------------------------------------------------
|
|
// The wrapper class for a follower array.
|
|
//=============================================================================
|
|
// Alias Listing
|
|
//=============================================================================
|
|
_TDS_.OmoriBASE.Game_Followers_update = Game_Followers.prototype.update
|
|
//=============================================================================
|
|
// * Frame Update
|
|
//=============================================================================
|
|
Game_Followers.prototype.update = function () {
|
|
if (!this.areGathering()) {
|
|
var lastIndex = 0;
|
|
for (var i = 0; i < this._data.length; i++) {
|
|
var follower = this._data[i];
|
|
if (!follower.isMoving()) {
|
|
var moved = follower.updatePositionAutoMove();
|
|
if (moved) {
|
|
this.updateMove()
|
|
lastIndex = i + 1;
|
|
};
|
|
};
|
|
// If last index is more than 0
|
|
if (lastIndex > 0) {
|
|
|
|
// for (var i = this._data.length - 1; i >= 0; i--) {
|
|
// var precedingCharacter = (i > 0 ? this._data[i - 1] : $gamePlayer);
|
|
// this._data[i].chaseCharacter(precedingCharacter);
|
|
// }
|
|
// for (var i = lastIndex; i >= 0; i--) {
|
|
|
|
// if (i <= 0) { break; }
|
|
for (var i = lastIndex; i < this._data.length; i++) {
|
|
var prevFollower = this._data[i - 1];
|
|
var follower = this._data[i];
|
|
follower.chaseCharacter(prevFollower);
|
|
};
|
|
};
|
|
};
|
|
};
|
|
// Run Original Function
|
|
_TDS_.OmoriBASE.Game_Followers_update.call(this);
|
|
};
|
|
|
|
|
|
//=============================================================================
|
|
// ** Window_Base
|
|
//-----------------------------------------------------------------------------
|
|
// The superclass of all windows within the game.
|
|
//=============================================================================
|
|
// Alias Listing
|
|
//=============================================================================
|
|
_TDS_.OmoriBASE.Window_Base_initialize = Window_Base.prototype.initialize;
|
|
_TDS_.OmoriBASE.Window_Base_processEscapeCharacter = Window_Base.prototype.processEscapeCharacter;
|
|
_TDS_.OmoriBASE.Window_Base_convertEscapeCharacters = Window_Base.prototype.convertEscapeCharacters
|
|
_TDS_.OmoriBASE.Window_Base_convertExtraEscapeCharacters = Window_Base.prototype.convertExtraEscapeCharacters
|
|
//=============================================================================
|
|
// * Class Variables
|
|
//=============================================================================
|
|
Window_Base._faceWidth = 106;
|
|
Window_Base._faceHeight = 106;
|
|
//=============================================================================
|
|
// * Object Initialization
|
|
//=============================================================================
|
|
Window_Base.prototype.initialize = function (x, y, width, height) {
|
|
// Set Openness Type to default
|
|
this._opennessType = this.standardOpennessType();
|
|
// Run Original Function
|
|
_TDS_.OmoriBASE.Window_Base_initialize.call(this, x, y, width, height);
|
|
};
|
|
//=============================================================================
|
|
// * Settings
|
|
//=============================================================================
|
|
Window_Base.prototype.standardBackOpacity = function () { return 255; };
|
|
//=============================================================================
|
|
// * Openness Type (0: Vertical, 1: Horizontal, 2: All)
|
|
//=============================================================================
|
|
Window_Base.prototype.standardOpennessType = function () { return 0; };
|
|
//=============================================================================
|
|
// * Open & Close Speeds
|
|
//=============================================================================
|
|
Window_Base.prototype.openSpeed = function () { return 32; };
|
|
Window_Base.prototype.closeSpeed = function () { return 32; };
|
|
//=============================================================================
|
|
// * Convert Escape Character
|
|
//=============================================================================
|
|
Window_Base.prototype.convertEscapeCharacters = function (text) {
|
|
// Get Text
|
|
var text = _TDS_.OmoriBASE.Window_Base_convertEscapeCharacters.call(this, text);
|
|
// Get Last Gained Item
|
|
var item = $gameParty.lastGainedItem();
|
|
// If Item Exists
|
|
if (item) {
|
|
// Get Amount
|
|
var amount = $gameParty._lastItemData.amount;
|
|
// If Amount is more than 0
|
|
if (amount > 0) {
|
|
|
|
if (amount === 1) {
|
|
// Replace Code with Item Name
|
|
text = text.replace(/\x1bitemget/ig, item.name);
|
|
} else {
|
|
// Replace Code with Item Name
|
|
text = text.replace(/\x1bitemget/ig, item.name + ' x' + $gameParty._lastItemData.amount);
|
|
};
|
|
} else {
|
|
if (amount < -1) {
|
|
// Replace Code with Item Name
|
|
text = text.replace(/\x1bitemget/ig, item.name + ' x' + Math.abs($gameParty._lastItemData.amount));
|
|
} else {
|
|
// Replace Code with Item Name
|
|
text = text.replace(/\x1bitemget/ig, item.name);
|
|
};
|
|
};
|
|
} else {
|
|
text = text.replace(/\x1bitemget/ig, 'NULL ID #');
|
|
};
|
|
// Return Text
|
|
return text;
|
|
};
|
|
//=============================================================================
|
|
// * Convert Extra Escape Character
|
|
//=============================================================================
|
|
Window_Base.prototype.convertExtraEscapeCharacters = function (text) {
|
|
// \NI[n]
|
|
text = text.replace(/\x1bNI\[(\d+)\]/gi, function () {
|
|
// Get Item
|
|
var item = $dataItems[parseInt(arguments[1])];
|
|
// Get Color Text
|
|
var colorText = '\x1bC[%1]'.format(this.itemColorIndex(item));
|
|
return colorText + item.name + '\x1bc[0]';
|
|
}.bind(this));
|
|
|
|
// \NW[n]
|
|
text = text.replace(/\x1bNW\[(\d+)\]/gi, function () {
|
|
// Get Weapon
|
|
var item = $dataWeapons[parseInt(arguments[1])];
|
|
// Get Color Text
|
|
var colorText = '\x1bC[%1]'.format(this.itemColorIndex(item));
|
|
return colorText + item.name + '\x1bc[0]';
|
|
}.bind(this));
|
|
|
|
// \NA[n]
|
|
text = text.replace(/\x1bNA\[(\d+)\]/gi, function () {
|
|
// Get Armor
|
|
var item = $dataArmors[parseInt(arguments[1])];
|
|
// Get Color Text
|
|
var colorText = '\x1bC[%1]'.format(this.itemColorIndex(item));
|
|
return colorText + item.name + '\x1bc[0]';
|
|
}.bind(this));
|
|
// Return Original Function
|
|
return _TDS_.OmoriBASE.Window_Base_convertExtraEscapeCharacters.call(this, text);
|
|
};
|
|
//=============================================================================
|
|
// * Process Escape Character
|
|
//=============================================================================
|
|
Window_Base.prototype.processEscapeCharacter = function (code, textState) {
|
|
// Run Original Function
|
|
_TDS_.OmoriBASE.Window_Base_processEscapeCharacter.call(this, code, textState);
|
|
// Code Switch Case
|
|
switch (code) {
|
|
case 'ITEMGET':
|
|
break
|
|
case 'DII': // Draw Input Icon
|
|
// Get Match
|
|
var match = /^\[(.+)\]/.exec(textState.text.slice(textState.index));
|
|
// Increase Text State Index
|
|
textState.index += match[0].length;
|
|
// Process Draw Input Icon
|
|
this.processDrawInputIcon(match[1], textState)
|
|
// console.log(code)
|
|
break;
|
|
};
|
|
};
|
|
//=============================================================================
|
|
// * Process Draw Input Icon
|
|
//=============================================================================
|
|
Window_Base.prototype.processDrawInputIcon = function (input, textState) {
|
|
// Get Key
|
|
const offset_data = LanguageManager.getMessageData("XX_BLUE.Window_Base").processDrawInputIconOffset
|
|
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 + offset_data[0], textState.y + offset_data[1], rect.width, textState.height);
|
|
// Increase Texstate X position
|
|
textState.x += rect.width + 4;
|
|
};
|
|
//=============================================================================
|
|
// * Draw Black Letter Text
|
|
//=============================================================================
|
|
Window_Base.prototype.drawBlackLetterText = function (text, x, y, space = 32, offset = 0) {
|
|
// Split Letters
|
|
var letters = text.split('');
|
|
// Initialize Indexes
|
|
var indexes = [];
|
|
// Go Through Letters
|
|
for (var i = 0; i < letters.length; i++) {
|
|
// Get Code
|
|
var code = letters[i].toUpperCase().charCodeAt(0);
|
|
// If Code is valid for alphabet
|
|
if (code > 64 && code < 91) {
|
|
// Add Letter Index
|
|
indexes.push((code - 64) - 1);
|
|
} else {
|
|
// Add Empty Index
|
|
indexes.push(-1);
|
|
};
|
|
};
|
|
// Get bitmap
|
|
var bitmap = ImageManager.loadSystem('Blackletters_menu');
|
|
// Set Starting X
|
|
var sx = x;
|
|
// Go Through Indexes
|
|
for (var i = 0; i < indexes.length; i++) {
|
|
// Get Alphabet Index
|
|
var index = indexes[i];
|
|
if (index > -1) {
|
|
var bx = (index % 5) * 32
|
|
var by = Math.floor(index / 5) * 32
|
|
this.contents.blt(bitmap, bx, by, 32, 32, sx, y);
|
|
// Increase SX
|
|
// sx += 32;
|
|
sx += (space + offset);
|
|
} else {
|
|
// Increase SX by space
|
|
sx += space;
|
|
};
|
|
};
|
|
};
|
|
//=============================================================================
|
|
// * Get Item Color Index
|
|
//=============================================================================
|
|
Window_Base.prototype.itemColorIndex = function (item) {
|
|
// If Item is consumable
|
|
if (DataManager.isConsumableItem(item)) { return 3 };
|
|
|
|
if (DataManager.isWeapon(item)) { return 2; }
|
|
|
|
// Return 0 by default
|
|
return 0;
|
|
};
|
|
//=============================================================================
|
|
// * Draw MP Icon
|
|
//=============================================================================
|
|
Window_Base.prototype.drawHPIcon = function (x, y) {
|
|
// Get Icon
|
|
var icon = ImageManager.loadSystem('hp_icon');
|
|
this.contents.blt(icon, 0, 0, icon.width, icon.height, x, y)
|
|
};
|
|
//=============================================================================
|
|
// * Draw MP Icon
|
|
//=============================================================================
|
|
Window_Base.prototype.drawMPIcon = function (x, y) {
|
|
// Get Icon
|
|
var icon = ImageManager.loadSystem('mp_icon');
|
|
this.contents.blt(icon, 0, 0, icon.width, icon.height, x, y)
|
|
};
|
|
//=============================================================================
|
|
// * Draw Short Actor HP
|
|
//=============================================================================
|
|
Window_Base.prototype.drawShortActorHP = function (actor, x, y) {
|
|
// Get Icon
|
|
var icon = ImageManager.loadSystem('hp_icon');
|
|
this.contents.blt(icon, 0, 0, icon.width, icon.height, x, y)
|
|
this.contents.fontSize = LanguageManager.getMessageData("XX_BLUE.Window_Base").drawShortActorHP_contents_fontsize;
|
|
this.changeTextColor(this.hpColor(actor));
|
|
this.drawText(actor.hp, x + icon.width + 4, y - 12, 100);
|
|
this.resetFontSettings();
|
|
};
|
|
//=============================================================================
|
|
// * Draw Item Icon
|
|
//=============================================================================
|
|
Window_Base.prototype.drawItemIcon = function (item, x, y, rate = 1.0) {
|
|
// Init Variables
|
|
var name, rows, columns;
|
|
// Get Item Graphics Data
|
|
var data = DataManager.getItemIconGraphicsData(item);
|
|
// Apply Icon Data
|
|
var bitmap = ImageManager.loadSystem(data.name);
|
|
// Transfer Icon Bitmap
|
|
bitmap.addLoadListener(() => {
|
|
var width = bitmap.width / data.columns;
|
|
var height = bitmap.height / data.rows;
|
|
var sX = (data.index % data.columns) * width;
|
|
var sY = Math.floor(data.index / data.columns) * height;
|
|
this.contents.blt(bitmap, sX, sY, width, height, x, y, width * rate, height * rate)
|
|
});
|
|
// this.contents.fillRect(x, y, width * rate, height * rate, 'rgba(255, 0, 0, 0.5)');
|
|
};
|
|
//=============================================================================
|
|
// * Draw Short Actor MP
|
|
//=============================================================================
|
|
Window_Base.prototype.drawShortActorMP = function (actor, x, y) {
|
|
// Get Icon
|
|
var icon = ImageManager.loadSystem('mp_icon');
|
|
this.contents.blt(icon, 0, 0, icon.width, icon.height, x, y)
|
|
this.contents.fontSize = 20;
|
|
this.changeTextColor(this.mpColor(actor));
|
|
this.drawText(actor.mp, x + icon.width + 4, y - 12, 100);
|
|
this.resetFontSettings();
|
|
};
|
|
//=============================================================================
|
|
// * Update Open
|
|
//=============================================================================
|
|
Window_Base.prototype.updateOpen = function () {
|
|
if (this._opening) {
|
|
this.openness += this.openSpeed();
|
|
if (this.isOpen()) { this._opening = false; };
|
|
}
|
|
};
|
|
//=============================================================================
|
|
// * Update Close
|
|
//=============================================================================
|
|
Window_Base.prototype.updateClose = function () {
|
|
if (this._closing) {
|
|
this.openness -= this.closeSpeed();
|
|
if (this.isClosed()) { this._closing = false; };
|
|
}
|
|
};
|
|
//=============================================================================
|
|
// * Determine if using gold icon
|
|
//=============================================================================
|
|
Window_Base.prototype.worldGoldIcon = function () {
|
|
// World Index switch case
|
|
switch (SceneManager.currentWorldIndex()) {
|
|
case 1: return 12; break;
|
|
case 2: return 13; break;
|
|
}
|
|
return 12;
|
|
};
|
|
//=============================================================================
|
|
// * Determine if using gold icon
|
|
//=============================================================================
|
|
Window_Base.prototype.worldCurrencyUnit = function () {
|
|
// World Index switch case
|
|
const loc_data = LanguageManager.getMessageData("XX_BLUE.World_Currency_Unit")
|
|
switch (SceneManager.currentWorldIndex()) {
|
|
case 1: return loc_data.clams; break;
|
|
case 2: return loc_data.dollars; break;
|
|
};
|
|
return loc_data.clams;
|
|
};
|
|
//=============================================================================
|
|
// * Determine if using gold icon
|
|
//=============================================================================
|
|
Window_Base.prototype.usingGoldIcon = function (unit) {
|
|
if (unit !== TextManager.currencyUnit) return false;
|
|
// If Gold icon is more than 0
|
|
if (Yanfly.Icon.Gold > 0) {
|
|
// Set Gold Icon
|
|
Yanfly.Icon.Gold = this.worldGoldIcon();
|
|
};
|
|
return Yanfly.Icon.Gold > 0;
|
|
};
|
|
|
|
|
|
|
|
//=============================================================================
|
|
// ** Window_Selectable
|
|
//-----------------------------------------------------------------------------
|
|
// The window class with cursor movement and scroll functions.
|
|
//=============================================================================
|
|
// Alias Listing
|
|
//=============================================================================
|
|
_TDS_.OmoriBASE.Window_Selectable_initialize = Window_Selectable.prototype.initialize;
|
|
_TDS_.OmoriBASE.Window_Selectable_update = Window_Selectable.prototype.update;
|
|
_TDS_.OmoriBASE.Window_Selectable_updateCursor = Window_Selectable.prototype.updateCursor;
|
|
_TDS_.OmoriBASE.Window_Selectable_itemRectForText = Window_Selectable.prototype.itemRectForText;
|
|
//=============================================================================
|
|
// * Object Initialization
|
|
//=============================================================================
|
|
Window_Selectable.prototype.initialize = function (x, y, width, height) {
|
|
// Run Original Function
|
|
_TDS_.OmoriBASE.Window_Selectable_initialize.call(this, x, y, width, height);
|
|
// If Using Custom Cursor Rect Sprite
|
|
if (this.isUsingCustomCursorRectSprite()) {
|
|
// Initialize Custom Rect
|
|
this.initCustomCursorRect();
|
|
};
|
|
};
|
|
//=============================================================================
|
|
// * Frame Update
|
|
//=============================================================================
|
|
Window_Selectable.prototype.update = function () {
|
|
// Run Original Function
|
|
_TDS_.OmoriBASE.Window_Selectable_update.call(this);
|
|
// Update Custom Rect Sprite Visibility
|
|
this.updateCustomCursorRectSpriteVisibility();
|
|
};
|
|
//=============================================================================
|
|
// * Determine if using custom cursor rectangle
|
|
//=============================================================================
|
|
Window_Selectable.prototype.isUsingCustomCursorRectSprite = function () { return false; };
|
|
//=============================================================================
|
|
// * Determine if custom cursor sprite should be visible
|
|
//=============================================================================
|
|
Window_Selectable.prototype.isCustomCursorRectSpriteVisible = function () {
|
|
if (this.openness < 255) { return false; };
|
|
if (!this.visible) { return false; };
|
|
if (!this.isCursorVisible()) { return false; };
|
|
if (this.index() < 0) { return false; };
|
|
return true;
|
|
};
|
|
//=============================================================================
|
|
// * Get Custom Cursor Rect Offsets
|
|
//=============================================================================
|
|
Window_Selectable.prototype.customCursorRectXOffset = function () { return 8; }
|
|
Window_Selectable.prototype.customCursorRectYOffset = function () { return 0; }
|
|
Window_Selectable.prototype.customCursorRectTextXOffset = function () { return 16; }
|
|
Window_Selectable.prototype.customCursorRectTextYOffset = function () { return 0; }
|
|
Window_Selectable.prototype.customCursorRectTextWidthOffset = function () { return 0; }
|
|
Window_Selectable.prototype.customCursorRectBitmapName = function () { return 'cursor_menu'; }
|
|
//=============================================================================
|
|
// * Create Custom Cursor Rect
|
|
//=============================================================================
|
|
Window_Selectable.prototype.initCustomCursorRect = function () {
|
|
// Initialize Cursor Rect Sprite
|
|
this._customCursorsSprites = [];
|
|
// Create Custom Cursor Rect Sprite Container
|
|
this._customCursorRectSpriteContainer = new Sprite();
|
|
this.addChild(this._customCursorRectSpriteContainer);
|
|
// Create Custom Cursor Rect Sprite
|
|
this._customCursorRectSprite = new Sprite_WindowCustomCursor(undefined, this.customCursorRectBitmapName());
|
|
this._customCursorRectSpriteContainer.addChild(this._customCursorRectSprite);
|
|
};
|
|
//=============================================================================
|
|
// * Update Custom Cursor Rect Sprite Visibility
|
|
//=============================================================================
|
|
Window_Selectable.prototype.updateCustomCursorRectSpriteVisibility = function () {
|
|
// Get Sprite
|
|
var sprite = this._customCursorRectSprite;
|
|
// If Sprite exists set visibility
|
|
if (sprite) { sprite.visible = this.isCustomCursorRectSpriteVisible(); };
|
|
// Custom Cursor Sprites Exist
|
|
if (this._customCursorsSprites) {
|
|
// Go Through Sprites
|
|
for (var i = 0; i < this._customCursorsSprites.length; i++) {
|
|
// Go Through Sprites
|
|
var sprite = this._customCursorsSprites[i];
|
|
// If Sprite exists set visibility
|
|
if (sprite) { sprite.visible = this.isCustomCursorRectSpriteVisible(); };
|
|
};
|
|
};
|
|
};
|
|
//=============================================================================
|
|
// * Update Custom Cursor Rect Sprite
|
|
//=============================================================================
|
|
Window_Selectable.prototype.updateCustomCursorRectSprite = function (sprite, index) {
|
|
// If Custom Rect Sprite Exists
|
|
if (sprite) {
|
|
// Get Index
|
|
if (index === undefined) { index = this.index(); }
|
|
// Get Rectangle
|
|
var rect = this.itemRect(index);
|
|
sprite.visible = this.isCustomCursorRectSpriteVisible();
|
|
sprite.x = rect.x + this.customCursorRectXOffset();
|
|
sprite.y = ((rect.y + this.standardPadding()) + Math.floor(rect.height / 2)) + this.customCursorRectYOffset();
|
|
// Set Sprite active flag
|
|
sprite._active = this.active;
|
|
// If Active
|
|
if (this.active) {
|
|
sprite.setColorTone([0, 0, 0, 0]);
|
|
} else {
|
|
sprite.setColorTone([-80, -80, -80, 255]);
|
|
};
|
|
};
|
|
};
|
|
//=============================================================================
|
|
// * Item Rect For Text
|
|
//=============================================================================
|
|
Window_Selectable.prototype.itemRectForText = function (index) {
|
|
// Get Rect
|
|
var rect = _TDS_.OmoriBASE.Window_Selectable_itemRectForText.call(this, index);
|
|
// Adjust Rect by Offset
|
|
rect.x += this.customCursorRectTextXOffset();
|
|
rect.y += this.customCursorRectTextYOffset();
|
|
rect.width += this.customCursorRectTextWidthOffset();
|
|
// Return Rect
|
|
return rect;
|
|
};
|
|
//=============================================================================
|
|
// * Run Original Function
|
|
//=============================================================================
|
|
Window_Selectable.prototype.updateCursor = function () {
|
|
// If Using Custom Cursor Rect Sprite
|
|
if (this.isUsingCustomCursorRectSprite()) {
|
|
// If Custom Cursor Sprites Exist
|
|
if (this._customCursorsSprites) {
|
|
if (this._cursorAll && this._customCursorsSprites.length <= 0) {
|
|
// Get Current Index
|
|
var index = this.index();
|
|
var mainSprite = this._customCursorRectSprite
|
|
// Get Top Row
|
|
var topRow = this.topRow();
|
|
var maxCols = this.maxCols();
|
|
var pageItems = this.maxPageItems();
|
|
// Iterate Page Items
|
|
for (var i = 0; i < pageItems; i++) {
|
|
var tIndex = ((topRow * maxCols) + i);
|
|
// If Top index is the same as main sprite index
|
|
if (tIndex === index) { continue; }
|
|
// Create Sprite
|
|
var sprite = new Sprite_WindowCustomCursor(tIndex, this.customCursorRectBitmapName());
|
|
// Set Sprite Angle
|
|
sprite._angle = mainSprite._angle;
|
|
this._customCursorRectSpriteContainer.addChild(sprite);
|
|
// Initialize Cursor Rect Sprite
|
|
this._customCursorsSprites[i] = sprite;
|
|
};
|
|
} else if (this._customCursorsSprites.length > 0) {
|
|
// Go Through Sprites
|
|
for (var i = 0; i < this._customCursorsSprites.length; i++) {
|
|
// Go Through Sprites
|
|
var sprite = this._customCursorsSprites[i];
|
|
// If Sprite exists set visibility
|
|
if (sprite) { this._customCursorRectSpriteContainer.removeChild(sprite); };
|
|
};
|
|
// Clear Array
|
|
this._customCursorsSprites = [];
|
|
};
|
|
};
|
|
// Update Custom Rect Sprite
|
|
this.updateCustomCursorRectSprite(this._customCursorRectSprite);
|
|
if (this._customCursorsSprites) {
|
|
// Go Through Sprites
|
|
for (var i = 0; i < this._customCursorsSprites.length; i++) {
|
|
// Go Through Sprites
|
|
var sprite = this._customCursorsSprites[i];
|
|
// If Sprite exists set visibility
|
|
if (sprite) { this.updateCustomCursorRectSprite(sprite, sprite._index); };
|
|
};
|
|
};
|
|
return;
|
|
} else {
|
|
// Run Original Function
|
|
_TDS_.OmoriBASE.Window_Selectable_updateCursor.call(this);
|
|
};
|
|
};
|
|
//=============================================================================
|
|
// * Select Available Index
|
|
//=============================================================================
|
|
Window_Selectable.prototype.selectAvailable = function (index) {
|
|
// Set Default Index
|
|
if (index === undefined) { index = this.index(); }
|
|
// Get Top Row & Max Top Row
|
|
var topRow = this.topRow(), maxRow = this.maxTopRow();
|
|
// Select Index
|
|
this.select(Math.min(index, this.maxItems() - 1));
|
|
// Set Top Row if it's beyond the current max
|
|
if (topRow > maxRow) { this.setTopRow(maxRow); }
|
|
};
|
|
|
|
|
|
|
|
|
|
//=============================================================================
|
|
// ** Sprite_Picture
|
|
//-----------------------------------------------------------------------------
|
|
// The sprite for displaying a picture.
|
|
//=============================================================================
|
|
// Alias Listing
|
|
//=============================================================================
|
|
_TDS_.OmoriBASE.Sprite_Picture_updatePosition = Sprite_Picture.prototype.updatePosition;
|
|
//=============================================================================
|
|
// * Select Available Index
|
|
//=============================================================================
|
|
Sprite_Picture.prototype.updatePosition = function () {
|
|
// Run Original Function
|
|
_TDS_.OmoriBASE.Sprite_Picture_updatePosition.call(this);
|
|
// Get Picture
|
|
var picture = this.picture();
|
|
// If Picture is Pinned to Map
|
|
if (picture.isPinnedToMap()) {
|
|
// Set Picture Position
|
|
this.x = picture.x() - ($gameMap.displayX() * $gameMap.tileWidth());
|
|
this.y = picture.y() - ($gameMap.displayY() * $gameMap.tileHeight());
|
|
};
|
|
if (picture.isFollowingShake()) { this.y -= Math.round(2 * $gameScreen.shake()); }
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
//=============================================================================
|
|
// ** Window_OmoMenuHelp
|
|
//-----------------------------------------------------------------------------
|
|
// The window for showing help text
|
|
//=============================================================================
|
|
function Window_OmoMenuHelp() { this.initialize.apply(this, arguments); }
|
|
Window_OmoMenuHelp.prototype = Object.create(Window_Base.prototype);
|
|
Window_OmoMenuHelp.prototype.constructor = Window_OmoMenuHelp;
|
|
//=============================================================================
|
|
// * Object Initialization
|
|
//=============================================================================
|
|
Window_OmoMenuHelp.prototype.initialize = function (width = this.windowWidth(), height = this.windowHeight()) {
|
|
// Super Call
|
|
Window_Base.prototype.initialize.call(this, 0, 0, width, height);
|
|
// Icon Rate
|
|
this._iconRate = 1.0;
|
|
// Set Item to Null
|
|
this.clear();
|
|
};
|
|
//=============================================================================
|
|
// * Settings
|
|
//=============================================================================
|
|
Window_OmoMenuHelp.prototype.standardPadding = function () { return 4; }
|
|
Window_OmoMenuHelp.prototype.windowWidth = function () { return Graphics.width - 22; };
|
|
Window_OmoMenuHelp.prototype.windowHeight = function () { return 114 - 24; }
|
|
Window_OmoMenuHelp.prototype.standardFontSize = function () { return LanguageManager.getMessageData("XX_BLUE.Window_OmoMenuHelp").refresh_description_fontsize; };
|
|
Window_OmoMenuHelp.prototype.calcTextHeight = function () { return 21; }
|
|
//=============================================================================
|
|
// * Refresh
|
|
//=============================================================================
|
|
Window_OmoMenuHelp.prototype.refresh = function () {
|
|
// Clear Contents
|
|
this.contents.clear();
|
|
// If Item Exists
|
|
if (this._item) {
|
|
this.contents.fontSize = LanguageManager.getMessageData("XX_BLUE.Window_OmoMenuHelp").refresh_contents_fontsize;
|
|
this.drawText(this._item.name, 6, -6, 200);
|
|
this.contents.fontSize = this.standardFontSize();
|
|
// replace with drawtextex
|
|
let loc_position = LanguageManager.getMessageData("XX_BLUE.Window_OmoMenuHelp").refresh_position;
|
|
this.drawTextEx(this._item.description, loc_position[0], loc_position[1], 28); // CHANGE: Item descriptions text
|
|
// Get Icon width
|
|
var width = 106 * this._iconRate;
|
|
// Draw Item Icon
|
|
this.drawItemIcon(this._item, this.contents.width - width, 0, this._iconRate);
|
|
// Get Icon Name
|
|
var iconName = this._item.meta.IconName;
|
|
// If Icon Name Exists
|
|
if (iconName) {
|
|
// Get Bitmap
|
|
// var bitmap = ImageManager.loadSystem('/items/' + iconName.trim());
|
|
var bitmap = ImageManager.loadSystem(iconName.trim());
|
|
// Create Icon Bitmap
|
|
bitmap.addLoadListener(() => {
|
|
var icon = new Bitmap(bitmap.width * this._iconRate, bitmap.height * this._iconRate);
|
|
icon.blt(bitmap, 0, 0, bitmap.width, bitmap.height, 0, 0, icon.width, icon.height);
|
|
var padding = this.standardPadding()
|
|
var x = this.contents.width - icon.width;
|
|
var y = this.contents.height - icon.height;
|
|
this.contents.blt(icon, 0, 0, icon.width, icon.height, x, y)
|
|
})
|
|
}
|
|
};
|
|
};
|
|
//=============================================================================
|
|
// * Clear
|
|
//=============================================================================
|
|
Window_OmoMenuHelp.prototype.clear = function () { this.setItem(null); };
|
|
//=============================================================================
|
|
// * Set Battler (Yanfly Compatibility)
|
|
//=============================================================================
|
|
Window_OmoMenuHelp.prototype.setBattler = function () { };
|
|
//=============================================================================
|
|
// * Set Item
|
|
//=============================================================================
|
|
Window_OmoMenuHelp.prototype.setItem = function (item) {
|
|
if (item !== this._item) {
|
|
// Set Item
|
|
this._item = item;
|
|
// Refresh Contents
|
|
this.refresh();
|
|
};
|
|
};
|
|
|
|
|
|
|
|
//=============================================================================
|
|
// ** Window_OmoWindowIndexCursor
|
|
//-----------------------------------------------------------------------------
|
|
// The window for show actor status in the equip scene.
|
|
//=============================================================================
|
|
function Window_OmoWindowIndexCursor() { this.initialize.apply(this, arguments); }
|
|
Window_OmoWindowIndexCursor.prototype = Object.create(Window_Base.prototype);
|
|
Window_OmoWindowIndexCursor.prototype.constructor = Window_OmoWindowIndexCursor;
|
|
//=============================================================================
|
|
// * Object Initialization
|
|
//=============================================================================
|
|
Window_OmoWindowIndexCursor.prototype.initialize = function (index) {
|
|
// Set Set
|
|
this._text = '';
|
|
// Super Call
|
|
Window_Base.prototype.initialize.call(this, 0, 0, 100, 40);
|
|
// Create Index Sprite
|
|
this.createIndexSprite();
|
|
// Refresh
|
|
this.refresh();
|
|
};
|
|
//=============================================================================
|
|
// * Standard Padding
|
|
//=============================================================================
|
|
Window_OmoWindowIndexCursor.prototype.standardPadding = function () { return 10; }
|
|
//=============================================================================
|
|
// * Create Index Sprite
|
|
//=============================================================================
|
|
Window_OmoWindowIndexCursor.prototype.createIndexSprite = function () {
|
|
this._indexSprite = new Sprite(ImageManager.loadSystem('ACSArrows'))
|
|
this._indexSprite.anchor.set(0.5, 0.5);
|
|
this._indexSprite.setFrame(0, 0, 32, 29);
|
|
this.addChild(this._indexSprite);
|
|
};
|
|
//=============================================================================
|
|
// * Set Text
|
|
//=============================================================================
|
|
Window_OmoWindowIndexCursor.prototype.setText = function (text) {
|
|
// If Text has changed
|
|
if (text !== this._text) {
|
|
// Set text
|
|
this._text = text;
|
|
// Redraw Window
|
|
this.refresh();
|
|
};
|
|
};
|
|
//=============================================================================
|
|
// * Refresh
|
|
//=============================================================================
|
|
Window_OmoWindowIndexCursor.prototype.refresh = function () {
|
|
// Clear Contents
|
|
let fontSize = LanguageManager.getMessageData("XX_BLUE.Window_OmoWindowIndexCursor").refresh_contents_fontsize;
|
|
this.contents.fontSize = fontSize; // Change: Selection Text Size
|
|
this.width = this.textWidth(this._text) + (this.standardPadding() * 2) + 10;
|
|
this.createContents()
|
|
this.contents.clear();
|
|
this.contents.fontSize = fontSize; // Change: Selection Text Size
|
|
// Draw Text
|
|
const loc_position = LanguageManager.getMessageData("XX_BLUE.Window_OmoWindowIndexCursor").refresh_draw_text_position;
|
|
this.drawText(this._text, loc_position[0], loc_position[1], this.contents.width, 'center');
|
|
// Center Index Sprite
|
|
this._indexSprite.x = this.width / 2;
|
|
this._indexSprite.y = this.height + 5
|
|
};
|
|
|
|
|
|
|
|
//=============================================================================
|
|
// ** Sprite_OmoMenuStatusFace
|
|
//-----------------------------------------------------------------------------
|
|
// Animated Face Sprite for menus.
|
|
//=============================================================================
|
|
function Sprite_OmoMenuStatusFace() { this.initialize.apply(this, arguments); }
|
|
Sprite_OmoMenuStatusFace.prototype = Object.create(Sprite.prototype);
|
|
Sprite_OmoMenuStatusFace.prototype.constructor = Sprite_OmoMenuStatusFace;
|
|
//=============================================================================
|
|
// * Initialize Object
|
|
//=============================================================================
|
|
Sprite_OmoMenuStatusFace.prototype.initialize = function () {
|
|
// Super Call
|
|
Sprite.prototype.initialize.call(this);
|
|
// Set Actor
|
|
this._actor = null;
|
|
// Animation Row
|
|
this._animRow = 0;
|
|
this._animDelay = this.defaultDelay();
|
|
this._animFrame = 0;
|
|
// Active Flag
|
|
this._active = true;
|
|
// In Menu Flag
|
|
this._inMenu = false;
|
|
// Set Face Width & Height
|
|
this._faceWidth = 106;
|
|
this._faceHeight = 106;
|
|
};
|
|
//=============================================================================
|
|
// * Update Bitmap
|
|
//=============================================================================
|
|
Sprite_OmoMenuStatusFace.prototype.updateBitmap = function () {
|
|
// Get Actor
|
|
var actor = this.actor
|
|
// If Actor Exists and it has Battle Status Face Name
|
|
if (actor) {
|
|
// Face Name
|
|
let faceName
|
|
if (this._inMenu) {
|
|
// Get Face Name
|
|
faceName = actor.menuStatusFaceName();
|
|
// Set Face Width & Height
|
|
this._faceWidth = 124;
|
|
this._faceHeight = 124;
|
|
};
|
|
// Set Default Face Name
|
|
if (!faceName) {
|
|
faceName = actor.battleStatusFaceName();
|
|
// Set Face Width & Height
|
|
this._faceWidth = 106;
|
|
this._faceHeight = 106;
|
|
};
|
|
// Set Bitmap
|
|
this.bitmap = ImageManager.loadFace(faceName);
|
|
} else {
|
|
this.bitmap = null;
|
|
};
|
|
// Update Frame
|
|
this.updateFrame();
|
|
};
|
|
|
|
|
|
|
|
//=============================================================================
|
|
// * Actor
|
|
//=============================================================================
|
|
Object.defineProperty(Sprite_OmoMenuStatusFace.prototype, 'actor', {
|
|
get: function () { return this._actor; },
|
|
set: function (value) {
|
|
// If Value is changing
|
|
if (value !== this._actor) {
|
|
this._actor = value;
|
|
this.updateBitmap();
|
|
}
|
|
},
|
|
configurable: true
|
|
})
|
|
//=============================================================================
|
|
// * Max Frames
|
|
//=============================================================================
|
|
Sprite_OmoMenuStatusFace.prototype.maxFrames = function () { return 3; };
|
|
//=============================================================================
|
|
// * Default Animation Delay
|
|
//=============================================================================
|
|
Sprite_OmoMenuStatusFace.prototype.defaultDelay = function () { return 12; };
|
|
//=============================================================================
|
|
// * Face Width & Height
|
|
//=============================================================================
|
|
Sprite_OmoMenuStatusFace.prototype.faceWidth = function () { return this._faceWidth; };
|
|
Sprite_OmoMenuStatusFace.prototype.faceHeight = function () { return this._faceHeight; };
|
|
//=============================================================================
|
|
// * Activate & Deactivate
|
|
//=============================================================================
|
|
Sprite_OmoMenuStatusFace.prototype.activate = function () { this._active = true; };
|
|
Sprite_OmoMenuStatusFace.prototype.deactivate = function () { this._active = false; };
|
|
//=============================================================================
|
|
// * Show & Hide
|
|
//=============================================================================
|
|
Sprite_OmoMenuStatusFace.prototype.show = function () { this.visible = true; };
|
|
Sprite_OmoMenuStatusFace.prototype.hide = function () { this.visible = false; };
|
|
//=============================================================================
|
|
// * Update Frame
|
|
//=============================================================================
|
|
Sprite_OmoMenuStatusFace.prototype.setAnimRow = function (index) {
|
|
// Set Animation Row
|
|
this._animRow = index;
|
|
// Update Frame
|
|
this.updateFrame();
|
|
};
|
|
//=============================================================================
|
|
// * Frame Update
|
|
//=============================================================================
|
|
Sprite_OmoMenuStatusFace.prototype.update = function () {
|
|
// Super Call
|
|
Sprite.prototype.update.call(this);
|
|
// If Active
|
|
if (this._active) {
|
|
// // If Animation Delay is more than 0
|
|
if (this._animDelay > 0) {
|
|
// Decrease Animation Value
|
|
this._animDelay--;
|
|
} else {
|
|
// Reset Delay
|
|
this._animDelay = this.defaultDelay();
|
|
this._animFrame = (this._animFrame + 1) % this.maxFrames();
|
|
// Update Frame
|
|
this.updateFrame();
|
|
};
|
|
};
|
|
};
|
|
//=============================================================================
|
|
// * Update Frame
|
|
//=============================================================================
|
|
Sprite_OmoMenuStatusFace.prototype.updateFrame = function () {
|
|
// Get Face Width & Height
|
|
var fw = this.faceWidth(), fh = this.faceHeight();
|
|
// Get Face X & Y
|
|
var fx = (this._animFrame * fw);
|
|
var fy = this._animRow * fh;
|
|
// Set Frame
|
|
this.setFrame(fx, fy, fw, fh);
|
|
};
|
|
|
|
|
|
|
|
|
|
//=============================================================================
|
|
// ** Sprite_WindowCustomCursor
|
|
//-----------------------------------------------------------------------------
|
|
// This sprite is used to display a custom cursor in windows.
|
|
//=============================================================================
|
|
function Sprite_WindowCustomCursor() { this.initialize.apply(this, arguments); }
|
|
Sprite_WindowCustomCursor.prototype = Object.create(Sprite.prototype);
|
|
Sprite_WindowCustomCursor.prototype.constructor = Sprite_WindowCustomCursor;
|
|
//=============================================================================
|
|
// * Object Initialization
|
|
//=============================================================================
|
|
Sprite_WindowCustomCursor.prototype.initialize = function (index, name) {
|
|
// Super Call
|
|
Sprite.prototype.initialize.call(this);
|
|
// Set Index
|
|
this._index = index;
|
|
// Set Sprite X
|
|
this.anchor.set(0.5, 0.5);
|
|
// Setup Bitmap
|
|
this.setupBitmap(name);
|
|
// Initialize Cursor Animation
|
|
this.initCursorAnimation();
|
|
// Update Cursor Animation
|
|
this.updateCursorAnimation();
|
|
};
|
|
//=============================================================================
|
|
// * Determine if Active
|
|
//=============================================================================
|
|
Sprite_WindowCustomCursor.prototype.isActive = function () { return this._active; };
|
|
//=============================================================================
|
|
// * Activate/Deactivate
|
|
//=============================================================================
|
|
Sprite_WindowCustomCursor.prototype.activate = function () { this._active = true; };
|
|
Sprite_WindowCustomCursor.prototype.deactivate = function () { this._active = false; };
|
|
//=============================================================================
|
|
// * Initialize Cursor Animation Values
|
|
//=============================================================================
|
|
Sprite_WindowCustomCursor.prototype.initCursorAnimation = function (area, speed, duration) {
|
|
// Active Flag
|
|
this._active = true;
|
|
// Set Properties
|
|
this._sineIndex = 0;
|
|
this._speed = speed === undefined ? 0.5 : speed;
|
|
// Initialize Sine Y List
|
|
this._sineYList = [];
|
|
// Duration
|
|
duration = duration === undefined ? 20 : duration;
|
|
// Set Amplitude
|
|
const amplitude = area === undefined ? 0.1 : area;
|
|
// Generate Sine Y List
|
|
for (var i = 0; i < duration; i++) {
|
|
this._sineYList.push(Math.sin(i * (Math.PI / (duration / 2))) * amplitude);
|
|
};
|
|
};
|
|
//=============================================================================
|
|
// * Setup Bitmap
|
|
//=============================================================================
|
|
Sprite_WindowCustomCursor.prototype.setupBitmap = function (name) {
|
|
// Set Bitmap
|
|
this.bitmap = ImageManager.loadSystem(name === undefined ? 'cursor_menu' : name);
|
|
};
|
|
//=============================================================================
|
|
// * Frame Update
|
|
//=============================================================================
|
|
Sprite_WindowCustomCursor.prototype.update = function () {
|
|
// Super Call
|
|
Sprite.prototype.update.call(this);
|
|
// If Active
|
|
if (this.isActive()) {
|
|
// Update Cursor Animation
|
|
this.updateCursorAnimation();
|
|
};
|
|
};
|
|
//=============================================================================
|
|
// * Update Cursor Animation
|
|
//=============================================================================
|
|
Sprite_WindowCustomCursor.prototype.updateCursorAnimation = function () {
|
|
// Get Index
|
|
const index = Math.floor(this._sineIndex);
|
|
// Set Anchor Position
|
|
this.anchor.x = this._sineYList[index];
|
|
// Increase Sine Index
|
|
this._sineIndex = (this._sineIndex + this._speed) % this._sineYList.length;
|
|
};
|
|
|
|
|
|
|
|
//=============================================================================
|
|
// ** Sprite_InputButton
|
|
//-----------------------------------------------------------------------------
|
|
// Sprite for displaying animated inputs displays.
|
|
//=============================================================================
|
|
function Sprite_InputButton() { this.initialize.apply(this, arguments); }
|
|
Sprite_InputButton.prototype = Object.create(Sprite.prototype);
|
|
Sprite_InputButton.prototype.constructor = Sprite_InputButton;
|
|
//=============================================================================
|
|
// * Initialize Object
|
|
//=============================================================================
|
|
Sprite_InputButton.prototype.initialize = function () {
|
|
// Super Call
|
|
Sprite.prototype.initialize.call(this);
|
|
// Set Icon Frame Maximum Delay
|
|
this._iconFrameDelayMax = 20;
|
|
// Set Input name
|
|
this._inputName = '';
|
|
// Set Input Key
|
|
this._inputKey = 0;
|
|
// Set Default Input Type
|
|
this._inputType = 'keyboardBlack24';
|
|
// Set Gamepad Flag
|
|
this._gamepad = false;
|
|
// Active Flag
|
|
this._active = false;
|
|
};
|
|
//=============================================================================
|
|
// * Activate
|
|
//=============================================================================
|
|
Sprite_InputButton.prototype.activate = function () { this._active = true; };
|
|
//=============================================================================
|
|
// * Deactivate
|
|
//=============================================================================
|
|
Sprite_InputButton.prototype.deactivate = function () {
|
|
this._active = false;
|
|
// Reset Animation
|
|
this.resetAnimation();
|
|
// Refresh Frame
|
|
this.refreshFrame();
|
|
};
|
|
//=============================================================================
|
|
// * Reset Animation
|
|
//=============================================================================
|
|
Sprite_InputButton.prototype.resetAnimation = function () {
|
|
// Set Icon Frame
|
|
this._iconFrame = 0;
|
|
// Set Icon Frame Delay
|
|
this._iconFrameDelay = this._iconFrameDelayMax;
|
|
};
|
|
//=============================================================================
|
|
// * Refresh Frame
|
|
//=============================================================================
|
|
Sprite_InputButton.prototype.refreshFrame = function () {
|
|
// Get Frame
|
|
var frame = this._iconFrame === 0 ? this._iconRects.up : this._iconRects.down;
|
|
// Set Frame
|
|
this.setFrame(frame.x, frame.y, frame.width, frame.height);
|
|
};
|
|
//=============================================================================
|
|
// * Setup Key
|
|
//=============================================================================
|
|
Sprite_InputButton.prototype.setupKey = function (key, type = this._inputType, gamepad = this._gamepad) {
|
|
// Get Language Data
|
|
var data = LanguageManager.languageData().text.System.InputIcons[type];
|
|
// Set Gamepad Flag
|
|
this._gamepad = gamepad;
|
|
// Set Input name
|
|
this._inputName = '';
|
|
// Set Input Key
|
|
this._inputKey = key;
|
|
// Set Bitmap
|
|
this.bitmap = ImageManager.loadSystem('Input/' + data.source);
|
|
// Set Icon Rects
|
|
this._iconRects = this.bitmap.keyIconRects(this._inputKey, type);
|
|
// Reset Animation
|
|
this.resetAnimation();
|
|
// Refresh Frame
|
|
this.refreshFrame();
|
|
};
|
|
//=============================================================================
|
|
// * Setup Input
|
|
//=============================================================================
|
|
Sprite_InputButton.prototype.setupInput = function (input, type = this._inputType, gamepad = this._gamepad) {
|
|
// Get Language Data
|
|
var data = LanguageManager.languageData().text.System.InputIcons[type];
|
|
// Set Gamepad Flag
|
|
this._gamepad = gamepad;
|
|
// Set Input name
|
|
this._inputName = input;
|
|
// Set Input Key
|
|
this._inputKey = Input.inputKeyCode(input, gamepad);
|
|
// Set Bitmap
|
|
this.bitmap = ImageManager.loadSystem('Input/' + data.source);
|
|
// Set Icon Rects
|
|
this._iconRects = this.bitmap.keyIconRects(this._inputKey, type);
|
|
// Reset Animation
|
|
this.resetAnimation();
|
|
// Refresh Frame
|
|
this.refreshFrame();
|
|
};
|
|
//=============================================================================
|
|
// * Frame Update
|
|
//=============================================================================
|
|
Sprite_InputButton.prototype.update = function () {
|
|
// Super Call
|
|
Sprite.prototype.update.call(this);
|
|
// Update Animation if Active
|
|
if (this._active) { this.updateAnimation(); };
|
|
};
|
|
//=============================================================================
|
|
// * Update Animation
|
|
//=============================================================================
|
|
Sprite_InputButton.prototype.updateAnimation = function () {
|
|
// If Icon Frame Delay is 0 or less
|
|
if (this._iconFrameDelay <= 0) {
|
|
// Set Icon Frame
|
|
this._iconFrame = (this._iconFrame + 1) % 2;
|
|
// Refresh Frame
|
|
this.refreshFrame();
|
|
// Set Icon Frame Delay
|
|
this._iconFrameDelay = this._iconFrameDelayMax;
|
|
} else {
|
|
// Decrease Icon Frame Delay
|
|
this._iconFrameDelay--;
|
|
};
|
|
};
|
|
|
|
|
|
|
|
|
|
//=============================================================================
|
|
// ** Window_Message
|
|
//-----------------------------------------------------------------------------
|
|
// The window for displaying text messages.
|
|
//=============================================================================
|
|
// Alias Listing
|
|
//=============================================================================
|
|
_TDS_.OmoriBASE.Window_Message_calcTextHeight = Window_Message.prototype.calcTextHeight;
|
|
_TDS_.OmoriBASE.Window_Message_createSubWindows = Window_Message.prototype.createSubWindows;
|
|
_TDS_.OmoriBASE.Window_Message_updateLoading = Window_Message.prototype.updateLoading;
|
|
_TDS_.OmoriBASE.Window_Message_updatePlacement = Window_Message.prototype.updatePlacement;
|
|
_TDS_.OmoriBASE.Window_Message_loadMessageFace = Window_Message.prototype.loadMessageFace;
|
|
//=============================================================================
|
|
// * Create Sub Windows
|
|
//=============================================================================
|
|
Window_Message.prototype.createSubWindows = function () {
|
|
// Run Original Function
|
|
_TDS_.OmoriBASE.Window_Message_createSubWindows.call(this);
|
|
// Create Face Box Windows
|
|
this.createFaceBoxWindows();
|
|
// If In battle
|
|
if (SceneManager._scene.constructor === Scene_Battle) {
|
|
// Create Battle Message Tail
|
|
this.createBattleMessageTail();
|
|
};
|
|
if (this._nameWindow) {
|
|
// Set Name Window Position
|
|
this._nameWindow.x = -300;
|
|
};
|
|
|
|
this._goldWindow.x = this._goldWindow.x - 20;
|
|
this._goldWindow.y = this._goldWindow.y + 13;
|
|
|
|
};
|
|
//=============================================================================
|
|
// * Settings
|
|
//=============================================================================
|
|
Window_Message.prototype.newLineX = function () { return 10; };
|
|
Window_Message.prototype.lineHeight = function () { return 24; };
|
|
Window_Message.prototype.numVisibleRows = function () { return 4; };
|
|
Window_Message.prototype.standardPadding = function () { return 8; };
|
|
//=============================================================================
|
|
// * Window Width
|
|
//=============================================================================
|
|
Window_Message.prototype.windowWidth = function () {
|
|
if ($gameParty.inBattle()) { return 360 }
|
|
return Graphics.boxWidth - 32;
|
|
};
|
|
//=============================================================================
|
|
// * Openness Type (0: Vertical, 1: Horizontal, 2: All)
|
|
//=============================================================================
|
|
Window_Message.prototype.standardOpennessType = function () { return 2; };
|
|
//=============================================================================
|
|
// * Open & Close Speeds
|
|
//=============================================================================
|
|
Window_Message.prototype.openSpeed = function () { return 25; };
|
|
Window_Message.prototype.closeSpeed = function () { return 25; };
|
|
//=============================================================================
|
|
// * Calculate Text Height
|
|
//=============================================================================
|
|
Window_Message.prototype.calcTextHeight = function (textState, all) {
|
|
// Return Original Value Plus Offset
|
|
return _TDS_.OmoriBASE.Window_Message_calcTextHeight.call(this, textState, all) - 7;
|
|
};
|
|
//=============================================================================
|
|
// * Determine If Battle Message Tail should be visible
|
|
//=============================================================================
|
|
Window_Message.prototype.isBattleMessageTailVisible = function () {
|
|
return $gameSwitches.value(6);
|
|
};
|
|
//=============================================================================
|
|
// * Create Battle Message Tail
|
|
//=============================================================================
|
|
Window_Message.prototype.createBattleMessageTail = function () {
|
|
// Create Sprite
|
|
this._battleMessageTail = new Sprite(ImageManager.loadSystem('battle_speech_tail'));
|
|
this._battleMessageTail.y = 4;
|
|
this._battleMessageTail.visible = false;
|
|
this._battleMessageTail.anchor.set(0.5, 1);
|
|
this.addChild(this._battleMessageTail);
|
|
};
|
|
//=============================================================================
|
|
// * Draw Message Face
|
|
//=============================================================================
|
|
Window_Message.prototype.drawMessageFace = function () {
|
|
ImageManager.releaseReservation(this._imageReservationId);
|
|
};
|
|
//=============================================================================
|
|
// * Load Message Face
|
|
//=============================================================================
|
|
Window_Message.prototype.loadMessageFace = function () {
|
|
// Run Original Function
|
|
_TDS_.OmoriBASE.Window_Message_loadMessageFace.call(this);
|
|
// Get Extra Faces
|
|
var faces = $gameMessage.extraFaces();
|
|
// Get Box Window
|
|
var boxWindow = this._faceBoxWindows[0];
|
|
// Setup Box Window
|
|
boxWindow.setup($gameMessage.faceName(), $gameMessage.faceIndex(), $gameMessage._faceBackgroundColor);
|
|
$gameMessage.faceName() === '' ? boxWindow.close() : boxWindow.open();
|
|
boxWindow.refresh();
|
|
boxWindow.clear();
|
|
// Go Through Face Box Windows
|
|
for (var i = 1; i < this._faceBoxWindows.length; i++) {
|
|
// Get Data
|
|
var data = faces[i - 1];
|
|
// Get Box Window
|
|
var boxWindow = this._faceBoxWindows[i];
|
|
// If Data
|
|
if (data) {
|
|
// Setup Box Window
|
|
boxWindow.setup(data.faceName, data.faceIndex, data.color);
|
|
boxWindow.refresh();
|
|
boxWindow.clear();
|
|
boxWindow.open();
|
|
} else {
|
|
// Clear Box Window
|
|
boxWindow.clear();
|
|
boxWindow.close();
|
|
boxWindow.refresh();
|
|
};
|
|
};
|
|
};
|
|
//=============================================================================
|
|
// * Update Placement
|
|
//=============================================================================
|
|
Window_Message.prototype.updatePlacement = function () {
|
|
// Run Original Function
|
|
_TDS_.OmoriBASE.Window_Message_updatePlacement.call(this);
|
|
// Set Face Box Window Container Position
|
|
this._faceBoxWindowContainer.y = this.y - 126
|
|
// If Battle Message Tail
|
|
if (this._battleMessageTail) {
|
|
// Center it
|
|
this._battleMessageTail.x = this.width / 2;
|
|
// Set Battle Message Tail Visibility
|
|
this._battleMessageTail.visible = this.isBattleMessageTailVisible();
|
|
};
|
|
if (this._positionType === 0) { this.y += 8 };
|
|
if (this._positionType === 2) {
|
|
if ($gameParty.inBattle()) {
|
|
if ($gameSwitches.value(41) || [2, 5, 6].contains($gameVariables.value(22))) {
|
|
this.y -= 11;
|
|
} else {
|
|
this.y -= 65;
|
|
}
|
|
} else {
|
|
this.y -= 8
|
|
}
|
|
};
|
|
// Set Gold position window
|
|
this._goldWindow.y = this.y > 0 ? 12 : Graphics.boxHeight - this._goldWindow.height
|
|
};
|
|
//=============================================================================
|
|
// * Create Face Box Windows
|
|
//=============================================================================
|
|
Window_Message.prototype.createFaceBoxWindows = function () {
|
|
// Initialize Face Box Windows Array
|
|
this._faceBoxWindows = [];
|
|
// Create FaceBoxWindow Container
|
|
this._faceBoxWindowContainer = new Sprite();
|
|
this._faceBoxWindowContainer.x = 0//Graphics.width
|
|
for (var i = 0; i < 4; i++) {
|
|
// Create Window
|
|
var win = new Window_MessageFaceBox(i);
|
|
win.x = -((i + 1) * (win.width + 2));
|
|
win.openness = 0;
|
|
// Set FaceBox Window
|
|
this._faceBoxWindows[i] = win;
|
|
this._faceBoxWindowContainer.addChild(win);
|
|
};
|
|
};
|
|
//=============================================================================
|
|
// * Update Open
|
|
//=============================================================================
|
|
Window_Message.prototype.updateOpen = function () {
|
|
if (this._opening) {
|
|
// Super Call
|
|
Window_Base.prototype.updateOpen.call(this);
|
|
var rate = this.openness / 255
|
|
/*var tx = (this.x + this.width + 2);
|
|
this._faceBoxWindowContainer.x = ((Graphics.width - 16) + tx + 2) - (rate * tx);*/
|
|
var d = Math.max((rate * 20), 1);
|
|
this._nameWindow.x = (this._nameWindow.x * (d - 1) + 77) / d;
|
|
if (this._battleMessageTail) {
|
|
this._battleMessageTail.y = this._windowSpriteContainer.y + 4;
|
|
this._battleMessageTail.scale.y = rate;
|
|
};
|
|
};
|
|
};
|
|
//=============================================================================
|
|
// * Update Close
|
|
//=============================================================================
|
|
Window_Message.prototype.updateClose = function () {
|
|
if (this._closing) {
|
|
// Super Call
|
|
Window_Base.prototype.updateClose.call(this);
|
|
var rate = this.openness / 255
|
|
/* var tx = Graphics.width;
|
|
this._faceBoxWindowContainer.x = (Graphics.width + tx + 2) - (rate * tx)*/
|
|
var d = Math.max((rate * 20), 1);
|
|
this._nameWindow.x = (this._nameWindow.x * (d - 1) + -300) / d;
|
|
this._faceBoxWindow.openness = Math.min(this._faceBoxWindow.openness, this.openness);
|
|
if (this._battleMessageTail) {
|
|
this._battleMessageTail.y = this._windowSpriteContainer.y + 4;
|
|
this._battleMessageTail.scale.y = rate;
|
|
};
|
|
if (this.isClosed()) {
|
|
// Go Through Face Box Windows
|
|
/*for (var i = 0; i < this._faceBoxWindows.length; i++) {
|
|
this._faceBoxWindows[i].openness = 0;
|
|
};*/
|
|
};
|
|
};
|
|
};
|
|
//=============================================================================
|
|
// * Refresh Pause Sign
|
|
//=============================================================================
|
|
Window_Message.prototype._refreshPauseSign = function () {
|
|
this._windowPauseSignSprite.bitmap = ImageManager.loadSystem('cursor_menu');
|
|
this._windowPauseSignSprite.anchor.x = 0.5;
|
|
this._windowPauseSignSprite.anchor.y = 1;
|
|
this._windowPauseSignSprite.alpha = 0;
|
|
// Move Window Pause Sign Sprite
|
|
this._windowPauseSignSprite.move(this._width - 40, this._height - 10);
|
|
};
|
|
//=============================================================================
|
|
// * Update Pause Sign
|
|
//=============================================================================
|
|
Window_Message.prototype._updatePauseSign = function () {
|
|
// Get Sprite
|
|
var sprite = this._windowPauseSignSprite;
|
|
// If not paused
|
|
if (!this.pause) {
|
|
// Set Alpha to 0
|
|
sprite.alpha = 0;
|
|
} else if (sprite.alpha < 1) {
|
|
// Increase Alpha
|
|
sprite.alpha = Math.min(sprite.alpha + 0.1, 1);
|
|
}
|
|
// Set Sprite visibility
|
|
sprite.visible = this.isOpen();
|
|
// Move sprite anchor X for animation effect
|
|
sprite.anchor.x = 0.5 + (Math.sin(this._animationCount * 0.1) * 0.1)
|
|
};
|
|
//=============================================================================
|
|
// * Wordwrap Width
|
|
//=============================================================================
|
|
Window_Message.prototype.wordwrapWidth = function () {
|
|
if (Yanfly.Param.MSGTightWrap && $gameMessage.faceName() !== '') {
|
|
return this.contents.width - this.newLineX();
|
|
}
|
|
return Window_Base.prototype.wordwrapWidth.call(this) - 10;
|
|
};
|
|
|
|
|
|
|
|
//=============================================================================
|
|
// ** Window_NameBox
|
|
//-----------------------------------------------------------------------------
|
|
// The window for displaying names along text messages.
|
|
//=============================================================================
|
|
// * Settings
|
|
//=============================================================================
|
|
Window_NameBox.prototype.standardPadding = function () { return 12; };
|
|
Window_NameBox.prototype.lineHeight = function () { return 20; };
|
|
//=============================================================================
|
|
// * Openness Type (0: Vertical, 1: Horizontal, 2: All)
|
|
//=============================================================================
|
|
Window_NameBox.prototype.standardOpennessType = function () { return 2; };
|
|
//=============================================================================
|
|
// * Refresh
|
|
//=============================================================================
|
|
Window_NameBox.prototype.refresh = function (text, position) {
|
|
this.show();
|
|
this._lastNameText = text;
|
|
this._text = Yanfly.Param.MSGNameBoxText + text;
|
|
this._position = position;
|
|
this.width = this.windowWidth();
|
|
this.createContents();
|
|
this.contents.clear();
|
|
this.resetFontSettings();
|
|
this.changeTextColor(this.textColor(Yanfly.Param.MSGNameBoxColor));
|
|
var padding = eval(Yanfly.Param.MSGNameBoxPadding) / 2;
|
|
const loc_position = LanguageManager.getMessageData("XX_BLUE.Window_NameBox").refresh_draw_text_position
|
|
this.drawTextEx(this._text, eval(loc_position[0]), loc_position[1], this.contents.width);
|
|
this._parentWindow.adjustWindowSettings();
|
|
this._parentWindow.updatePlacement();
|
|
// this.adjustPositionX();
|
|
this.adjustPositionY();
|
|
this.y -= 4;
|
|
this.open();
|
|
this.activate();
|
|
this._closeCounter = 4;
|
|
return '';
|
|
};
|
|
|
|
|
|
|
|
//=============================================================================
|
|
// ** Window_ChoiceList
|
|
//-----------------------------------------------------------------------------
|
|
// The window used for the event command [Show Choices].
|
|
//=============================================================================
|
|
// Alias Listing
|
|
//=============================================================================
|
|
_TDS_.OmoriBASE.Window_ChoiceList_updatePlacement = Window_ChoiceList.prototype.updatePlacement;
|
|
//=============================================================================
|
|
// * Settings
|
|
//=============================================================================
|
|
Window_ChoiceList.prototype.isUsingCustomCursorRectSprite = function () { return true; }
|
|
Window_ChoiceList.prototype.standardPadding = function () { return 10; };
|
|
Window_ChoiceList.prototype.customCursorRectTextXOffset = function () { return 32; }
|
|
Window_ChoiceList.prototype.customCursorRectTextYOffset = function () { return -5; }
|
|
Window_ChoiceList.prototype.lineHeight = function () { return 30; };
|
|
Window_ChoiceList.prototype.standardFontSize = function () { return LanguageManager.getMessageData("XX_BLUE.Window_ChoiceList").standardFontSize; };
|
|
//=============================================================================
|
|
// * Max Choice Width
|
|
//=============================================================================
|
|
Window_ChoiceList.prototype.maxChoiceWidth = function () {
|
|
var maxWidth = 36;
|
|
var choices = $gameMessage.choices();
|
|
for (var i = 0; i < choices.length; i++) {
|
|
var choiceWidth = this.textWidthEx(choices[i]) + this.textPadding() * 2;
|
|
if (maxWidth < choiceWidth) {
|
|
maxWidth = choiceWidth;
|
|
};
|
|
};
|
|
return maxWidth + 28;
|
|
};
|
|
//=============================================================================
|
|
// * Calculate Text Height
|
|
//=============================================================================
|
|
Window_ChoiceList.prototype.calcTextHeight = function (textState, all) {
|
|
return Window_Command.prototype.calcTextHeight.call(this, textState, all) - 3;
|
|
};
|
|
//=============================================================================
|
|
// * Update Placement
|
|
//=============================================================================
|
|
Window_ChoiceList.prototype.updatePlacement = function () {
|
|
// Run Original Function
|
|
_TDS_.OmoriBASE.Window_ChoiceList_updatePlacement.call(this);
|
|
// Move Window
|
|
this.x -= 18; this.y -= 8;
|
|
var messageY = this._messageWindow.y;
|
|
if (messageY >= Graphics.boxHeight / 2) {
|
|
this.y -= 4;
|
|
} else {
|
|
this.y += 4;
|
|
};
|
|
// Get Face Window
|
|
var faceWindow = this._messageWindow._faceBoxWindow;
|
|
// Set Position based on face window
|
|
if (!!$gameMessage.faceCount()) { this.x += faceWindow.x; };
|
|
};
|
|
|
|
|
|
|
|
//=============================================================================
|
|
// ** Window_Message
|
|
//-----------------------------------------------------------------------------
|
|
// The window for displaying text messages.
|
|
//=============================================================================
|
|
// * Settings
|
|
//=============================================================================
|
|
// Window_NumberInput.prototype.standardFontSize = function() { return 24; };
|
|
Window_NumberInput.prototype.standardPadding = function () { return 8; };
|
|
//=============================================================================
|
|
// * Update Placement
|
|
//=============================================================================
|
|
Window_NumberInput.prototype.updatePlacement = function () {
|
|
let messageY = this._messageWindow.y;
|
|
|
|
this.width = this.windowWidth();
|
|
this.height = this.windowHeight();
|
|
|
|
this.x = (this._messageWindow.x + this._messageWindow.width) - this.width
|
|
this.y = messageY - this.height - 4;
|
|
};
|
|
|
|
|
|
|
|
//=============================================================================
|
|
// ** Sprite_Character
|
|
//-----------------------------------------------------------------------------
|
|
// The sprite for displaying a character.
|
|
//=============================================================================
|
|
// Alias Listing
|
|
//=============================================================================
|
|
_TDS_.OmoriBASE.Sprite_Character_update = Sprite_Character.prototype.update;
|
|
_TDS_.OmoriBASE.Sprite_Character_updateCharacterFrame = Sprite_Character.prototype.updateCharacterFrame;
|
|
//=============================================================================
|
|
// * Frame Update
|
|
//=============================================================================
|
|
Sprite_Character.prototype.update = function () {
|
|
// Run Original Function
|
|
_TDS_.OmoriBASE.Sprite_Character_update.call(this);
|
|
// Update Bobble Effect
|
|
this.updateBobble();
|
|
// Update Input Icon
|
|
this.updateInputIcon();
|
|
// Update Shadow
|
|
this.updateShadow();
|
|
};
|
|
//=============================================================================
|
|
// * Update Character Frame
|
|
//=============================================================================
|
|
Sprite_Character.prototype.updateCharacterFrame = function () {
|
|
// If Character Exists and Is single Framed
|
|
if (this._character && this._character.isSingleFrame()) {
|
|
// Set Frame
|
|
this.setFrame(0, 0, this.bitmap.width, this.bitmap.height);
|
|
return;
|
|
};
|
|
// Run Original Function
|
|
_TDS_.OmoriBASE.Sprite_Character_updateCharacterFrame.call(this);
|
|
};
|
|
//=============================================================================
|
|
// * Update Bobble
|
|
//=============================================================================
|
|
Sprite_Character.prototype.updateBobble = function () {
|
|
// Get Bobble Properties
|
|
var bobble = this._character._bobble;
|
|
// If Bobble
|
|
if (bobble) {
|
|
// Apply Bobble Effect
|
|
this.anchor.y = bobble.base + (Math.sin(Graphics.frameCount * bobble.speed) * bobble.amplitude);
|
|
} else {
|
|
// Set Anchor Y to 1
|
|
this.anchor.y = 1;
|
|
};
|
|
};
|
|
//=============================================================================
|
|
// * Update Input Icon
|
|
//=============================================================================
|
|
Sprite_Character.prototype.updateInputIcon = function () {
|
|
// Get Input
|
|
var input = this._character._inputIcon;
|
|
// If Input Icon Sprite Exists
|
|
if (this._inputIconSprite) {
|
|
// If Input Data exists
|
|
if (input) {
|
|
// If Scale is less than 1
|
|
if (this._inputIconSprite.scale.x < 1) {
|
|
var scale = this._inputIconSprite.scale.x + 0.1;
|
|
this._inputIconSprite.scale.set(scale, scale)
|
|
// Set Input Scale
|
|
input.scale = scale;
|
|
};
|
|
// Set Position
|
|
this._inputIconSprite.x = this.x;
|
|
this._inputIconSprite.y = this.y - this.height - (this._inputIconSprite.height * this._inputIconSprite.anchor.y);
|
|
} else {
|
|
// If Scale is more than 0
|
|
if (this._inputIconSprite.scale.x > 0.0) {
|
|
var scale = Math.max(this._inputIconSprite.scale.x - 0.1, 0);
|
|
this._inputIconSprite.scale.set(scale, scale);
|
|
// Set Position
|
|
this._inputIconSprite.x = this.x;
|
|
this._inputIconSprite.y = this.y - this.height - (this._inputIconSprite.height * this._inputIconSprite.anchor.y);
|
|
} else {
|
|
this.parent.removeChild(this._inputIconSprite);
|
|
this._inputIconSprite = null;
|
|
};
|
|
};
|
|
} else {
|
|
// If Input Data Exists
|
|
if (input) {
|
|
// Get Scale
|
|
var scale = input.scale === undefined ? 0.0 : input.scale
|
|
// Create Input Icon Sprite
|
|
this._inputIconSprite = new Sprite_InputButton();
|
|
this._inputIconSprite.scale.set(scale, scale);
|
|
this._inputIconSprite.anchor.set(0.5, 0.5);
|
|
this._inputIconSprite.activate();
|
|
this._inputIconSprite.z = 7
|
|
this.parent.addChild(this._inputIconSprite);
|
|
// Set Position
|
|
this._inputIconSprite.x = this.x;
|
|
this._inputIconSprite.y = this.y - this.height - (this._inputIconSprite.height * this._inputIconSprite.anchor.y);
|
|
// If Input is for key
|
|
if (input.key) {
|
|
this._inputIconSprite.setupKey(input.input);
|
|
} else {
|
|
this._inputIconSprite.setupInput(input.input);
|
|
}
|
|
};
|
|
};
|
|
};
|
|
//=============================================================================
|
|
// * Update Shadow
|
|
//=============================================================================
|
|
Sprite_Character.prototype.updateShadow = function () {
|
|
// Get Shadow Data
|
|
var shadow = this._character._shadow;
|
|
// If Shadow
|
|
if (shadow) {
|
|
// If Shadow Sprite does not exist
|
|
if (!this._shadowSprite) {
|
|
// Create shadow Sprite
|
|
this._shadowSprite = new Sprite(this.bitmap);
|
|
this._shadowSprite.anchor.set(0.5, 1);
|
|
this._shadowSprite.setColorTone([-255, -255, -255, 0]);
|
|
this._shadowSprite.scale.x = -1;
|
|
this.addChild(this._shadowSprite);
|
|
};
|
|
// Get Frame
|
|
var frame = this._frame
|
|
// Set Frame
|
|
this._shadowSprite.setFrame(frame.x, frame.y, frame.width, frame.height);
|
|
// Set shadow Sprite Properties
|
|
this._shadowSprite.opacity = shadow.opacity;
|
|
this._shadowSprite.rotation = shadow.angle * Math.PI / 180;
|
|
this._shadowSprite.scale.y = shadow.scaleY;
|
|
this._shadowSprite.x = shadow.x;
|
|
this._shadowSprite.y = shadow.y;
|
|
} else {
|
|
// If Shadow Sprite does exist
|
|
if (this._shadowSprite) {
|
|
this.removeChild(this._shadowSprite);
|
|
delete this._shadowSprite
|
|
};
|
|
};
|
|
};
|
|
|
|
|
|
|
|
|
|
// //=============================================================================
|
|
// // ** Sprite_Balloon
|
|
// //-----------------------------------------------------------------------------
|
|
// // The sprite for displaying a balloon icon.
|
|
// //=============================================================================
|
|
// // Alias Listing
|
|
// //=============================================================================
|
|
// _TDS_.OmoriBASE.Sprite_Balloon_initMembers = Sprite_Balloon.prototype.initMembers;
|
|
// _TDS_.OmoriBASE.Sprite_Balloon_setup = Sprite_Balloon.prototype.setup;
|
|
// _TDS_.OmoriBASE.Sprite_Balloon_updateFrame = Sprite_Balloon.prototype.updateFrame
|
|
// //=============================================================================
|
|
// // * Initialize Members
|
|
// //=============================================================================
|
|
// Sprite_Balloon.prototype.initMembers = function() {
|
|
// // Run Original Function
|
|
// _TDS_.OmoriBASE.Sprite_Balloon_initMembers.call(this);
|
|
// // Set input Key
|
|
// this._inputKey = 0;
|
|
// };
|
|
// //=============================================================================
|
|
// // * Setup balloon
|
|
// //=============================================================================
|
|
// Sprite_Balloon.prototype.setup = function(balloonId) {
|
|
// // Run Original Function
|
|
// _TDS_.OmoriBASE.Sprite_Balloon_setup.call(this, balloonId);
|
|
// // Set Input key
|
|
// this._inputKey = $gameVariables.value(40);
|
|
// // If Input Key is not 0
|
|
// if (this._inputKey !== 0) {
|
|
// // Create Input Icon
|
|
// this.createInputIcon();
|
|
// };
|
|
// };
|
|
// //=============================================================================
|
|
// // * Create Input Icon
|
|
// //=============================================================================
|
|
// Sprite_Balloon.prototype.createInputIcon = function() {
|
|
// // If Input Icon Sprite does not exist
|
|
// if (!this._inputIconSprite) {
|
|
// // Create Input Icon Sprite
|
|
// this._inputIconSprite = new Sprite_InputButton()
|
|
// this._inputIconSprite.anchor.set(0.5, 1);
|
|
// this._inputIconSprite.activate();
|
|
// this.addChild(this._inputIconSprite);
|
|
// };
|
|
// // Setupt Input
|
|
// this._inputIconSprite.setupInput(this._inputKey);
|
|
// };
|
|
// //=============================================================================
|
|
// // * Update Frame
|
|
// //=============================================================================
|
|
// Sprite_Balloon.prototype.updateFrame = function() {
|
|
// // If Input Icon sprite exists
|
|
// if (this._inputIconSprite) {
|
|
// // If duration is 1 or less
|
|
// if (this._duration <= 1) {
|
|
// // Remove Sprite
|
|
// this.removeChild(this._inputIconSprite);
|
|
// this._inputIconSprite = null
|
|
// };
|
|
// } else {
|
|
// // Run Original Function
|
|
// _TDS_.OmoriBASE.Sprite_Balloon_updateFrame.call(this);
|
|
// };
|
|
// };
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//=============================================================================
|
|
// ** Scene_Map
|
|
//-----------------------------------------------------------------------------
|
|
// The scene class of the map screen.
|
|
//=============================================================================
|
|
// Alias Listing
|
|
//=============================================================================
|
|
_TDS_.OmoriBASE.Scene_Map_createMessageWindow = Scene_Map.prototype.createMessageWindow;
|
|
_TDS_.OmoriBASE.Scene_Map_updateScene = Scene_Map.prototype.updateScene;
|
|
//=============================================================================
|
|
// * Create Message Window
|
|
//=============================================================================
|
|
Scene_Map.prototype.createMessageWindow = function () {
|
|
// Run Original Function
|
|
_TDS_.OmoriBASE.Scene_Map_createMessageWindow.call(this);
|
|
// Get Container Index
|
|
var containerIndex = this.children.indexOf(this._windowLayer);
|
|
// Add Facebox Window Container as a Child (Behind Message Window)
|
|
this.addChildAt(this._messageWindow._faceBoxWindowContainer, containerIndex - 1);
|
|
};
|
|
//=============================================================================
|
|
// * Update Scene
|
|
//=============================================================================
|
|
Scene_Map.prototype.updateScene = function () {
|
|
// Run Original Function
|
|
_TDS_.OmoriBASE.Scene_Map_updateScene.call(this);
|
|
// If Scene is not changing
|
|
if (!SceneManager.isSceneChanging()) {
|
|
// Check for menu calls
|
|
this.updateMapMenuCalls();
|
|
};
|
|
};
|
|
//=============================================================================
|
|
// * Update Map Menu Calls
|
|
//=============================================================================
|
|
Scene_Map.prototype.updateMapMenuCalls = function () {
|
|
if (!this.isMenuEnabled()) { return; }
|
|
// If Q Is triggered
|
|
if (Input.isTriggered('pageup')) {
|
|
// World Index switch case
|
|
switch (SceneManager.currentWorldIndex()) {
|
|
case 1: // Dream World
|
|
if ($gameSwitches.value(1210) == true) {
|
|
SceneManager.push(Scene_OmoBlackLetterMenu);
|
|
}
|
|
break;
|
|
case 2: // Faraway
|
|
case 3: // Blackspace
|
|
if ($gameSwitches.value(1210) == true) {
|
|
SceneManager.push(Scene_OmoriPhotoAlbum);
|
|
SceneManager.prepareNextScene($dataItems[914], 1);
|
|
}
|
|
break;
|
|
};
|
|
};
|
|
// If W Is triggered
|
|
if (Input.isTriggered('pagedown')) {
|
|
// World Index switch case
|
|
switch (SceneManager.currentWorldIndex()) {
|
|
case 1: // Dream World
|
|
if ($gameSwitches.value(1211) == true) {
|
|
SceneManager.push(Scene_OmoriBlackLetterMap)
|
|
}
|
|
break;
|
|
case 2: ; break;// Faraway
|
|
case 3: // Blackspace
|
|
if ($gameSwitches.value(1210) == true) {
|
|
SceneManager.push(Scene_OmoriPhotoAlbum);
|
|
SceneManager.prepareNextScene($dataItems[889], 1);
|
|
}
|
|
break;
|
|
};
|
|
};
|
|
};
|
|
|
|
|
|
|
|
//=============================================================================
|
|
// ** Scene_Gameover
|
|
//-----------------------------------------------------------------------------
|
|
// The scene class of the game over screen.
|
|
//=============================================================================
|
|
// Alias Listing
|
|
//=============================================================================
|
|
// _TDS_.OmoriBASE.Scene_Gameover_createMessageWindow = Scene_Map.prototype.createMessageWindow;
|
|
//=============================================================================
|
|
// * Object Initialization
|
|
//=============================================================================
|
|
Scene_Gameover.prototype.initialize = function () {
|
|
// Set Image reservation Id
|
|
this._imageReservationId = 'gameover';
|
|
// Super Call
|
|
Scene_Base.prototype.initialize.call(this);
|
|
// Text Move Settings
|
|
this._textModeSettings = { delay: 20, direction: 0, active: true }
|
|
this._animData = { phase: 0, delay: 0, active: true };
|
|
this._inputData = { index: 0, max: 2, active: false };
|
|
if ($gameParty.inBattle()) {
|
|
this._isFinalBattle = ($gameTroop.troop().id == 891);
|
|
}
|
|
else {
|
|
this._isFinalBattle = false;
|
|
};
|
|
this._isInBattle = $gameParty.inBattle();
|
|
// Get Final Battle Phase
|
|
this._finalBattlePhase = $gameVariables.value(1220);
|
|
BattleManager._isFinalBattle = this._isFinalBattle;
|
|
|
|
};
|
|
//=============================================================================
|
|
// * Load Reserved Bitmaps
|
|
//=============================================================================
|
|
Scene_Gameover.prototype.loadReservedBitmaps = function () {
|
|
ImageManager.reserveSystem('GameOverBG', 0, this._imageReservationId);
|
|
ImageManager.reserveSystem('GameOverText', 0, this._imageReservationId);
|
|
ImageManager.reservePicture('name_input', 0, this._imageReservationId);
|
|
};
|
|
//=============================================================================
|
|
// * Create
|
|
//=============================================================================
|
|
Scene_Gameover.prototype.create = function () {
|
|
// Super Call
|
|
Scene_Base.prototype.create.call(this);
|
|
this.playGameoverMusic();
|
|
this.createBackground();
|
|
this.createRetryWindows();
|
|
};
|
|
|
|
Yanfly.Core.Scene_Gameover_start = function () {
|
|
Scene_Base.prototype.start.call(this);
|
|
this.startFadeIn(this.slowFadeSpeed() * 6, false);
|
|
}
|
|
//=============================================================================
|
|
// * Create Background
|
|
//=============================================================================
|
|
Scene_Gameover.prototype.createBackground = function () {
|
|
// Create Backsprite
|
|
this._backSprite = new Sprite();
|
|
this._backSprite.bitmap = new Bitmap(Graphics.boxWidth, Graphics.boxHeight)//ImageManager.loadSystem('GameOverBG');
|
|
this._backSprite.bitmap.fillAll("black");
|
|
this.addChild(this._backSprite);
|
|
// Create Game Over Text
|
|
let bitmap = ImageManager.loadSystem('GameOverText');
|
|
this._textSprite = new Sprite(bitmap);
|
|
this._textSprite.x = (Graphics.width - bitmap.width) / 2;
|
|
this._textSprite.baseY = Math.ceil((Graphics.height - bitmap.height) / 2.5)
|
|
this._textSprite.y = this._textSprite.baseY;
|
|
this.addChild(this._textSprite);
|
|
|
|
// Create Omori Sprite
|
|
bitmap = ImageManager.loadPicture('name_input');
|
|
this._omoriSprite = new Sprite(bitmap);
|
|
this._omoriSprite.x = (Graphics.width - bitmap.width) / 2;
|
|
this._omoriSprite.y = ((Graphics.height - this._omoriSprite.width) / 2) + 74;
|
|
this._omoriSprite.opacity = 0;
|
|
this.addChild(this._omoriSprite);
|
|
};
|
|
//=============================================================================
|
|
// * Create Retry Windows
|
|
//=============================================================================
|
|
Scene_Gameover.prototype.createRetryWindows = function () {
|
|
// Initialize Retry Windows Array
|
|
this._retryWindows = [];
|
|
// List of text
|
|
let text = [LanguageManager.getMessageData("XX_SYSTEM.message_10").text, LanguageManager.getMessageData("XX_SYSTEM.message_11").text];
|
|
// Go Through Text
|
|
for (let i = 0; i < text.length; i++) {
|
|
let win = new Window_Base(0, 0, 0, 0);
|
|
win.standardPadding = function () { return 4; };
|
|
win.initialize(0, 0, win.contents.measureTextWidth(text[i]) + win.standardPadding() * 4, 32)
|
|
win.contents.fontSize = 26;
|
|
|
|
win.x = Math.floor(Graphics.boxWidth / 2.6) + i * 100
|
|
win.y = 380;
|
|
win.drawOpacity = 0;
|
|
win.opacity = 0;
|
|
win.textToDraw = text[i];
|
|
win.update = function (animPhase) {
|
|
if (animPhase == 2) {
|
|
if (!this.parent._retryQuestion.isTextComplete()) { return; }
|
|
if (this.drawOpacity < 255) {
|
|
this.contents.clear();
|
|
this.drawOpacity += 2;
|
|
this.opacity += 2;
|
|
this.contents.paintOpacity = this.drawOpacity;
|
|
win.contents.drawText(this.textToDraw, 0, -4, this.contents.width, this.contents.height, 'center');
|
|
}
|
|
} else if (animPhase == 4) {
|
|
this.contents.clear();
|
|
this.drawOpacity -= 4;
|
|
this.opacity -= 4;
|
|
this.contents.paintOpacity = this.drawOpacity;
|
|
win.contents.drawText(this.textToDraw, 0, -4, this.contents.width, this.contents.height, 'center');
|
|
}
|
|
};
|
|
this._retryWindows.push(win);
|
|
this.addChild(win);
|
|
};
|
|
// Set Max Input
|
|
this._inputData.max = text.length;
|
|
// Create Retry Cursor Sprite
|
|
this._retryCursorSprite = new Sprite_WindowCustomCursor(undefined, 'cursor_menu');
|
|
this._retryCursorSprite.opacity = 0;
|
|
this.addChild(this._retryCursorSprite);
|
|
};
|
|
//=============================================================================
|
|
// * Frame Update
|
|
//=============================================================================
|
|
Scene_Gameover.prototype.update = function () {
|
|
// Frame Update
|
|
Scene_Base.prototype.update.call(this);
|
|
|
|
this.updateTransitionAnimation();
|
|
this.updateTextPosition();
|
|
this.updateRetryInput();
|
|
};
|
|
//=============================================================================
|
|
// * Update Transition Animation
|
|
//=============================================================================
|
|
Scene_Gameover.prototype.updateTransitionAnimation = function () {
|
|
// Get Animation Data
|
|
let anim = this._animData;
|
|
// If Animation is active
|
|
if (anim.active) {
|
|
// If Animation has Delay
|
|
if (anim.delay > 0) {
|
|
// Reduce Delay
|
|
anim.delay--
|
|
return;
|
|
};
|
|
// Animation Phase Switch Case
|
|
switch (anim.phase) {
|
|
case 0: // Initial Delay
|
|
anim.phase = 1;
|
|
anim.delay = 80;
|
|
if (this._isFinalBattle && this._finalBattlePhase >= 5) {
|
|
AudioManager.playMe({ name: 'xx_gameover_piano', volume: 100, pitch: 100, pan: 0 });
|
|
//AudioManager.playCurrentBGMOnce();
|
|
|
|
anim.delay = 500;
|
|
|
|
} else if (!this._isFinalBattle) {
|
|
AudioManager.playMe({ name: 'xx_gameover', volume: 100, pitch: 100, pan: 0 });
|
|
//AudioManager.playCurrentBGMOnce();
|
|
|
|
}
|
|
break;
|
|
case 1: // Move Up
|
|
if (this._isFinalBattle && this._finalBattlePhase >= 5) {
|
|
let centerY = ((Graphics.height - this._omoriSprite.width) / 2) + 74;
|
|
let speed = 1;
|
|
|
|
if (!this._textModeSettings.waiter) {
|
|
this._textModeSettings.waiter = true;
|
|
anim.delay = 60;
|
|
return;
|
|
}
|
|
|
|
if (this._textSprite.opacity > 0) {
|
|
this._textSprite.opacity = Math.max(this._textSprite.opacity - speed, 0);
|
|
this._backSprite.opacity -= 16;
|
|
}
|
|
else {
|
|
if (!this._textSprite.hasMadeDelay) {
|
|
anim.delay = 250;
|
|
this._textSprite.active = false;
|
|
this._textSprite.hasMadeDelay = true;
|
|
return;
|
|
}
|
|
this._omoriSprite.opacity += 10;
|
|
}
|
|
|
|
if (this._omoriSprite.opacity >= 255) {
|
|
anim.phase = 2;
|
|
}
|
|
} else {
|
|
if (!this._isInBattle) {
|
|
anim.delay = 400;
|
|
anim.phase = 7
|
|
}
|
|
else { anim.phase = 2; }
|
|
}
|
|
break;
|
|
case 2:
|
|
this._retryWindows[0].update(anim.phase);
|
|
this._retryWindows[1].update(anim.phase);
|
|
if (this._retryWindows[0].opacity >= 255) {
|
|
this._retryCursorSprite.opacity = 255;
|
|
this.updateRetryInputCursorPosition(0);
|
|
anim.phase = 3;
|
|
this._inputData.active = true;
|
|
}
|
|
break;
|
|
case 4:
|
|
this._retryWindows[0].update(anim.phase);
|
|
this._retryWindows[1].update(anim.phase);
|
|
this._retryCursorSprite.opacity -= 4;
|
|
this._textSprite.opacity -= 4;
|
|
this._backSprite.opacity -= 4;
|
|
if (this._isFinalBattle && this._finalBattlePhase >= 5) {
|
|
this._omoriSprite.opacity -= 4;
|
|
}
|
|
|
|
if (this._backSprite.opacity <= 0) {
|
|
anim.phase = 5;
|
|
this.removeAddedChildren();
|
|
BattleManager.processRetry();
|
|
}
|
|
break;
|
|
|
|
case 7:
|
|
this._textSprite.opacity -= 2;
|
|
this._backSprite.opacity -= 2;
|
|
if (this._backSprite.opacity <= 0) {
|
|
anim.phase = 8;
|
|
}
|
|
break;
|
|
|
|
case 8: // Fadeout
|
|
if (this._fadeDuration <= 0) {
|
|
// Hide container, prevents popup
|
|
this.visible = false;
|
|
// If In Final Battle
|
|
if (this._isFinalBattle) {
|
|
// Restore Leader to prevent a game over loop
|
|
$gameParty.members()[0].recoverAll();
|
|
this.removeAddedChildren();
|
|
// If In final battle return to map
|
|
SceneManager.goto(Scene_Map);
|
|
// Reset Animation Phase
|
|
anim.phase = -1;
|
|
} else {
|
|
this.removeAddedChildren();
|
|
// Go to the title screen
|
|
SceneManager.goto(Scene_OmoriTitleScreen);
|
|
anim.phase = -1;
|
|
};
|
|
};
|
|
break;
|
|
};
|
|
};
|
|
};
|
|
|
|
Scene_Gameover.prototype.removeAddedChildren = function () {
|
|
for (var i = 0; i > this._retryWindows.length; i++) {
|
|
this._retryWindows[i] = null;
|
|
this.removeChild(this._retryWindows[i]);
|
|
}
|
|
this.removeChild(this._backSprite);
|
|
this.removeChild(this._textSprite);
|
|
//this.removeChild(this._omoriSprite);
|
|
this.removeChild(this._retryCursorSprite);
|
|
}
|
|
|
|
//=============================================================================
|
|
// * Update Text Position
|
|
//=============================================================================
|
|
Scene_Gameover.prototype.updateTextPosition = function () {
|
|
// Get Animation Settings
|
|
let anim = this._textModeSettings;
|
|
// If active
|
|
if (anim.active) {
|
|
// Decrease Delay
|
|
anim.delay--;
|
|
// If Animation delay is 0 or less
|
|
if (anim.delay <= 0) {
|
|
// Reset Animation Delay
|
|
anim.delay = 30;
|
|
// Get Base Y
|
|
let baseY = this._textSprite.baseY;
|
|
let spacing = 3;
|
|
if (anim.direction === 0) {
|
|
let bottomY = baseY + (spacing * 2);
|
|
this._textSprite.y = Math.min(this._textSprite.y + spacing, bottomY);
|
|
if (this._textSprite.y >= bottomY) {
|
|
anim.direction = 1;
|
|
};
|
|
} else {
|
|
this._textSprite.y = Math.max(this._textSprite.y - spacing, baseY);
|
|
if (this._textSprite.y <= baseY) {
|
|
anim.direction = 0;
|
|
};
|
|
};
|
|
};
|
|
};
|
|
};
|
|
//=============================================================================
|
|
// * Update Retry Input
|
|
//=============================================================================
|
|
Scene_Gameover.prototype.updateRetryInput = function () {
|
|
// Get Input Data
|
|
const input = this._inputData;
|
|
|
|
// If Input is Active
|
|
if (input.active) {
|
|
// If Ok input is triggered
|
|
if (Input.isTriggered('ok')) {
|
|
// Play Load sound
|
|
SoundManager.playLoad();
|
|
// Get Animation Object
|
|
const anim = this._animData;
|
|
|
|
if (input.index === 0) {
|
|
if (anim.phase == 3) {
|
|
anim.phase = 4;
|
|
};
|
|
} else {
|
|
anim.phase = 8;
|
|
input.active = false;
|
|
this.fadeOutAll()
|
|
anim.delay = 70;
|
|
}
|
|
return;
|
|
};
|
|
|
|
if (Input.isRepeated('left')) {
|
|
SoundManager.playCursor();
|
|
input.index = Math.abs((input.index - 1) % input.max);
|
|
this.updateRetryInputCursorPosition(input.index);
|
|
return
|
|
};
|
|
if (Input.isRepeated('right')) {
|
|
SoundManager.playCursor();
|
|
input.index = (input.index + 1) % input.max;
|
|
this.updateRetryInputCursorPosition(input.index);
|
|
return
|
|
};
|
|
};
|
|
};
|
|
//=============================================================================
|
|
// * Update Retry Input Cursor Position
|
|
//=============================================================================
|
|
Scene_Gameover.prototype.updateRetryInputCursorPosition = function (index = 0) {
|
|
// Get Window
|
|
let win = this._retryWindows[index];
|
|
// If Window Exists
|
|
if (win) {
|
|
this._retryCursorSprite.x = win.x - 35;
|
|
this._retryCursorSprite.y = win.y + (win.height / 2);
|
|
};
|
|
};
|
|
|
|
|
|
|
|
//=============================================================================
|
|
// ** Window_MapName
|
|
//-----------------------------------------------------------------------------
|
|
// The window for displaying the map name on the map screen.
|
|
//=============================================================================
|
|
// * Object Initialization
|
|
//=============================================================================
|
|
Window_MapName.prototype.initialize = function () {
|
|
var wight = this.windowWidth();
|
|
var height = this.windowHeight();
|
|
Window_Base.prototype.initialize.call(this, 20, 20, wight, height);
|
|
this.opacity = 0;
|
|
this.contentsOpacity = 0;
|
|
this._showCount = 0;
|
|
this.refresh();
|
|
};
|
|
//=============================================================================
|
|
// * Settings
|
|
//=============================================================================
|
|
Window_MapName.prototype.standardPadding = function () { return 4; };
|
|
Window_MapName.prototype.windowWidth = function () { return Graphics.width; };
|
|
//=============================================================================
|
|
// * Update Fade In
|
|
//=============================================================================
|
|
Window_MapName.prototype.updateFadeIn = function () {
|
|
this.contentsOpacity += 16;
|
|
this.opacity += 16;
|
|
this.x = Math.min(20, this.x + 10);
|
|
};
|
|
//=============================================================================
|
|
// * Update Fade Out
|
|
//=============================================================================
|
|
Window_MapName.prototype.updateFadeOut = function () {
|
|
this.contentsOpacity -= 16;
|
|
this.opacity -= 16;
|
|
};
|
|
//=============================================================================
|
|
// * Refresh
|
|
//=============================================================================
|
|
Window_MapName.prototype.refresh = function () {
|
|
this.contents.clear();
|
|
// Get Name
|
|
var name = $gameMap.displayName();
|
|
// If Name
|
|
if (name) {
|
|
var textWidth = this.textWidth(name);
|
|
this.width = textWidth + 24;
|
|
this.x = -this.width;
|
|
var width = this.contentsWidth();
|
|
this.drawText(name, 0, -4, width, 'center');
|
|
} else {
|
|
// Set Width to 0
|
|
this.width = 0;
|
|
};
|
|
};
|
|
|
|
|
|
|
|
//=============================================================================
|
|
// ** Object_Movement
|
|
//-----------------------------------------------------------------------------
|
|
// This class is used to move object values.
|
|
//=============================================================================
|
|
function Object_Movement() { this.initialize.apply(this, arguments); }
|
|
Object_Movement.prototype.constructor = Object_Movement;
|
|
//=============================================================================
|
|
// * Object Initialization
|
|
//=============================================================================
|
|
Object_Movement.prototype.initialize = function () {
|
|
// Movement List
|
|
this._list = [];
|
|
// Remove List
|
|
this._removeList = [];
|
|
// Active Flag
|
|
this._active = true;
|
|
};
|
|
//=============================================================================
|
|
// * Tweens
|
|
//=============================================================================
|
|
Object_Movement.linearTween = function (t, b, c, d) { return c * t / d + b; };
|
|
// decelerating to zero velocity
|
|
Object_Movement.easeOutCirc = function (t, b, c, d) {
|
|
t /= d; t--;
|
|
return c * Math.sqrt(1 - t * t) + b;
|
|
};
|
|
// accelerating from zero velocity
|
|
Object_Movement.easeInCirc = function (t, b, c, d) {
|
|
t /= d;
|
|
return -c * (Math.sqrt(1 - t * t) - 1) + b;
|
|
};
|
|
//=============================================================================
|
|
// * Clear
|
|
//=============================================================================
|
|
Object_Movement.prototype.clear = function () {
|
|
// Clear Array
|
|
this.list.splice(0, this.list.length)
|
|
};
|
|
//=============================================================================
|
|
// * Determine if there is any movement
|
|
//=============================================================================
|
|
Object_Movement.prototype.isMoving = function () { return this._list.length > 0; };
|
|
//=============================================================================
|
|
// * Activate & Deactivate
|
|
//=============================================================================
|
|
Object_Movement.prototype.activate = function () { this._active = true; };
|
|
Object_Movement.prototype.deactivate = function () { this._active = false; };
|
|
//=============================================================================
|
|
// * Start Move
|
|
//=============================================================================
|
|
Object_Movement.prototype.startMove = function (data, uniq) {
|
|
// Set Unique Flag to true
|
|
if (uniq === undefined) { uniq = true; }
|
|
// If Unique Flag is true
|
|
if (uniq) { this.removeMoveWithObject(data.obj); }
|
|
// If Data has durations for tweening
|
|
if (data.durations || data.duration) {
|
|
// Set Default Easing
|
|
var defaultEasing = data.easing ? data.easing : Object_Movement.linearTween;
|
|
// Initialize Times
|
|
data.times = {};
|
|
// Initialize Easings
|
|
data.easings = data.easings || {};
|
|
// Get Duration Keys
|
|
var durations = Object.keys(data.durations);
|
|
// Set Initial Times
|
|
for (var i = 0; i < durations.length; i++) {
|
|
// Get Property
|
|
var p = durations[i];
|
|
// Set Initial Time
|
|
data.times[p] = 0
|
|
// Adjust To coordinates
|
|
data.to[p] = (data.to[p] - data.from[p]);
|
|
if (!data.easings[p]) {
|
|
data.easings[p] = defaultEasing;
|
|
};
|
|
};
|
|
} else {
|
|
// Initialize Easings
|
|
data.easings = data.easings || {};
|
|
};
|
|
// Add Data to list
|
|
this._list.push(data);
|
|
};
|
|
//=============================================================================
|
|
// * Remove Movement with Object
|
|
//=============================================================================
|
|
Object_Movement.prototype.removeMoveWithObject = function (obj) {
|
|
// Remove Move With Object
|
|
this._list = this._list.filter(function (data) {
|
|
return data.obj !== obj;
|
|
});
|
|
};
|
|
//=============================================================================
|
|
// * Remove Movement Object
|
|
//=============================================================================
|
|
Object_Movement.prototype.removeMove = function (data) {
|
|
// Get Index
|
|
var index = this._list.indexOf(data);
|
|
// If Index is more than 0
|
|
if (index >= 0) { this._list.splice(index, 1); }
|
|
};
|
|
//=============================================================================
|
|
// * Update Movement Object
|
|
//=============================================================================
|
|
Object_Movement.prototype.updateMove = function (data) {
|
|
// Get Properties
|
|
var properties = data.properties;
|
|
// Get Object
|
|
var obj = data.obj;
|
|
// Finished Flag
|
|
var finished = true;
|
|
// Go Through Properties
|
|
for (var i = 0; i < properties.length; i++) {
|
|
// Get Property
|
|
var p = properties[i]
|
|
// Get Easing
|
|
var easing = data.easings[p];
|
|
// Get Target Value
|
|
var t = data.to[p];
|
|
// If Easing
|
|
if (easing) {
|
|
// If Target is the same as current value
|
|
if (t === obj[p]) { continue; }
|
|
// Get Time
|
|
var time = data.times[p];
|
|
// Get Duration
|
|
var dur = data.durations[p];
|
|
if (time <= dur) {
|
|
// Increase Time
|
|
data.times[p]++
|
|
// Set Object Property
|
|
obj[p] = easing(time, data.from[p], data.to[p], dur);
|
|
// Set Finished flag to false
|
|
finished = false;
|
|
};
|
|
} else {
|
|
// Get Source
|
|
var s = obj[p];
|
|
// Get Speed
|
|
var spd = data.speeds[p];
|
|
if (t < s) { obj[p] = Math.max(t, s - spd); }
|
|
if (t > s) { obj[p] = Math.min(t, s + spd); }
|
|
// Set Finished Flag
|
|
if (t !== s) { finished = false; }
|
|
};
|
|
};
|
|
// If Finished
|
|
if (finished) {
|
|
// If Finished Function Exists
|
|
if (data.onFinish) { data.onFinish(); };
|
|
// Add to remove list
|
|
this._removeList.push(data);
|
|
};
|
|
};
|
|
//=============================================================================
|
|
// * Frame Update
|
|
//=============================================================================
|
|
Object_Movement.prototype.update = function () {
|
|
// Go Through List
|
|
for (var i = 0; i < this._list.length; i++) {
|
|
this.updateMove(this._list[i]);
|
|
};
|
|
// If Remove List Length is more than 0
|
|
if (this._removeList.length > 0) {
|
|
// Go Through Remove List
|
|
for (var i = 0; i < this._removeList.length; i++) {
|
|
// Remove Move
|
|
this.removeMove(this._removeList[i]);
|
|
};
|
|
// Clear Remove List
|
|
this._removeList = []
|
|
}
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//=============================================================================
|
|
// ** Window_MessageFaceBox
|
|
//-----------------------------------------------------------------------------
|
|
// This window displays faces for the message window.
|
|
//=============================================================================
|
|
function Window_MessageFaceBox() { this.initialize.apply(this, arguments); }
|
|
Window_MessageFaceBox.prototype = Object.create(Window_Base.prototype);
|
|
Window_MessageFaceBox.prototype.constructor = Window_MessageFaceBox;
|
|
//=============================================================================
|
|
// * Initialize Object
|
|
//=============================================================================
|
|
Window_MessageFaceBox.prototype.initialize = function (index) {
|
|
// Set Index
|
|
this._index = index;
|
|
// Clear
|
|
this.clear();
|
|
// Super Call
|
|
Window_Base.prototype.initialize.call(this, 0, 0, this.windowWidth(), this.windowHeight());
|
|
// Create Background
|
|
this.createBackground();
|
|
};
|
|
//=============================================================================
|
|
// * Define Openness
|
|
//=============================================================================
|
|
Object.defineProperty(Window_MessageFaceBox.prototype, 'openness', {
|
|
get: function () { return this._openness; },
|
|
set: function (value) {
|
|
// Super Call
|
|
Object.getOwnPropertyDescriptor(Window.prototype, 'openness').set.call(this, value);
|
|
// If Background Exists
|
|
if (this._background) {
|
|
this._background.scale.x = this._windowSpriteContainer.scale.x;
|
|
this._background.scale.y = this._windowSpriteContainer.scale.y;
|
|
this._background.x = this._windowSpriteContainer.x + 5;
|
|
this._background.y = this._windowSpriteContainer.y + 5;
|
|
};
|
|
},
|
|
configurable: true
|
|
});
|
|
//=============================================================================
|
|
// * Settings
|
|
//=============================================================================
|
|
Window_MessageFaceBox.prototype.standardPadding = function () { return 5; };
|
|
Window_MessageFaceBox.prototype.windowWidth = function () { return 114; };
|
|
Window_MessageFaceBox.prototype.windowHeight = function () { return 114; };
|
|
Window_MessageFaceBox.prototype.standardOpennessType = function () { return 2; };
|
|
//=============================================================================
|
|
// * Determine if Face is ready
|
|
//=============================================================================
|
|
Window_MessageFaceBox.prototype.isFaceReady = function () {
|
|
if (this._faceBitmap) { return this._faceBitmap.isReady(); };
|
|
return true;
|
|
};
|
|
//=============================================================================
|
|
// * Create Background Sprite
|
|
//=============================================================================
|
|
Window_MessageFaceBox.prototype.createBackground = function () {
|
|
// Create Background Sprite
|
|
this._background = new Sprite(new Bitmap(this.width - 10, this.height - 10));
|
|
this._background.x = 5
|
|
this._background.y = 5;
|
|
this.addChildToBack(this._background);
|
|
};
|
|
//=============================================================================
|
|
// * Clear
|
|
//=============================================================================
|
|
Window_MessageFaceBox.prototype.clear = function () {
|
|
// Set Face Bitmap
|
|
this._faceBitmap = null;
|
|
// Face Name
|
|
this._faceName = "";
|
|
// Face Index
|
|
this._faceIndex = 0;
|
|
};
|
|
//=============================================================================
|
|
// * Set Background Color
|
|
//=============================================================================
|
|
Window_MessageFaceBox.prototype.setBackgroundColor = function (color = 'rgba(0, 0, 0, 0)') {
|
|
// If Color
|
|
if (color) {
|
|
// Set Background Bitmap Color
|
|
this._background.bitmap.fillAll(color);
|
|
} else {
|
|
// Clear Background Bitmap Color
|
|
this._background.bitmap.clear();
|
|
};
|
|
};
|
|
//=============================================================================
|
|
// * Setup
|
|
//=============================================================================
|
|
Window_MessageFaceBox.prototype.setup = function (faceName, faceIndex, color = null) {
|
|
// Set Face Index
|
|
this._faceIndex = faceIndex;
|
|
// Set Face Name
|
|
this._faceName = faceName;
|
|
// Set Face Bitmap
|
|
this._faceBitmap = ImageManager.loadFace(faceName);
|
|
// Set Background Color
|
|
this.setBackgroundColor(color);
|
|
};
|
|
//=============================================================================
|
|
// * Refresh
|
|
//=============================================================================
|
|
Window_MessageFaceBox.prototype.refresh = function () {
|
|
// Clear Contents
|
|
this.contents.clear();
|
|
// If Face Name
|
|
if (this._faceName) {
|
|
// Draw Face
|
|
this.drawFace(this._faceName, this._faceIndex, 0, 0, 106, 106);
|
|
};
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//=============================================================================
|
|
// ** Scene_AtlasMaker
|
|
//-----------------------------------------------------------------------------
|
|
// This scene is used to make atlas data
|
|
//=============================================================================
|
|
function Scene_AtlasMaker() { this.initialize.apply(this, arguments); }
|
|
Scene_AtlasMaker.prototype = Object.create(Scene_Base.prototype);
|
|
Scene_AtlasMaker.prototype.constructor = Scene_AtlasMaker;
|
|
//=============================================================================
|
|
// * Object Initialization
|
|
//=============================================================================
|
|
Scene_AtlasMaker.prototype.initialize = function () {
|
|
// Super Call
|
|
Scene_Base.prototype.initialize.call(this);
|
|
this._sourceRectangle = new Rectangle(0, 0, 0, 0);
|
|
this._destRectangle = new Rectangle(0, 0, 0, 0);
|
|
this._atlasName = ""
|
|
|
|
// Resize Window to Screen
|
|
this.resizeWindowToScreen();
|
|
|
|
this._fileInput = document.createElement('input');
|
|
this._fileInput.accept = '.png'
|
|
this._fileInput.type = 'file';
|
|
|
|
this._fileInput.onchange = function () {
|
|
this._atlasName = this._fileInput.value.replace(/^.*[\\\/]/, '').split('.')[0]
|
|
this._atlasSprite.bitmap = ImageManager.loadAtlas(this._atlasName)
|
|
this.showSource();
|
|
// console.log(this.value)
|
|
}.bind(this)
|
|
|
|
// Get Atlas Load Button
|
|
var button = AtlasMakerContainer._buttons.atlasLoadButton;
|
|
button.onclick = function () { this._fileInput.click(); }.bind(this);
|
|
|
|
// Get Source Rect Inputs
|
|
var inputs = AtlasMakerContainer._sourceRectInputs;
|
|
|
|
for (var i = 0; i < inputs.length; i++) {
|
|
inputs[i].onchange = this.onSourceRectChange.bind(this, i);
|
|
}
|
|
|
|
// Get Source Rect Inputs
|
|
var inputs = AtlasMakerContainer._rectInputs;
|
|
for (var i = 0; i < inputs.length; i++) {
|
|
inputs[i].onchange = this.onDestRectChange.bind(this, i);
|
|
}
|
|
|
|
|
|
// Get Show Source Button
|
|
var button = AtlasMakerContainer._buttons.showSource;
|
|
button.onclick = this.showSource.bind(this)
|
|
|
|
// Get Show Result Button
|
|
var button = AtlasMakerContainer._buttons.showResult;
|
|
button.onclick = this.showResult.bind(this)
|
|
|
|
// Get Show Result Button
|
|
var button = AtlasMakerContainer._buttons.generateYAML;
|
|
button.onclick = this.makeYAML.bind(this)
|
|
|
|
|
|
|
|
// Get Show Result Button
|
|
var button = AtlasMakerContainer._buttons.copySize;
|
|
button.onclick = function () {
|
|
// Get Source Rect Inputs
|
|
var sInputs = AtlasMakerContainer._sourceRectInputs;
|
|
var rInputs = AtlasMakerContainer._rectInputs;
|
|
|
|
rInputs[2].value = sInputs[2].value
|
|
rInputs[3].value = sInputs[3].value
|
|
this.onDestRectChange()
|
|
}.bind(this);
|
|
|
|
for (var i = 0; i < 4; i++) {
|
|
// console.log(AtlasMakerContainer._buttons['step' + i])
|
|
AtlasMakerContainer._buttons['step' + i].onclick = this.processStep.bind(this, i);
|
|
}
|
|
|
|
|
|
|
|
AtlasMakerContainer.show()
|
|
|
|
};
|
|
//=============================================================================
|
|
// * Resize Window to screen size
|
|
//=============================================================================
|
|
Scene_AtlasMaker.prototype.resizeWindowToScreen = function () {
|
|
// Set Width & Height
|
|
Yanfly.Param.ScreenWidth = window.screen.width
|
|
Yanfly.Param.ScreenHeight = window.screen.height
|
|
SceneManager._screenWidth = Yanfly.Param.ScreenWidth;
|
|
SceneManager._screenHeight = Yanfly.Param.ScreenHeight;
|
|
// SceneManager._boxWidth = Yanfly.Param.ScreenWidth;
|
|
// SceneManager._boxHeight = Yanfly.Param.ScreenHeight
|
|
Yanfly.updateResolution();
|
|
// Get Window X & Y Coordinates
|
|
var x = (window.screen.width - Yanfly.Param.ScreenWidth) / 2
|
|
var y = (window.screen.height - Yanfly.Param.ScreenHeight) / 2
|
|
// Center Window
|
|
window.moveTo(0, 0);
|
|
|
|
|
|
|
|
Graphics.width = window.screen.width
|
|
Graphics.height = window.screen.height
|
|
|
|
Graphics._stretchEnabled = false;
|
|
Graphics._updateAllElements
|
|
|
|
this.x = 0;
|
|
this.y = 32;
|
|
};
|
|
//=============================================================================
|
|
// * Create
|
|
//=============================================================================
|
|
Scene_AtlasMaker.prototype.create = function () {
|
|
|
|
this._background = new Sprite(new Bitmap(Graphics.width, Graphics.height))
|
|
this._background.bitmap.fillAll('rgba(255, 255, 255, 1)')
|
|
this.addChild(this._background);
|
|
|
|
|
|
// Create Atlas Container
|
|
this._atlasContainer = new Sprite()
|
|
this._atlasContainer.y = 100;
|
|
this.addChild(this._atlasContainer)
|
|
|
|
// Create Atlas Sprite
|
|
this._atlasSprite = new Sprite();
|
|
// this._atlasSprite.x = 100;
|
|
// this._atlasSprite.y = 100
|
|
// this._atlasSprite.scale.set(0.75, 0.75)
|
|
this._atlasContainer.addChild(this._atlasSprite);
|
|
this._atlasSprite.bitmap = ImageManager.loadAtlas('Faraway_PolaroidAtlas')
|
|
|
|
|
|
this._atlasAreaSprite = new Sprite(new Bitmap(Graphics.width, Graphics.height));
|
|
this._atlasAreaSprite.bitmap.fillAll('rgba(255, 0, 0, 0.5)')
|
|
this._atlasSprite.addChild(this._atlasAreaSprite)
|
|
|
|
|
|
|
|
this._resultBack = new Sprite(new Bitmap(Graphics.width, Graphics.height));
|
|
this._resultBack.x = 25;
|
|
this._resultBack.y = 25;
|
|
this._resultBack.visible = false
|
|
this._atlasContainer.addChild(this._resultBack)
|
|
|
|
|
|
|
|
this._resultSprite = new Sprite();
|
|
this._resultSprite.x = 25;
|
|
this._resultSprite.y = 25;
|
|
this._atlasContainer.addChild(this._resultSprite)
|
|
|
|
|
|
|
|
this._cover = new Sprite(new Bitmap(Graphics.width, 100))
|
|
this._cover.bitmap.fillAll('rgba(32, 32, 32, 1)')
|
|
this.addChild(this._cover);
|
|
|
|
|
|
|
|
// img/pictures/Faraway_FA_A_01.png:
|
|
// atlasName: FarawayAtlas_01
|
|
// rect: {x: 0, y: 0, width: 361, height: 437}
|
|
// sourceRect: {x: 0, y: 0, width: 361 , height: 437}
|
|
|
|
}
|
|
//=============================================================================
|
|
// * Frame Update
|
|
//=============================================================================
|
|
Scene_AtlasMaker.prototype.getAtlasFile = function () {
|
|
|
|
// console.log(this._fileInput.value)
|
|
};
|
|
//=============================================================================
|
|
// * On Source Rect Change
|
|
//=============================================================================
|
|
Scene_AtlasMaker.prototype.onSourceRectChange = function (index) {
|
|
// Get Source Rect Inputs
|
|
var inputs = AtlasMakerContainer._sourceRectInputs;
|
|
|
|
inputs[1].min = 0;
|
|
inputs[1].max = this._atlasSprite.height
|
|
|
|
|
|
// var maxWidth = ;
|
|
// var maxHeight = this._atlasSprite.height
|
|
|
|
this._sourceRectangle.x = inputs[0].value
|
|
this._sourceRectangle.y = inputs[1].value
|
|
this._sourceRectangle.width = inputs[2].value
|
|
this._sourceRectangle.height = inputs[3].value
|
|
|
|
|
|
this._atlasAreaSprite.setFrame(0, 0, this._sourceRectangle.width, this._sourceRectangle.height)
|
|
this._atlasAreaSprite.x = this._sourceRectangle.x
|
|
this._atlasAreaSprite.y = this._sourceRectangle.y
|
|
|
|
};
|
|
//=============================================================================
|
|
// * On Destination Rect Change
|
|
//=============================================================================
|
|
Scene_AtlasMaker.prototype.onDestRectChange = function () {
|
|
// Get Source Rect Inputs
|
|
var inputs = AtlasMakerContainer._rectInputs;
|
|
|
|
this._destRectangle.x = inputs[0].value
|
|
this._destRectangle.y = inputs[1].value
|
|
this._destRectangle.width = inputs[2].value
|
|
this._destRectangle.height = inputs[3].value
|
|
};
|
|
//=============================================================================
|
|
// * On Source Rect Change
|
|
//=============================================================================
|
|
Scene_AtlasMaker.prototype.showSource = function () {
|
|
this._atlasSprite.x = 0
|
|
this._atlasSprite.y = 0
|
|
|
|
this._atlasSprite.visible = true;
|
|
this._atlasAreaSprite.visible = true;
|
|
this._resultSprite.visible = false
|
|
this._resultBack.visible = false
|
|
|
|
};
|
|
|
|
//=============================================================================
|
|
// * On Source Rect Change
|
|
//=============================================================================
|
|
Scene_AtlasMaker.prototype.showResult = function () {
|
|
this._atlasSprite.visible = false;
|
|
this._atlasAreaSprite.visible = false;
|
|
this._resultSprite.visible = true
|
|
this._resultBack.visible = true
|
|
|
|
var dRect = this._destRectangle;
|
|
var sRect = this._sourceRectangle
|
|
|
|
var srcBitmap = this._atlasSprite.bitmap;
|
|
var bitmap = new Bitmap(dRect.width, dRect.height);
|
|
|
|
bitmap.blt(srcBitmap, sRect.x, sRect.y, sRect.width, sRect.height, dRect.x, dRect.y);
|
|
|
|
|
|
this._resultBack.bitmap.clear();
|
|
this._resultBack.bitmap.fillRect(0, 0, bitmap.width, bitmap.height, 'rgba(32, 32, 32, 0.1)')
|
|
|
|
this._resultSprite.bitmap = bitmap;
|
|
};
|
|
//=============================================================================
|
|
// * Process Step
|
|
//=============================================================================
|
|
Scene_AtlasMaker.prototype.processStep = function (index) {
|
|
// Get Source Rect Inputs
|
|
var inputs = AtlasMakerContainer._sourceRectInputs;
|
|
|
|
var width = Number(inputs[2].value);
|
|
var height = Number(inputs[3].value);
|
|
|
|
switch (index) {
|
|
case 0: // Up
|
|
inputs[1].value = (Number(inputs[1].value) - height);
|
|
break;
|
|
case 1: // Down
|
|
inputs[1].value = (Number(inputs[1].value) + height);
|
|
break
|
|
case 2: // Left
|
|
inputs[0].value = (Number(inputs[0].value) - width);
|
|
break
|
|
case 3: // Right
|
|
inputs[0].value = (Number(inputs[0].value) + width);
|
|
break
|
|
}
|
|
this.onSourceRectChange();
|
|
|
|
};
|
|
//=============================================================================
|
|
// * Process Step
|
|
//=============================================================================
|
|
Scene_AtlasMaker.prototype.makeYAML = function () {
|
|
var dRect = this._destRectangle;
|
|
var sRect = this._sourceRectangle
|
|
var text = `
|
|
img/FOLDER/FILENAME.png:
|
|
atlasName: ${this._atlasName}
|
|
rect: {x: ${dRect.x}, y: ${dRect.y}, width: ${dRect.width}, height: ${dRect.height}}
|
|
sourceRect: {x: ${sRect.x}, y: ${sRect.y}, width: ${sRect.width}, height: ${sRect.height}}
|
|
`
|
|
Graphics._passStringToClipboard(text)
|
|
|
|
alert('YAML GENERATED! CHECK CLIPBOARD!')
|
|
};
|
|
//=============================================================================
|
|
// * Frame Update
|
|
//=============================================================================
|
|
Scene_AtlasMaker.prototype.update = function () {
|
|
// Run Original Function
|
|
Scene_Base.prototype.update.call(this);
|
|
|
|
|
|
if (Input.isRepeated('up')) {
|
|
|
|
this._atlasSprite.y -= (this._atlasSprite.height * 0.1)
|
|
|
|
if (this._atlasSprite.y < -this._atlasSprite.height) { this._atlasSprite.y = -this._atlasSprite.height }
|
|
};
|
|
|
|
|
|
if (Input.isRepeated('down')) {
|
|
|
|
this._atlasSprite.y += (this._atlasSprite.height * 0.1)
|
|
if (this._atlasSprite.y > 0) { this._atlasSprite.y = 0 }
|
|
|
|
};
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//=============================================================================
|
|
// ** AtlasMakerContainer
|
|
//----------------------------------------------------------------------------------------------
|
|
// The static class that handles Atlas settings
|
|
//=============================================================================
|
|
function AtlasMakerContainer() { throw new Error('This is a static class'); }
|
|
//=============================================================================
|
|
// * Initialize
|
|
//=============================================================================
|
|
AtlasMakerContainer.initialize = function () {
|
|
// Set Visibility
|
|
this._visible = false;
|
|
// Create Container
|
|
this.createContainer();
|
|
|
|
|
|
this.container.appendChild(this.createTextNode('ATLAS CONTROLS:', 5, 0));
|
|
this.container.appendChild(this.createTextNode('SOURCE RECT: (X, Y, WIDTH, HEIGHT)', 300, 0));
|
|
this.container.appendChild(this.createTextNode('RECT: (X, Y, WIDTH, HEIGHT)', 650, 0));
|
|
|
|
this._sourceRectInputs = [];
|
|
this._rectInputs = []
|
|
|
|
for (var i = 0; i < 4; i++) {
|
|
var numberInput = document.createElement("INPUT");
|
|
numberInput.type = "number";
|
|
numberInput.defaultValue = 0;
|
|
numberInput.style.position = 'absolute';
|
|
numberInput.style.left = (300 + (i * 70)) + 'px';
|
|
numberInput.style.top = '30px';
|
|
numberInput.style.width = '60px'
|
|
this._sourceRectInputs[i] = numberInput
|
|
this.container.appendChild(numberInput);
|
|
|
|
var numberInput = document.createElement("INPUT");
|
|
numberInput.type = "number";
|
|
numberInput.defaultValue = 0;
|
|
numberInput.style.position = 'absolute';
|
|
numberInput.style.left = (650 + (i * 70)) + 'px';
|
|
numberInput.style.top = '30px';
|
|
numberInput.style.width = '60px'
|
|
this._rectInputs[i] = numberInput
|
|
this.container.appendChild(numberInput);
|
|
}
|
|
|
|
|
|
|
|
// Initialize Buttons Object
|
|
this._buttons = {}
|
|
|
|
|
|
var button = document.createElement("BUTTON");
|
|
button.innerHTML = 'Load ATLAS IMAGE'
|
|
button.style.position = 'absolute';
|
|
button.style.left = '0px';
|
|
button.style.top = '30px';
|
|
this._buttons.atlasLoadButton = button;
|
|
this.container.appendChild(button);
|
|
|
|
|
|
var button = document.createElement("BUTTON");
|
|
button.innerHTML = 'GENERATE YAML'
|
|
button.style.position = 'absolute';
|
|
button.style.left = '150px';
|
|
button.style.top = '30px';
|
|
this._buttons.generateYAML = button;
|
|
this.container.appendChild(button);
|
|
|
|
var button = document.createElement("BUTTON");
|
|
button.innerHTML = 'SHOW SOURCE'
|
|
button.style.position = 'absolute';
|
|
button.style.left = '0px';
|
|
button.style.top = '60px';
|
|
this._buttons.showSource = button;
|
|
this.container.appendChild(button);
|
|
|
|
|
|
var button = document.createElement("BUTTON");
|
|
button.innerHTML = 'SHOW RESULT'
|
|
button.style.position = 'absolute';
|
|
button.style.left = '130px';
|
|
button.style.top = '60px';
|
|
this._buttons.showResult = button;
|
|
this.container.appendChild(button);
|
|
|
|
|
|
|
|
var button = document.createElement("BUTTON");
|
|
button.innerHTML = 'COPY SIZE'
|
|
button.style.position = 'absolute';
|
|
button.style.left = '650px';
|
|
button.style.top = '60px';
|
|
this._buttons.copySize = button;
|
|
this.container.appendChild(button);
|
|
|
|
|
|
|
|
var steps = ['↑', '↓', '←', '→']
|
|
|
|
for (var i = 0; i < 4; i++) {
|
|
var button = document.createElement("BUTTON");
|
|
button.innerHTML = 'STEP ' + steps[i]
|
|
button.style.position = 'absolute';
|
|
button.style.left = (300 + (i * 70)) + 'px';
|
|
button.style.top = '60px';
|
|
this._buttons['step' + i] = button
|
|
this.container.appendChild(button);
|
|
}
|
|
|
|
|
|
|
|
// // Create Text Node
|
|
// var node = document.createElement('p');
|
|
// node.innerHTML = text;
|
|
// node.style.position = 'absolute';
|
|
// node.style.margin = "0px";
|
|
// node.style.left = x + 'px';
|
|
// node.style.top = y + 'px';
|
|
// // node.style.textShadow = '1px 1px 0 rgba(0,0,0,0.5)';
|
|
// node.style.color = 'white';
|
|
// node.style.fontSize = '16px';
|
|
// node.style.fontWeight = 'bold';
|
|
};
|
|
//=============================================================================
|
|
// * Determine if Visible
|
|
//=============================================================================
|
|
AtlasMakerContainer.isVisible = function () { return this._visible };
|
|
//=============================================================================
|
|
// * Show
|
|
//=============================================================================
|
|
AtlasMakerContainer.show = function (toggle = true) {
|
|
if (this._visible && toggle) {
|
|
this.hide();
|
|
} else {
|
|
this._visible = true;
|
|
this.container.style.top = '5px';
|
|
this.container.style.opacity = 1;
|
|
};
|
|
};
|
|
//=============================================================================
|
|
// * Hide
|
|
//=============================================================================
|
|
AtlasMakerContainer.hide = function () {
|
|
this._visible = false;
|
|
this.container.style.top = '-' + this.container.style.height;
|
|
this.container.style.opacity = 0;
|
|
};
|
|
//=============================================================================
|
|
// * Create Container
|
|
//=============================================================================
|
|
AtlasMakerContainer.createContainer = function () {
|
|
this.container = document.createElement('div');
|
|
|
|
this.container.id = 'atlasControl';
|
|
this.container.style.position = 'absolute';
|
|
this.container.style.left = '5px';
|
|
this.container.style.top = '-140px';
|
|
this.container.style.width = (Graphics.width - 10) + 'px';
|
|
this.container.style.height = '100px';
|
|
// this.container.style.background = this.backColor();
|
|
this.container.style.opacity = 0;
|
|
this.container.style.zIndex = 10;
|
|
this.container.style.transition = "top .5s, opacity .5s";
|
|
|
|
// this.container.style.margin = 'auto';
|
|
|
|
this.container.style.width = 'auto';
|
|
this.container.style.right = '5px';
|
|
|
|
|
|
//position: absolute; left: 90px; right: 100px; width: auto;
|
|
|
|
document.body.appendChild(this.container);
|
|
};
|
|
//=============================================================================
|
|
// * Create Text Node
|
|
//=============================================================================
|
|
AtlasMakerContainer.createTextNode = function (text = '', x, y) {
|
|
// Create Text Node
|
|
var node = document.createElement('p');
|
|
node.innerHTML = text;
|
|
node.style.position = 'absolute';
|
|
node.style.margin = "0px";
|
|
node.style.left = x + 'px';
|
|
node.style.top = y + 'px';
|
|
// node.style.textShadow = '1px 1px 0 rgba(0,0,0,0.5)';
|
|
node.style.color = 'white';
|
|
node.style.fontSize = '16px';
|
|
node.style.fontWeight = 'bold';
|
|
// Return Node
|
|
return node;
|
|
};
|
|
//=============================================================================
|
|
// * Frame Update
|
|
//=============================================================================
|
|
AtlasMakerContainer.update = function () { };
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var textToClipboard_createAllElements = Graphics._createAllElements
|
|
//=============================================================================
|
|
// * Create All Elements
|
|
//=============================================================================
|
|
Graphics._createAllElements = function () {
|
|
// Create Cliboard Text
|
|
this._createClipboardText();
|
|
// Run Original Function
|
|
textToClipboard_createAllElements.call(this);
|
|
|
|
|
|
|
|
// "Tetas calientes que nunca se acaban\n\rY continan para siempre!"
|
|
|
|
|
|
|
|
// Graphics._passStringToClipboard("'Did you ever hear the Tragedy of Darth Plagueis the wise? I thought not. It's not a story the Jedi would tell you. It's a Sith legend. Darth Plagueis was a Dark Lord of the Sith, so powerful and so wise he could use the Force to influence the midichlorians to create life... He had such a knowledge of the dark side that he could even keep the ones he cared about from dying. The dark side of the Force is a pathway to many abilities some consider to be unnatural. He became so powerful... the only thing he was afraid of was losing his power, which eventually, of course, he did. Unfortunately, he taught his apprentice everything he knew, then his apprentice killed him in his sleep. It's ironic he could save others from death, but not himself.'")
|
|
|
|
|
|
AtlasMakerContainer.initialize()
|
|
|
|
// Graphics._passStringToClipboard("Y̶̨̧̡̧̲͚̦͇̘̮̰̥̠̯̗͉͉͇̳̻̲̩̭̺̺̰̼͖̼̥̗̗̲̺̰̗̩͈̏͌̉͘͝Ờ̶̡̡̨̨̧̱͙͓̲̯͍͚̼̪̙̳̼͇̜̩̞͔̮̮̮̜̘̎̊̄̿̿̑̐̈̅͊̓́͌͑͆͋̑͌͑̆̈́͊̐̈̈́́́̿͒̀̚̕̕͘̚̚̕͜͜͝͠ͅƯ̸̢̧̧̻̹͓͉͓͉̹̜̰̠͈̰͙̫̺̥̬̭͖̪̺͇̥͉̠͇͓͙͙̲͈̲̥̦̲̱̤̏͆͂̏̿͊̿̓̓͜ͅͅ ̴̨̨̨̤̮͔̳͕̻̙̙̜̠̺͚̟̲̜͙͙̹͔͚͇̲͉͇̯̮̝̜͙̱͓̫͓̝̯̯̩͖̱̓͐̄͜͜L̴̩͍̜̗̥̝̠͍̳͂͘͜͜E̴̡̢̖̲̠͙͖̞̮̺̟̤͙̬̰͕̼͇͔̥̱̰͙͉̖̤̲̮̮̟̘̙͕̽͊́̀̉̔͠ͅF̷̨̡̡̛̭̤̺̻̖̮̥̩̩̗̤̖̼̽̓̈́̿͐̃͗̿̾͛̑̔͒̒͒͐͒̈̅͆̈́͊̂̔̒͑̌̆̑̇̂̚̚͘̚͜͝ͅŢ̵̬̟͎̙̱̱̞̝̹̹̹͍͓͇̝̦̥͕̈́̅͂͊̃̇͐̃͒͋̓̈́͊̒̇̓͒̅̏̊̉̈́̐̈́́̉̈́́̓̋́̊̕͝ͅ ̴̡̧̧̨̛̥̯̣̹̙̩̜̱̣̜̱̱̻̪̘͔͎̤͇͖̠̝͙͕͈̯̭̟̞͖̤͖̭̫̲̼̀̄̒̇̑̓̓̈́̊̓͊̾̿̾͌͂̊̎̌̍̐̀̀̑̔̈̋̊̕̕͘͝͝͝͠͠ͅḾ̷̛͖̮̞̠̪͔̳̲͕̯͈͇̤͇̩̹̥̻̭̰̞͓̮̫̓͒͛̆̄̓̾̏̔̌́̔̐̽̓͆̅̇̂͋̃̆̇̏̅̓̀͂̔͋̌͗͗̀̉͘̚̕̕͠͝Ę̸̧̨̢̢̛͉̤͍͎͈̰̫̙̞̣̩͎͖̠̘̳̖͖̣̠̜̬̺̥̙͚̞͔̟̲̮̲̤̄̊̌̈̆̉́̈́̊̾͌͂̋̆͂͋̐̔̉̍͗̒͋̿̅̋̎̇̎̃͂̔͌͒͆͘̕̚͜͝͝͝͝ͅ ̵̛͉̣̳̰̎͋̐͂͂̀͗̀́̒̌͛̀̂̀͌̀̈́́̆̄̈́̆͐̈́̋̉̀̔̔̕͘̚͝͝͠T̸̨̛͖̥͕̲̘͕͖͉͚̝̤͚̲̘͕̲̗̟͈͇̙̠̥̩̼̬̳̬͍̉̽̒͗̂̅͗̾͗̈́̎͜͜ͅỚ̴̲͉̥͍̘͕̹̙̖͙̳̬̜̝̬̜̣̗̻̥̞̠̮͋͌́̅͑̊̕͜ͅͅ ̵̢̪̱̪̤̯͇͖͆́̍̌̏͑̋͑̉̎̌̾͊͌̍̀́͆̍͂̈́͠͠D̸̡̧̡̢̨̲͍̝̟͖̙̹̬͓̘͉̹͈̥͔̝͍̞̘̮͍̳͖̟̼̞̝̝͚̮̏̿͗̀͊͊I̷̡̨̢̢̡̢̛̼̺͚̺͇͙͍̙̳͇͇̠͕̜̪̙̜̰̼͈̞̺͓̪̣̼̬̭̝̟̻͚̱̮̻̓͐̈́̌̆̋́̀͆̍͑̾͋̓̈́͜͜͝͠ͅE̵͔͉̠̪͕̥͋̑̊͒̋̈́̽̆̾̚͜͜͠͝ͅ!̸̨̨̹̩̦͖̗̮͚̬̺̱̣̙͓̲̞͇̹͔͗̔̈́̅̈́͆͑͜͜͝͝!̸̛̛̛̜̟̟͍̹̰͓̈́̅͒͋̊̈́̂͂͑̓̐̆͂̎́̓̐͌͐̾̿̌̒̋͊̑̕̚͘͝͝͠͠͝!̵̨̛̱̙̗͖̰̺̣̣̗͍̘̦͙̭̙̲͖̻̬͙̟͔͇̟̞̬̾̊̅̉̈́̌̐̂͊̊͌͒̿̉͒̒̿̍͗͂̉͌͘̕͜͜ͅ")
|
|
};
|
|
//=============================================================================
|
|
// * Create Clipboard Text Element
|
|
//=============================================================================
|
|
Graphics._createClipboardText = function () {
|
|
// Create Input Element
|
|
this._clipboardText = document.createElement('TEXTAREA');
|
|
this._clipboardText.setAttribute("type", "text");
|
|
this._clipboardText.id = 'ClipboardTest';
|
|
document.body.appendChild(this._clipboardText);
|
|
}
|
|
//=============================================================================
|
|
// * Pass String to Clipboard
|
|
//=============================================================================
|
|
Graphics._passStringToClipboard = function (text) {
|
|
this._clipboardText.value = text
|
|
this._clipboardText.select();
|
|
document.execCommand("copy");
|
|
this._clipboardText.value = "";
|
|
}
|
|
|
|
|
|
|
|
|
|
function Scene_Blank() { this.initialize.apply(this, arguments); }
|
|
Scene_Blank.prototype = Object.create(Scene_Base.prototype);
|
|
Scene_Blank.prototype.constructor = Scene_Blank;
|
|
|
|
Scene_Blank.prototype.initialize = function () {
|
|
Scene_Base.prototype.initialize.call(this);
|
|
this.move = new Object_Movement();
|
|
};
|
|
|
|
|
|
Scene_Blank.prototype.prepareGraphics = function () {
|
|
for (var i = 1; i < 49; i++) {
|
|
ImageManager.loadPicture('Albums/Faraway/FA_A_' + i.padZero(2))
|
|
}
|
|
|
|
for (var i = 1; i < 7; i++) {
|
|
ImageManager.loadPicture('Albums/Faraway/faraway_pg' + i)
|
|
}
|
|
|
|
};
|
|
|
|
|
|
Scene_Blank.prototype.create = function () {
|
|
Scene_Base.prototype.create.call(this);
|
|
|
|
|
|
// this._testWindow = new Window_CommandTest()
|
|
this._testWindow = new Window_OmoMenuHelp()
|
|
this.addChild(this._testWindow)
|
|
|
|
|
|
var bitmap = ImageManager.loadPicture('Albums/Faraway/faraway_pg1')
|
|
|
|
var bltBitmap = new Bitmap(454, 320);
|
|
bltBitmap.fillAll('rgba(255, 0, 0, 0.5)')
|
|
bltBitmap.blt(bitmap, 0, 0, 454, 320, 0, 0)
|
|
this._testSprite = new Sprite(bltBitmap)
|
|
this.addChild(this._testSprite)
|
|
|
|
|
|
this._placingSprite = new Sprite(bitmap);
|
|
this._placingSprite.x = 454
|
|
this.addChild(this._placingSprite);
|
|
|
|
};
|
|
|
|
|
|
Scene_Blank.prototype.update = function () {
|
|
Scene_Base.prototype.update.call(this);
|
|
// Update Move
|
|
this.move.update();
|
|
if (Input.isTriggered('control')) {
|
|
|
|
|
|
var win = this._testWindow
|
|
var data = {
|
|
obj: win,
|
|
properties: ['x', 'y'],
|
|
from: { x: win.x, y: win.y, width: win.width, height: win.height },
|
|
to: { x: 0, y: 0, width: Graphics.width, height: Graphics.height },
|
|
durations: { x: 30, y: 30, width: 30, height: 30 },
|
|
};
|
|
|
|
// data.onFinish = function() {
|
|
// alert('tits')
|
|
// }
|
|
// data.to.contentsOpacity = Math.randomInt(255);
|
|
data.to.x = Math.randomInt(Graphics.width - this._testWindow.width);
|
|
data.to.y = Math.randomInt(Graphics.height - this._testWindow.height);
|
|
|
|
|
|
this.move.startMove(data);
|
|
|
|
// this._testWindow.setCursorAll(!this._testWindow.cursorAll());
|
|
// this._testWindow.updateCursor();
|
|
}
|
|
};
|
|
|
|
|
|
|
|
|
|
//-----------------------------------------------------------------------------
|
|
// Window_CommandTest
|
|
//
|
|
// The window for selecting an actor's action on the battle screen.
|
|
|
|
function Window_CommandTest() { this.initialize.apply(this, arguments); }
|
|
Window_CommandTest.prototype = Object.create(Window_Command.prototype);
|
|
Window_CommandTest.prototype.constructor = Window_CommandTest;
|
|
|
|
Window_CommandTest.prototype.initialize = function () {
|
|
Window_Command.prototype.initialize.call(this, 100, 100);
|
|
this.openness = 255;
|
|
this.activate()
|
|
};
|
|
|
|
Window_CommandTest.prototype.windowWidth = function () { return 350; };
|
|
Window_CommandTest.prototype.numVisibleRows = function () { return 4; };
|
|
Window_CommandTest.prototype.isUsingCustomCursorRectSprite = function () { return true; };
|
|
|
|
Window_CommandTest.prototype.maxCols = function () { return 2; };
|
|
Window_CommandTest.prototype.spacing = function () { return 24; };
|
|
|
|
Window_CommandTest.prototype.makeCommandList = function () {
|
|
|
|
for (var i = 0; i < 20; i++) {
|
|
this.addCommand('Tiddies ' + i, 'ok');
|
|
};
|
|
|
|
};
|
|
|
|
// Window_CommandTest.prototype.textPadding = function() {
|
|
// return 24;
|
|
// };
|
|
|
|
Window_CommandTest.prototype.drawItem = function (index) {
|
|
var rect = this.itemRect(index);
|
|
this.contents.fillRect(rect.x, rect.y, rect.width, rect.height - 1, 'rgba(255, 0, 0, 0.8)')
|
|
|
|
var rect = this.itemRectForText(index);
|
|
this.contents.fillRect(rect.x, rect.y, rect.width, rect.height - 1, 'rgba(0, 255, 0, 0.8)')
|
|
|
|
Window_Command.prototype.drawItem.call(this, index);
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//=============================================================================
|
|
// ** Spriteset_Map
|
|
//-----------------------------------------------------------------------------
|
|
// The set of sprites on the map screen.
|
|
//=============================================================================
|
|
// Alias Listing
|
|
//=============================================================================
|
|
_TDS_.OmoriBASE.Spriteset_Map_createScreenSprites = Spriteset_Map.prototype.createScreenSprites;
|
|
_TDS_.OmoriBASE.Spriteset_Map_update = Spriteset_Map.prototype.update;
|
|
//=============================================================================
|
|
// * Create Screen Sprites
|
|
//=============================================================================
|
|
Spriteset_Map.prototype.createScreenSprites = function () {
|
|
// Create Light Ambien Overlay Sprite
|
|
this.createLightAmbienceOverlaySprite();
|
|
// Run Original Function
|
|
_TDS_.OmoriBASE.Spriteset_Map_createScreenSprites.call(this);
|
|
};
|
|
//=============================================================================
|
|
// * Frame Update
|
|
//=============================================================================
|
|
Spriteset_Map.prototype.update = function () {
|
|
// Run Original Function
|
|
_TDS_.OmoriBASE.Spriteset_Map_update.call(this);
|
|
// Update Light Ambience Overlay
|
|
this.updateLightAmbienceOverlay()
|
|
};
|
|
//=============================================================================
|
|
// * Create Light Ambience Overlay Sprite
|
|
//=============================================================================
|
|
Spriteset_Map.prototype.createLightAmbienceOverlaySprite = function () {
|
|
// Create Ambience Light Overlay Sprite
|
|
this._ambienceLightOverlaySprite = new Sprite();
|
|
this._ambienceLightOverlaySprite.anchor.set(0.5, 0.5)
|
|
this.addChild(this._ambienceLightOverlaySprite);
|
|
// Create Padding Sprite
|
|
this._ambienceLightPadding1Sprite = new Sprite()
|
|
this._ambienceLightPadding1Sprite.anchor.set(0.5, 2)
|
|
this._ambienceLightOverlaySprite.addChild(this._ambienceLightPadding1Sprite);
|
|
// Create Padding Sprite
|
|
this._ambienceLightPadding2Sprite = new Sprite()
|
|
this._ambienceLightPadding2Sprite.anchor.set(-1, 0.5)
|
|
this._ambienceLightOverlaySprite.addChild(this._ambienceLightPadding2Sprite);
|
|
// Get Ambience Data
|
|
var data = $gamePlayer._ambienceData;
|
|
// If data has name
|
|
if (data.name) {
|
|
// Setup Ambience Bitmap
|
|
this.setupAmbienceBitmaps(data.name);
|
|
};
|
|
};
|
|
//=============================================================================
|
|
// * Setup Ambience Bitmaps
|
|
//=============================================================================
|
|
Spriteset_Map.prototype.setupAmbienceBitmaps = function (name) {
|
|
if (name) {
|
|
// Set Ambience Bitmap
|
|
this._ambienceLightOverlaySprite.bitmap = ImageManager.loadPicture(name);
|
|
// Get Color
|
|
var color = 'rgba(0, 0, 0, 1)';
|
|
// Set Padding Bitmaps
|
|
this._ambienceLightPadding1Sprite.bitmap = new Bitmap(Graphics.width, Graphics.height / 2)
|
|
this._ambienceLightPadding1Sprite.bitmap.fillAll(color)
|
|
this._ambienceLightPadding2Sprite.bitmap = new Bitmap(Graphics.width / 2, Graphics.height * 2)
|
|
this._ambienceLightPadding2Sprite.bitmap.fillAll(color)
|
|
} else {
|
|
// Clear Ambience Bitmaps
|
|
this._ambienceLightOverlaySprite.bitmap = null;
|
|
this._ambienceLightPadding1Sprite.bitmap = null;
|
|
this._ambienceLightPadding2Sprite.bitmap = null;
|
|
};
|
|
};
|
|
//=============================================================================
|
|
// * Hide or Show Ambience Overlay
|
|
//=============================================================================
|
|
Spriteset_Map.prototype.hideLightAmbienceOverlay = function () { this._ambienceLightOverlaySprite.visible = false; };
|
|
Spriteset_Map.prototype.showLightAmbienceOverlay = function () { this._ambienceLightOverlaySprite.visible = true; };
|
|
//=============================================================================
|
|
// * Update the Light Ambience Overlay
|
|
//=============================================================================
|
|
Spriteset_Map.prototype.updateLightAmbienceOverlay = function () {
|
|
// If Ambience Light Overlay has a bitmap
|
|
if (this._ambienceLightOverlaySprite.bitmap) {
|
|
// Set The ambience overlay sprite x & y coordinates
|
|
this._ambienceLightOverlaySprite.x = $gamePlayer.ambienceScreenX();
|
|
this._ambienceLightOverlaySprite.y = $gamePlayer.ambienceScreenY();
|
|
this._ambienceLightOverlaySprite.opacity = $gamePlayer._ambienceData.opacity;
|
|
// Adjust padding sprites positions
|
|
this._ambienceLightPadding1Sprite.anchor.y = this._ambienceLightOverlaySprite.y >= 240 ? 2 : -1;
|
|
this._ambienceLightPadding2Sprite.anchor.x = this._ambienceLightOverlaySprite.x >= 320 ? 2 : -1;
|
|
};
|
|
};
|
|
|
|
|
|
//=============================================================================
|
|
// * LOCALIZATION BASE ADDITION
|
|
//=============================================================================
|
|
|
|
(function () {
|
|
|
|
Window_Base.prototype.processDrawIcon = function (iconIndex, textState) {
|
|
const offset_data = LanguageManager.getMessageData("XX_BLUE.Window_Base").processDrawIconOffset
|
|
this.drawIcon(iconIndex, textState.x + 2 + offset_data[0], textState.y + 2 + offset_data[1]);
|
|
textState.x += Window_Base._iconWidth + 4;
|
|
};
|
|
|
|
})();
|
|
|