Beispiel #1
0
            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());
            }
Beispiel #2
0
            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());
            }
Beispiel #3
0
            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));
            }