Example #1
0
        public async Task Roll(params string[] s)
        {
            AnimaCharacter character = CharacterRepository.FindCurrentByMention <AnimaCharacter>(Context.Message.Author.Mention);

            if (character == null)
            {
                await Context.Channel.SendMessageAsync("Error 404: Character not found or not loaded!");

                return;
            }

            string statBonusStr = s.FirstOrDefault(x => x.StartsWith("+") || x.StartsWith("-"));
            int    bonus        = Convert.ToInt32(statBonusStr);
            string stat         = string.Join(" ", s).ToLower();

            if (!string.IsNullOrWhiteSpace(statBonusStr))
            {
                stat = stat.Replace($" {statBonusStr}", "");
            }

            if (stat == null || stat == string.Empty)
            {
                await Context.Message.DeleteAsync();

                await Context.Channel.SendMessageAsync(character.KeywordsHelp());
            }
            else
            {
                await Context.Message.DeleteAsync();

                await Context.Channel.SendMessageAsync(string.Format("{0} {1}",
                                                                     Context.User.Mention,
                                                                     character.Roll(stat, bonus)));
            }
        }
Example #2
0
        public async Task SetKi(string s)
        {
            AnimaCharacter character = CharacterRepository.FindCurrentByMention <AnimaCharacter>(Context.Message.Author.Mention);

            _ = Context.Message.DeleteAsync();

            if (s == "reset")
            {
                character.CurrentKi = character.TotalKiPoints;
            }
            else if (s.Contains("+") || s.Contains("-"))
            {
                character.CurrentKi += Convert.ToInt32(s);
            }
            else
            {
                character.CurrentKi = Convert.ToInt32(s);
            }

            var msg = await Context.Channel.SendMessageAsync($"{Context.User.Mention} {character.Name}'s ki set to {character.CurrentKi}");

            await Task.Delay(3000);

            _ = msg.DeleteAsync();
        }
Example #3
0
        public async Task Status()
        {
            AnimaCharacter character = CharacterRepository.FindCurrentByMention <AnimaCharacter>(Context.Message.Author.Mention);

            if (character == null)
            {
                await Context.Channel.SendMessageAsync("Error 404: Character not found or not loaded!");

                return;
            }

            _ = Context.Message.DeleteAsync();
            var embed = new EmbedBuilder
            {
                Title = character.Name
            };

            embed.WithThumbnailUrl(character.ImageUrl)
            .AddField("Hp", $"{character.CurrentHp}/{character.Hp}", true)
            .AddField("Fatigue", $"{character.CurrentFatigue}/{character.Fatigue}", true)
            .AddField("Points de Ki", $"{character.CurrentKi}/{character.TotalKiPoints}", true)
            .AddField("Zéon", $"{character.CurrentZeon}/{character.ZeonPoints}", true)
            .AddField("Ppp libres", $"{character.CurrentPpp}/{character.PppFree}", true);

            await Context.User.SendMessageAsync("", false, embed.Build());
        }
Example #4
0
        public async static Task HandleFile(IAttachment attachment, string mention)
        {
            if (Path.GetExtension(attachment.Filename) != ".xlsx")
            {
                throw new ArgumentException("Format de fichier incorrect.");
            }

            using (HttpClient hclient = new HttpClient())
            {
                Stream stream;
                try
                {
                    stream = await hclient.GetStreamAsync(attachment.Url);
                }
                catch (Exception)
                {
                    try
                    {
                        stream = await hclient.GetStreamAsync(attachment.ProxyUrl);
                    }
                    catch (Exception)
                    {
                        throw;
                    }
                }
                MemoryStream memoryStream = new MemoryStream();
                stream.CopyTo(memoryStream);
                using (ExcelPackage package = new ExcelPackage(memoryStream))
                {
                    PlayableCharacter character = null;
                    ExcelWorkbook     workbook  = package.Workbook;
                    ExcelWorksheet    worksheet = workbook.Worksheets["Feuille de personnage"];
                    if (worksheet != null)//Fiche de perso anima
                    {
                        character = new AnimaCharacter(worksheet, mention);
                    }
                    worksheet = workbook.Worksheets["Stat"];
                    if (worksheet != null)//Fiche de perso L5R => peut encore changer
                    {
                        character = new L5RCharacter(worksheet, mention);
                    }

                    int charIndex = CharacterRepository.Characters.FindIndex(x => x.Player == mention && x.Name == character.Name);

                    if (charIndex == -1)
                    {
                        CharacterRepository.Characters.Add(character);
                    }
                    else
                    {
                        CharacterRepository.Characters[charIndex] = character;
                    }

                    CharacterRepository.SaveExcelCharacter(package, mention, character.Name);
                }
            }
        }
Example #5
0
        public async Task ResetCurrentStat()
        {
            AnimaCharacter character = CharacterRepository.FindCurrentByMention <AnimaCharacter>(Context.Message.Author.Mention);

            _ = Context.Message.DeleteAsync();

            character.CurrentHp      = character.Hp;
            character.CurrentFatigue = character.Fatigue;
            character.CurrentZeon    = character.ZeonPoints;
            character.CurrentPpp     = character.PppFree;
            character.CurrentKi      = character.TotalKiPoints;

            var msg = await Context.Channel.SendMessageAsync($"{Context.User.Mention} {character.Name} reset");

            await Task.Delay(3000);

            _ = msg.DeleteAsync();
        }
Example #6
0
        private async Task ReactionAddedOrRemoved(Cacheable <IUserMessage, ulong> cache, ISocketMessageChannel channel, SocketReaction reaction)
        {
            if (reaction.User.Value.IsBot)
            {
                return;
            }

            if (ReactionMessages.Contains(cache.Id))
            {
                AnimaCharacter character = CharacterRepository.FindCurrentByMention <AnimaCharacter>(reaction.User.Value.Mention);
                if (character == null)
                {
                    await channel.SendMessageAsync("Error 404: Character not found or not loaded!");

                    return;
                }

                await channel.SendMessageAsync(string.Format("{0} {1}",
                                                             reaction.User.Value.Mention,
                                                             character.Roll(EmotesAction[reaction.Emote].ToLower(), 0)));
            }
            if (HelpMessages.ContainsKey(cache.Id))
            {
                if (reaction.Emote.Name == "\U000025c0")//Previous page
                {
                    var msg = await cache.GetOrDownloadAsync();

                    await msg.ModifyAsync(x => {
                        x.Content = "";
                        x.Embed   = HelpMessages[cache.Id].GetPreviousPage().Build();
                    });
                }
                else if (reaction.Emote.Name == "\U000025b6")//Next page
                {
                    var msg = await cache.GetOrDownloadAsync();

                    await msg.ModifyAsync(x =>
                    {
                        x.Content = "";
                        x.Embed   = HelpMessages[cache.Id].GetNextPage().Build();
                    });
                }
            }
        }