using System.Collections.Generic; using Continentis.MainGame; using Continentis.MainGame.Card; using Continentis.MainGame.Character; using Continentis.MainGame.Combat; using Continentis.MainGame.Commands; using Continentis.Mods.Basic.Buffs; using SLSUtilities.General; namespace Continentis.Mods.Basic.Cards { /// /// 链式闪电:对主目标造成雷(Storm)属性伤害。 /// 若任意敌方角色有感电(Shocked)Buff,则对这些角色额外执行一次伤害。 /// public class ChainLightning : CardLogicBase { private AttackContext StormCtx => AttackContext.Default(card) .WithDamageKeywords(CardKeywords.Storm); public override void SetUpLogicComponents() { AddLogicComponent(); } public override CommandGroup PlayEffect(List targetList) { CharacterBase mainTarget = targetList[0]; // 获取所有敌方角色 List allEnemies = CombatMainManager.Instance.characterController.GetAllEnemies(user); return Cmd.Sequential( new Cmd_PlayAnimation(user.characterView, "Attack"), Cmd.Do(() => { // 对主目标造成雷属性伤害 AttackTarget(mainTarget, GetTargetedFinalDamage(mainTarget, StormCtx), StormCtx); }), Cmd.Do(() => { // 检查所有敌人,对有Shocked buff的目标额外执行一次伤害 foreach (CharacterBase enemy in allEnemies) { if (enemy.combatBuffSubmodule.HasBuff()) { // 使用相同的Storm context造成额外伤害 AttackTarget(enemy, GetTargetedFinalDamage(enemy, StormCtx), StormCtx); } } }) ); } public override void ApplyAttributeChangesByCard() { LogicComponent().SetDamage_Magic(); } } }