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); }
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()); } }
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); }
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); }
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); }
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); }
public override List <string> Apply(ColossoFighter user, ColossoFighter target) { target.AddCondition(Condition.Counter); return(new List <string>() { $"{target.Name} gets ready to strike back!" }); }
protected override bool InternalValidSelection(ColossoFighter user) { if (base.InternalValidSelection(user)) { return(user is PlayerFighter || user.Party.Count(t => t.IsAlive) > 1); } return(false); }
protected override bool InternalValidSelection(ColossoFighter user) { if (base.InternalValidSelection(user)) { return(user.GetTeam().Count(t => t.IsAlive) > 1); } return(false); }
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)); }
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}" }); }
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>()); }
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>()); }
public override bool InternalValidSelection(ColossoFighter user) { if (user is PlayerFighter) { return(true); } return(!user.Enemies.All(f => f.IsImmobilized)); }
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()); }
public override List <string> Apply(ColossoFighter user, ColossoFighter target) { if (Global.RandomNumber(1, 100) <= Probability) { target.IgnoreDefense = (1 - Percentage / 100); } return(new List <string>()); }
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)); }
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>()); }
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>()); }
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()); }
public override void InternalChooseBestTarget(ColossoFighter User) { if (effects.Count > 0) { targetNr = effects[0].ChooseBestTarget(OnEnemy ? User.GetEnemies() : User.GetTeam()); } else { targetNr = 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>()); }
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>()); }
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." }); }
public override List <string> Apply(ColossoFighter User, ColossoFighter Target) { if (CoolDown > 0) { CoolDown--; return(new List <string>()); } else { return(Effect.Apply(User, Target)); } }
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." }); }
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); }
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); }
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." }); }
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); }