Exemplo n.º 1
0
        public override List <string> Apply(ColossoFighter User, ColossoFighter Target)
        {
            List <string> log      = new List <string>();
            List <Buff>   newBuffs = new List <Buff>();

            if (!Target.IsAlive)
            {
                return(log);
            }

            foreach (var b in Target.Buffs)
            {
                if (b.multiplier > 1)
                {
                    log.Add($"{Target.Name}'s Boost to {b.stat} normalizes");
                }
                else
                {
                    newBuffs.Add(b);
                }
            }
            if (User is PlayerFighter p)
            {
                p.battleStats.Supported++;
            }
            Target.Buffs = newBuffs;
            return(log);
        }
Exemplo n.º 2
0
        public override void InternalChooseBestTarget(ColossoFighter User)
        {
            if (TargetType == Target.ownAll)
            {
                return;
            }

            var aliveFriends = User.GetTeam().Where(f => f.IsAlive).ToList();

            if (aliveFriends.Count == 0)
            {
                TargetNr = 0;
                return;
            }

            aliveFriends = aliveFriends.OrderBy(s => s.Stats.HP / s.Stats.MaxHP).ThenBy(s => s.Stats.HP).ToList();

            if (User.GetTeam().Any(d => d.Name.Contains("Star")))
            {
                TargetNr = User.GetTeam().IndexOf(User.GetTeam().Where(d => d.Name.Contains("Star")).Random());
            }
            else
            {
                TargetNr = User.GetTeam().IndexOf(aliveFriends.First());
            }
        }
Exemplo n.º 3
0
        public override List <string> Apply(ColossoFighter User, ColossoFighter Target)
        {
            var log = new List <string>();

            if (Target.IsImmuneToHPtoOne)
            {
                return(log);
            }

            if (Target.IsAlive)
            {
                if (Global.RandomNumber(0, 100) <= Probability)
                {
                    if (Target.GetTeam().Count > 1)
                    {
                        Target.Stats.HP = 1;
                    }
                    else
                    {
                        Target.Stats.HP = Math.Min(Target.Stats.HP, (int)(Target.Stats.MaxHP * 0.15));
                    }
                    log.Add($"<:Exclamatory:549529360604856323> {Target.Name} barely holds on.");
                }
            }
            return(log);
        }
Exemplo n.º 4
0
        protected override List <string> InternalUse(ColossoFighter User)
        {
            List <string>         log     = new List <string>();
            int                   Power   = (int)(User.ElStats.GetPower(Element) * User.MultiplyBuffs("Power"));
            List <ColossoFighter> targets = GetTarget(User);

            foreach (var t in targets)
            {
                var HPtoHeal = (uint)(HealPower * Power / 100 + t.Stats.MaxHP * Percentage / 100);
                if (HPtoHeal > 0)
                {
                    log.AddRange(t.Heal(HPtoHeal));
                }

                var PPToHeal = (uint)(PPHeal * Power / 100 + t.Stats.MaxPP * PPPercent / 100);
                if (PPToHeal > 0)
                {
                    log.AddRange(t.RestorePP(PPToHeal));
                }

                log.AddRange(Effects.ApplyAll(User, t));

                if (User is PlayerFighter p)
                {
                    p.battleStats.HPhealed += HPtoHeal;
                }
            }
            return(log);
        }
Exemplo n.º 5
0
        public List <string> ApplyLingering(ColossoFighter target)
        {
            var log = new List <string>();

            if (!RequireAlly.IsNullOrEmpty() && !_user.Party.Where(p => p.IsAlive).Any(n => n.Name == RequireAlly))
            {
                return(log);
            }

            if (appliedCoolDown > 0)
            {
                Console.WriteLine("On cooldown");
                appliedCoolDown--;
                return(log);
            }

            if (appliedDuration >= 1)
            {
                appliedDuration--;
                if (!Text.IsNullOrEmpty())
                {
                    log.Add(string.Format(Text, target.Name));
                }
                log.AddRange(Effect.Apply(_user, target));
                Console.WriteLine("Applied Effect");
            }

            return(log);
        }
Exemplo n.º 6
0
        protected override List <string> InternalUse(ColossoFighter user)
        {
            var log     = new List <string>();
            var power   = (int)(user.ElStats.GetPower(Element) * user.MultiplyBuffs("Power"));
            var targets = GetTarget(user);

            foreach (var t in targets)
            {
                var hPtoHeal = (uint)(HealPower * power / 100 + t.Stats.MaxHP * Percentage / 100);
                if (hPtoHeal > 0)
                {
                    log.AddRange(t.Heal(hPtoHeal));
                }

                var ppToHeal = (uint)(PpHeal * power / 100 + t.Stats.MaxPP * PpPercent / 100);
                if (ppToHeal > 0)
                {
                    log.AddRange(t.RestorePp(ppToHeal));
                }

                log.AddRange(Effects.ApplyAll(user, t));

                if (user is PlayerFighter p)
                {
                    p.BattleStats.HPhealed += hPtoHeal;
                }
            }

            return(log);
        }
Exemplo n.º 7
0
 public override List <string> Apply(ColossoFighter user, ColossoFighter target)
 {
     target.AddCondition(Condition.Counter);
     return(new List <string>()
     {
         $"{target.Name} gets ready to strike back!"
     });
 }
Exemplo n.º 8
0
 protected override bool InternalValidSelection(ColossoFighter user)
 {
     if (base.InternalValidSelection(user))
     {
         return(user is PlayerFighter || user.Party.Count(t => t.IsAlive) > 1);
     }
     return(false);
 }
Exemplo n.º 9
0
 protected override bool InternalValidSelection(ColossoFighter user)
 {
     if (base.InternalValidSelection(user))
     {
         return(user.GetTeam().Count(t => t.IsAlive) > 1);
     }
     return(false);
 }
Exemplo n.º 10
0
 public override bool InternalValidSelection(ColossoFighter user)
 {
     if (!base.InternalValidSelection(user))
     {
         return(false);
     }
     return(user.Party.Where(f => f.IsAlive).Any(f => 100 * f.Stats.HP / f.Stats.MaxHP < 85));
 }
Exemplo n.º 11
0
 public override List <string> Apply(ColossoFighter User, ColossoFighter Target)
 {
     this.User = User;
     Target.LingeringEffects.Add(this);
     return(new List <string>()
     {
         $"An Effect is lingering around {Target.Name}"
     });
 }
Exemplo n.º 12
0
 public override List <string> Apply(ColossoFighter User, ColossoFighter Target)
 {
     if (Global.Random.Next(0, 100) <= probability)
     {
         uint recovery = User.damageDoneThisTurn * percentage / 100;
         return(User.RestorePP(recovery));
     }
     return(new List <string>());
 }
Exemplo n.º 13
0
 public override List <string> Apply(ColossoFighter user, ColossoFighter target)
 {
     if (Global.RandomNumber(0, 100) <= Probability)
     {
         uint recovery = user.DamageDoneThisTurn * Percentage / 100;
         return(user.RestorePp(recovery));
     }
     return(new List <string>());
 }
Exemplo n.º 14
0
        public override bool InternalValidSelection(ColossoFighter user)
        {
            if (user is PlayerFighter)
            {
                return(true);
            }

            return(!user.Enemies.All(f => f.IsImmobilized));
        }
Exemplo n.º 15
0
        protected override bool InternalValidSelection(ColossoFighter user)
        {
            var enemyDjinn = user.Enemies.SelectMany(m => m.Moves).OfType <Djinn>().Where(d => d.State == DjinnState.Standby);
            var summonList = user.Enemies.SelectMany(m => m.Moves).OfType <Summon>()
                             .Where(s => s.CanSummon(enemyDjinn))
                             .ToList();

            return(summonList.Any());
        }
Exemplo n.º 16
0
        public override List <string> Apply(ColossoFighter user, ColossoFighter target)
        {
            if (Global.RandomNumber(1, 100) <= Probability)
            {
                target.IgnoreDefense = (1 - Percentage / 100);
            }

            return(new List <string>());
        }
Exemplo n.º 17
0
 public override bool InternalValidSelection(ColossoFighter User)
 {
     if (!base.InternalValidSelection(User))
     {
         return(false);
     }
     return(User.battle.turn == 1 ||
            User.GetTeam().Where(f => f.IsAlive).Any(f => (100 * f.Stats.HP) / f.Stats.MaxHP < 85));
 }
Exemplo n.º 18
0
 public override List <string> Apply(ColossoFighter User, ColossoFighter Target)
 {
     if (Global.RandomNumber(0, 100) <= Probability)
     {
         uint recovery = User.damageDoneThisTurn * Percentage / 100;
         return(User.Heal(recovery));
     }
     return(new List <string>());
 }
Exemplo n.º 19
0
        public override List <string> Apply(ColossoFighter User, ColossoFighter Target)
        {
            if (Global.Random.Next(1, 100) <= Probability)
            {
                Target.ignoreDefense = (1 - Percentage / 100);
            }

            return(new List <string>());
        }
Exemplo n.º 20
0
        public override void InternalChooseBestTarget(ColossoFighter User)
        {
            var aliveEnemies = User.GetEnemies().Where(f => f.IsAlive).ToList();

            if (aliveEnemies.Count == 0)
            {
                TargetNr = 0;
                return;
            }
            TargetNr = User.GetEnemies().IndexOf(aliveEnemies.Random());
        }
Exemplo n.º 21
0
 public override void InternalChooseBestTarget(ColossoFighter User)
 {
     if (effects.Count > 0)
     {
         targetNr = effects[0].ChooseBestTarget(OnEnemy ? User.GetEnemies() : User.GetTeam());
     }
     else
     {
         targetNr = 0;
     }
 }
Exemplo n.º 22
0
 public override List <string> Apply(ColossoFighter User, ColossoFighter Target)
 {
     for (int i = 0; i < Multipliers.Length; i++)
     {
         if (Global.RandomNumber(0, 100) <= Probabilities[i])
         {
             User.offensiveMult *= Multipliers[i];
             return(new List <string>());
         }
     }
     return(new List <string>());
 }
Exemplo n.º 23
0
 public override List <string> Apply(ColossoFighter User, ColossoFighter Target)
 {
     for (int i = 0; i < multipliers.Length; i++)
     {
         if (Global.Random.Next(0, 100) <= probabilites[i])
         {
             User.offensiveMult *= multipliers[i];
             break;
         }
     }
     return(new List <string>());
 }
Exemplo n.º 24
0
 protected override List <string> InternalUse(ColossoFighter user)
 {
     user.DefensiveMult = Math.Min(0.5, user.DefensiveMult);
     if (user is PlayerFighter p)
     {
         p.BattleStats.Defends++;
     }
     return(new List <string>()
     {
         $"{Emote} {user.Name} is defending."
     });
 }
Exemplo n.º 25
0
 public override List <string> Apply(ColossoFighter User, ColossoFighter Target)
 {
     if (CoolDown > 0)
     {
         CoolDown--;
         return(new List <string>());
     }
     else
     {
         return(Effect.Apply(User, Target));
     }
 }
Exemplo n.º 26
0
 protected override List <string> InternalUse(ColossoFighter User)
 {
     User.defensiveMult *= 0.5;
     if (User is PlayerFighter)
     {
         ((PlayerFighter)User).battleStats.Defends++;
     }
     return(new List <string>()
     {
         $"{emote} {User.name} is defending."
     });
 }
Exemplo n.º 27
0
        public override List <string> Apply(ColossoFighter user, ColossoFighter target)
        {
            var log = new List <string>();

            if (!target.IsAlive)
            {
                return(log);
            }

            target.DefensiveMult = Math.Min(target.DefensiveMult, (double)(100 - DamageReduction) / 100);

            return(log);
        }
Exemplo n.º 28
0
        public override List <string> Apply(ColossoFighter User, ColossoFighter Target)
        {
            List <string> log = new List <string>();

            if (!Target.IsAlive)
            {
                return(log);
            }

            Target.defensiveMult *= (double)(100 - DamageReduction) / 100;

            return(log);
        }
Exemplo n.º 29
0
        public override List <string> Apply(ColossoFighter User, ColossoFighter Target)
        {
            if (!User.IsAlive)
            {
                return(new List <string>());
            }

            User.Kill();
            return(new List <string>()
            {
                $"{User.Name} goes down from exhaustion."
            });
        }
Exemplo n.º 30
0
        public override List <string> Apply(ColossoFighter User, ColossoFighter Target)
        {
            List <string> log = new List <string>();

            if (EnemyNames.Select(e => EnemiesDatabase.GetEnemy(e)).ToList().Any(e => e.Name.Equals(Target.Name)))
            {
                log.Add($"{Target.Name} is {(Target.IsAlive ? "alive" : "dead")}");
                var Replacement = (NPCEnemy)EnemiesDatabase.GetEnemy(EnemyNames.Random()).Clone();
                Target.ReplaceWith(Replacement);
                log.Add($"{Target.Name} appears!");
            }
            return(log);
        }