Beispiel #1
0
                public override Task Call(Card caller, GameHandler gameHandler, ulong curPlayer, ulong enemy, ExtraEffectInfo extraInf)
                {
                    List <Upgrade> list = CardsFilter.FilterList <Upgrade>(gameHandler.players[curPlayer].pool.upgrades, x => x.name.Contains("Venture Co."));

                    for (int i = list.Count() - 1; i >= 0; i--)
                    {
                        if (list[i].name.Equals("Venture Co. Vault"))
                        {
                            list.RemoveAt(i);
                            break;
                        }
                    }

                    for (int i = 0; i < 3; i++)
                    {
                        int card = GameHandler.randomGenerator.Next(0, list.Count());

                        gameHandler.players[curPlayer].shop.AddUpgrade(list[card]);
                    }


                    gameHandler.players[curPlayer].aftermathMessages.Add(
                        "Your Venture Co. Vault adds 3 random Venture Co. Upgrades to your shop.");
                    return(Task.CompletedTask);
                }
        public override Task Battlecry(GameHandler gameHandler, int curPlayer, int enemy)
        {
            List <Upgrade> legendaries = CardsFilter.FilterList <Upgrade>(gameHandler.players[curPlayer].pool.upgrades, x => x.rarity == Rarity.Legendary && x.Cost <= gameHandler.players[curPlayer].maxMana - 5);
            List <Upgrade> epics       = CardsFilter.FilterList <Upgrade>(gameHandler.players[curPlayer].pool.upgrades, x => x.rarity == Rarity.Epic && x.Cost <= gameHandler.players[curPlayer].maxMana - 5);
            List <Upgrade> rares       = CardsFilter.FilterList <Upgrade>(gameHandler.players[curPlayer].pool.upgrades, x => x.rarity == Rarity.Rare && x.Cost <= gameHandler.players[curPlayer].maxMana - 5);

            List <int> shopIndexes = gameHandler.players[curPlayer].shop.GetAllUpgradeIndexes();

            for (int i = 0; i < shopIndexes.Count; i++)
            {
                switch (gameHandler.players[curPlayer].shop.At(shopIndexes[i]).rarity)
                {
                case Rarity.Common:
                    gameHandler.players[curPlayer].shop.TransformUpgrade(shopIndexes[i], rares[GameHandler.randomGenerator.Next(0, rares.Count())]);
                    break;

                case Rarity.Rare:
                    gameHandler.players[curPlayer].shop.TransformUpgrade(shopIndexes[i], epics[GameHandler.randomGenerator.Next(0, epics.Count())]);
                    break;

                case Rarity.Epic:
                    gameHandler.players[curPlayer].shop.TransformUpgrade(shopIndexes[i], legendaries[GameHandler.randomGenerator.Next(0, legendaries.Count())]);
                    break;

                default:
                    break;
                }
            }

            return(Task.CompletedTask);
        }
        public override async Task Battlecry(GameHandler gameHandler, int curPlayer, int enemy)
        {
            List <Upgrade> rushUpgrades = CardsFilter.FilterList <Upgrade>(gameHandler.players[curPlayer].pool.upgrades,
                                                                           x => x.creatureData.staticKeywords[StaticKeyword.Rush] > 0 && x.name != this.name);

            await PlayerInteraction.DiscoverACardAsync <Upgrade>(gameHandler, curPlayer, enemy, "Discover a Rush Upgrade", rushUpgrades);
        }
                public override async Task Call(Card caller, GameHandler gameHandler, ulong curPlayer, ulong enemy, ExtraEffectInfo extraInf)
                {
                    List <Upgrade> rushUpgrades = CardsFilter.FilterList <Upgrade>(gameHandler.players[curPlayer].pool.upgrades,
                                                                                   x => x.creatureData.staticKeywords[StaticKeyword.Rush] > 0 && x.name != "Gold-Winger Gryphin");

                    await PlayerInteraction.DiscoverACardAsync <Upgrade>(gameHandler, curPlayer, enemy, extraInf.ctx, "Discover a Rush Upgrade", rushUpgrades);
                }
                public override Task Call(Card caller, GameHandler gameHandler, ulong curPlayer, ulong enemy, ExtraEffectInfo extraInf)
                {
                    int bonus = CardsFilter.FilterList <Card>(gameHandler.players[curPlayer].playHistory, this.criteria).Count;

                    gameHandler.players[curPlayer].maxMana += bonus;

                    return(Task.CompletedTask);
                }
        public override Task Battlecry(GameHandler gameHandler, int curPlayer, int enemy)
        {
            int bonus = CardsFilter.FilterList <Card>(gameHandler.players[curPlayer].playHistory, this.criteria).Count;

            gameHandler.players[curPlayer].maxMana += bonus;

            return(Task.CompletedTask);
        }
Beispiel #7
0
        public override Task Battlecry(GameHandler gameHandler, int curPlayer, int enemy)
        {
            List <Card> list = CardsFilter.FilterList <Card>(gameHandler.players[curPlayer].playHistory, this.Criteria);

            gameHandler.players[curPlayer].creatureData.attack += 2 * list.Count();
            gameHandler.players[curPlayer].creatureData.health += 2 * list.Count();
            return(Task.CompletedTask);
        }
Beispiel #8
0
                public override Task Call(Card caller, GameHandler gameHandler, ulong curPlayer, ulong enemy, ExtraEffectInfo extraInf)
                {
                    List <Card> list = CardsFilter.FilterList <Card>(gameHandler.players[curPlayer].playHistory, x => x.name.Contains("Venture Co."));

                    gameHandler.players[curPlayer].creatureData.attack += list.Count();

                    return(Task.CompletedTask);
                }
                public override Task Call(Card caller, GameHandler gameHandler, ulong curPlayer, ulong enemy, ExtraEffectInfo extraInf)
                {
                    int rabbits = CardsFilter.FilterList <Card>(gameHandler.players[curPlayer].playHistory, x => x.name == "Robo-Rabbit").Count();

                    gameHandler.players[curPlayer].creatureData.attack += 2;
                    gameHandler.players[curPlayer].creatureData.health += 2;

                    return(Task.CompletedTask);
                }
Beispiel #10
0
                public override Task Call(Card caller, GameHandler gameHandler, ulong curPlayer, ulong enemy, ExtraEffectInfo extraInf)
                {
                    List <Upgrade> legendaries = CardsFilter.FilterList <Upgrade>(gameHandler.players[curPlayer].shop.GetAllUpgrades(), x => x.rarity == Rarity.Legendary);
                    int            index       = GameHandler.randomGenerator.Next(0, legendaries.Count());

                    legendaries[index].effects.Add(new SwitchboardEffect());
                    legendaries[index].cardText += " Combo: Gain \'Spellburst: Gain Rush x4.\'";

                    return(Task.CompletedTask);
                }
        public override void AfterThisAttacks(int damage, GameHandler gameHandler, int curPlayer, int enemy)
        {
            var     onedrops = CardsFilter.FilterList <Upgrade>(gameHandler.players[curPlayer].pool.upgrades, x => x.Cost == 1);
            Upgrade choice   = onedrops[GameHandler.randomGenerator.Next(onedrops.Count)];

            gameHandler.players[curPlayer].hand.AddCard(choice);

            gameHandler.combatOutputCollector.combatHeader.Add(
                $"{gameHandler.players[curPlayer].name}'s {this.name} adds a random 1-Cost Upgrade to its hand.");
        }
Beispiel #12
0
        public override void AftermathMe(GameHandler gameHandler, int curPlayer, int enemy)
        {
            List <Upgrade> legendaries = CardsFilter.FilterList <Upgrade>(gameHandler.players[curPlayer].shop.GetAllUpgrades(), x => x.rarity == Rarity.Legendary);
            int            index       = GameHandler.randomGenerator.Next(0, legendaries.Count());

            legendaries[index].extraUpgradeEffects.Add(new SwitchboardEffect());
            legendaries[index].cardText += " Combo: Gain \'Spellburst: Gain Rush x4.\'";

            gameHandler.players[curPlayer].aftermathMessages.Add($"Your Encoded Switchboard gives the {legendaries[index].name} in your shop \"Combo: Gain \'Spellburst: Gain Rush x4.\'\"");
        }
Beispiel #13
0
        public override Task Battlecry(GameHandler gameHandler, int curPlayer, int enemy)
        {
            List <Card> list = CardsFilter.FilterList <Card>(gameHandler.players[curPlayer].playHistory, VentureCo.Criteria);

            int refreshed = Math.Max(0, Math.Min(list.Count(), gameHandler.players[curPlayer].maxMana - gameHandler.players[curPlayer].curMana));

            gameHandler.players[curPlayer].curMana += refreshed;

            return(Task.CompletedTask);
        }
Beispiel #14
0
        public override Task OnPlay(GameHandler gameHandler, int curPlayer, int enemy)
        {
            int amountOfTickets = CardsFilter.FilterList <Card>(gameHandler.players[curPlayer].hand.GetAllCards(), x => x.name == this.name).Count();

            gameHandler.players[curPlayer].creatureData.attack += amountOfTickets + 1;
            gameHandler.players[curPlayer].creatureData.health += amountOfTickets + 1;
            gameHandler.players[curPlayer].curMana             += amountOfTickets + 1;

            return(base.OnPlay(gameHandler, curPlayer, enemy));
        }
                public override Task Call(Card caller, GameHandler gameHandler, ulong curPlayer, ulong enemy, ExtraEffectInfo extraInf)
                {
                    int amountOfTickets = CardsFilter.FilterList <Card>(gameHandler.players[curPlayer].hand.GetAllCards(), x => x.name == "Ironmoon Ticket").Count();

                    gameHandler.players[curPlayer].creatureData.attack += amountOfTickets + 1;
                    gameHandler.players[curPlayer].creatureData.health += amountOfTickets + 1;
                    gameHandler.players[curPlayer].curMana             += amountOfTickets + 1;

                    return(Task.CompletedTask);
                }
        public override void AftermathMe(GameHandler gameHandler, int curPlayer, int enemy)
        {
            gameHandler.players[curPlayer].shop.Clear();

            List <Upgrade> subList = CardsFilter.FilterList <Upgrade>(gameHandler.players[curPlayer].pool.upgrades, x => x.rarity == Rarity.Common && x.Cost <= gameHandler.players[curPlayer].maxMana - 5);

            for (int i = 0; i < 6; i++)
            {
                Upgrade m = subList[GameHandler.randomGenerator.Next(0, subList.Count())];
                gameHandler.players[curPlayer].shop.AddUpgrade(m);
            }
        }
Beispiel #17
0
                public override async Task Call(Card caller, GameHandler gameHandler, ulong curPlayer, ulong enemy, ExtraEffectInfo extraInf)
                {
                    List <Card> list = CardsFilter.FilterList <Card>(gameHandler.players[curPlayer].playHistory, x => x.name.Contains("Venture Co."));

                    var info = new ExtraEffectInfo.DamageInfo(extraInf.ctx, 3 * list.Count(), $"{gameHandler.players[curPlayer].name}'s Venture Co. Flamethrower deals {2 * list.Count()} damage, ");

                    await gameHandler.players[enemy].TakeDamage(gameHandler, curPlayer, enemy, info);

                    var SOCinfo = extraInf as ExtraEffectInfo.StartOfCombatInfo;

                    SOCinfo.output.Add(info.output);
                }
        public override void AftermathMe(GameHandler gameHandler, int curPlayer, int enemy)
        {
            List <Upgrade> list = CardsFilter.FilterList <Upgrade>(gameHandler.players[curPlayer].pool.upgrades, this.Criteria);

            for (int i = 0; i < 3; i++)
            {
                int pos = GameHandler.randomGenerator.Next(0, list.Count());
                gameHandler.players[curPlayer].shop.AddUpgrade(list[pos]);
            }

            gameHandler.players[curPlayer].aftermathMessages.Add(
                "Your Silver Shogun adds 3 random Rare Upgrades to your shop.");
        }
Beispiel #19
0
        public override string GetInfo(GameHandler gameHandler, int player)
        {
            List <Card> list = CardsFilter.FilterList <Card>(gameHandler.players[player].playHistory, delegate(Card m) { return(m.name.Equals(this.name)); });

            string ret = base.GetInfo(gameHandler, player);

            if (list.Count() > 0)
            {
                ret += " *(played before)*";
            }

            return(ret);
        }
                public override Task Call(Card caller, GameHandler gameHandler, ulong curPlayer, ulong enemy, ExtraEffectInfo extraInf)
                {
                    if (gameHandler.players[curPlayer].overloaded > 0 || gameHandler.players[curPlayer].creatureData.staticKeywords[StaticKeyword.Overload] > 0)
                    {
                        List <Upgrade> pool = CardsFilter.FilterList <Upgrade>(gameHandler.players[curPlayer].pool.upgrades, x => x.creatureData.staticKeywords[StaticKeyword.Overload] > 0);
                        for (int i = 0; i < 3; i++)
                        {
                            int x = GameHandler.randomGenerator.Next(0, pool.Count);
                            gameHandler.players[curPlayer].hand.AddCard(pool[x]);
                        }
                    }

                    return(Task.CompletedTask);
                }
        public override void AftermathMe(GameHandler gameHandler, int curPlayer, int enemy)
        {
            List <Upgrade> list = CardsFilter.FilterList <Upgrade>(gameHandler.players[curPlayer].pool.upgrades, this.Criteria);

            for (int i = 0; i < 3; i++)
            {
                int card = GameHandler.randomGenerator.Next(0, list.Count());

                gameHandler.players[curPlayer].shop.AddUpgrade(list[card]);
            }

            gameHandler.players[curPlayer].aftermathMessages.Add(
                "Your Mecha'thun's Generator adds 3 other random Mecha'thun Cultists to your shop.");
        }
                public override Task Call(Card caller, GameHandler gameHandler, ulong curPlayer, ulong enemy, ExtraEffectInfo extraInf)
                {
                    gameHandler.players[curPlayer].shop.Clear();

                    List <Upgrade> subList = CardsFilter.FilterList <Upgrade>(gameHandler.players[curPlayer].pool.upgrades, x => x.rarity == Rarity.Common && x.Cost <= gameHandler.players[curPlayer].maxMana - 5);

                    for (int i = 0; i < 6; i++)
                    {
                        Upgrade m = subList[GameHandler.randomGenerator.Next(0, subList.Count())];
                        gameHandler.players[curPlayer].shop.AddUpgrade(m);
                    }

                    return(Task.CompletedTask);
                }
        public override Task Battlecry(GameHandler gameHandler, int curPlayer, int enemy)
        {
            if (gameHandler.players[curPlayer].overloaded > 0 || gameHandler.players[curPlayer].creatureData.staticKeywords[StaticKeyword.Overload] > 0)
            {
                List <Upgrade> pool = CardsFilter.FilterList <Upgrade>(gameHandler.players[curPlayer].pool.upgrades, x => x.creatureData.staticKeywords[StaticKeyword.Overload] > 0);
                for (int i = 0; i < 3; i++)
                {
                    int x = GameHandler.randomGenerator.Next(0, pool.Count);
                    gameHandler.players[curPlayer].hand.AddCard(pool[x]);
                }
            }

            return(Task.CompletedTask);
        }
Beispiel #24
0
                public override Task Call(Card caller, GameHandler gameHandler, ulong curPlayer, ulong enemy, ExtraEffectInfo extraInf)
                {
                    List <Upgrade> list = CardsFilter.FilterList <Upgrade>(gameHandler.players[curPlayer].pool.upgrades, x => x.rarity == Rarity.Epic && x.Cost <= gameHandler.players[curPlayer].maxMana - 5);

                    for (int i = 0; i < 2; i++)
                    {
                        int pos = GameHandler.randomGenerator.Next(0, list.Count());
                        gameHandler.players[curPlayer].shop.AddUpgrade(list[pos]);
                    }

                    gameHandler.players[curPlayer].aftermathMessages.Add(
                        "Your Golden Gunner adds 2 random Epic Upgrades to your shop.");

                    return(Task.CompletedTask);
                }
                public override Task Call(Card caller, GameHandler gameHandler, ulong curPlayer, ulong enemy, ExtraEffectInfo extraInf)
                {
                    List <int> shopIndexes = gameHandler.players[curPlayer].shop.GetAllUpgradeIndexes();

                    List <Upgrade> legendaries = CardsFilter.FilterList <Upgrade>(gameHandler.players[curPlayer].pool.upgrades, x => x.rarity == Rarity.Legendary);

                    foreach (var index in shopIndexes)
                    {
                        if (gameHandler.players[curPlayer].shop.At(index).rarity == Rarity.Common)
                        {
                            gameHandler.players[curPlayer].shop.TransformUpgrade(index, legendaries[GameHandler.randomGenerator.Next(legendaries.Count)]);
                        }
                    }

                    return(Task.CompletedTask);
                }
                public override Task Call(Card caller, GameHandler gameHandler, ulong curPlayer, ulong enemy, ExtraEffectInfo extraInf)
                {
                    List <Upgrade> list = CardsFilter.FilterList <Upgrade>(gameHandler.players[curPlayer].pool.upgrades, x => x.name.Contains("Mecha'thun") && !x.name.Equals("Mecha'thun's Generator"));

                    for (int i = 0; i < 3; i++)
                    {
                        int card = GameHandler.randomGenerator.Next(0, list.Count());

                        gameHandler.players[curPlayer].shop.AddUpgrade(list[card]);
                    }

                    gameHandler.players[curPlayer].aftermathMessages.Add(
                        "Your Mecha'thun's Generator adds 3 other random Mecha'thun Cultists to your shop.");

                    return(Task.CompletedTask);
                }
Beispiel #27
0
                public override Task Call(Card caller, GameHandler gameHandler, ulong curPlayer, ulong enemy, ExtraEffectInfo extraInf)
                {
                    var enemyShopIndexes = gameHandler.players[enemy].shop.GetAllUpgradeIndexes();

                    var commonIndexes = CardsFilter.FilterList <int>(enemyShopIndexes, x => gameHandler.players[enemy].shop.At(x).rarity == Rarity.Common);

                    int stolen = commonIndexes[GameHandler.randomGenerator.Next(commonIndexes.Count)];

                    gameHandler.players[curPlayer].aftermathMessages.Add(
                        $"Your Garbage Grabber stole a {gameHandler.players[enemy].shop.At(stolen).name} from your opponent's shop.");
                    gameHandler.players[enemy].aftermathMessages.Add(
                        $"{gameHandler.players[curPlayer].name}'s Garbage Grabber stole a Common Upgrade from your shop.");

                    gameHandler.players[curPlayer].shop.AddUpgrade(gameHandler.players[enemy].shop.At(stolen));
                    gameHandler.players[enemy].shop.RemoveUpgrade(stolen);

                    return(Task.CompletedTask);
                }
        public override void AftermathEnemy(GameHandler gameHandler, int curPlayer, int enemy)
        {
            var enemyShopIndexes = gameHandler.players[enemy].shop.GetAllUpgradeIndexes();

            var commonIndexes = CardsFilter.FilterList <int>(enemyShopIndexes, x => gameHandler.players[enemy].shop.At(x).rarity == Rarity.Common);

            int stolen = GameHandler.randomGenerator.Next(commonIndexes.Count);

            gameHandler.players[curPlayer].aftermathMessages.Add(
                $"Your Garbage Grabber stole a {gameHandler.players[enemy].shop.At(stolen).name} from your opponent's shop.");
            gameHandler.players[enemy].aftermathMessages.Add(
                $"{gameHandler.players[curPlayer].name}'s Garbage Grabber stole a Common Upgrade from your shop.");

            gameHandler.players[curPlayer].shop.AddUpgrade(gameHandler.players[enemy].shop.At(stolen));
            gameHandler.players[enemy].shop.RemoveUpgrade(stolen);

            base.AftermathEnemy(gameHandler, curPlayer, enemy);
        }
Beispiel #29
0
        public override void StartOfCombat(GameHandler gameHandler, int curPlayer, int enemy)
        {
            List <Card> list = CardsFilter.FilterList <Card>(gameHandler.players[enemy].playHistory, VentureCo.Criteria);

            if (list.Count() > 0)
            {
                int stolen = Math.Min(6, gameHandler.players[enemy].creatureData.attack - 1);
                gameHandler.players[enemy].creatureData.attack     -= stolen;
                gameHandler.players[curPlayer].creatureData.attack += stolen;
                gameHandler.combatOutputCollector.preCombatHeader.Add(
                    $"{gameHandler.players[curPlayer].name}'s Sponsorship Scrubbler steals {stolen} Attack from {gameHandler.players[enemy].name}, leaving it with {gameHandler.players[enemy].creatureData.attack} Attack and leaving {gameHandler.players[curPlayer].name} with {gameHandler.players[curPlayer].creatureData.attack} Attack.");
            }
            else
            {
                gameHandler.combatOutputCollector.preCombatHeader.Add(
                    $"{gameHandler.players[curPlayer].name}'s Sponsorship Scrubbler fails to trigger.");
            }
        }
Beispiel #30
0
        public async Task GameInfo(CommandContext ctx)
        {
            string msg = string.Empty;

            msg += $"Amount of Players: {BotInfoHandler.gameHandler.players.Count()}";
            msg += $"\nStarting Lives: {BotInfoHandler.gameHandler.startingLives}";
            if (BotInfoHandler.gameHandler.maxManaCap >= 0)
            {
                msg += $"\nMana Cap: {BotInfoHandler.gameHandler.maxManaCap}";
            }
            else
            {
                msg += "\nMana Cap: None";
            }

            if (BotInfoHandler.gameHandler.setsAmount <= 0)
            {
                msg += "\nSets Included: All";
            }
            else
            {
                msg += $"\nSets Included: {BotInfoHandler.gameHandler.setsAmount}";
            }

            msg += $"\n\nShop Rarity Breakdown:\n";
            msg += $"C-R-E-L: ";
            msg += $"{BotInfoHandler.gameHandler.shopRarities.common}-";
            msg += $"{BotInfoHandler.gameHandler.shopRarities.rare}-";
            msg += $"{BotInfoHandler.gameHandler.shopRarities.epic}-";
            msg += $"{BotInfoHandler.gameHandler.shopRarities.legendary}";

            msg += $"\n\nUpgrade Pool Rarity Breakdown:\n";
            msg += $"C-R-E-L: ";
            msg += $"{CardsFilter.FilterList<Upgrade>(BotInfoHandler.gameHandler.pool.upgrades, x => x.rarity == Rarity.Common).Count()}-";
            msg += $"{CardsFilter.FilterList<Upgrade>(BotInfoHandler.gameHandler.pool.upgrades, x => x.rarity == Rarity.Rare).Count()}-";
            msg += $"{CardsFilter.FilterList<Upgrade>(BotInfoHandler.gameHandler.pool.upgrades, x => x.rarity == Rarity.Epic).Count()}-";
            msg += $"{CardsFilter.FilterList<Upgrade>(BotInfoHandler.gameHandler.pool.upgrades, x => x.rarity == Rarity.Legendary).Count()}";

            await ctx.RespondAsync(embed : new DiscordEmbedBuilder {
                Title       = "Game Info",
                Description = msg,
                Color       = DiscordColor.Azure
            }).ConfigureAwait(false);
        }