using Continentis.MainGame; using Continentis.MainGame.Character; using SLSUtilities.General; namespace Continentis.Mods.Basic.Buffs { /// /// 下次行动体力增减:在下次行动开始时根据层数增减体力,之后移除。 /// public class NextActionStaminaModification : CharacterCombatBuffBase, IBuffExtension_IntegerRange { public NextActionStaminaModification(int stack) { Initialize(BuffType.Positive, BuffDispelLevel.Strong); this.contentSubmodule = new ContentSubmodule(this) .AddParameterGetter("Stack", () => unitedStackSubmodule.stackAmount.ToString()); this.iconSubmodule = new IconSubmodule(this).SetTextFunctions("Stack"); this.unitedStackSubmodule = new UnitedStackSubmodule(this, true, -1, stack, true); this.eventSubmodule = new EventSubmodule(this); this.eventSubmodule.onActionStart.Add("StaminaModification", new PrioritizedAction(OnActionStart)); (this as IBuffExtension_IntegerRange).Initialize(stack); } private void OnActionStart() { int modification = unitedStackSubmodule.stackAmount; attachedCharacter.ModifyStamina(modification); Remove(); } public override bool OnBuffApply(out CharacterCombatBuffBase existingBuff) { MainGameManager.Instance.basePrefabs.GenerateInfoText(contentSubmodule.displayName, attachedCharacter.characterView); // 若已存在则叠加层数(体力削减量叠加) if (FindExistingSameBuff(out existingBuff)) { existingBuff.unitedStackSubmodule.AddStack(this.unitedStackSubmodule.stackAmount); return false; } return true; } } }