using System.Collections.Generic; using Cielonos.MainGame.Characters; namespace Cielonos.MainGame.Inventory.Collections { public partial class FutureWand { /// /// 轻攻击输入。 /// public override void OnPrimaryPress(List modifiers = null) { if(_isHoldingAttack) return; CharacterBase target = RefreshPrimaryTarget(); if (modifiers.Has(PlayerInputModifierType.SpecialB)) { if (functionSm["CubicAttack"].IsAvailable() && fullBodyFuncAnimSm.CheckPlayability() && PlayCubicAttack(PrimaryTarget)) { comboSm.main.Reset(); } return; } if (functionSm["LightAttack"].IsAvailable() && fullBodyFuncAnimSm.CheckPlayability()) { string nextNodeName = comboSm.main.GetNextNodeName("L"); if (PlayNormalAttackL(target, nextNodeName)) { comboSm.main.NextCombo("L"); } } } /// /// 重攻击输入。 /// public override void OnSecondaryPress(List modifiers = null) { if (!_isHoldingAttack && modifiers.Has(PlayerInputModifierType.SpecialB)) { if (_hasStellarRingQuickcaster && PlayStellarRingQuickcasterSpinArea()) { _isHoldingAttack = false; return; } CharacterBase target = RefreshPrimaryTarget(); if (functionSm["SpinArea"].IsAvailable() && fullBodyFuncAnimSm.CheckPlayability() && PlayHoldAttackStart(target)) { _isHoldingAttack = true; } return; } if (functionSm["HeavyAttack"].IsAvailable() && fullBodyFuncAnimSm.CheckPlayability()) { CharacterBase target = RefreshPrimaryTargetByMelee(); string nextNodeName = comboSm.main.GetNextNodeName("R"); if (PlayNormalAttackR(target, nextNodeName)) { comboSm.main.NextCombo("R"); } } } /// /// 重攻击释放。 /// public override void OnSecondaryRelease() { if (_isHoldingAttack) { string animName = player.animationSc.fullBodyFuncAnimSm.currentRuntimeFuncAnim?.animationName; if (animName is "HoldAttackLoop" or "HoldAttackStart") { if (_spinAreaUpgradeCount == 0) { PlayHoldAttackEnd(); } else { PlayReleaseSpinArea(); } } RecallAllSpinAreas(); } _isHoldingAttack = false; } public override void OnSpecialAPress(List modifiers = null) { if (functionSm["Lightning"].IsAvailable() && fullBodyFuncAnimSm.CheckPlayability()) { PlayLightning(RefreshPrimaryTarget()); } } } }