304 lines
No EOL
8.9 KiB
JavaScript
304 lines
No EOL
8.9 KiB
JavaScript
//=============================================================================
|
|
// TRP_SkillMotion.js
|
|
//=============================================================================
|
|
/*:
|
|
* @target MZ
|
|
* @author Thirop
|
|
* @plugindesc スキル使用時のモーション簡易設定
|
|
*
|
|
* @help
|
|
* 戦闘モーション拡張系のプラグインとは競合可能性大
|
|
* 必要に応じてプラグイン設定で機能を制限してご利用ください
|
|
*
|
|
* 《モーション設定》
|
|
* ※設定はいずれもスキルのメモ欄に記述
|
|
*
|
|
* □アニメーションの表示開始を遅らせる
|
|
* <animationDelay:遅延フレーム数>
|
|
*
|
|
* □スキル使用時のモーション変更
|
|
* <motion:モーション名>
|
|
* 有効なモーション名
|
|
* ・walk
|
|
* ・wait
|
|
* ・chant
|
|
* ・guard
|
|
* ・damage
|
|
* ・evade
|
|
* ・thrust
|
|
* ・swing
|
|
* ・missile
|
|
* ・skill
|
|
* ・spell
|
|
* ・item
|
|
* ・escape
|
|
* ・victory
|
|
* ・dying
|
|
* ・abnormal
|
|
* ・sleep
|
|
* ・dead
|
|
*
|
|
* □スキル使用時のモーションを硬直
|
|
* <motionD:硬直フレーム数>
|
|
* └武器を振ったあとにすぐにポーズを戻したくないときに設定
|
|
*
|
|
*
|
|
*
|
|
* @param disableAnimationDelay
|
|
* @text アニメ遅延機能の無効化
|
|
* @desc 競合で動かないときにOFF/falseにしてアニメーション遅延機能を無効化
|
|
* @type boolean
|
|
* @default false
|
|
*
|
|
* @param disableSkillMotion
|
|
* @text モーション変更の無効化
|
|
* @desc 競合で動かないときにOFF/falseにしてスキルモーション変更機能を無効化
|
|
* @type boolean
|
|
* @default false
|
|
*
|
|
* @param disableMotionDuration
|
|
* @text モーション硬直の無効化
|
|
* @desc 競合で動かないときにOFF/falseにしてモーションの硬直機能を無効化
|
|
* @type boolean
|
|
* @default false
|
|
*/
|
|
//=============================================================================
|
|
//PRAGMA: englishHeader
|
|
//PRAGMA_END: englishHeader
|
|
|
|
(function(){
|
|
'use strict';
|
|
|
|
var parameters = PluginManager.parameters('TRP_SkillMotion');
|
|
|
|
var disableAnimationDelay = parameters.disableAnimationDelay==='true';
|
|
var disableSkillMotion = parameters.disableSkillMotion==='true';
|
|
var disableMotionDuration = parameters.disableMotionDuration==='true';
|
|
|
|
|
|
//=============================================================================
|
|
// AnimationDelay
|
|
//=============================================================================
|
|
(()=>{
|
|
if(disableAnimationDelay)return;
|
|
|
|
//=============================================================================
|
|
// Window_BattleLog
|
|
//=============================================================================
|
|
var _Window_BattleLog_initialize = Window_BattleLog.prototype.initialize;
|
|
Window_BattleLog.prototype.initialize = function(rect) {
|
|
_Window_BattleLog_initialize.call(this,rect);
|
|
|
|
this._animationDelay = 0;
|
|
this._reservedAnimations = [];
|
|
};
|
|
|
|
|
|
var _Window_BattleLog_startAction = Window_BattleLog.prototype.startAction;
|
|
Window_BattleLog.prototype.startAction = function(subject, action, targets) {
|
|
_Window_BattleLog_startAction.call(this,subject,action,targets);
|
|
|
|
const item = action.item();
|
|
if(item && item.meta.animationDelay){
|
|
this._animationDelay = Number(item.meta.animationDelay)||0;
|
|
}else{
|
|
this._animationDelay = 0;
|
|
}
|
|
};
|
|
|
|
var _Window_BattleLog_endAction = Window_BattleLog.prototype.endAction;
|
|
Window_BattleLog.prototype.endAction = function(subject) {
|
|
_Window_BattleLog_endAction.call(this,subject);
|
|
this._animationDelay = 0;
|
|
};
|
|
|
|
var _Window_BattleLog_showAnimation = Window_BattleLog.prototype.showAnimation;
|
|
Window_BattleLog.prototype.showAnimation = function(
|
|
subject, targets, animationId
|
|
) {
|
|
if(this._animationDelay>0){
|
|
this._reservedAnimations.push([
|
|
this._animationDelay,...arguments
|
|
]);
|
|
}else{
|
|
_Window_BattleLog_showAnimation.call(this,...arguments);
|
|
}
|
|
};
|
|
|
|
var _Window_BattleLog_update = Window_BattleLog.prototype.update;
|
|
Window_BattleLog.prototype.update = function() {
|
|
_Window_BattleLog_update.call(this);
|
|
if(this._reservedAnimations){
|
|
this.updateReservedAnimations();
|
|
}
|
|
};
|
|
Window_BattleLog.prototype.updateReservedAnimations = function(){
|
|
var animations = this._reservedAnimations;
|
|
var length = animations.length;
|
|
for(var i=0; i<length; i=(i+1)|0){
|
|
var data = animations[i];
|
|
data[0] -= 1;
|
|
if(data[0]<=0){
|
|
animations.splice(i,1);
|
|
i -= 1;
|
|
length -= 1;
|
|
data.shift();
|
|
_Window_BattleLog_showAnimation.call(this,...data);
|
|
}
|
|
}
|
|
};
|
|
|
|
var _Window_BattleLog_isBusy = Window_BattleLog.prototype.isBusy
|
|
Window_BattleLog.prototype.isBusy = function(){
|
|
if(this._reservedAnimations.length)return true;
|
|
return _Window_BattleLog_isBusy.call(this);
|
|
};
|
|
})();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//=============================================================================
|
|
// SkillMotion
|
|
//=============================================================================
|
|
(()=>{
|
|
if(disableSkillMotion)return;
|
|
|
|
var _Game_Actor_performAction = Game_Actor.prototype.performAction;
|
|
Game_Actor.prototype.performAction = function(action) {
|
|
var skill = action.item();
|
|
if(skill && skill.meta.motion){
|
|
var motion;
|
|
if(skill.meta.motion === 'attack'){
|
|
var weapons = this.weapons();
|
|
var wtypeId = weapons[0] ? weapons[0].wtypeId : 0;
|
|
var attackMotion = $dataSystem.attackMotions[wtypeId];
|
|
if (attackMotion) {
|
|
if (attackMotion.type === 0) {
|
|
motion = 'thrust';
|
|
} else if (attackMotion.type === 1) {
|
|
motion = 'swing';
|
|
} else if (attackMotion.type === 2) {
|
|
motion = 'missile';
|
|
}
|
|
this.startWeaponAnimation(attackMotion.weaponImageId);
|
|
}else{
|
|
_Game_Actor_performAction.call(this,action);
|
|
}
|
|
}else{
|
|
motion = skill.meta.motion;
|
|
}
|
|
this.requestMotion(motion);
|
|
}else{
|
|
_Game_Actor_performAction.call(this,...arguments);
|
|
}
|
|
};
|
|
})();
|
|
|
|
|
|
|
|
|
|
//=============================================================================
|
|
// MotionDuration
|
|
//=============================================================================
|
|
(()=>{
|
|
if(disableMotionDuration)return;
|
|
|
|
//=============================================================================
|
|
// Game_Actor
|
|
//=============================================================================
|
|
var Game_Actor_initMembers = Game_Actor.prototype.initMembers;
|
|
Game_Actor.prototype.initMembers = function() {
|
|
Game_Actor_initMembers.call(this);
|
|
this._motionDuration = 0;
|
|
};
|
|
|
|
var _Game_Actor_performAction = Game_Actor.prototype.performAction;
|
|
Game_Actor.prototype.performAction = function(action) {
|
|
var skill = action.item();
|
|
|
|
if(skill.meta.motionD){
|
|
this._motionDuration = Number(skill.meta.motionD);
|
|
}else{
|
|
this._motionDuration = 0;
|
|
}
|
|
|
|
_Game_Actor_performAction.call(this,...arguments);
|
|
};
|
|
|
|
//=============================================================================
|
|
// Sprite_Actor
|
|
//=============================================================================
|
|
var _Sprite_Actor_initMembers = Sprite_Actor.prototype.initMembers;
|
|
Sprite_Actor.prototype.initMembers = function() {
|
|
_Sprite_Actor_initMembers.call(this);
|
|
this._motionDuration = 0;
|
|
};
|
|
|
|
var _Sprite_Actor_startMotion = Sprite_Actor.prototype.startMotion;
|
|
Sprite_Actor.prototype.startMotion = function(motionType) {
|
|
const newMotion = Sprite_Actor.MOTIONS[motionType];
|
|
if (this._motion !== newMotion) {
|
|
this._motionDuration = this._actor._motionDuration||0;
|
|
};
|
|
_Sprite_Actor_startMotion.call(this,...arguments);
|
|
};
|
|
|
|
var _Sprite_Actor_updateMotionCount = Sprite_Actor.prototype.updateMotionCount
|
|
Sprite_Actor.prototype.updateMotionCount = function() {
|
|
if(this._motion
|
|
&& !this._motion.loop
|
|
&& this._pattern===2
|
|
&& (this._motionCount+1) >= this.motionSpeed()
|
|
&& this._motionDuration>0)
|
|
{
|
|
this._motionDuration -= 1;
|
|
}else{
|
|
_Sprite_Actor_updateMotionCount.call(this);
|
|
}
|
|
};
|
|
|
|
var _Sprite_Actor_setupWeaponAnimation = Sprite_Actor.prototype.setupWeaponAnimation;
|
|
Sprite_Actor.prototype.setupWeaponAnimation = function() {
|
|
var requested = this._actor.isWeaponAnimationRequested();
|
|
|
|
_Sprite_Actor_setupWeaponAnimation.call(this);
|
|
|
|
if(requested){
|
|
this._weaponSprite.setMotionDuration(this._actor._motionDuration)
|
|
}
|
|
};
|
|
|
|
//=============================================================================
|
|
// Sprite_Weapon
|
|
//=============================================================================
|
|
var _Sprite_Weapon_initMembers = Sprite_Weapon.prototype.initMembers;
|
|
Sprite_Weapon.prototype.initMembers = function() {
|
|
_Sprite_Weapon_initMembers.call(this);
|
|
this._motionDuration = 0;
|
|
};
|
|
Sprite_Weapon.prototype.setMotionDuration = function(duration=0){
|
|
this._motionDuration = duration;
|
|
};
|
|
|
|
var _Sprite_Weapon_update = Sprite_Weapon.prototype.update;
|
|
Sprite_Weapon.prototype.update = function() {
|
|
if(this._pattern===2 && this._motionDuration>0){
|
|
this._motionDuration -= 1;
|
|
Sprite.prototype.update.call(this);
|
|
}else{
|
|
_Sprite_Weapon_update.call(this);
|
|
}
|
|
};
|
|
})();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
})(); |