using Continentis.MainGame; using Continentis.MainGame.Character; using SLSUtilities.General; namespace Continentis.Mods.Basic.Buffs { public class EstablishFormation : CharacterCombatBuffBase { public EstablishFormation(int stack, int count) { Initialize(BuffType.Positive, BuffDispelLevel.Basic); contentSubmodule = new ContentSubmodule(this) .AddParameterGetter("Stack", () => unitedStackSubmodule.stackAmount.ToString()) .AddParameterGetter("Count", () => actionCountSubmodule.remainingCount.ToString()); iconSubmodule = new IconSubmodule(this); unitedStackSubmodule = new UnitedStackSubmodule(this, stack); actionCountSubmodule = new CountSubmodule(this, count); eventSubmodule = new EventSubmodule(this); eventSubmodule.onGetAttacked.Add("EstablishFormation", new PrioritizedAction(atkResult => { attachedCharacter.Attack(atkResult.attacker, unitedStackSubmodule.stackAmount, null, false, true); })); eventSubmodule.onRoundStart.Add("EstablishFormation", new PrioritizedAction(() => { Remove(); })); } public override bool OnBuffApply(out CharacterCombatBuffBase existingBuff) { MainGameManager.Instance.basePrefabs.GenerateInfoText(contentSubmodule.displayName, attachedCharacter.characterView); if (FindExistingSameBuff(out existingBuff)) { existingBuff.unitedStackSubmodule.PickHigherStack(unitedStackSubmodule); existingBuff.actionCountSubmodule.PickHigherCount(actionCountSubmodule); return false; } return true; } } }