Beispiel #1
0
        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;
            }
        }
Beispiel #2
0
        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);
            }
        }
Beispiel #3
0
        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);
            }
        }
Beispiel #4
0
        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);
        }
Beispiel #5
0
 private void CheckRollAchievements(AchievementResult result)
 {
     if (result.IntValue == 69)
     {
         GrantAchievement(1, result.User.Id);
     }
     if (result.IntValue == 420)
     {
         GrantAchievement(6, result.User.Id);
     }
 }
Beispiel #6
0
        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);
            }
        }
Beispiel #7
0
        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);
            }
        }
Beispiel #8
0
        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);
        }
Beispiel #9
0
        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);
        }
Beispiel #10
0
        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);
        }
Beispiel #11
0
        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);
        }
Beispiel #12
0
 private async void AddAchievementMessage(AchievementResult result)
 {
     var msg = new AchievementMessage(result);
     await _gameService.InsertAchievementMessage(msg);
 }
Beispiel #13
0
        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);
        }