Esempio n. 1
0
        public static async Task EndCombat(CombatInstance inst)
        {
            _dic.Remove(inst.Players[0].CombatID);
            inst.CombatEnded = true;

            var embeds = OsirisEmbedBuilder.RoundStart(inst);
            await MessageHandler.SendEmbedMessage(inst.Location, "**Combat End**", embeds[0]);

            //for(int i = 1; i < embeds.Count; i++)
            //await MessageHandler.SendEmbedMessage(inst.Location, "", embeds[i]);

            foreach (UserAccount player in inst.Players)
            {
                player.ResetCombatFields(inst.IsDuel);
            }

            UserHandler.SaveUsers();
            CombatHandler.SaveInstances();
        }
Esempio n. 2
0
 public Team GetTeam(BasicCard player)
 {
     return(GetTeam(UserHandler.GetUser(player.Owner)));
 }
Esempio n. 3
0
        public static async Task NextTurn(CombatInstance inst)
        {
            await CheckPlayerDeath(inst);

            if (inst.CombatEnded)
            {
                return;
            }

            foreach (BasicCard player in inst.CardList)
            {
                if (player.HasPassive)
                {
                    if (player.Passive.UpdateTurnStart)
                    {
                        if (!player.Passive.RequiresAsync)
                        {
                            player.Passive.Update(inst, player);
                        }
                        else
                        {
                            await player.Passive.UpdateAsync(inst, player);
                        }
                    }
                }
            }

            inst.TurnNumber++;
            if (inst.TurnNumber >= inst.CardList.Count)
            {
                await NextRound(inst);

                return;
            }

            var card = inst.CardList[inst.TurnNumber];
            var user = UserHandler.GetUser(card.Owner);

            //Turn start tick. Moved to turn end. May implement here later.
            //await card.TurnTick();

            card.ApplyBonusActions();

            var skip = false;

            foreach (BuffDebuff eff in card.Effects)
            {
                if (eff.TurnSkip)
                {
                    skip = true;
                }
            }

            if (!card.Dead && !skip)
            {
                await MessageHandler.SendEmbedMessage(inst.Location, $"{user.Mention}'s Turn!", OsirisEmbedBuilder.PlayerTurnStatus(inst.CardList[inst.TurnNumber], inst.RoundNumber));

                card.IsTurn = true;
            }
            else
            {
                if (skip)
                {
                    await MessageHandler.SendMessage(inst.Location, $"{user.Mention}'s Turn was skipped!");
                }
                await card.TurnTick();

                card.IsTurn = false;
                await NextTurn(inst);
            }
        }