using System.Collections.Generic;
using Continentis.MainGame.Card;
using Continentis.MainGame.Character;
using Continentis.MainGame.Combat;
using Continentis.MainGame.Commands;
using Continentis.Mods.Basic.Buffs;
using SLSUtilities.General;
using UnityEngine;
namespace Continentis.Mods.Basic.Cards
{
///
/// 猛毒喷射:对主目标施加腐蚀 Buff,
/// 并从剩余敌人中随机选取 Extra_Target_Count 个额外目标(不可重复)同样施加腐蚀 Buff。
/// targetCount = 1,玩家手动指定主目标;额外目标由 PlayEffect 内部随机决定。
///
public class VenomSpray : CardLogicBase
{
private const string BUFF_CORROSION_STACK = "Buff_Corrosion_Stack";
private const string EXTRA_TARGET_COUNT = "Extra_Target_Count";
public override CommandGroup PlayEffect(List targetList)
{
CharacterBase mainTarget = targetList[0];
int corrosionStack = GetAttribute(BUFF_CORROSION_STACK);
// 从所有敌人中排除主目标,不放回随机抽取额外目标
List pool = CombatMainManager.Instance.characterController.GetAllEnemies(user);
pool.Remove(mainTarget);
int extraCount = Mathf.Min(GetAttribute(EXTRA_TARGET_COUNT), pool.Count);
List extraTargets = new List();
for (int i = 0; i < extraCount; i++)
{
int index = Random.Range(0, pool.Count);
extraTargets.Add(pool[index]);
pool.RemoveAt(index);
}
return Cmd.Sequential(
new Cmd_PlayAnimation(user.characterView, "Skill"),
Cmd.Do(() =>
{
CreateCharacterBuff(corrosionStack).Apply(mainTarget, user, this);
foreach (CharacterBase extra in extraTargets)
{
CreateCharacterBuff(corrosionStack).Apply(extra, user, this);
}
})
);
}
}
}