コード例 #1
0
ファイル: ServerGames.cs プロジェクト: Arcblade/IodemBot
        internal static async Task UserWonBattle(UserAccount userAccount, List <Rewardable> rewards, BattleStats battleStats, ITextChannel lobbyChannel, ITextChannel battleChannel)
        {
            uint oldLevel = userAccount.LevelNumber;

            userAccount.BattleStats += battleStats;
            var bs = userAccount.BattleStats;

            _ = UnlockBattleClasses(userAccount, lobbyChannel);

            var awardStrings = rewards.Select(f => f.Award(userAccount)).Where(s => !s.IsNullOrEmpty()).ToList();

            if (awardStrings.Count() > 0)
            {
                _ = WriteAndDeleteRewards(awardStrings, battleChannel);
            }

            userAccount.ServerStats.ColossoWins++;
            userAccount.ServerStats.ColossoStreak++;
            userAccount.ServerStats.ColossoHighestStreak = Math.Max(userAccount.ServerStats.ColossoHighestStreak, userAccount.ServerStats.ColossoStreak);

            UserAccounts.SaveAccounts();
            uint newLevel = userAccount.LevelNumber;

            if (oldLevel != newLevel)
            {
                var user = (SocketGuildUser)await lobbyChannel.GetUserAsync(userAccount.ID); // Where(s => s. == userAccount.ID).First();

                Leveling.LevelUp(userAccount, user, (SocketTextChannel)lobbyChannel);
            }

            await Task.CompletedTask;
        }
コード例 #2
0
ファイル: ServerGames.cs プロジェクト: Arcblade/IodemBot
        internal static async void UserWonColosso(SocketGuildUser user, IMessageChannel channel)
        {
            var  userAccount = UserAccounts.GetAccount(user);
            uint oldLevel    = userAccount.LevelNumber;

            userAccount.AddXp((uint)(new Random()).Next(40, 70));
            uint newLevel = userAccount.LevelNumber;


            userAccount.ServerStats.ColossoWins++;
            userAccount.ServerStats.ColossoStreak++;
            if (userAccount.ServerStats.ColossoStreak > userAccount.ServerStats.ColossoHighestStreak)
            {
                userAccount.ServerStats.ColossoHighestStreak = userAccount.ServerStats.ColossoStreak;
            }

            UserAccounts.SaveAccounts();
            if (oldLevel != newLevel)
            {
                Leveling.LevelUp(userAccount, user, channel);
            }
            if (userAccount.ServerStats.ColossoWins >= 15)
            {
                await GoldenSun.AwardClassSeries("Brute Series", user, channel);
            }

            await Task.CompletedTask;
        }
コード例 #3
0
ファイル: ServerGames.cs プロジェクト: Arcblade/IodemBot
        internal static async void UserLostColosso(SocketGuildUser user, IMessageChannel channel)
        {
            var  userAccount = UserAccounts.GetAccount(user);
            uint oldLevel    = userAccount.LevelNumber;

            userAccount.AddXp((uint)(new Random()).Next(1, 10));
            uint newLevel = userAccount.LevelNumber;

            userAccount.ServerStats.ColossoStreak = 0;
            UserAccounts.SaveAccounts();

            if (oldLevel != newLevel)
            {
                Leveling.LevelUp(userAccount, user, channel);
            }
            await Task.CompletedTask;
        }
コード例 #4
0
ファイル: ServerGames.cs プロジェクト: Floowey/IodemBot
        internal static async void UserLostColosso(SocketGuildUser user, IMessageChannel channel)
        {
            var userAccount = EntityConverter.ConvertUser(user);
            var oldLevel    = userAccount.LevelNumber;

            userAccount.AddXp((uint)Global.RandomNumber(1, 10));
            var newLevel = userAccount.LevelNumber;

            userAccount.ServerStats.ColossoStreak = 0;
            UserAccountProvider.StoreUser(userAccount);

            if (oldLevel != newLevel)
            {
                Leveling.LevelUp(userAccount, user, channel);
            }
            await Task.CompletedTask;
        }
コード例 #5
0
ファイル: ServerGames.cs プロジェクト: Arcblade/IodemBot
        internal static async Task UserLostBattle(UserAccount userAccount, ITextChannel battleChannel)
        {
            uint oldLevel = userAccount.LevelNumber;

            userAccount.AddXp((uint)(new Random()).Next(1, 10));
            uint newLevel = userAccount.LevelNumber;

            userAccount.ServerStats.ColossoStreak = 0;

            UserAccounts.SaveAccounts();
            if (oldLevel != newLevel)
            {
                var user = (SocketGuildUser)await battleChannel.GetUserAsync(userAccount.ID); // Where(s => s. == userAccount.ID).First();

                Leveling.LevelUp(userAccount, user, (SocketTextChannel)battleChannel);
            }

            await Task.CompletedTask;
        }
コード例 #6
0
ファイル: ServerGames.cs プロジェクト: Floowey/IodemBot
        internal static async Task UserLostBattle(UserAccount userAccount, ITextChannel battleChannel)
        {
            var oldLevel = userAccount.LevelNumber;

            userAccount.AddXp((uint)Global.RandomNumber(1, 10));
            var newLevel = userAccount.LevelNumber;

            userAccount.ServerStats.ColossoStreak = 0;

            UserAccountProvider.StoreUser(userAccount);
            if (oldLevel != newLevel)
            {
                var user = (SocketGuildUser)await battleChannel.GetUserAsync(userAccount.Id); // Where(s => s. == userAccount.ID).First();

                Leveling.LevelUp(userAccount, user, (SocketTextChannel)battleChannel);
            }

            await Task.CompletedTask;
        }
コード例 #7
0
ファイル: ServerGames.cs プロジェクト: dom426/IodemBot
        internal static async Task UserWonBattle(UserAccount userAccount, List <Rewardable> rewards, BattleStats battleStats, ITextChannel lobbyChannel, ITextChannel battleChannel, int winsInARow = 1, string nameOfTeamMates = "")
        {
            uint oldLevel = userAccount.LevelNumber;

            userAccount.BattleStats += battleStats;
            var bs = userAccount.BattleStats;

            _ = UnlockClasses(userAccount, lobbyChannel);

            var awardStrings = rewards.Select(f => f.Award(userAccount)).Where(s => s != null).ToList();

            if (awardStrings.Count() > 0)
            {
                _ = WriteAndDeleteRewards(awardStrings, battleChannel);
            }

            userAccount.ServerStats.ColossoWins++;
            userAccount.ServerStats.ColossoStreak++;
            userAccount.ServerStats.ColossoHighestStreak = Math.Max(userAccount.ServerStats.ColossoHighestStreak, userAccount.ServerStats.ColossoStreak);
            switch (battleStats.TotalTeamMates)
            {
            case 0:
                userAccount.ServerStats.ColossoHighestRoundEndlessSolo = Math.Max(userAccount.ServerStats.ColossoHighestRoundEndlessSolo, winsInARow);
                break;

            case 1:
                if (winsInARow > userAccount.ServerStats.ColossoHighestRoundEndlessDuo)
                {
                    userAccount.ServerStats.ColossoHighestRoundEndlessDuo      = winsInARow;
                    userAccount.ServerStats.ColossoHighestRoundEndlessDuoNames = nameOfTeamMates;
                }
                break;

            case 2:
                if (winsInARow > userAccount.ServerStats.ColossoHighestRoundEndlessTrio)
                {
                    userAccount.ServerStats.ColossoHighestRoundEndlessTrio      = winsInARow;
                    userAccount.ServerStats.ColossoHighestRoundEndlessTrioNames = nameOfTeamMates;
                }
                break;

            case 3:
                if (winsInARow > userAccount.ServerStats.ColossoHighestRoundEndlessQuad)
                {
                    userAccount.ServerStats.ColossoHighestRoundEndlessQuad      = winsInARow;
                    userAccount.ServerStats.ColossoHighestRoundEndlessQuadNames = nameOfTeamMates;
                }
                break;
            }

            UserAccounts.SaveAccounts();
            uint newLevel = userAccount.LevelNumber;

            if (oldLevel != newLevel)
            {
                var user = (SocketGuildUser)await lobbyChannel.GetUserAsync(userAccount.ID); // Where(s => s. == userAccount.ID).First();

                Leveling.LevelUp(userAccount, user, (SocketTextChannel)lobbyChannel);
            }

            await Task.CompletedTask;
        }
コード例 #8
0
ファイル: ServerGames.cs プロジェクト: dom426/IodemBot
        internal static async Task UserWonBattle(UserAccount userAccount, int winsInARow, int LureCaps, BattleStats battleStats, BattleDifficulty diff, ITextChannel lobbyChannel, IEnumerable <ColossoFighter> winners, bool wasMimic)
        {
            uint oldLevel  = userAccount.LevelNumber;
            var  baseXP    = 20 + 5 * LureCaps + winsInARow / 4;
            var  xpawarded = (uint)new Random().Next(baseXP, baseXP * 2) * Math.Max(3, (uint)Math.Pow((int)diff + 1, 2));

            userAccount.XP += xpawarded;
            userAccount.Inv.AddBalance(xpawarded / 2);
            uint newLevel = userAccount.LevelNumber;

            userAccount.ServerStats.ColossoWins++;
            userAccount.ServerStats.ColossoStreak++;
            userAccount.ServerStats.ColossoHighestStreak = Math.Max(userAccount.ServerStats.ColossoHighestStreak, userAccount.ServerStats.ColossoStreak);
            switch (battleStats.TotalTeamMates)
            {
            case 0:
                userAccount.ServerStats.ColossoHighestRoundEndlessSolo = Math.Max(userAccount.ServerStats.ColossoHighestRoundEndlessSolo, winsInARow);
                break;

            case 1:
                if (winsInARow > userAccount.ServerStats.ColossoHighestRoundEndlessDuo)
                {
                    userAccount.ServerStats.ColossoHighestRoundEndlessDuo      = winsInARow;
                    userAccount.ServerStats.ColossoHighestRoundEndlessDuoNames = string.Join(", ", winners.Select(p => p.Name));
                }
                break;

            case 2:
                if (winsInARow > userAccount.ServerStats.ColossoHighestRoundEndlessTrio)
                {
                    userAccount.ServerStats.ColossoHighestRoundEndlessTrio      = winsInARow;
                    userAccount.ServerStats.ColossoHighestRoundEndlessTrioNames = string.Join(", ", winners.Select(p => p.Name));
                }
                break;

            case 3:
                if (winsInARow > userAccount.ServerStats.ColossoHighestRoundEndlessQuad)
                {
                    userAccount.ServerStats.ColossoHighestRoundEndlessQuad      = winsInARow;
                    userAccount.ServerStats.ColossoHighestRoundEndlessQuadNames = string.Join(", ", winners.Select(p => p.Name));
                }
                break;
            }

            userAccount.BattleStats += battleStats;
            _ = UnlockClasses(userAccount, lobbyChannel);

            if (wasMimic || Global.Random.Next(0, 100) <= 7 + battleStats.TotalTeamMates * 2 + 4 * LureCaps + winsInARow / 10 - 1)
            {
                ChestQuality awardedChest = GetRandomChest(diff);
                userAccount.Inv.AwardChest(awardedChest);
                var embed = new EmbedBuilder();
                embed.WithColor(Colors.Get("Iodem"));
                embed.WithDescription($"{((SocketTextChannel)lobbyChannel).Users.Where(u => u.Id == userAccount.ID).FirstOrDefault().Mention} found a {Inventory.ChestIcons[awardedChest]} {awardedChest} Chest!");
                await lobbyChannel.SendMessageAsync("", false, embed.Build());
            }

            UserAccounts.SaveAccounts();
            if (oldLevel != newLevel)
            {
                var user = (SocketGuildUser)await lobbyChannel.GetUserAsync(userAccount.ID); // Where(s => s. == userAccount.ID).First();

                Leveling.LevelUp(userAccount, user, (SocketTextChannel)lobbyChannel);
            }

            await Task.CompletedTask;
        }