using System.Collections.Generic; using Continentis.MainGame; using Continentis.MainGame.Card; using Continentis.MainGame.Character; using Continentis.MainGame.Commands; using SLSUtilities.General; namespace Continentis.Mods.Basic { namespace Cards.Cleric { public class DivineProtection : CardLogicBase { public override CommandGroup PlayEffect(List targetList) { base.PlayEffect(targetList); CommandGroup mainGroup = ForEachTarget(targetList, target => Cmd.Parallel( new Cmd_PlayAnimation(user.characterView, "Skill"), Cmd.After(0.2f, () => user.AddBlock(GetAttribute("Block"))) )); mainGroup.AddCommand(Cmd.Do(() => { CreateCardBuff(GetAttribute("BlockStack")).Apply(card, user, this); card.contentSubmodule.dirtyMark = true; })); return mainGroup; } } } namespace Buffs { public class DivineProtection : CardCombatBuffBase { public DivineProtection(int stack) { Initialize(BuffType.Positive, BuffDispelLevel.Strong); this.contentSubmodule = new ContentSubmodule(this); this.unitedStackSubmodule = new UnitedStackSubmodule(this, true, -1, stack); this.attributeSubmodule = new AttributeSubmodule(this); this.attributeSubmodule.numericChange.Add("Block", stack); } public override bool OnBuffApply(out CardCombatBuffBase existingBuff) { if (FindExistingSameBuff(out existingBuff)) { existingBuff.unitedStackSubmodule.ModifyStack(this.unitedStackSubmodule.stackAmount); int newStack = existingBuff.unitedStackSubmodule.stackAmount; existingBuff.attributeSubmodule.numericChange["Block"] = newStack; return false; } return true; } } } }