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; }
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; }
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; }
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; }
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; }
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; }
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; }
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; }