public IEnumerable <IShow> HitTeam(List <BattleCharacter> targetTeam, List <BattleCharacter> anotherTeam) { var(battleCharacter, _) = AutoBattleTools.GetFirstAndOtherTargetByOpponentType(targetTeam, Type); if (battleCharacter == null) { return(new IShow[] { }); } var takeHarm = battleCharacter.TakeHarm(this, out var isHit); if (isHit ^ HitOrMiss) { return(takeHarm); } var(item1, item2) = AutoBattleTools.GetFirstAndOtherTargetByOpponentType(anotherTeam, BuffTargetType); if (item1 != null) { var addBuff = BattleCharacter.AddBuff(BattleBuffs, item1); takeHarm = takeHarm.Union(addBuff).ToArray(); } var selectMany = item2.SelectMany(x => BattleCharacter.AddBuff(BattleBuffs, x)); var enumerable = takeHarm.Union(selectMany); return(enumerable.ToArray()); }
public IEnumerable <IShow> HitTeam(List <BattleCharacter> targetTeam, List <BattleCharacter> anotherTeam) { var(battleCharacter, _) = AutoBattleTools.GetFirstAndOtherTargetByOpponentType(targetTeam, Type); if (battleCharacter == null) { return(new IShow[] { }); } var takeHarm = battleCharacter.TakeHarm(this, out var isHit); if (isHit ^ HitOrMiss) { return(takeHarm); } var battleBuffs = BattleBuffs.Select(x => { if (!(x is BattleBuffs.IBindToCast bindToCast)) { return(x); } bindToCast.BindCharacter(FromWho); return(bindToCast); }); var targetsBySelfTargetType = AutoBattleTools.GetTargetsBySelfTargetType(anotherTeam, SelfTargetType, FromWho); var selectMany = targetsBySelfTargetType.SelectMany(x => BattleCharacter.AddBuff(battleBuffs.ToArray(), x)); var enumerable = takeHarm.Union(selectMany); return(enumerable.ToArray()); }
public IEnumerable <IShow> HitTeam(List <BattleCharacter> targetTeam, List <BattleCharacter> anotherTeam) { var(battleCharacter, _) = AutoBattleTools.GetFirstAndOtherTargetByOpponentType(targetTeam, Type); if (battleCharacter == null) { return new IShow[] { } } ; foreach (var battleBuff in BattleBuffs) { battleBuff.BattleCharacter = battleCharacter; } var battleBuffs = BattleBuffs.Select(x => (BattleBuffs.IBattleBuff)x).ToArray(); var takeHarm = battleCharacter.TakeHarm(this, out var isHit); if (!isHit ^ HitOrMiss) { return(takeHarm); } var addBuff = BattleCharacter.AddBuff(battleBuffs, FromWho); return(takeHarm.Concat(addBuff)); }