Beispiel #1
0
 public async Task NextPageAsync(ReactionHandlerContext context)
 {
     if (curPage != pages.Count - 1)
     {
         await message.ModifyAsync(x => x.Embed = pages[++curPage]);
     }
 }
Beispiel #2
0
 public async Task PreviousPageAsync(ReactionHandlerContext context)
 {
     if (curPage != 0)
     {
         await message.ModifyAsync(x => x.Embed = pages[--curPage]);
     }
 }
Beispiel #3
0
        private async Task updateMessage(ReactionHandlerContext context, Poll poll)
        {
            var e = context.Message.Embeds.First().ToEmbedBuilder();

            e.WithImageUrl(poll.GetChartURI());


            await context.Message.ModifyAsync(x =>
            {
                x.Embed = e.Build();
            });
        }
Beispiel #4
0
        public async Task AddVote(ReactionHandlerContext context, string option)
        {
            var poll = Polls[context.Channel.Id].First(x => x.MessageID.Equals(context.Message.Id));

            if (!poll.Voters.ContainsKey(context.Reaction.UserId))
            {
                poll.Voters.Add(context.Reaction.UserId, option);
            }
            else
            {
                poll.Voters[context.Reaction.UserId] = option;
            }

            await UpdateDBAsync(context.Channel.Id);
            await updateMessage(context, poll);
        }
Beispiel #5
0
        private async Task updateMessage(ReactionHandlerContext context, SocketRole role)
        {
            var e = context.Message.Embeds.First().ToEmbedBuilder();

            e.Color = role.Color;
            e.Title = e.Title.Contains("Einladung") ? $"{role.Name} Einladung :{role.Id}" : $"{role.Name} Role Invite :{role.Id}";
            foreach (EmbedFieldBuilder field in e.Fields)
            {
                if (field.Name.Equals("Members in role") || field.Name.Equals("Mitgliederanzahl der Rolle"))
                {
                    field.Value = role.Members.Count();
                }
            }

            await context.Message.ModifyAsync(x =>
            {
                x.Embed = e.Build();
            });
        }
Beispiel #6
0
        private async Task DeletePoll(ReactionHandlerContext context)
        {
            var user = await((ITextChannel)context.Channel).Guild.GetUserAsync(context.Reaction.UserId);

            if (user.GuildPermissions.ManageMessages)
            {
                await Program.ReactionHandler.ClearHandler(context.Message);

                if (Polls[context.Channel.Id].Count > 1)
                {
                    Polls[context.Channel.Id].RemoveAll(x => x.MessageID == context.Message.Id);
                    await UpdateDBAsync(context.Channel.Id);
                }
                else
                {
                    Polls.Remove(context.Channel.Id);
                    await RemoveFromDBAsync(context.Channel.Id);
                }
            }
        }
 private async Task DrawGiveaway(ReactionHandlerContext context)
 {
     await DrawGiveaway(context.Reaction.UserId, context.Message);
 }
Beispiel #8
0
 private async Task DeleteInvite(ReactionHandlerContext context)
 {
     await DeleteInvite(context.Reaction.UserId, context.Message);
 }
Beispiel #9
0
 private async Task LeaveRole(ReactionHandlerContext context)
 {
     await LeaveRole(context.Reaction.UserId, context.Message);
 }
Beispiel #10
0
        private async Task SkillUsed(ReactionHandlerContext context, int option)
        {
            if (context.Reaction.UserId == tmpUser.Id)
            {
                if (Rage >= Weapon.Moveset[option].RageConsumption)
                {
                    Log = new List <string>();

                    Rage       -= Weapon.Moveset[option].RageConsumption;
                    Enemy.Rage -= (int)(NextEnemyMove.RageConsumption);

                    var userDamage  = (int)(Weapon.Moveset[option].DamageModifier * Weapon.BaseDamage - NextEnemyMove.DefenceModifier * Enemy.Damage + NextEnemyMove.DamageModifier * Enemy.Damage * Weapon.Moveset[option].DeflectModifier);
                    var enemyDamage = (int)(NextEnemyMove.DamageModifier * Enemy.Damage - Weapon.Moveset[option].DefenceModifier * Weapon.BaseDefence + Weapon.Moveset[option].DamageModifier * Weapon.BaseDamage * NextEnemyMove.DeflectModifier);
                    if (enemyDamage < 0)
                    {
                        enemyDamage = 0;
                    }
                    if (userDamage < 0)
                    {
                        userDamage = 0;
                    }

                    enemyDamage -= (int)Weapon.Moveset[option].HealthModifier;
                    userDamage  -= (int)NextEnemyMove.HealthModifier;

                    if (userDamage >= 0)
                    {
                        Log.Add($"You [{Weapon.Moveset[option].Name}] the {Enemy.Name} for {userDamage} damage.");
                    }
                    else
                    {
                        Log.Add($"The {Enemy.Name} [{NextEnemyMove.Name}] itself for {userDamage * (-1)} health.");
                    }
                    if (enemyDamage < 0)
                    {
                        Log.Add($"You [{Weapon.Moveset[option].Name}] yourself for {enemyDamage * (-1)} health.");
                    }
                    else
                    {
                        Log.Add($"The {Enemy.Name} [{NextEnemyMove.Name}] you for {enemyDamage} damage.");
                    }

                    Health       -= (int)(enemyDamage);
                    Enemy.Health -= userDamage;

                    if (Enemy.Health <= 0)
                    {
                        await Program.ReactionHandler.ClearHandler(Message);

                        List <Entities.Item> loot = Enemy.GetLoot();
                        Log = new List <string>();
                        var tmpEnemy = StaticBase.Database.GetCollection <Entities.Enemy>("Enemies").FindSync(x => x.Name == Enemy.Name).First();
                        Log.Add($"You gained {tmpEnemy.Health * tmpEnemy.Damage * 10} Experience");
                        if (loot.Count > 0)
                        {
                            Log.Add($"You gained Loot: {string.Join(", ", loot.Select(x => string.Format("[{0}]", x.Name)))}");
                        }
                        await MopsBot.Data.Entities.User.ModifyUserAsync(tmpUser.Id, x => { x.Experience += tmpEnemy.Health *tmpEnemy.Damage * 10;
                                                                                            x.Inventory   = x.Inventory ?? new List <int>();
                                                                                            x.Inventory.AddRange(loot.Select(y => y.Id)); });

                        await Message.ModifyAsync(x => x.Embed = EndEmbed().Result);

                        return;
                    }
                    else if (Health <= 0)
                    {
                        await Program.ReactionHandler.ClearHandler(Message);

                        Log = new List <string>();
                        Log.Add($"You died and lost {tmpUser.Experience/10} Experience");

                        await Message.ModifyAsync(x => x.Embed = EndEmbed().Result);

                        await User.ModifyUserAsync(tmpUser.Id, x => x.Experience -= x.Experience / 10);

                        return;
                    }

                    await Message.ModifyAsync(x => x.Embed = FightEmbed().Result);
                }
            }
        }