public static async Task RemovePlayerFromCombat(CombatInstance inst, UserAccount player) { var team = inst.GetTeam(player); inst.Players.Remove(player); var turnskip = false; BasicCard skipCard = null; foreach (BasicCard card in player.ActiveCards) { //Remove any markers corresponding to the cards to be removed from combat var turnnum = inst.CardList.IndexOf(card); foreach (BasicCard card2 in inst.CardList) { for (int i = card2.Markers.Count - 1; i >= 0; i--) { if (card2.Markers[i].OriginTurnNum == turnnum) { card2.Markers.RemoveAt(i); } } } inst.CardList.Remove(card); if (turnnum <= inst.TurnNumber) { inst.TurnNumber--; } if (card.IsTurn) { turnskip = true; skipCard = card; } } inst.GetTeam(player).Members.Remove(player); player.ResetCombatFields(inst.IsDuel); await inst.PassiveUpdatePlayerLeft(); await MessageHandler.UserForfeitsCombat(inst.Location, player); if (inst.IsDuel) { await CheckTeamElimination(inst, team); } if (turnskip) { await SkipTurn(inst, skipCard); } SaveInstances(); }
public override async Task MoveEffect(CombatInstance inst, List <BasicCard> targets) { foreach (BasicCard card in targets) { List <int> rolls = RandomGen.RollDice(10, 7, true); await MessageHandler.DiceThrow(inst.Location, "10d7!", rolls); int damage = 0; foreach (int roll in rolls) { damage += roll; } damage = inst.GetCardTurn().ApplyDamageBuffs(damage); var damages = card.TakeDamage(damage); var finalDamage = damages[0]; await MessageHandler.SendMessage(inst.Location, $"{inst.GetCardTurn().Signature} shakes their tail at {card.Signature}! Their life was drained from them! {card.DamageTakenString(damages)}"); var heal = finalDamage * 3; heal = inst.GetCardTurn().ApplyHealingBuffs(heal, true); var team = inst.GetTeam(inst.GetCardTurn()).Members; var rem = heal % team.Count; foreach (UserAccount teammate in inst.GetTeam(inst.GetCardTurn()).Members) { foreach (BasicCard teamCard in teammate.ActiveCards) { if (!teamCard.Dead) { var teamheal = (int)Math.Floor((double)heal / team.Count); if (rem > 0) { rem--; teamheal++; } teamCard.Heal(teamheal, true); await MessageHandler.SendMessage(inst.Location, $"{teamCard.Signature} healed for {teamheal} HP."); } } } await MessageHandler.SendMessage(inst.Location, $"{inst.GetCardTurn().Signature} healed the party for a total of {heal} HP!"); } OnCooldown = true; CurrentCooldown = Cooldown; inst.GetCardTurn().Actions--; }
public override async Task MoveEffect(CombatInstance inst) { int damage = 20; damage = inst.GetCardTurn().ApplyDamageBuffs(damage); string str = ""; var totalDam = 0; foreach (Team team in inst.Teams) { if (team.TeamNum != inst.GetTeam(inst.GetCardTurn()).TeamNum) { foreach (UserAccount user in team.Members) { foreach (BasicCard card in user.ActiveCards) { var tempDam = card.TakeDamage(damage); totalDam += tempDam[0]; str += $"\n{card.DamageTakenString(tempDam)}"; } } } } await MessageHandler.SendMessage(inst.Location, $"{inst.GetCardTurn().Signature} rushes the enemy team!{str}\n{inst.GetCardTurn().Signature} dealt a total of {totalDam}"); OnCooldown = true; CurrentCooldown = Cooldown; inst.GetCardTurn().Actions--; }
public override async Task MoveEffect(CombatInstance inst) { int damage = 25; damage = inst.GetCardTurn().ApplyDamageBuffs(damage); string str = ""; var totalDam = 0; foreach (Team team in inst.Teams) { if (team.TeamNum != inst.GetTeam(inst.GetCardTurn()).TeamNum) { foreach (UserAccount user in team.Members) { foreach (BasicCard card in user.ActiveCards) { var tempDams = card.TakeDamage(damage); totalDam += tempDams[0]; str += $"\n{card.DamageTakenString(tempDams)}"; } } } } await MessageHandler.SendMessage(inst.Location, $"{inst.GetCardTurn().Signature} swipes using their tail!{str}\n{inst.GetCardTurn().Signature} dealt a total of {totalDam} damage."); inst.GetCardTurn().Actions--; }
public override async Task MoveEffect(CombatInstance inst) { foreach (UserAccount user in inst.GetTeam(UserHandler.GetUser(inst.GetCardTurn().Owner)).Members) { foreach (BasicCard card in user.ActiveCards) { BuffDebuff buff = new BuffDebuff() { Name = $"Stalwart Soul", Buff = true, Origin = $"({inst.GetCardTurn().Signature})", Description = "All damage nullified.", DefenseSetBuff = 0, Rounds = 2 }; card.Effects.Add(buff); } } await MessageHandler.SendMessage(inst.Location, $"{inst.GetCardTurn().Signature} fortifies the party against all damage!"); inst.GetCardTurn().Actions--; OnCooldown = true; CurrentCooldown = Cooldown; }
public override async Task MoveEffect(CombatInstance inst) { foreach (UserAccount user in inst.GetTeam(UserHandler.GetUser(inst.GetCardTurn().Owner)).Members) { foreach (BasicCard card in user.ActiveCards) { if (card.Owner != inst.GetCardTurn().Owner) { BuffDebuff buff = new BuffDebuff() { Name = "Hair Raise", Buff = true, Origin = $"({inst.GetCardTurn().Signature})", Description = "Untargetable and take 25% less damage.", DefensePercentBuff = 0.25, Untargetable = true, Rounds = 2 }; card.Effects.Add(buff); } } } await MessageHandler.SendMessage(inst.Location, $"{inst.GetCardTurn().Signature} alerts the party to danger! All other party members are untargetable for 2 rounds and take 25% less damage."); OnCooldown = true; CurrentCooldown = Cooldown; inst.GetCardTurn().Actions--; }
public override async Task MoveEffect(CombatInstance inst) { List <int> rolls = RandomGen.RollDice(4, 20); string str = ""; int damage = 0; foreach (int roll in rolls) { damage += roll; } damage = inst.GetCardTurn().ApplyDamageBuffs(damage); foreach (Team team in inst.Teams) { if (team.TeamNum != inst.GetTeam(inst.GetCardTurn()).TeamNum) { foreach (UserAccount user in team.Members) { foreach (BasicCard card in user.ActiveCards) { var latchDmg = 1.0; if (card.SearchForMarker(inst.TurnNumber) != null) { latchDmg = 1.5; str = $"\n{inst.GetCardTurn().Signature} dismounts from {card.Signature}, dealing 50% more damage!"; for (int i = card.Markers.Count - 1; i >= 0; i--) { if (card.Markers[i].OriginTurnNum == inst.TurnNumber) { card.Markers.RemoveAt(i); } } } var tempDam = card.TakeDamage((int)(damage * latchDmg)); str += $"\n{card.DamageTakenString(tempDam)}"; } } } } await MessageHandler.DiceThrow(inst.Location, "4d20", rolls); await MessageHandler.SendMessage(inst.Location, $"{inst.GetCardTurn().Signature} hits the enemy team with a powerful gust of wind!{str}"); OnCooldown = true; CurrentCooldown = Cooldown; inst.GetCardTurn().Actions--; }
public override async Task MoveEffect(CombatInstance inst, List <BasicCard> targets) { string str = "The king is raising the dead!"; foreach (BasicCard card in targets) { if (card.Dead) { if (inst.GetTeam(card).TeamNum == inst.GetTeam(inst.GetCardTurn()).TeamNum) { card.Dead = false; card.CurrentHP = card.TotalHP / 2; str += $"\n{card.Signature} has risen!"; } else { await MessageHandler.SendMessage(inst.Location, $"MOVE FAILED! You must target players on your team!"); return; } } else { await MessageHandler.SendMessage(inst.Location, $"MOVE FAILED! One or more players are not dead!"); return; } } await MessageHandler.SendMessage(inst.Location, $"{str}"); OnCooldown = true; CurrentCooldown = Cooldown; inst.GetCardTurn().Actions--; }
public static async Task CheckPlayerDeath(CombatInstance inst) { foreach (BasicCard card in inst.CardList) { if (!card.Dead && card.CurrentHP <= 0) { card.Dead = true; card.RemoveAllBuffs(); await MessageHandler.SendMessage(inst.Location, card.GetDeathMessage()); card.Death(); await CheckTeamElimination(inst, inst.GetTeam(card)); } } }
public override void Update(CombatInstance inst, BasicCard owner) { var playerCount = -1; foreach (UserAccount user in inst.GetTeam(inst.GetCardTurn()).Members) { foreach (BasicCard allyCard in user.ActiveCards) { playerCount++; } } eff.DamagePercentBuff = 0.05 * playerCount; Status = $"Currently at **{eff.DamagePercentBuff*100.0}%** bonus damage."; }
public override async Task MoveEffect(CombatInstance inst) { List <int> rolls = RandomGen.RollDice(20, 3, true); int damage = 0; foreach (int roll in rolls) { damage += roll; } damage = inst.GetCardTurn().ApplyDamageBuffs(damage); await MessageHandler.DiceThrow(inst.Location, "20d3!", rolls); string str = ""; var totalDam = 0; foreach (Team team in inst.Teams) { if (team.TeamNum != inst.GetTeam(inst.GetCardTurn()).TeamNum) { foreach (UserAccount user in team.Members) { foreach (BasicCard card in user.ActiveCards) { var tempDams = card.TakeDamage(damage); totalDam += tempDams[0]; str += $"\n{card.DamageTakenString(tempDams)} Their next attack reduced by 50%"; card.AddBuff(new BuffDebuff() { Name = $"Sticky", Buff = false, Origin = $"({inst.GetCardTurn().Signature})", Description = "Sticky syrup got on you! Your next attack is reduced by 50%", DamagePercentDebuff = 0.5, Attacks = 1 }); } } } } await MessageHandler.SendMessage(inst.Location, $"{inst.GetCardTurn().Signature} unleashes an avalanche of syrup!{str}\n{inst.GetCardTurn().Signature} dealt a total of {totalDam} damage."); OnCooldown = true; CurrentCooldown = Cooldown; inst.GetCardTurn().Actions--; }
public override async Task UpdateAsync(CombatInstance inst, BasicCard owner) { if (inst.RoundNumber != 1) { BasicCard lowest = null; var lowestHP = 1.0; foreach (UserAccount teammate in inst.GetTeam(owner).Members) { foreach (BasicCard card in teammate.ActiveCards) { if (card.HPPercentage() < lowestHP && !card.Dead && card.Owner != owner.Owner) { Console.WriteLine($"{card.HPPercentage()}% health detected"); lowestHP = card.HPPercentage(); lowest = card; } } } if (lowestHP < 1.0 && lowest != null) { var heal = 10; heal = owner.ApplyHealingBuffs(heal, false); heal = lowest.Heal(heal, false); eff.Extra[0] += heal; Status = $"Healed a total of {eff.Extra[0]} HP."; await MessageHandler.SendMessage(inst.Location, $"{owner.Signature} gives {lowest.Signature} a spare carrot! They restore {heal} HP."); } else { //Nobody needed healing await MessageHandler.SendMessage(inst.Location, $"{owner.Signature} has a spare carrot but nobody needed healing!"); } } }
public override async Task UpdateAsync(CombatInstance inst, BasicCard owner) { if (inst.RoundNumber != 1) { Console.WriteLine("A"); var cute = 0; var fluffy = 0; var speedy = 0; foreach (UserAccount teammate in inst.GetTeam(owner).Members) { foreach (BasicCard card in teammate.ActiveCards) { if (card.Name.Equals("Cute Bunny")) { cute++; } if (card.Name.Equals("Fluffy Angora")) { fluffy++; } if (card.Name.Equals("Speedy Hare")) { speedy++; } } } if (cute > 0) { var success = RandomGen.PercentChance(15 * cute); if (success && owner.CurrentHP < owner.TotalHP) { var heal = 5; heal = owner.ApplyHealingBuffs(heal, false); heal = owner.Heal(heal, false); eff.Extra[0] += heal; Status = $"Healed a total of **{eff.Extra[0]}** HP.\nGained a total of **{eff.Extra[1]}** light shields.\nTotal of **{eff.Extra[2]}** bonus attack damage."; await MessageHandler.SendMessage(inst.Location, $"**(Herd Leader)** {owner.Signature} gained **{heal}** health from **{cute}** Cute Bunnies"); } } if (fluffy > 0) { var success = RandomGen.PercentChance(15 * fluffy); if (success) { owner.AddBuff(new BuffDebuff() { Name = "Herd Shielding", Buff = true, Origin = $"(Passive)", Description = $"The herd shields you! You gain 1 light shield.", ShieldOnly = true, LightShield = 1 }); eff.Extra[1]++; Status = $"Healed a total of **{eff.Extra[0]}** HP.\nGained a total of **{eff.Extra[1]}** light shields.\nTotal of **{eff.Extra[2]}** bonus attack damage."; await MessageHandler.SendMessage(inst.Location, $"**(Herd Leader)** {owner.Signature} gained **1 light shield** from **{fluffy}** Fluffy Angora"); } } if (speedy > 0) { var success = RandomGen.PercentChance(15 * speedy); if (success) { eff.DamageStaticBuff++; eff.Extra[2] = eff.DamageStaticBuff; Status = $"Healed a total of **{eff.Extra[0]}** HP.\nGained a total of **{eff.Extra[1]}** light shields.\nTotal of **{eff.Extra[2]}** bonus attack damage."; await MessageHandler.SendMessage(inst.Location, $"**(Herd Leader)** {owner.Signature} gained **1 permanent bonus damage** from **{speedy}** Fluffy Angora"); } } Console.WriteLine("B"); } }