using System.Collections.Generic; using Continentis.MainGame; using Continentis.MainGame.Card; using Continentis.MainGame.Character; using SLSUtilities.General; using UnityEngine; namespace Continentis.Mods.Basic.Buffs { public class Blessing : CharacterCombatBuffBase { public Blessing (int stack, int duration) { Initialize(BuffType.Positive, BuffDispelLevel.Basic); this.contentSubmodule = new ContentSubmodule(this) .AddParameterGetter("Stack", () => unitedStackSubmodule.stackAmount.ToString()) .AddParameterGetter("Duration", () => roundFirstActionCountSubmodule.remainingCount.ToString()); this.iconSubmodule = new IconSubmodule(this); this.generalAttributeSubmodule = new GeneralAttributeSubmodule(this); this.generalAttributeSubmodule.numericChange[CharacterAttributes.UniversalOffset] = 1; this.unitedStackSubmodule = new UnitedStackSubmodule(this, stack); this.roundFirstActionCountSubmodule = new CountSubmodule(this, duration); this.eventSubmodule.onAfterPlayCard.Add("OnAfterPlayCard", new PrioritizedAction>(OnAfterPlayCard)); } public override bool OnBuffApply(out CharacterCombatBuffBase existingBuff) { MainGameManager.Instance.basePrefabs.GenerateInfoText("Buff_Basic_Blessing_DisplayName".Localize(), attachedCharacter.characterView); if (FindExistingSameBuff(out existingBuff)) { existingBuff.unitedStackSubmodule.AddStack(this.unitedStackSubmodule.stackAmount); existingBuff.roundFirstActionCountSubmodule.PickHigherCount(this.roundFirstActionCountSubmodule); return false; } return true; } private void OnAfterPlayCard(CardInstance card, List targetList) { unitedStackSubmodule.ModifyStack(-1); } } }