OMORI_Android/www.eng/js/plugins/Character_Movement_Graphics.js
2024-01-15 18:44:53 +03:00

447 lines
No EOL
20 KiB
JavaScript

//=============================================================================
// TDS Character Movement Graphics
// Version: 1.5
//=============================================================================
// Add to Imported List
var Imported = Imported || {} ; Imported.TDS_CharacterMovementGraphics = true;
// Initialize Alias Object
var _TDS_ = _TDS_ || {} ; _TDS_.CharacterMovementGraphics = _TDS_.CharacterMovementGraphics || {};
//=============================================================================
/*:
* @plugindesc
* This plugins let's you set special graphics for character movements such as:
* idle, walking, and running.
*
* @author TDS
*
* @help
*
* Use the following in a script call to set the movement graphics for an
* actor:
*
* $gameActors.actor(actorId).setMovementGraphics(idle, walking, running);
* ^ actorId: Actor database ID.
* ^ idle: Graphics name for idle. (Not moving)
* ^ walking: Graphics name for walking. (Normal walking)
* ^ running: Graphics name for running. (Moving and Dashing at the same time)
*
* Example:
*
* $gameActors.actor(1).setMovementGraphics('$NormalMale', '$NormalMale', '$Teen_Male%(8)');
*
*
* Use the following in a script call to clear he movement graphics for an
* actor:
*
* $gameActors.actor(actorId).clearMovementGraphics();
* ^ actorId: Actor database ID.
*
* Example:
*
* $gameActors.actor(1).clearMovementGraphics();
*
*/
//=============================================================================
//=============================================================================
// ** Game_Actor
//-----------------------------------------------------------------------------
// The game object class for an actor.
//=============================================================================
// Alias Listing
//=============================================================================
_TDS_.CharacterMovementGraphics.Game_Actor_initMembers = Game_Actor.prototype.initMembers;
//=============================================================================
// * Initialize Members
//=============================================================================
Game_Actor.prototype.initMembers = function() {
// Run Original Function
_TDS_.CharacterMovementGraphics.Game_Actor_initMembers.call(this);
// Initialize Character Movement Graphics
this._characterMovementGraphics = {};
};
//=============================================================================
// * Set Movement Graphics
//=============================================================================
Game_Actor.prototype.setMovementGraphics = function(idle, walking, running) {
// Set Character Movement Graphics
this.setMovementGraphicData('idle', idle);
this.setMovementGraphicData('walking', walking);
this.setMovementGraphicData('running', running);
};
//=============================================================================
// * Set Movement Graphic Data
//=============================================================================
Game_Actor.prototype.setMovementGraphicData = function(name, data) {
// Set Default Data
if (typeof data === 'string') { data = { name: data, index: 1 }; };
// Set Character Movement Graphics Data
this._characterMovementGraphics[name.toLowerCase()] = data;
};
//=============================================================================
// * Clear Movement Graphics
//=============================================================================
Game_Actor.prototype.clearMovementGraphics = function() {
// Delete Character Movement Graphics
delete this._characterMovementGraphics;
// Initialize Character Movement Graphics
this._characterMovementGraphics = {};
};
//=============================================================================
// ** Game_CharacterBase
//-----------------------------------------------------------------------------
// The superclass of Game_Character. It handles basic information, such as
// coordinates and images, shared by all characters.
//=============================================================================
// Alias Listing
//=============================================================================
_TDS_.CharacterMovementGraphics.Game_CharacterBase_update = Game_CharacterBase.prototype.update;
//=============================================================================
// * Frame Update
//=============================================================================
Game_CharacterBase.prototype.update = function() {
// Run Original Function
_TDS_.CharacterMovementGraphics.Game_CharacterBase_update.call(this);
// Update Movement Graphics
this.updateMovementGraphics();
};
//=============================================================================
// * Determine if Movement Graphic should be updated
//=============================================================================
Game_CharacterBase.prototype.canUpdateMovementGraphics = function() { return false; };
//=============================================================================
// * Determine if running graphic should be used
//=============================================================================
Game_CharacterBase.prototype.shouldUseRunningGraphics = function() { return false; }
//=============================================================================
// * Determine if Character is climbing
//=============================================================================
Game_CharacterBase.prototype.isClimbing = function() { return this.regionId() === 90; };
//=============================================================================
// * Get Movement Graphics Source
//=============================================================================
Game_CharacterBase.prototype.movementGraphicsSource = function() { return null };
//=============================================================================
// * Update Movement Graphics
//=============================================================================
Game_CharacterBase.prototype.updateMovementGraphics = function() {
// If Normal
if (this.canUpdateMovementGraphics()) {
// Get Actor
var actor = this.movementGraphicsSource();
// If Actor Exists
if (actor) {
// Get Graphics
var graphics = actor._characterMovementGraphics;
// Get Character Graphic Name
var characterName = this.characterName();
// Get character index
var characterIndex = this.characterIndex();
// If Moving
if (this.isMoving()) {
// If Climbing
if (this.isClimbing()) {
if (graphics.climbing && (characterName !== graphics.climbing.name || characterIndex !== graphics.climbing.index)) {
let bitmap = ImageManager.loadCharacter(graphics.climbing.name);
if(!bitmap.isReady()) {return;}
this.setImage(graphics.climbing.name, graphics.climbing.index);
}
} else {
if (this.shouldUseRunningGraphics()) {
if (graphics.running && (characterName !== graphics.running.name || characterIndex !== graphics.running.index)) {
let bitmap = ImageManager.loadCharacter(graphics.running.name);
if(!bitmap.isReady()) {return;}
this.setImage(graphics.running.name, graphics.running.index);
}
} else {
if (graphics.walking && (characterName !== graphics.walking.name || characterIndex !== graphics.walking.index)) {
let bitmap = ImageManager.loadCharacter(graphics.walking.name);
if(!bitmap.isReady()) {return;}
this.setImage(graphics.walking.name, graphics.walking.index);
}
};
};
} else {
// If Climbing
if (this.isClimbing()) {
if (graphics.climbing && (characterName !== graphics.climbing.name || characterIndex !== graphics.climbing.index)) {
let bitmap = ImageManager.loadCharacter(graphics.climbing.name);
if(!bitmap.isReady()) {return;}
this.setImage(graphics.climbing.name, graphics.climbing.index);
}
} else {
if (graphics.idle && this._stopCount > 0 && (characterName !== graphics.idle.name || characterIndex !== graphics.idle.index)) {
let bitmap = ImageManager.loadCharacter(graphics.idle.name);
if(!bitmap.isReady()) {return;}
this.setImage(graphics.idle.name, graphics.idle.index);
}
}
}
}
};
// Update Toast
this.updateToast();
};
//=============================================================================
// * Update Toast
//=============================================================================
Game_CharacterBase.prototype.updateToast = function() {
// Get Actor
var actor = this.movementGraphicsSource();
// If Actor exists
if (actor) {
// If Switch 12 is on
if ($gameSwitches.value(12) === true) {
// If Actor is dead
if (actor.isDead()) {
// Get Character Graphic Name
var characterName = this.characterName();
// If not on Toasted
if (characterName !== '$Toasted') { this.setImage("$Toasted", 0); }
this.setStepAnime(true);
} else {
this.setStepAnime(false);
};
};
}
};
//=============================================================================
// ** Game_Player
//-----------------------------------------------------------------------------
// The game object class for the player. It contains event starting
// determinants and map scrolling functions.
//=============================================================================
// * Determine if Movement Graphic should be updated
//=============================================================================
Game_Player.prototype.canUpdateMovementGraphics = function() { return this.isNormal() && this.movementGraphicsSource().isAlive(); };
//=============================================================================
// * Get Movement Graphics Source
//=============================================================================
Game_Player.prototype.movementGraphicsSource = function() { return $gameParty.leader(); };
//=============================================================================
// * Determine if running graphic should be used
//=============================================================================
Game_Player.prototype.shouldUseRunningGraphics = function() { return this.isDashing(); }
Game_Player.prototype.getFollowers = function() {
return this._followers;
};
Game_Followers.prototype.getFollowerById = function(id) {
// Go Through Data
for (var i = 0; i < this._data.length; i++) {
// Get Follower
var follower = this._data[i];
// If Follower Graphics Data matches the ID
if (follower._graphicsData && follower._graphicsData.id === id) {
return follower;
};
};
return null;
};
//=============================================================================
// ** Game_Follower
//-----------------------------------------------------------------------------
// The game object class for a follower. A follower is an allied character,
// other than the front character, displayed in the party.
//=============================================================================
// Alias Listing
//=============================================================================
_TDS_.CharacterMovementGraphics.Game_Follower_initialize = Game_Follower.prototype.initialize;
Game_Follower.prototype.initialize = function(memberIndex) {
_TDS_.CharacterMovementGraphics.Game_Follower_initialize.call(this, memberIndex);
this._characterMovementGraphics = null;
this._hasCharacterMovementGraphics = false;
};
_TDS_.CharacterMovementGraphics.Game_Follower_update = Game_Follower.prototype.update;
//=============================================================================
// * Determine if Movement Graphic should be updated
//=============================================================================
Game_Follower.prototype.canUpdateMovementGraphics = function() {
// Get Source
var source = this.movementGraphicsSource();
// Return if source exists and is alive
if (source) {
return $gamePlayer.isNormal() && this.isVisible() && source && source.isAlive();
} else {
return this._graphicsData && this._graphicsData.id && this._hasCharacterMovementGraphics;
}
};
//=============================================================================
// * Get Movement Graphics Source
//=============================================================================
Game_Follower.prototype.movementGraphicsSource = function() { return this.actor() };
//=============================================================================
// * Determine if running graphic should be used
//=============================================================================
Game_Follower.prototype.shouldUseRunningGraphics = function() { return $gamePlayer.isDashing(); }
//=============================================================================
// * Determine if running graphic should be used
//=============================================================================
Game_Follower.prototype.update = function() {
// Run Original Version
_TDS_.CharacterMovementGraphics.Game_Follower_update.call(this);
// Update Toast
this.updateToast();
};
//=============================================================================
// * Set Movement Graphics
//=============================================================================
Game_Follower.prototype.setMovementGraphics = function(idle, walking, running) {
// Set Character Movement Graphics
if (!this._characterMovementGraphics) this._characterMovementGraphics = {};
this._hasCharacterMovementGraphics= true;
this.setMovementGraphicData('idle', idle);
this.setMovementGraphicData('walking', walking);
this.setMovementGraphicData('running', running);
};
//=============================================================================
// * Set Movement Graphic Data
//=============================================================================
Game_Follower.prototype.setMovementGraphicData = function(name, data) {
if (!this._characterMovementGraphics) this._characterMovementGraphics = {};
// Set Default Data
if (typeof data === 'string') { data = { name: data, index: 1 }; };
// Set Character Movement Graphics Data
this._characterMovementGraphics[name.toLowerCase()] = data;
};
//=============================================================================
// * Clear Movement Graphics
//=============================================================================
Game_Follower.prototype.clearMovementGraphics = function() {
// Delete Character Movement Graphics
delete this._characterMovementGraphics;
// Initialize Character Movement Graphics
this._characterMovementGraphics = null;
this._hasCharacterMovementGraphics = false;
};
Game_Follower.prototype.updateMovementGraphics = function() {
// If Normal
if (this.canUpdateMovementGraphics()) {
// Get Actor
var actor = this.movementGraphicsSource();
// If Actor Exists
if (actor) {
// Get Graphics
var graphics = actor._characterMovementGraphics;
// Get Character Graphic Name
var characterName = this.characterName();
// Get character index
var characterIndex = this.characterIndex();
// If Moving
if (this.isMoving()) {
// If Climbing
if (this.isClimbing()) {
if (characterName === "DW_BASIL" || characterName === "$DW_BASIL_RUN%(8)") {
this._characterMovementGraphics.climbing = { name: "DW_Climb", index: 0 };
}
if (graphics.climbing && (characterName !== graphics.climbing.name || characterIndex !== graphics.climbing.index)) {
let bitmap = ImageManager.loadCharacter(graphics.climbing.name);
if(!bitmap.isReady()) {return;}
this.setImage(graphics.climbing.name, graphics.climbing.index);
}
} else {
if (this.shouldUseRunningGraphics()) {
if (graphics.running && (characterName !== graphics.running.name || characterIndex !== graphics.running.index)) {
let bitmap = ImageManager.loadCharacter(graphics.running.name);
if(!bitmap.isReady()) {return;}
this.setImage(graphics.running.name, graphics.running.index);
}
} else {
if (graphics.walking && (characterName !== graphics.walking.name || characterIndex !== graphics.walking.index)) {
let bitmap = ImageManager.loadCharacter(graphics.walking.name);
if(!bitmap.isReady()) {return;}
this.setImage(graphics.walking.name, graphics.walking.index);
}
};
};
} else {
// If Climbing
if (this.isClimbing()) {
if (characterName === "DW_BASIL" || characterName === "$DW_BASIL_RUN%(8)") {
this._characterMovementGraphics.climbing = { name: "DW_Climb", index: 0 };
}
if (graphics.climbing && (characterName !== graphics.climbing.name || characterIndex !== graphics.climbing.index)) {
let bitmap = ImageManager.loadCharacter(graphics.climbing.name);
if(!bitmap.isReady()) {return;}
this.setImage(graphics.climbing.name, graphics.climbing.index);
}
} else {
if (graphics.idle && this._stopCount > 0 && (characterName !== graphics.idle.name || characterIndex !== graphics.idle.index)) {
let bitmap = ImageManager.loadCharacter(graphics.idle.name);
if(!bitmap.isReady()) {return;}
this.setImage(graphics.idle.name, graphics.idle.index);
}
}
}
} else if (this._characterMovementGraphics) {
// Get Graphics
var graphics = this._characterMovementGraphics;
// Get Character Graphic Name
var characterName = this.characterName();
// Get character index
var characterIndex = this.characterIndex();
// If Moving
if (this.isMoving()) {
// If Climbing
if (this.isClimbing()) {
if (characterName === "DW_BASIL" || characterName === "$DW_BASIL_RUN%(8)") {
this._characterMovementGraphics.climbing = { name: "DW_Climb", index: 0 };
}
if (graphics.climbing && (characterName !== graphics.climbing.name || characterIndex !== graphics.climbing.index)) {
let bitmap = ImageManager.loadCharacter(graphics.climbing.name);
if(!bitmap.isReady()) {return;}
this.setImage(graphics.climbing.name, graphics.climbing.index);
}
} else {
if (this.shouldUseRunningGraphics()) {
if (graphics.running && (characterName !== graphics.running.name || characterIndex !== graphics.running.index)) {
let bitmap = ImageManager.loadCharacter(graphics.running.name);
if(!bitmap.isReady()) {return;}
this.setImage(graphics.running.name, graphics.running.index);
}
} else {
if (graphics.walking && (characterName !== graphics.walking.name || characterIndex !== graphics.walking.index)) {
let bitmap = ImageManager.loadCharacter(graphics.walking.name);
if(!bitmap.isReady()) {return;}
this.setImage(graphics.walking.name, graphics.walking.index);
}
};
};
} else {
// If Climbing
if (this.isClimbing()) {
if (characterName === "DW_BASIL" || characterName === "$DW_BASIL_RUN%(8)") {
this._characterMovementGraphics.climbing = { name: "DW_Climb", index: 0 };
}
if (graphics.climbing && (characterName !== graphics.climbing.name || characterIndex !== graphics.climbing.index)) {
let bitmap = ImageManager.loadCharacter(graphics.climbing.name);
if(!bitmap.isReady()) {return;}
this.setImage(graphics.climbing.name, graphics.climbing.index);
}
} else {
if (graphics.idle && this._stopCount > 0 && (characterName !== graphics.idle.name || characterIndex !== graphics.idle.index)) {
let bitmap = ImageManager.loadCharacter(graphics.idle.name);
if(!bitmap.isReady()) {return;}
this.setImage(graphics.idle.name, graphics.idle.index);
}
}
}
}
};
// Update Toast
this.updateToast();
};