private async Task HandleRankCommand(IGuildUser user, bool self = true) { Ranking ranking = database.GetRankings().FirstOrDefault(f => f.UserId == (long)user.Id && f.GuildId == (long)Context.Guild.Id); if (ranking == null) { string s = self ? "you aren't" : $"{user.Mention} isn't"; await ReplyAsync($"{s} ranked yet. Talk, dont be shy!"); return; } EmbedBuilder builder = new EmbedBuilder() { Color = new Color(0, 0, 0), Author = new EmbedAuthorBuilder() { Name = user.Username, IconUrl = user.GetAvatarUrl() }, ThumbnailUrl = ranking.Rank.Image, Footer = new EmbedFooterBuilder() { Text = "ChayaBot" } }; RankLevel nextLvl = ranking.Rank.RankLevels.FirstOrDefault(f => f.Level == ranking.CurrentLevel + 1); double expPercent = ((double)ranking.CurrentExperience / nextLvl.RequiredExperience) * 100; builder.AddInlineField("Level", ranking.CurrentLevel); builder.AddInlineField("Experience", string.Format("{0:N2}%", expPercent)); await ReplyAsync("", false, builder.Build()); }
internal RankLevel GetNextLevel(RankLevel rank) { if (Enum.GetValues(typeof(RankLevel)).Cast <int>().Max() == (int)rank) { throw new ArgumentException($"{rank} is maximum"); } return((RankLevel)((int)rank + 1)); }
public static Exercise Create(RankLevel rank, int?attempt = null) { var rand = new Random(); var exercises = ExerciseDict[(int)rank]; var enumerable = exercises as Exercise[] ?? exercises.ToArray(); var toSkip = rand.Next(0, enumerable.Count()); var exercise = enumerable.Skip(toSkip).Take(1).First(); exercise.QuestionNumber = attempt.HasValue ? attempt.Value : 1; return(exercise); }
public Player(string firstName = "no first name", string lastName = "no last name", Gender sexGender = Gender.Male, RankLevel simpleLevel = RankLevel.NC, RankLevel doubleLevel = RankLevel.NC, RankLevel mixedLevel = RankLevel.NC, int licenseNumber = 0) { FirstName = firstName; LastName = lastName; SexGender = sexGender; SimpleLevel = simpleLevel; DoubleLevel = doubleLevel; MixedLevel = mixedLevel; WishList = new List<TypePlayer>(); RefusalList = new List<TypePlayer>(); LicenseNumber = licenseNumber; }
private bool IsTrackBullet(RankLevel rankLevel) { Random random = new Random(); int randomNumber = random.Next(0, 100); bool res = false; switch (rankLevel) { case RankLevel.Level1: if (randomNumber < 20) { res = true; } break; case RankLevel.Level2: if (randomNumber < 30) { res = true; } break; case RankLevel.Level3: if (randomNumber < 40) { res = true; } break; case RankLevel.Level4: if (randomNumber < 50) { res = true; } break; } return(res); }
public int GetTimeOut(RankLevel rankLevel) { switch (rankLevel) { case RankLevel.Beginner: return(30000); case RankLevel.Talented: return(29000); case RankLevel.Intermediate: return(28000); case RankLevel.Advanced: return(27000); case RankLevel.Expert: return(26000); default: return(30000); } }
private async Task HandleMessage(SocketMessage msg, bool updated = false) { if (msg == null || msg.Author.IsBot) { return; } SocketGuildChannel channel = msg.Channel as SocketGuildChannel; // Get the user's ranking Ranking ranking = database.GetRankings().FirstOrDefault(f => f.UserId == (long)msg.Author.Id && f.GuildId == (long)channel.Guild.Id); // If the user is max rank/level if (ranking?.CurrentLevel == 15 && ranking?.RankId == 7) { return; } // If the user isn't ranked yet if (ranking == null) { ranking = new Ranking() { UserId = (long)msg.Author.Id, GuildId = (long)channel.Guild.Id, RankId = 1, CurrentExperience = 0, CurrentLevel = 1 }; database.Rankings.Add(ranking); await database.SaveChangesAsync(); } // Handle the exp Rank rank = ranking.Rank != null ? ranking.Rank : database.GetRanks().FirstOrDefault(f => f.Id == ranking.RankId); RankLevel nextLevel = rank.RankLevels.FirstOrDefault(f => f.Level == ranking.CurrentLevel + 1); int expNeededForNextLevel = nextLevel.RequiredExperience - ranking.CurrentExperience; int expWon = updated ? (int)(rank.ExperiencePerLevel * 0.4) : rank.ExperiencePerLevel + (int)(rank.ExperiencePerLevel * (GetBonusExpPercent(msg) * 0.01)); // Level up if (expWon >= expNeededForNextLevel) { ranking.CurrentLevel++; ranking.CurrentExperience = expWon - expNeededForNextLevel; // Exp left (if not 0) // Rank up if (ranking.CurrentLevel == 15 && ranking.RankId < 7) { ranking.RankId++; ranking.CurrentLevel = 1; Rank newRank = database.GetRanks().FirstOrDefault(f => f.Id == ranking.RankId); await msg.Channel.SendMessageAsync("", false, BuildEmbedBuilder("Rank Up!", $"Congrats {msg.Author.Mention}, you reached {newRank.Name}!", msg.Author, newRank.Image)); } else if (ranking.CurrentLevel < 15) { await msg.Channel.SendMessageAsync("", false, BuildEmbedBuilder("Level Up!", $"Congrats {msg.Author.Mention}, you reached level {ranking.CurrentLevel}!", msg.Author)); } } else { ranking.CurrentExperience += expWon; } database.SaveChanges(); }
public bool IsEndOfExercise(RankLevel rank) { return(rank == RankLevel.Expert); }
public string RankName() { return(RankLevel.ToString().Replace("_", " ").Replace("Soldier", String.Empty).Replace("Rank", String.Empty).Trim());; }