Example #1
0
        public override async Task MoveEffect(CombatInstance inst, List <BasicCard> targets)
        {
            foreach (BasicCard card in targets)
            {
                int dice = 4;
                if (inst.GetCardTurn().HasBuff("Firing Position"))
                {
                    dice++;
                }
                List <int> rolls = RandomGen.RollDice(dice, 10);
                await MessageHandler.DiceThrow(inst.Location, $"{dice}d10", rolls);

                int damage = 0;

                foreach (int roll in rolls)
                {
                    damage += roll;
                }

                damage = inst.GetCardTurn().ApplyDamageBuffs(damage);
                var damages = card.TakeDamage(damage);

                await MessageHandler.SendMessage(inst.Location, $"{inst.GetCardTurn().Signature} fires an arrow into {card.Signature}! {card.DamageTakenString(damages)}");
            }

            inst.GetCardTurn().Actions--;
        }
Example #2
0
        public override async Task MoveEffect(CombatInstance inst, List <BasicCard> targets)
        {
            string str = "";

            foreach (BasicCard card in targets)
            {
                List <int> rolls = RandomGen.RollDice(6, 5);
                await MessageHandler.DiceThrow(inst.Location, "6d5", rolls);

                int damage = 0;

                foreach (int roll in rolls)
                {
                    damage += roll;
                }

                damage = inst.GetCardTurn().ApplyDamageBuffs(damage);
                var damages = card.TakeDamage(damage);

                str += $"{inst.GetCardTurn().Signature} blasts {card.Signature} with a ball of energy! {card.DamageTakenString(damages)}\n";
            }
            await MessageHandler.SendMessage(inst.Location, $"{str}");

            inst.GetCardTurn().Actions--;
        }
Example #3
0
        public override async Task MoveEffect(CombatInstance inst)
        {
            List <int> rolls = RandomGen.RollDice(4, 15, true);
            await MessageHandler.DiceThrow(inst.Location, "4d15!", rolls);

            int damage = 0;

            foreach (int roll in rolls)
            {
                damage += roll;
            }

            damage = inst.GetCardTurn().ApplyDamageBuffs(damage);
            string str      = "";
            var    totalDam = 0;

            List <BasicCard> targets = inst.GetAOEEnemyTargets();

            foreach (BasicCard card in targets)
            {
                var tempDam = card.TakeDamage(damage);
                totalDam += tempDam[0];
                str      += $"\n{card.DamageTakenString(tempDam)}";
            }

            await MessageHandler.SendMessage(inst.Location, $"{inst.GetCardTurn().Signature} fires a magical arrow!{str}\n{inst.GetCardTurn().Signature} dealt a total of {totalDam} damage.");

            OnCooldown      = true;
            CurrentCooldown = Cooldown;
            inst.GetCardTurn().Actions--;
        }
Example #4
0
        public override async Task MoveEffect(CombatInstance inst, List <BasicCard> targets)
        {
            foreach (BasicCard card in targets)
            {
                List <int> rolls = RandomGen.RollDice(4, 8);
                await MessageHandler.DiceThrow(inst.Location, "4d8", rolls);

                int damage = 0;
                foreach (int roll in rolls)
                {
                    damage += roll;
                }

                damage = inst.GetCardTurn().ApplyDamageBuffs(damage);
                var damages = card.TakeDamage(damage);
                await MessageHandler.SendMessage(inst.Location, $"{inst.GetCardTurn().Signature} prances around {card.Signature}. {card.DamageTakenString(damages)}");

                var flip = RandomGen.CoinFlip();
                await MessageHandler.CoinFlip(inst.Location, flip);

                var flip2 = RandomGen.CoinFlip();
                await MessageHandler.CoinFlip(inst.Location, flip2);

                if (flip && flip2)
                {
                    await MessageHandler.SendMessage(inst.Location, $"{inst.GetCardTurn().Signature} is hyper! They may use another ability.");

                    inst.GetCardTurn().Actions++;
                }
            }

            inst.GetCardTurn().Actions--;
        }
Example #5
0
        public override async Task MoveEffect(CombatInstance inst, List <BasicCard> targets)
        {
            foreach (BasicCard card in targets)
            {
                List <int> damRolls = RandomGen.RollDice(8, 6);
                await MessageHandler.DiceThrow(inst.Location, "8d6", damRolls);

                List <int> shield = RandomGen.RollDice(1, 2);
                await MessageHandler.DiceThrow(inst.Location, "1d2", shield);

                var damage = 0;
                foreach (int roll in damRolls)
                {
                    damage += roll;
                }

                damage = inst.GetCardTurn().ApplyDamageBuffs(damage);
                var damages = card.TakeDamage(damage);

                inst.GetCardTurn().AddBuff(new BuffDebuff()
                {
                    Name         = $"Poof ({inst.GetCardTurn().Signature})",
                    Buff         = true,
                    Description  = $"{shield[0]} medium shielding.",
                    ShieldOnly   = true,
                    MediumShield = shield[0]
                });

                await MessageHandler.SendMessage(inst.Location, $"{inst.GetCardTurn().Signature} poofs out! They gain {shield[0]} shield and {card.DamageTakenString(damages)}");
            }

            inst.GetCardTurn().Actions--;
        }
Example #6
0
        public override async Task MoveEffect(CombatInstance inst, List <BasicCard> targets)
        {
            foreach (BasicCard card in targets)
            {
                card.AddBuff(new BuffDebuff()
                {
                    Name                 = "Deafened",
                    Buff                 = false,
                    Origin               = $"({inst.GetCardTurn().Signature})",
                    Description          = "15% less defense.",
                    DefensePercentDebuff = 0.15,
                    Strikes              = 2
                });

                List <int> rolls = RandomGen.RollDice(3, 8);
                await MessageHandler.DiceThrow(inst.Location, "3d8", rolls);

                var damage = 0;
                foreach (int roll in rolls)
                {
                    damage += roll;
                }

                damage = inst.GetCardTurn().ApplyDamageBuffs(damage);
                var damages = card.TakeDamage(damage);

                await MessageHandler.SendMessage(inst.Location, $"{inst.GetCardTurn().Signature} deafens {card.Signature} with a sharp note and strike them with their sword! {card.DamageTakenString(damages)}");
            }

            inst.GetCardTurn().Actions--;
        }
Example #7
0
        public override async Task MoveEffect(CombatInstance inst, List <BasicCard> targets)
        {
            foreach (BasicCard card in targets)
            {
                List <int> rolls = RandomGen.RollDice(2, 15);
                await MessageHandler.DiceThrow(inst.Location, "2d15", rolls);

                var flip = RandomGen.CoinFlip();
                await MessageHandler.CoinFlip(inst.Location, flip);

                var damage = 0;
                foreach (int roll in rolls)
                {
                    damage += roll;
                }

                if (flip)
                {
                    damage += 5;
                }

                damage = inst.GetCardTurn().ApplyDamageBuffs(damage);
                var damages = card.TakeDamage(damage);

                await MessageHandler.SendMessage(inst.Location, $"{inst.GetCardTurn().Signature} smashes {card.Signature} with clenched fists! {card.DamageTakenString(damages)}");
            }

            inst.GetCardTurn().Actions--;
        }
Example #8
0
        public override async Task MoveEffect(CombatInstance inst, List <BasicCard> targets)
        {
            foreach (BasicCard card in targets)
            {
                List <int> rolls = RandomGen.RollDice(7, 8);
                await MessageHandler.DiceThrow(inst.Location, "7d8", rolls);

                int damage = 0;

                foreach (int roll in rolls)
                {
                    damage += roll;
                }

                damage = inst.GetCardTurn().ApplyDamageBuffs(damage);
                var damages = card.TakeDamage(damage);

                card.AddBuff(new BuffDebuff()
                {
                    Name             = "Bleeding",
                    Buff             = false,
                    Origin           = $"({inst.GetCardTurn().Signature})",
                    Description      = "3 damage every turn.",
                    DamagePerTurn    = 3,
                    DPRAlternateText = " bleeding damage.",
                    Turns            = 2
                });

                await MessageHandler.SendMessage(inst.Location, $"{inst.GetCardTurn().Signature} bites {card.Signature}, causing them to bleed. {card.DamageTakenString(damages)}");
            }

            inst.GetCardTurn().Actions--;
        }
Example #9
0
        public override async Task MoveEffect(CombatInstance inst)
        {
            List <int> rolls = RandomGen.RollDice(4, 10);
            await MessageHandler.DiceThrow(inst.Location, "4d10", rolls);

            int damage = 0;

            foreach (int roll in rolls)
            {
                damage += roll;
            }

            damage = inst.GetCardTurn().ApplyDamageBuffs(damage);
            string str      = "";
            var    totalDam = 0;

            List <BasicCard> targets = inst.GetAOEAllyTargets();

            foreach (BasicCard card in targets)
            {
                var tempDam = card.TakeDamage(damage);
                totalDam += tempDam[0];
                str      += $"\n{card.DamageTakenString(tempDam)}";
            }

            await MessageHandler.SendMessage(inst.Location, $"{inst.GetCardTurn().Signature} shreds the enemy with their claws!{str}\n{inst.GetCardTurn().Signature} dealt a total of {totalDam} damage.");

            inst.GetCardTurn().Actions--;
        }
Example #10
0
        public override async Task MoveEffect(CombatInstance inst, List <BasicCard> targets)
        {
            foreach (BasicCard card in targets)
            {
                List <int> rolls = RandomGen.RollDice(15);
                var        flip  = RandomGen.CoinFlip();

                int damage = rolls[0];
                damage = inst.GetCardTurn().ApplyDamageBuffs(damage);
                var damages = card.TakeDamage(damage);
                await MessageHandler.DiceThrow(inst.Location, "1d15", rolls);

                await MessageHandler.SendMessage(inst.Location, $"{inst.GetCardTurn().Signature} crashes into {card.Signature}. {card.DamageTakenString(damages)}");

                await MessageHandler.CoinFlip(inst.Location, flip);

                if (!flip)
                {
                    await MessageHandler.SendMessage(inst.Location, $"{inst.GetCardTurn().Signature} gains a 15% boost on their next attack.");

                    inst.GetCardTurn().AddBuff(new BuffDebuff()
                    {
                        Name              = "Crashed",
                        Buff              = true,
                        Origin            = $"({inst.GetCardTurn().Signature})",
                        Description       = "15% increased damage on next attack.",
                        DamagePercentBuff = 0.15,
                        Attacks           = 1
                    });
                }
            }

            inst.GetCardTurn().Actions--;
        }
Example #11
0
        public override async Task MoveEffect(CombatInstance inst, List <BasicCard> targets)
        {
            foreach (BasicCard card in targets)
            {
                List <int> rolls = RandomGen.RollDice(5, 5);
                await MessageHandler.DiceThrow(inst.Location, "5d5", rolls);

                var damage = 0;
                foreach (int roll in rolls)
                {
                    damage += roll;
                }

                damage = inst.GetCardTurn().ApplyDamageBuffs(damage);
                var damages = card.TakeDamage(damage);

                card.AddBuff(new BuffDebuff()
                {
                    Name                = "Egged",
                    Buff                = false,
                    Origin              = $"({inst.GetCardTurn().Signature})",
                    Description         = "15% decreased damage.",
                    DamagePercentDebuff = 0.15,
                    Attacks             = 1
                });

                await MessageHandler.SendMessage(inst.Location, $"{inst.GetCardTurn().Signature} drops an egg on {card.Signature}'s head! {card.DamageTakenString(damages)} Their next attack is reduced by 15%.");
            }

            inst.GetCardTurn().Actions--;
        }
Example #12
0
        public override async Task MoveEffect(CombatInstance inst, List <BasicCard> targets)
        {
            foreach (BasicCard card in targets)
            {
                await MessageHandler.SendMessage(inst.Location, $"{inst.GetCardTurn().Signature} plows through {card.Signature}, knocking them down!");

                card.AddBuff(new BuffDebuff()
                {
                    Name        = "Knocked Down",
                    Buff        = false,
                    Origin      = $"({inst.GetCardTurn().Signature})",
                    Description = "You are knocked down! You are disabled on your next turn.",
                    TurnSkip    = true,
                    Turns       = 1
                });

                var flip = RandomGen.CoinFlip();
                await MessageHandler.CoinFlip(inst.Location, flip);

                if (flip)
                {
                    List <int> rolls = RandomGen.RollDice(7, 10);
                    await MessageHandler.DiceThrow(inst.Location, "7d10", rolls);

                    var damage = 0;
                    foreach (int roll in rolls)
                    {
                        damage += roll;
                    }

                    damage = inst.GetCardTurn().ApplyDamageBuffs(damage);
                    var damages = card.TakeDamage(damage);

                    await MessageHandler.SendMessage(inst.Location, $"{card.Signature} hits the ground hard and takes damage. {card.DamageTakenString(damages)}");
                }
                else
                {
                    await MessageHandler.SendMessage(inst.Location, $"{card.Signature} is vulnerable! They take 200% more damage on the next hit to them.");

                    card.AddBuff(new BuffDebuff()
                    {
                        Name                 = "Vulnerable",
                        Buff                 = false,
                        Origin               = $"({inst.GetCardTurn().Signature})",
                        Description          = "You have been knocked down and are vulnerable! You take 200% more damage on the next hit to you.",
                        DefensePercentDebuff = 2.0,
                        Strikes              = 1
                    });
                }
            }

            OnCooldown      = true;
            CurrentCooldown = Cooldown;
            inst.GetCardTurn().Actions--;
        }
Example #13
0
        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--;
        }
Example #14
0
        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--;
        }
Example #15
0
        public override async Task MoveEffect(CombatInstance inst)
        {
            List <int> hitRoll = RandomGen.RollDice(1, 4);
            await MessageHandler.DiceThrow(inst.Location, "1d4", hitRoll);

            if (hitRoll[0] == 4)
            {
                List <int> rolls = RandomGen.RollDice(6, 10);
                await MessageHandler.DiceThrow(inst.Location, "6d10", rolls);

                int damage = 0;

                foreach (int roll in rolls)
                {
                    damage += roll;
                }

                damage = inst.GetCardTurn().ApplyDamageBuffs(damage);
                string str      = "";
                var    totalDam = 0;

                List <BasicCard> targets = inst.GetAOEEnemyTargets();

                foreach (BasicCard card in targets)
                {
                    var tempDam = card.TakeDamage(damage);
                    totalDam += tempDam[0];
                    str      += $"\n{card.DamageTakenString(tempDam)}";

                    card.AddBuff(new BuffDebuff()
                    {
                        Name        = "Prone",
                        Buff        = false,
                        Origin      = $"({inst.GetCardTurn().Signature})",
                        Description = "disabled.",
                        TurnSkip    = true,
                        Turns       = 1
                    });
                }

                await MessageHandler.SendMessage(inst.Location, $"{inst.GetCardTurn().Signature} hits the party with a swing of his arm!{str}\n{inst.GetCardTurn().Signature} dealt a total of {totalDam} damage.");
            }
            else
            {
                await MessageHandler.SendMessage(inst.Location, $"{inst.GetCardTurn().Signature} missed!");
            }

            OnCooldown      = true;
            CurrentCooldown = Cooldown;
            inst.GetCardTurn().Actions--;
        }
Example #16
0
        public override async Task MoveEffect(CombatInstance inst, List <BasicCard> targets)
        {
            foreach (BasicCard card in targets)
            {
                List <int> rolls  = RandomGen.RollDice(20);
                int        damage = rolls[0];
                damage = inst.GetCardTurn().ApplyDamageBuffs(damage);
                await MessageHandler.DiceThrow(inst.Location, "1d20", rolls);

                var damages = card.TakeDamage(damage);
                await MessageHandler.SendMessage(inst.Location, $"{inst.GetCardTurn().Signature} punches {card.Signature} with the force of a soldier! {card.DamageTakenString(damages)}");
            }

            inst.GetCardTurn().Actions--;
        }
Example #17
0
        public override async Task MoveEffect(CombatInstance inst, List <BasicCard> targets)
        {
            foreach (BasicCard card in targets)
            {
                List <int> rolls      = RandomGen.RollDice(12, 4);
                bool       latchState = false;

                int damage = 0;
                foreach (int roll in rolls)
                {
                    damage += roll;
                }

                damage = inst.GetCardTurn().ApplyDamageBuffs(damage);
                var damages = card.TakeDamage(damage);

                //If any latches are detected, set latchState to true
                var latches = inst.SearchForMarker(inst.TurnNumber);
                if (latches.Count > 0 && latches.Contains(card))
                {
                    latchState = true;
                }

                await MessageHandler.DiceThrow(inst.Location, "12d4", rolls);

                await MessageHandler.SendMessage(inst.Location, $"{inst.GetCardTurn().Signature} unloads a clip into {card.Signature}. {card.DamageTakenString(damages)}");

                if (latchState)
                {
                    await MessageHandler.SendMessage(inst.Location, $"{inst.GetCardTurn().Signature} chomps down harder, causing {card.Signature} to bleed!");

                    card.AddBuff(new BuffDebuff()
                    {
                        Name              = "Chomp Wound",
                        Buff              = false,
                        Origin            = $"({inst.GetCardTurn().Signature})",
                        Description       = "receive 10 bleed damage on next attack.",
                        BleedAttackDamage = 10,
                        Attacks           = 1
                    });
                }
            }

            OnCooldown      = true;
            CurrentCooldown = Cooldown;
            inst.GetCardTurn().Actions--;
        }
Example #18
0
        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--;
        }
Example #19
0
        public override async Task MoveEffect(CombatInstance inst, List <BasicCard> targets)
        {
            string str = "";

            foreach (BasicCard card in targets)
            {
                if (card.Name == "Achilles")
                {
                    card.CurrentHP = 0;
                    str           += $"{inst.GetCardTurn().Name} strikes Achille's weak point!";
                }
                else
                {
                    List <int> rolls = RandomGen.RollDice(3, 12, true);
                    await MessageHandler.DiceThrow(inst.Location, "3d12", rolls);

                    int damage = 0;

                    foreach (int roll in rolls)
                    {
                        damage += roll;
                    }

                    damage = inst.GetCardTurn().ApplyDamageBuffs(damage);
                    var damages = card.TakeDamage(damage);

                    card.AddBuff(new BuffDebuff()
                    {
                        Name        = "Slashed Heel",
                        Buff        = false,
                        Origin      = $"({inst.GetCardTurn().Signature})",
                        Description = "disabled.",
                        TurnSkip    = true,
                        Turns       = 1
                    });

                    str = $"{inst.GetCardTurn().Signature} slashes {card.Signature}'s heel! {card.DamageTakenString(damages)}";
                }
            }

            await MessageHandler.SendMessage(inst.Location, $"{str}");

            OnCooldown      = true;
            CurrentCooldown = Cooldown;
            inst.GetCardTurn().Actions--;
        }
Example #20
0
        public override async Task MoveEffect(CombatInstance inst)
        {
            List <int> rolls = RandomGen.RollDice(3, 10);
            await MessageHandler.DiceThrow(inst.Location, "3d10", rolls);

            int healing = 0;

            foreach (int roll in rolls)
            {
                healing += roll;
            }

            healing = inst.GetCardTurn().ApplyHealingBuffs(healing, true);
            string str       = "";
            var    totalHeal = 0;

            List <BasicCard> allyTargets = inst.GetAOEAllyTargets();

            foreach (BasicCard card in allyTargets)
            {
                var tempHeal = card.Heal(healing, true);
                totalHeal += tempHeal;
                str       += $"\n{card.Signature} heals {tempHeal} HP!";
            }

            List <BasicCard> targets = inst.GetAOEEnemyTargets();

            foreach (BasicCard card in targets)
            {
                card.AddBuff(new BuffDebuff()
                {
                    Name                = "Drunkard",
                    Buff                = false,
                    Origin              = $"({inst.GetCardTurn().Signature})",
                    Description         = "Drunk! Deal 30% less damage on your next attack.",
                    DamagePercentDebuff = 0.30,
                    Attacks             = 1
                });
            }

            await MessageHandler.SendMessage(inst.Location, $"{inst.GetCardTurn().Signature} douses the battlefield in wine!{str}\n{inst.GetCardTurn().Signature} healed a total of {totalHeal} health. All enemies have their next attack reduced by 30%.");

            OnCooldown      = true;
            CurrentCooldown = Cooldown;
            inst.GetCardTurn().Actions--;
        }
Example #21
0
        public override async Task MoveEffect(CombatInstance inst)
        {
            List <int> rolls = RandomGen.RollDice(3, 10);
            int        heal  = 0;

            foreach (int roll in rolls)
            {
                heal += roll;
            }

            heal = inst.GetCardTurn().ApplyHealingBuffs(heal, true);
            heal = inst.GetCardTurn().Heal(heal, true);
            await MessageHandler.DiceThrow(inst.Location, "3d10", rolls);

            await MessageHandler.SendMessage(inst.Location, $"{inst.GetCardTurn().Signature} takes a moment to rest. They restore {heal} health.");

            OnCooldown      = true;
            CurrentCooldown = Cooldown;
            inst.GetCardTurn().Actions--;
        }
Example #22
0
        public override async Task MoveEffect(CombatInstance inst, List <BasicCard> targets)
        {
            foreach (BasicCard card in targets)
            {
                List <int> rolls = RandomGen.RollDice(25, 10);
                await MessageHandler.DiceThrow(inst.Location, "25d10", rolls);

                var damage = 0;
                foreach (int roll in rolls)
                {
                    damage += roll;
                }

                damage = inst.GetCardTurn().ApplyDamageBuffs(damage);
                var damages = card.TakeDamage(damage);

                await MessageHandler.SendMessage(inst.Location, $"{inst.GetCardTurn().Signature} picks up {card.Signature} and crushes them in his fist! {card.DamageTakenString(damages)}");
            }

            inst.GetCardTurn().Actions--;
        }
Example #23
0
        public override async Task MoveEffect(CombatInstance inst)
        {
            List <int> rolls = RandomGen.RollDice(1, 100);
            await MessageHandler.DiceThrow(inst.Location, "1d100", rolls);

            double perc = (double)rolls[0] / 100.0;

            inst.GetCardTurn().AddBuff(new BuffDebuff()
            {
                Name              = "Reel",
                Buff              = true,
                Origin            = $"({inst.GetCardTurn().Signature})",
                Description       = $"Gain {rolls[0]}% extra damage on your next attack.",
                DamagePercentBuff = perc,
                Attacks           = 1
            });

            await MessageHandler.SendMessage(inst.Location, $"{inst.GetCardTurn().Signature} prepares their next attack, gaining a {rolls[0]}% buff to their next attack!");

            inst.GetCardTurn().Actions--;
        }
Example #24
0
        public override async Task MoveEffect(CombatInstance inst, List <BasicCard> targets)
        {
            foreach (BasicCard card in targets)
            {
                List <int> rolls = RandomGen.RollDice(4, 8);
                await MessageHandler.DiceThrow(inst.Location, "4d8", rolls);

                var damage = 0;
                foreach (int roll in rolls)
                {
                    damage += roll;
                }

                damage = inst.GetCardTurn().ApplyDamageBuffs(damage);
                var damages = card.TakeDamage(damage);

                await MessageHandler.SendMessage(inst.Location, $"{inst.GetCardTurn().Signature} slashes {card.Signature} with the blade of ares! {card.DamageTakenString(damages)}");
            }

            inst.GetCardTurn().Actions--;
        }
Example #25
0
        public override async Task MoveEffect(CombatInstance inst)
        {
            List <int> rolls = RandomGen.RollDice(3, 10);
            await MessageHandler.DiceThrow(inst.Location, "3d10", rolls);

            int healing = 0;

            foreach (int roll in rolls)
            {
                healing += roll;
            }

            healing = inst.GetCardTurn().ApplyHealingBuffs(healing, true);
            string str       = "";
            var    totalHeal = 0;

            List <BasicCard> targets = inst.GetAOEEnemyTargets();

            foreach (BasicCard card in targets)
            {
                var tempHeal = card.Heal(healing, true);
                totalHeal += tempHeal;
                str       += $"\n{card.Signature} heals {tempHeal} HP!";

                card.AddBuff(new BuffDebuff()
                {
                    Name              = "Birdsong",
                    Buff              = true,
                    Origin            = $"({inst.GetCardTurn().Signature})",
                    Description       = "20% increased damage.",
                    DamagePercentBuff = 0.20,
                    Attacks           = 1
                });
            }

            await MessageHandler.SendMessage(inst.Location, $"{inst.GetCardTurn().Signature} chirps up a storm!{str}\n{inst.GetCardTurn().Signature} healed a total of {totalHeal} health and all allies gain 20% increased damage on their next attack.");

            inst.GetCardTurn().Actions--;
        }
Example #26
0
        public override async Task MoveEffect(CombatInstance inst, List <BasicCard> targets)
        {
            foreach (BasicCard card in targets)
            {
                List <int> rolls = RandomGen.RollDice(5, 15);
                await MessageHandler.DiceThrow(inst.Location, "5d15", rolls);

                var flip = RandomGen.CoinFlip();
                await MessageHandler.CoinFlip(inst.Location, flip);

                var damage = 0;
                foreach (int roll in rolls)
                {
                    damage += roll;
                }

                damage = inst.GetCardTurn().ApplyDamageBuffs(damage);
                var damages = card.TakeDamage(damage);

                await MessageHandler.SendMessage(inst.Location, $"{inst.GetCardTurn().Signature} gores {card.Signature}! {card.DamageTakenString(damages)}");

                if (flip)
                {
                    await MessageHandler.SendMessage(inst.Location, $"{inst.GetCardTurn().Signature} digs into {card.Signature}, causing them to bleed!");

                    card.AddBuff(new BuffDebuff()
                    {
                        Name              = "Gored",
                        Buff              = false,
                        Origin            = $"({inst.GetCardTurn().Signature})",
                        Description       = "5 bleeding every time an attack is made for 2 turns.",
                        BleedAttackDamage = 5,
                        Turns             = 2
                    });
                }
            }

            inst.GetCardTurn().Actions--;
        }
Example #27
0
        public override async Task MoveEffect(CombatInstance inst, List <BasicCard> targets)
        {
            foreach (BasicCard card in targets)
            {
                List <int> rolls = RandomGen.RollDice(5, 8);
                await MessageHandler.DiceThrow(inst.Location, "5d8", rolls);

                int heal = 0;

                foreach (int roll in rolls)
                {
                    heal += roll;
                }

                heal = inst.GetCardTurn().ApplyHealingBuffs(heal, true);
                heal = card.Heal(heal, true);

                await MessageHandler.SendMessage(inst.Location, $"{inst.GetCardTurn().Signature} gives {card.Signature} a little kiss, healing them for {heal} HP.");
            }

            inst.GetCardTurn().Actions--;
        }
Example #28
0
        public override async Task MoveEffect(CombatInstance inst, List <BasicCard> targets)
        {
            foreach (BasicCard card in targets)
            {
                List <int> rolls  = RandomGen.RollDice(5, 10);
                int        damage = 0;
                foreach (int roll in rolls)
                {
                    damage += roll;
                }

                damage = inst.GetCardTurn().ApplyDamageBuffs(damage);
                var damages = card.TakeDamage(damage);
                await MessageHandler.DiceThrow(inst.Location, "5d10", rolls);

                await MessageHandler.SendMessage(inst.Location, $"{inst.GetCardTurn().Signature} hits {card.Signature} with a flurry of attacks! {card.DamageTakenString(damages)}");
            }

            OnCooldown      = true;
            CurrentCooldown = Cooldown;
            inst.GetCardTurn().Actions--;
        }
Example #29
0
        public override async Task MoveEffect(CombatInstance inst)
        {
            List <int> rolls = RandomGen.RollDice(4, 20);
            await MessageHandler.DiceThrow(inst.Location, "4d20", rolls);

            List <int> rolls2 = RandomGen.RollDice(3, 2);
            await MessageHandler.DiceThrow(inst.Location, "3d2", rolls2);

            int damage = 0;

            foreach (int roll in rolls)
            {
                damage += roll;
            }

            damage = inst.GetCardTurn().ApplyDamageBuffs(damage);
            string str      = "";
            var    totalDam = 0;

            var targetCount = 0;

            foreach (int roll in rolls2)
            {
                targetCount += roll;
            }

            List <BasicCard> targets = inst.GetAOERandomRangeEnemyTargets(targetCount);

            foreach (BasicCard card in targets)
            {
                var tempDam = card.TakeDamage(damage);
                totalDam += tempDam[0];
                str      += $"\n{card.DamageTakenString(tempDam)}";
            }

            await MessageHandler.SendMessage(inst.Location, $"{inst.GetCardTurn().Signature} sweeps away {targetCount} players!{str}\n{inst.GetCardTurn().Signature} dealt a total of {totalDam} damage.");

            inst.GetCardTurn().Actions--;
        }
Example #30
0
        public override async Task MoveEffect(CombatInstance inst)
        {
            List <int> rolls = RandomGen.RollDice(6, 6);
            await MessageHandler.DiceThrow(inst.Location, "6d6", rolls);

            var flip = RandomGen.CoinFlip();
            await MessageHandler.CoinFlip(inst.Location, flip);

            int damage = 0;

            foreach (int roll in rolls)
            {
                damage += roll;
            }

            damage = inst.GetCardTurn().ApplyDamageBuffs(damage);
            string str      = "";
            var    totalDam = 0;

            List <BasicCard> targets = inst.GetAOEEnemyTargets();

            foreach (BasicCard card in targets)
            {
                var tempDam = card.TakeDamage(damage);
                totalDam += tempDam[0];
                str      += $"\n{card.DamageTakenString(tempDam)}";
            }

            await MessageHandler.SendMessage(inst.Location, $"{inst.GetCardTurn().Signature} calls upon Artemis to barrage the enemy!{str}\n{inst.GetCardTurn().Signature} dealt a total of {totalDam} damage.");

            if (!flip)
            {
                OnCooldown      = true;
                CurrentCooldown = Cooldown;
            }
            inst.GetCardTurn().Actions--;
        }