slave-princess-charlotte/data/Plugin/TemporaryDataVirtualAttack.js
2025-10-12 13:17:46 -05:00

69 lines
2.5 KiB
JavaScript

/*--------------------------------------------------------------------------
戦闘時、Unitのcustom.tmpNowVirtualAttackに一時的にvirtualAttackUnitを保持します。
SkillRandomizer._isSkillInvokedInternalなどvirtualAttackUnitを渡せない関数で
virtualAttackUnitを参照することができます。
使用方法:
unit.custom.tmpNowVirtualAttackでvirtualAttackUnitの参照が可能
作成者:
o-to
更新履歴:
2015/05/30:新規作成
2016/01/10:
EPとFPシステム導入時に武器のEP・FP消費判定前にスキル発動によって
EP・FPを消費してしまって攻撃できない可能性があるため修正
--------------------------------------------------------------------------*/
(function() {
// 攻撃前にスキル発動するか
OT_BeforeAttackSkill = false;
// virtualAttackUnit作成時にテンポラリデータを作成
var alias1 = VirtualAttackControl.createVirtualAttackUnit;
VirtualAttackControl.createVirtualAttackUnit = function(unitSelf, targetUnit, isSrc, attackInfo) {
var virtualAttackUnit = alias1.call(this, unitSelf, targetUnit, isSrc, attackInfo);
delete virtualAttackUnit.unitSelf.custom.tmpNowVirtualAttack;
virtualAttackUnit.unitSelf.custom.tmpNowVirtualAttack = virtualAttackUnit;
//root.log('テンポラリ作成');
OT_BeforeAttackSkill = true;
return virtualAttackUnit;
};
// 戦闘後テンポラリデータ削除(削除しないとセーブ時にエラーになる)
var alias2 = NormalAttackOrderBuilder._endVirtualAttack;
NormalAttackOrderBuilder._endVirtualAttack = function(virtualActive, virtualPassive)
{
alias2.call(this, virtualActive, virtualPassive);
delete virtualActive.unitSelf.custom.tmpNowVirtualAttack;
delete virtualPassive.unitSelf.custom.tmpNowVirtualAttack;
OT_BeforeAttackSkill = false;
//root.log('テンポラリ削除');
};
// 攻撃開始前にスキル発動する可能性があるためチェックを入れる
var alias3 = VirtualAttackControl.isRound;
VirtualAttackControl.isRound = function(virtualAttackUnit)
{
OT_BeforeAttackSkill = true;
return alias3.call(this, virtualAttackUnit);
};
// 攻撃可能か判定時に攻撃開始後にスキル発動する可能性があるためチェックを外す
var alias4 = VirtualAttackControl.isAttackContinue;
VirtualAttackControl.isAttackContinue = function(virtualAttackUnit)
{
OT_BeforeAttackSkill = false;
return alias4.call(this, virtualAttackUnit);
};
})();