public void ProcessMessage(AchievementResult result) { AddAchievementMessage(result); if (result.User.Id == 312458335574294530) { GrantAchievement(4, result.User.Id); } switch (result.AchievementType) { case AchievementType.Roll: CheckRollAchievements(result); break; case AchievementType.EightBall: CheckEightBallAchievements(result); break; case AchievementType.Ideas: CheckIdeaAchievements(result); break; case AchievementType.Captcha: CheckCaptchaAchievements(result); break; case AchievementType.Slurp: CheckSlurpAchievements(result); break; default: break; } }
private async void CheckIdeaAchievements(AchievementResult result) { var messages = await _gameService.GetAchievementMessagesByTypeAndUserId((int)result.AchievementType, result.User.Id); if (messages.Count() >= 10) { GrantAchievement(5, result.User.Id); } }
private async void CheckSlurpAchievements(AchievementResult result) { var messages = await _gameService.GetAchievementMessagesByTypeAndUserId((int)AchievementType.Slurp, result.User.Id); if (messages.Count() > 100) { GrantAchievement(9, result.User.Id); } }
public async Task <RuntimeResult> SlurpAsync() { await Context.Channel.SendFileAsync("slurp.mp4", "Slurp!"); var achievementResult = AchievementResult.FromSuccess(); achievementResult.AchievementType = AchievementType.Slurp; achievementResult.User = Context.User; return(achievementResult); }
private void CheckRollAchievements(AchievementResult result) { if (result.IntValue == 69) { GrantAchievement(1, result.User.Id); } if (result.IntValue == 420) { GrantAchievement(6, result.User.Id); } }
private async void CheckEightBallAchievements(AchievementResult result) { var messages = await _gameService.GetAchievementMessagesByTypeAndUserId((int)result.AchievementType, result.User.Id); //Check if the three most recent 8balls were yes results. var latestThree = messages.OrderByDescending(x => x.AchievementMessageId).Take(3); if (latestThree.Count() == 3 && latestThree.All(y => y.IntValue == 1)) { GrantAchievement(2, result.User.Id); } }
private async void CheckCaptchaAchievements(AchievementResult result) { var messages = await _gameService.GetAchievementMessagesByTypeAndUserId((int)AchievementType.Captcha, result.User.Id); if (messages.Where(x => x.BoolValue.HasValue && x.BoolValue.Value == true).Count() >= 100) { GrantAchievement(7, result.User.Id); } if (messages.Where(x => x.BoolValue.HasValue && x.BoolValue.Value == false).Count() >= 100) { GrantAchievement(8, result.User.Id); } }
public async Task <RuntimeResult> ideaAsync([Remainder] string text) { await GameService.InsertIdea(new Idea(text.Replace("'", "").Replace("\"", ""), Rand.Next())); await ReplyAsync("Ronners!"); var achievementResult = AchievementResult.FromSuccess(); achievementResult.AchievementType = AchievementType.Ideas; achievementResult.User = Context.User; return(achievementResult); }
public async Task <RuntimeResult> RollAsync(int lower, int upper) { int result = Rand.Next(lower, upper + 1); await ReplyAsync($"{result}"); var achievementResult = AchievementResult.FromSuccess(); achievementResult.AchievementType = AchievementType.Roll; achievementResult.IntValue = result; achievementResult.User = Context.User; return(achievementResult); }
public async Task MessageReceivedAsync(SocketMessage rawMessage) { if (!(rawMessage is SocketUserMessage message)) { return; } if (message.Source != MessageSource.User) { return; } if (message.ReferencedMessage is null) { return; } var achievementResult = AchievementResult.FromSuccess(); achievementResult.AchievementType = AchievementType.Captcha; achievementResult.User = rawMessage.Author; GameState captcha = null; if (!Captchas.TryGetValue(message.ReferencedMessage.Id, out captcha)) { return; } switch (captcha) { case CaptchaState captchaState: if (captchaState.Validate(message.Content)) { await _game.AddRonPoints(message.Author, 10); await message.ReferencedMessage.ModifyAsync(c => c.Content = "Solved"); achievementResult.BoolValue = true; } else { achievementResult.BoolValue = false; await message.ReferencedMessage.ModifyAsync(c => c.Content = "Failed"); } Captchas.Remove(message.ReferencedMessage.Id); break; } _achievements.ProcessMessage(achievementResult); }
public async Task <RuntimeResult> RollAsync(string roll = "") { roll = roll.ToLower(); int result = 0; if (roll.Contains('d')) { string [] split = roll.Split('d'); int amount = Int32.Parse(split[0]); int die = Int32.Parse(split[1]); foreach (var i in Enumerable.Range(0, amount)) { result += Rand.Next(1, die); } } else if (roll.Contains('-')) { string [] split = roll.Split('-'); int lower = Int32.Parse(split[0]); int upper = Int32.Parse(split[1]); result = Rand.Next(lower, upper + 1); } else { result = Rand.Next(); } await ReplyAsync($"{result}"); var achievementResult = AchievementResult.FromSuccess(); achievementResult.AchievementType = AchievementType.Roll; achievementResult.IntValue = result; achievementResult.User = Context.User; return(achievementResult); }
private async void AddAchievementMessage(AchievementResult result) { var msg = new AchievementMessage(result); await _gameService.InsertAchievementMessage(msg); }
public async Task <RuntimeResult> DecisionAsync([Remainder] string text) { string response = ""; int responseType = 0; // 1=Positive, 0=None, -1= Negative var result = Rand.Next() % 15; switch (result) { case 0: response = "As I see it, yes."; responseType = 1; break; case 1: response = "Most likely."; responseType = 1; break; case 2: response = "Outlook good."; responseType = 1; break; case 3: response = "Yes."; responseType = 1; break; case 4: response = "Signs point to yes."; responseType = 1; break; case 5: response = "Reply hazy, try again."; responseType = 0; break; case 6: response = "Ask again later."; responseType = 0; break; case 7: response = "Better not tell you now."; responseType = 0; break; case 8: response = "Cannot predict now."; responseType = 0; break; case 9: response = "Concentrate and ask again."; responseType = 0; break; case 10: response = "Don't count on it."; responseType = -1; break; case 11: response = "My reply is no."; responseType = -1; break; case 12: response = "My sources say no."; responseType = -1; break; case 13: response = "Outlook not so good."; responseType = -1; break; case 14: response = "Very doubtful."; responseType = -1; break; default: response = "WTF how did rand % 15 not return a result between 0-14 inclusive"; responseType = 2; //magic impossible break; } response += " Ronners!"; await ReplyAsync(response); var achievementResult = AchievementResult.FromSuccess(); achievementResult.AchievementType = AchievementType.EightBall; achievementResult.IntValue = responseType; achievementResult.User = Context.User; return(achievementResult); }