using Cielonos.UI; using SLSUtilities.FunctionalAnimation; using UnityEngine; namespace Cielonos.MainGame.Characters.Buffs { public class GeneralIncapacitation : CharacterBuffBase { public GeneralIncapacitation(float duration) { Initialize(BuffType.Negative, BuffDispelLevel.Strong); this.contentSubmodule = new ContentSubmodule(this); this.statusSubmodule = new StatusSubmodule(this, StatusType.Incapacitation); this.independentStackSubmodule = new IndependentStackSubmodule(this, 1, duration); } public override bool OnBuffApply(out CharacterBuffBase existingBuff) { //GeneralUtilities.InstantiateInfo(attachedEntity.flexibleCenterPoint.position, "失能", Color.white, 2); if (FindExistingSameBuff(out existingBuff)) { existingBuff.independentStackSubmodule.Merge(this.independentStackSubmodule); return false; } return true; } public override void OnAfterFirstApply() { base.OnAfterFirstApply(); attachedCharacter.animationSc.fullBodyFuncAnimSm.Stop(DisruptionType.ForcedExternal); attachedCharacter.animationSc.fullBodyFuncAnimSm.Play("KnockOut"); } public override void OnBuffUpdate() { base.OnBuffUpdate(); PlayerCanvas.Instance.bossInfoUIArea[attachedCharacter]?.UpdateArmor(); } public override void OnBuffRemove() { statusSubmodule.RemoveStatus(); attachedCharacter.animationSc.fullBodyFuncAnimSm.Play("Rise"); //(attachedCharacter as Automata)?.behaviorTree.RestartBehavior(); } } }