using System.Collections.Generic; using Continentis.MainGame; using Continentis.MainGame.Card; using Continentis.MainGame.Character; using Continentis.MainGame.Commands; using Continentis.Mods.Basic.Buffs; using SLSFramework.General; using UnityEngine; namespace Continentis.Mods.Basic { namespace Cards { public class Abundant : CardLogicBase { public override void SetUpLogicComponents() { AddLogicComponent().SetCondition(SelectCondition).SetEffect(SelectEffect); } public override List PlayEffect(List targetList) { CommandGroup mainGroup = new CommandGroup(ExecutionMode.Sequential, new Cmd_PlayAnimation(user.characterView, "Skill")); LogicComponent().AddSelectionCommands(ref mainGroup); return new List { mainGroup }; } private bool SelectCondition(CardInstance card) { return card.contentSubmodule.cardType is CardType.Attack && card.HasKeyword("Magic"); } private void SelectEffect(CardInstance card) { CreateCardBuff(GetAttribute("BuffStack_Abundant")).Apply(card, user, this); } } } namespace Buffs { public class Abundant : CardCombatBuffBase { public Abundant(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("Damage", 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["Damage"] = newStack; return false; } return true; } } } }