Пример #1
0
        public static async Task <Upgrade> FreezeUpgradeInShopAsync(GameHandler gameHandler, ulong curPlayer, ulong enemy, CommandContext ctx, int freezeAmount = 1)
        {
            if (gameHandler.players[curPlayer].shop.OptionsCount() == 0)
            {
                return(new BlankUpgrade());
            }
            string defaultAns = (gameHandler.players[curPlayer].shop.GetRandomUpgradeIndex() + 1).ToString();

            PlayerInteraction interaction = new PlayerInteraction("Choose an Upgrade in your shop to Freeze", string.Empty, "Write the corresponding index");

            string ret = await interaction.SendInteractionAsync(gameHandler, curPlayer, PlayerInteraction.CheckValidShopUpgradeIndex, defaultAns, ctx);

            if (ret == string.Empty)
            {
                return(new BlankUpgrade());
            }

            int     pos    = int.Parse(ret) - 1;
            Upgrade chosen = gameHandler.players[curPlayer].shop.At(pos);

            chosen.creatureData.staticKeywords[StaticKeyword.Freeze] = Math.Max(freezeAmount, chosen.creatureData.staticKeywords[StaticKeyword.Freeze]);
            //chosen.OnBeingFrozen(gameHandler, curPlayer, enemy);

            var generalInfo = new ExtraEffectInfo(ctx);
            await Effect.CallEffects(chosen.effects, Effect.EffectType.OnBeingFrozen, chosen, gameHandler, curPlayer, enemy, generalInfo);

            return(chosen);
        }
Пример #2
0
        public async Task NextRound(Room room, CommandContext ctx)
        {
            Console.WriteLine("Frog1");
            this.currentRound++;
            this.pairsHandler.NextRoundPairs(this);
            this.amountReady = 0;
            Console.WriteLine("Frog2");
            int newMana = Math.Max(0, Math.Min(5, this.gameSettings.maxManaCap - this.curMaxMana));

            this.curMaxMana += newMana;
            Console.WriteLine("Frog3");
            foreach (var player in this.players)
            {
                player.Value.aftermathMessages.Clear();

                player.Value.maxMana += newMana;

                player.Value.shop.Refresh(this, player.Value.pool, player.Value.maxMana);

                player.Value.overloaded = player.Value.creatureData.staticKeywords[Cards.StaticKeyword.Overload];
                player.Value.curMana    = Math.Max(0, player.Value.maxMana - player.Value.overloaded);

                player.Value.ready = false;

                player.Value.playHistory.Add(new List <Cards.Card>());
                player.Value.buyHistory.Add(new List <Cards.Upgrade>());

                player.Value.creatureData.InitStaticKeywordsDictionary();
            }
            Console.WriteLine("Frog4");
            foreach (var player in this.players)
            {
                ExtraEffectInfo aftermathMeInfo = new ExtraEffectInfo(ctx);
                await Effect.CallEffects(player.Value.effects, Effect.EffectType.AftermathMe, null, this, player.Key, this.pairsHandler.opponents[player.Key], aftermathMeInfo);
            }
            Console.WriteLine("Frog5");
            foreach (var player in this.players)
            {
                ExtraEffectInfo aftermathEnemyInfo = new ExtraEffectInfo(ctx);
                await Effect.CallEffects(player.Value.effects, Effect.EffectType.AftermathEnemy, null, this, player.Key, this.pairsHandler.opponents[player.Key], aftermathEnemyInfo);
            }
            Console.WriteLine("Frog6");
            foreach (var player in this.players)
            {
                player.Value.effects          = player.Value.nextRoundEffects;
                player.Value.nextRoundEffects = new List <Effect>();
            }
            Console.WriteLine("Frog7");
            foreach (var player in this.players)
            {
                player.Value.attachedUpgrades.Clear();
                player.Value.hand.RemoveAllBlankUpgrades();
                player.Value.specificEffects = new SpecificEffects();
            }
            Console.WriteLine("Frog8");
        }
Пример #3
0
        public virtual async Task <bool> BuyCard(int shopPos, GameHandler gameHandler, ulong curPlayer, ulong enemy, CommandContext ctx)
        {
            gameHandler.players[curPlayer].curMana -= this.Cost;

            ExtraEffectInfo extraInf = new ExtraEffectInfo(ctx);
            await Effect.CallEffects(gameHandler.players[curPlayer].effects, Effect.EffectType.OnBuyingAMech, this, gameHandler, curPlayer, enemy, extraInf);

            await gameHandler.players[curPlayer].AttachMech(this, gameHandler, curPlayer, enemy, ctx);

            return(true);
        }
Пример #4
0
            public override async Task CastOnUpgradeInShop(int shopPos, GameHandler gameHandler, ulong curPlayer, ulong enemy, CommandContext ctx)
            {
                Upgrade u = gameHandler.players[curPlayer].shop.At(shopPos);

                u.creatureData.attack += 4;
                u.creatureData.health += 4;

                u.creatureData.staticKeywords[StaticKeyword.Freeze] = Math.Max(1, u.creatureData.staticKeywords[StaticKeyword.Freeze]);

                var generalInfo = new ExtraEffectInfo(ctx);
                await Effect.CallEffects(u.effects, Effect.EffectType.OnBeingFrozen, u, gameHandler, curPlayer, enemy, generalInfo);
            }
Пример #5
0
        public async Task AttachMech(Upgrade mech, GameHandler gameHandler, ulong curPlayer, ulong enemy, CommandContext ctx)
        {
            ExtraEffectInfo extraInf = new ExtraEffectInfo(ctx);
            await Effect.CallEffects(mech.effects, Effect.EffectType.OnPlay, mech, gameHandler, curPlayer, enemy, extraInf);

            if (mech.creatureData.staticKeywords[StaticKeyword.Magnetic] > 0)
            {
                for (int i = 0; i < mech.creatureData.staticKeywords[StaticKeyword.Magnetic]; i++)
                {
                    await PlayerInteraction.ActivateMagneticAsync(gameHandler, curPlayer, enemy, ctx);
                }
            }

            if (mech.creatureData.staticKeywords[StaticKeyword.Echo] > 0)
            {
                gameHandler.players[curPlayer].shop.AddUpgrade(mech.BasicCopy(gameHandler.players[curPlayer].pool));
            }

            if (mech.creatureData.staticKeywords[StaticKeyword.Binary] > 0)
            {
                mech.creatureData.staticKeywords[StaticKeyword.Binary]--;

                Upgrade binaryLessCopy = mech.BasicCopy(gameHandler.players[curPlayer].pool);
                binaryLessCopy.cardText += " (No Binary)";
                binaryLessCopy.creatureData.staticKeywords[StaticKeyword.Binary]--;

                //the copy should have basic stats
                gameHandler.players[curPlayer].hand.AddCard(binaryLessCopy);
            }
            mech.creatureData.staticKeywords[StaticKeyword.Binary] = 0;

            this.creatureData += mech.creatureData;

            this.creatureData.staticKeywords[StaticKeyword.Echo]     = 0;
            this.creatureData.staticKeywords[StaticKeyword.Magnetic] = 0;
            this.creatureData.staticKeywords[StaticKeyword.Freeze]   = 0;
            this.creatureData.staticKeywords[StaticKeyword.Binary]   = 0;

            //await mech.Battlecry(gameHandler, curPlayer, enemy);
            await Effect.CallEffects(mech.effects, Effect.EffectType.Battlecry, mech, gameHandler, curPlayer, enemy, extraInf);

            if (gameHandler.players[curPlayer].playHistory[gameHandler.players[curPlayer].playHistory.Count() - 1].Count() > 0)
            {
                await Effect.CallEffects(mech.effects, Effect.EffectType.Combo, mech, gameHandler, curPlayer, enemy, extraInf);
            }

            this.attachedUpgrades.Add((Upgrade)mech.DeepCopy());

            foreach (var upgradeEffect in mech.effects)
            {
                this.effects.Add(upgradeEffect.Copy());
            }
        }
Пример #6
0
        public override async Task <bool> PlayCard(int handPos, GameHandler gameHandler, ulong curPlayer, ulong enemy, CommandContext ctx)
        {
            gameHandler.players[curPlayer].curMana -= this.Cost;

            ExtraEffectInfo extraInf = new ExtraEffectInfo(ctx);
            await Effect.CallEffects(this.effects, Effect.EffectType.OnPlay, this, gameHandler, curPlayer, enemy, extraInf);

            await Effect.CallEffects(gameHandler.players[curPlayer].effects, Effect.EffectType.OnSpellCast, this, gameHandler, curPlayer, enemy, extraInf);

            await Effect.CallEffects(gameHandler.players[curPlayer].effects, Effect.EffectType.Spellburst, this, gameHandler, curPlayer, enemy, extraInf, true);

            return(true);
        }
Пример #7
0
            public override async Task <bool> BuyCard(int shopPos, GameHandler gameHandler, ulong curPlayer, ulong enemy, CommandContext ctx)
            {
                if (gameHandler.players[curPlayer].buyHistory.Last().Count == 0)
                {
                    return(await base.BuyCard(shopPos, gameHandler, curPlayer, enemy, ctx));
                }
                if (gameHandler.players[curPlayer].buyHistory.Last().Last().name == "Morphing Nanoswarm" || gameHandler.players[curPlayer].buyHistory.Last().Last().name == this.name)
                {
                    return(await base.BuyCard(shopPos, gameHandler, curPlayer, enemy, ctx));
                }

                Upgrade u = gameHandler.players[curPlayer].buyHistory.Last().Last();

                gameHandler.players[curPlayer].curMana -= u.Cost;

                ExtraEffectInfo extraInf = new ExtraEffectInfo(ctx);
                await Effect.CallEffects(gameHandler.players[curPlayer].effects, Effect.EffectType.OnBuyingAMech, u, gameHandler, curPlayer, enemy, extraInf);

                await gameHandler.players[curPlayer].AttachMech(u, gameHandler, curPlayer, enemy, ctx);

                return(true);
            }
Пример #8
0
                public override Task Call(Card caller, GameHandler gameHandler, ulong curPlayer, ulong enemy, ExtraEffectInfo extraInf)
                {
                    List <int> handIndexes = gameHandler.players[curPlayer].hand.GetAllCardIndexes();

                    for (int i = 0; i < handIndexes.Count(); i++)
                    {
                        if (Attribute.IsDefined(gameHandler.players[curPlayer].hand.At(handIndexes[i]).GetType(), typeof(SparePartAttribute)))
                        {
                            gameHandler.players[curPlayer].hand.RemoveCard(handIndexes[i]);
                            gameHandler.players[curPlayer].creatureData.attack += 3;
                            gameHandler.players[curPlayer].creatureData.health += 3;
                        }
                    }

                    return(Task.CompletedTask);
                }
Пример #9
0
                public override Task Call(Card caller, GameHandler gameHandler, ulong curPlayer, ulong enemy, ExtraEffectInfo extraInf)
                {
                    var info = extraInf as ExtraEffectInfo.StartOfCombatInfo;

                    int            lowestCost   = 9999;
                    List <Upgrade> upgradesList = new List <Upgrade>();

                    for (int i = 0; i < gameHandler.players[enemy].buyHistory.Last().Count(); i++)
                    {
                        if (gameHandler.players[enemy].buyHistory.Last()[i].Cost < lowestCost && gameHandler.players[enemy].buyHistory.Last()[i].creatureData.attack != 0 && gameHandler.players[enemy].buyHistory.Last()[i].creatureData.health != 0)
                        {
                            lowestCost = gameHandler.players[enemy].buyHistory.Last()[i].Cost;
                            upgradesList.Clear();
                            upgradesList.Add(gameHandler.players[enemy].buyHistory.Last()[i]);
                        }
                    }

                    if (upgradesList.Count == 0)
                    {
                        info.output.Add(
                            $"{gameHandler.players[curPlayer].name}'s Super Scooper triggers but doesn't do anything.");
                        return(Task.CompletedTask);
                    }

                    int pos = GameHandler.randomGenerator.Next(0, upgradesList.Count());

                    int attackst = upgradesList[pos].creatureData.attack;
                    int healthst = upgradesList[pos].creatureData.health;

                    upgradesList[pos].creatureData.attack = 0;
                    upgradesList[pos].creatureData.health = 0;

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

                    gameHandler.players[enemy].creatureData.attack -= attackst;
                    gameHandler.players[enemy].creatureData.health -= healthst;

                    info.output.Add(
                        $"{gameHandler.players[curPlayer].name}'s Super Scooper steals {attackst}/{healthst} from {gameHandler.players[enemy].name}'s {upgradesList[pos].name}, " +
                        $"leaving it as a {gameHandler.players[enemy].creatureData.Stats()} and leaving {gameHandler.players[curPlayer].name} as a {gameHandler.players[curPlayer].creatureData.Stats()}.");

                    return(Task.CompletedTask);
                }
Пример #10
0
                    public override Task Call(Card caller, GameHandler gameHandler, ulong curPlayer, ulong enemy, ExtraEffectInfo extraInf)
                    {
                        string aftermathMsg = "Your Database Core gives you ";

                        bool checkedFirst = false;

                        foreach (var keyword in _kw.staticKeywords)
                        {
                            if (keyword.Value > 0)
                            {
                                gameHandler.players[curPlayer].creatureData.staticKeywords[keyword.Key] += keyword.Value;
                                if (!checkedFirst)
                                {
                                    checkedFirst  = true;
                                    aftermathMsg += $"{keyword.Key} x{keyword.Value}";
                                }
                                else
                                {
                                    aftermathMsg += $", {keyword.Key} x{keyword.Value}";
                                }
                            }
                        }

                        gameHandler.players[curPlayer].aftermathMessages.Add(aftermathMsg);

                        return(Task.CompletedTask);
                    }
Пример #11
0
                public override Task Call(Card caller, GameHandler gameHandler, ulong curPlayer, ulong enemy, ExtraEffectInfo extraInf)
                {
                    CreatureData kws = gameHandler.players[curPlayer].creatureData.DeepCopy();

                    Aftermath aftermath = new Aftermath(kws);

                    aftermath.effectText  = "Aftermath: Gain ";
                    aftermath.displayMode = EffectDisplayMode.Private;

                    bool checkedFirst = false;

                    foreach (var keyword in kws.staticKeywords)
                    {
                        if (keyword.Value != 0)
                        {
                            if (!checkedFirst)
                            {
                                aftermath.effectText += $"{keyword.Key} x{keyword.Value}";
                                checkedFirst          = true;
                            }
                            else
                            {
                                aftermath.effectText += $", {keyword.Key} x{keyword.Value}";
                            }
                        }
                    }

                    aftermath.effectText += ".";

                    gameHandler.players[curPlayer].effects.Add(aftermath);

                    return(Task.CompletedTask);
                }
Пример #12
0
                    public override async Task Call(Card caller, GameHandler gameHandler, ulong curPlayer, ulong enemy, ExtraEffectInfo extraInf)
                    {
                        PlayerInteraction playerInteraction = new PlayerInteraction("Name a number of Attack or Health", "First type the number, followed by 'Attack' or 'Health'", "Capitalisation is ignored");
                        string            defaultAns        = "0 Attack";

                        await playerInteraction.SendInteractionAsync(gameHandler, curPlayer, this.InteractionCheck, defaultAns, extraInf.ctx);
                    }
Пример #13
0
                    public override Task Call(Card caller, GameHandler gameHandler, ulong curPlayer, ulong enemy, ExtraEffectInfo extraInf)
                    {
                        if (caller is Upgrade u)
                        {
                            u.creatureData.staticKeywords[StaticKeyword.Binary] = Math.Max(1, u.creatureData.staticKeywords[StaticKeyword.Binary]);
                            this._toBeRemoved = true;
                        }

                        return(Task.CompletedTask);
                    }
Пример #14
0
                public override Task Call(Card caller, GameHandler gameHandler, ulong curPlayer, ulong enemy, ExtraEffectInfo extraInf)
                {
                    for (int i = 0; i < 3; i++)
                    {
                        int poolSize = gameHandler.players[curPlayer].pool.upgrades.Count();
                        gameHandler.players[curPlayer].shop.AddUpgrade(gameHandler.players[curPlayer].pool.upgrades[GameHandler.randomGenerator.Next(0, poolSize)]);
                    }

                    gameHandler.players[curPlayer].aftermathMessages.Add(
                        "Your Grand Vault adds 3 random Upgrades to your shop.");

                    gameHandler.players[curPlayer].nextRoundEffects.Add(new Aftermath());

                    return(Task.CompletedTask);
                }
Пример #15
0
 public override Task Call(Card caller, GameHandler gameHandler, ulong curPlayer, ulong enemy, ExtraEffectInfo extraInf)
 {
     gameHandler.players[curPlayer].maxMana++;
     return(Task.CompletedTask);
 }
Пример #16
0
                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);
                }
Пример #17
0
 public override Task Call(Card caller, GameHandler gameHandler, ulong curPlayer, ulong enemy, ExtraEffectInfo extraInf)
 {
     gameHandler.players[curPlayer].shop.Refresh(gameHandler, gameHandler.players[curPlayer].pool, gameHandler.players[curPlayer].maxMana, false);
     return(Task.CompletedTask);
 }
Пример #18
0
                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);
                }
Пример #19
0
                public override async Task Call(Card caller, GameHandler gameHandler, ulong curPlayer, ulong enemy, ExtraEffectInfo extraInf)
                {
                    var info = extraInf as ExtraEffectInfo.StartOfCombatInfo;

                    if (gameHandler.players[curPlayer].overloaded > 0 || gameHandler.players[curPlayer].creatureData.staticKeywords[StaticKeyword.Overload] > 1)
                    {
                        var dmgInfo = new ExtraEffectInfo.DamageInfo(extraInf.ctx, 10, $"{gameHandler.players[curPlayer].name}'s Mass Accelerator triggers, dealing 10 damage, ");
                        await gameHandler.players[enemy].TakeDamage(gameHandler, curPlayer, enemy, dmgInfo);
                        info.output.Add(dmgInfo.output);
                    }
                    else
                    {
                        info.output.Add($"{gameHandler.players[curPlayer].name}'s Mass Accelerator failed to trigger.");
                    }
                }
Пример #20
0
                public override Task Call(Card caller, GameHandler gameHandler, ulong curPlayer, ulong enemy, ExtraEffectInfo extraInf)
                {
                    for (int i = 0; i < 6; i++)
                    {
                        if (gameHandler.players[curPlayer].shop.OptionsCount() == 0)
                        {
                            break;
                        }

                        int index = gameHandler.players[curPlayer].shop.GetRandomUpgradeIndex();
                        Console.WriteLine(index);
                        gameHandler.players[curPlayer].shop.RemoveUpgrade(index);
                    }

                    gameHandler.players[curPlayer].aftermathMessages.Add("Your Fallen Reaver destroys 6 random Upgrades in your shop.");

                    return(Task.CompletedTask);
                }
Пример #21
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);
                }
Пример #22
0
                public override Task Call(Card caller, GameHandler gameHandler, ulong curPlayer, ulong enemy, ExtraEffectInfo extraInf)
                {
                    int pos = GameHandler.randomGenerator.Next(gameHandler.players[curPlayer].pool.spareparts.Count());

                    gameHandler.players[curPlayer].hand.AddCard(gameHandler.players[curPlayer].pool.spareparts[pos]);

                    gameHandler.players[curPlayer].aftermathMessages.Add(
                        $"Your Circus Circuit added a {gameHandler.players[curPlayer].pool.spareparts[pos].name} to your hand.");

                    return(Task.CompletedTask);
                }
Пример #23
0
                public override Task Call(Card caller, GameHandler gameHandler, ulong curPlayer, ulong enemy, ExtraEffectInfo extraInf)
                {
                    gameHandler.players[curPlayer].effects.Add(new OnBuyingAMech());

                    return(Task.CompletedTask);
                }
Пример #24
0
 public override Task Call(Card caller, GameHandler gameHandler, ulong curPlayer, ulong enemy, ExtraEffectInfo extraInf)
 {
     gameHandler.players[curPlayer].creatureData.staticKeywords[StaticKeyword.Spikes]  += 2;
     gameHandler.players[curPlayer].creatureData.staticKeywords[StaticKeyword.Shields] += 2;
     return(Task.CompletedTask);
 }
Пример #25
0
                public override Task Call(Card caller, GameHandler gameHandler, ulong curPlayer, ulong enemy, ExtraEffectInfo extraInf)
                {
                    gameHandler.players[curPlayer].hand.AddCard(new Receipt());
                    gameHandler.players[curPlayer].nextRoundEffects.Add(new Aftermath());

                    return(Task.CompletedTask);
                }
Пример #26
0
                public override async Task Call(Card caller, GameHandler gameHandler, ulong curPlayer, ulong enemy, ExtraEffectInfo extraInf)
                {
                    PlayerInteraction chooseOne  = new PlayerInteraction("Choose One", "1) Gain +1 Attack for each other Upgrade in your shop\n2) Gain +1 Health for each other Upgrade in your shop", "Write the corresponding number");
                    string            defaultAns = GameHandler.randomGenerator.Next(1, 3).ToString();

                    string ret = await chooseOne.SendInteractionAsync(gameHandler, curPlayer, (x, y, z) => GeneralFunctions.Within(x, 1, 2), defaultAns, extraInf.ctx);

                    if (int.Parse(ret) == 1)
                    {
                        gameHandler.players[curPlayer].creatureData.attack += gameHandler.players[curPlayer].shop.GetAllUpgradeIndexes().Count();
                    }
                    else if (int.Parse(ret) == 2)
                    {
                        gameHandler.players[curPlayer].creatureData.health += gameHandler.players[curPlayer].shop.GetAllUpgradeIndexes().Count();
                    }
                }
Пример #27
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);
                }
Пример #28
0
                public override Task Call(Card caller, GameHandler gameHandler, ulong curPlayer, ulong enemy, ExtraEffectInfo extraInf)
                {
                    int stolenat = Math.Min(gameHandler.players[enemy].creatureData.attack - 1, 2);
                    int stolenhp = Math.Min(gameHandler.players[enemy].creatureData.health, 2);

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

                    gameHandler.players[enemy].creatureData.attack -= stolenat;
                    gameHandler.players[enemy].creatureData.health -= stolenhp;

                    var info = extraInf as ExtraEffectInfo.AfterAttackInfo;

                    info.output.Add(
                        $"{gameHandler.players[curPlayer].name}'s Scrapbarber steals {stolenat}/{stolenhp} from {gameHandler.players[enemy].name}, " +
                        $"leaving it as a {gameHandler.players[enemy].creatureData.Stats()} and leaving {gameHandler.players[curPlayer].name} as a {gameHandler.players[curPlayer].creatureData.Stats()}.");

                    return(Task.CompletedTask);
                }
Пример #29
0
                public override Task Call(Card caller, GameHandler gameHandler, ulong curPlayer, ulong enemy, ExtraEffectInfo extraInf)
                {
                    gameHandler.players[curPlayer].creatureData.attack += gameHandler.players[curPlayer].shop.OptionsCount();
                    gameHandler.players[curPlayer].creatureData.health += gameHandler.players[curPlayer].shop.OptionsCount();

                    gameHandler.players[curPlayer].shop.Clear();

                    return(Task.CompletedTask);
                }
Пример #30
0
                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);
                }