447 lines
No EOL
20 KiB
JavaScript
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();
|
|
}; |