Пример #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)));
            }
        }
Пример #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();
        }
Пример #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());
        }
Пример #4
0
        public async Task SetCharacterStance(string s = "")
        {
            _ = Context.Message.DeleteAsync();
            L5RCharacter character = CharacterRepository.FindCurrentByMention <L5RCharacter>(Context.Message.Author.Mention);

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

                return;
            }

            try
            {
                character.SetCurrentStance(s);
            }
            catch (Exception ex)
            {
                await Context.Channel.SendMessageAsync($"{Context.User.Mention} {ex.Message}");
            }

            var msg = await Context.Channel.SendMessageAsync($"{Context.User.Mention} Posture modifiée!");

            await Task.Delay(3000);

            _ = msg.DeleteAsync();
        }
Пример #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();
        }
Пример #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();
                    });
                }
            }
        }
Пример #7
0
        public async Task CharacterRoll(params string[] s)
        {
            L5RDiceHelper.GuildEmotes = Context.Guild.Emotes;

            L5RCharacter character = CharacterRepository.FindCurrentByMention <L5RCharacter>(Context.Message.Author.Mention);

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

                return;
            }

            string ring = "";

            if (character.Rings.ContainsKey(s.Last()))
            {
                ring = s.Last();
            }

            string rawStat = string.Join(" ", s).ToLower();

            if (!string.IsNullOrWhiteSpace(ring))
            {
                rawStat = rawStat.Replace($" {ring}", "");
            }

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

                await Context.Channel.SendMessageAsync(character.KeywordsHelp());
            }
            else
            {
                MessageReference msgRef = new MessageReference(Context.Message.Id);
                await Context.Channel.SendMessageAsync(character.Roll(rawStat, ring), messageReference : msgRef);
            }
        }
Пример #8
0
        public async Task Info(params string[] s)
        {
            PlayableCharacter character = CharacterRepository.FindCurrentByMention <PlayableCharacter>(Context.Message.Author.Mention);

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

                return;
            }

            string stat = string.Join(" ", s).ToLower();

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

                await Context.Channel.SendMessageAsync(character.KeywordsHelp());
            }
            else
            {
                RollableStat rollableStat;
                try
                {
                    rollableStat = character.AllStats.FindByRawStat(stat);

                    await Context.Message.DeleteAsync();

                    await Context.Channel.SendMessageAsync(Context.User.Mention + " " + rollableStat.Name + " : " + rollableStat.Value);
                }
                catch (Exception)
                {
                    await Context.Channel.SendMessageAsync("Error 404: Stat not found (" + stat + ")");
                }
            }
        }
Пример #9
0
        public async Task SetCharImage()
        {
            PlayableCharacter character = CharacterRepository.FindCurrentByMention <PlayableCharacter>(Context.Message.Author.Mention);

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

                return;
            }

            if (Context.Message.Attachments.Any())
            {
                var url = Context.Message.Attachments.First().Url;
                character.ImageUrl = url;
                await Context.Channel.SendMessageAsync($"{Context.Message.Author.Mention} Image updated!");
            }
            else
            {
                _ = Context.Message.DeleteAsync();
                await Context.Channel.SendMessageAsync("File not found. Please upload an image while using this command.");
            }
        }