Пример #1
0
        public async Task TransferMinuies(IGuildUser target, ulong amount)
        {
            if (Context.User.Id == target.Id)
            {
                await ReplyAsync($":negative_squared_cross_mark: You can\'t gift yourself...\n**And you KNOW it!**");

                return;
            }
            var transferSource = GlobalUserAccounts.GetUserAccount(Context.User.Id);

            if (transferSource.Miunies < amount)
            {
                await ReplyAsync($":negative_squared_cross_mark: You don\'t have that much Minuies! You only have {transferSource.Miunies}.");

                return;
            }
            var transferTarget = GlobalUserAccounts.GetUserAccount(target.Id);

            transferSource.Miunies -= amount;
            transferTarget.Miunies += amount;
            GlobalUserAccounts.SaveAccounts(transferSource.Id, transferTarget.Id);
            await ReplyAsync($" :white_check_mark: {Context.User.Username} has given {target.Username} {amount} Minuies!");
        }
Пример #2
0
        internal static TransferResult UserToUser(IUser from, IUser to, ulong amount)
        {
            if (from.Id == to.Id)
            {
                return(TransferResult.SelfTransfer);
            }

            var transferSource = GlobalUserAccounts.GetUserAccount(from.Id);

            if (transferSource.Miunies < amount)
            {
                return(TransferResult.NotEnoughMiunies);
            }

            var transferTarget = GlobalUserAccounts.GetUserAccount(to.Id);

            transferSource.Miunies -= amount;
            transferTarget.Miunies += amount;

            GlobalUserAccounts.SaveAccounts(transferSource.Id, transferTarget.Id);

            return(TransferResult.Success);
        }
Пример #3
0
        public async Task SpinSlot(uint amount)
        {
            if (amount < 1)
            {
                await ReplyAsync($"{Global.ENo} **|** You can't spin for that amount of Taiyakis.");

                return;
            }

            var account = GlobalUserAccounts.GetUserAccount(Context.User.Id);

            if (account.Taiyaki < amount)
            {
                await ReplyAsync(
                    $"🖐️ **|** Sorry but it seems like you don't have enough Taiyakis... You only have {account.Taiyaki}.");

                return;
            }

            account.Taiyaki -= amount;
            GlobalUserAccounts.SaveAccounts(account.Id);

            string slotEmojis       = Global.slot.Spin();
            var    payoutAndFlavour = Global.slot.GetPayoutAndFlavourText(amount);

            if (payoutAndFlavour.Item1 > 0)
            {
                account.Taiyaki += payoutAndFlavour.Item1;
                GlobalUserAccounts.SaveAccounts(account.Id);
            }

            IUserMessage msg = await ReplyAsync(slotEmojis);

            await Task.Delay(1000);

            await ReplyAsync(payoutAndFlavour.Item2);
        }
Пример #4
0
        public static Task CheckDuelRewards(SocketGuildUser user)
        {
            var userAccount = GlobalGuildUserAccounts.GetUserID(user);
            var config      = GlobalUserAccounts.GetUserAccount(user);
            int wins        = config.Wins;

            if (wins == 10)
            {
                if (config.Attacks.Contains("Bash"))
                {
                    config.Attacks.Add("Bash");
                }
            }
            if (wins == 30)
            {
                if (config.Attacks.Contains("Fireball"))
                {
                    config.Attacks.Add("Fireball");
                }
            }
            if (wins == 50)
            {
                if (config.Attacks.Contains("Meditate"))
                {
                    config.Attacks.Add("Meditate");
                }
            }
            if (wins == 70)
            {
                if (config.Attacks.Contains("Earth Shatter"))
                {
                    config.Attacks.Add("Earth Shatter");
                }
            }
            GlobalUserAccounts.SaveAccounts();
            return(Task.CompletedTask);
        }
Пример #5
0
        public async Task TransferMinuies(IGuildUser Użytkownik, ulong Ilość)
        {
            // Class name left for readability
            // UserToUser alone doesn't mean much.
            var result = Transfer.UserToUser(Context.User, Użytkownik, Ilość);

            if (result == TransferResult.SelfTransfer)
            {
                await ReplyAsync(":negative_squared_cross_mark: Nie możesz dać samemu sobie:bangbang:\n**i Ty o tym WIESZ**:exclamation:");
            }
            else if (result == TransferResult.TransferToBot)
            {
                await ReplyAsync(":negative_squared_cross_mark: To miłe, ale to **Ja** Ci je dałem... xD");
            }
            else if (result == TransferResult.NotEnoughMiunies)
            {
                var userAccount = GlobalUserAccounts.GetUserAccount(Context.User.Id);
                await ReplyAsync($":negative_squared_cross_mark: Jesteś za mało szczęśliwy, aby zadowolić {Użytkownik.Username}... Masz tylko {userAccount.Miunies} PSZ.");
            }
            else if (result == TransferResult.Success)
            {
                await ReplyAsync($":white_check_mark: {Context.User.Username} poświęcił swoje szczęście dla {Użytkownik.Username} :astonished: Całe {Ilość} punktów szczęścia!");
            }
        }
Пример #6
0
        internal static async Task WsashiLevel(SocketGuildUser user, SocketTextChannel channel)
        {
            var      userAccount = GlobalUserAccounts.GetUserAccount(user);
            DateTime now         = DateTime.UtcNow;

            if (now < userAccount.LastXPMessage.AddSeconds(Constants.MessageXPCooldown))
            {
                return;
            }

            userAccount.LastXPMessage = now;

            uint oldLevel = userAccount.LevelNumber;

            userAccount.XP += 7;
            GlobalUserAccounts.SaveAccounts();
            uint newLevel = userAccount.LevelNumber;

            if (oldLevel != newLevel)
            {
                await LevelingRewards.CheckLootBoxRewards(user);
            }
            return;
        }
Пример #7
0
        public async Task TransferMinuies(IGuildUser target, ulong amount)
        {
            // Class name left for readability
            // UserToUser alone doesn't mean much.
            var result = Transfer.UserToUser(Context.User, target, amount);

            if (result == TransferResult.SelfTransfer)
            {
                await ReplyAsync(":negative_squared_cross_mark: You can't gift yourself...\n**And you KNOW it!**");
            }
            else if (result == TransferResult.TransferToBot)
            {
                await ReplyAsync(":negative_squared_cross_mark: Come on! Did you forget who had given it to you?");
            }
            else if (result == TransferResult.NotEnoughMiunies)
            {
                var userAccount = GlobalUserAccounts.GetUserAccount(Context.User.Id);
                await ReplyAsync($":negative_squared_cross_mark: You don't have that much Minuies! You only have {userAccount.Miunies}.");
            }
            else if (result == TransferResult.Success)
            {
                await ReplyAsync($":white_check_mark: {Context.User.Username} has given {target.Username} {amount} Minuies!");
            }
        }
Пример #8
0
        public async Task GetOwCompStats(string username, string platform, string region)
        {
            try
            {
                var config = GlobalUserAccounts.GetUserAccount(Context.User);

                var json = await Global.SendWebRequest($"https://ow-api.com/v1/stats/{platform}/{region}/{username}/complete");

                var dataObject = JsonConvert.DeserializeObject <dynamic>(json);

                string CompdefensiveAssists   = dataObject.competitiveStats.careerStats.allHeroes.assists.defensiveAssists.ToString();
                string ComphealingDone        = dataObject.competitiveStats.careerStats.allHeroes.assists.defensiveAssists.ToString();
                string CompoffensiveAssists   = dataObject.competitiveStats.careerStats.allHeroes.assists.defensiveAssists.ToString();
                string CompbarrierDamageDone  = dataObject.competitiveStats.careerStats.allHeroes.combat.barrierDamageDone.ToString();
                string CompdamageDone         = dataObject.competitiveStats.careerStats.allHeroes.combat.damageDone.ToString();
                string Compdeaths             = dataObject.competitiveStats.careerStats.allHeroes.combat.deaths.ToString();
                string Compeliminations       = dataObject.competitiveStats.careerStats.allHeroes.combat.eliminations.ToString();
                string CompenvironmentalKills = dataObject.competitiveStats.careerStats.allHeroes.combat.environmentalKills.ToString();
                string CompfinalBlows         = dataObject.competitiveStats.careerStats.allHeroes.combat.finalBlows.ToString();
                string CompheroDamageDone     = dataObject.competitiveStats.careerStats.allHeroes.combat.heroDamageDone.ToString();
                string CompmeleeFinalBlows    = dataObject.competitiveStats.careerStats.allHeroes.combat.meleeFinalBlows.ToString();
                string Compmultikills         = dataObject.competitiveStats.careerStats.allHeroes.combat.multikills.ToString();
                string CompobjectiveKills     = dataObject.competitiveStats.careerStats.allHeroes.combat.objectiveKills.ToString();
                string CompobjectiveTime      = dataObject.competitiveStats.careerStats.allHeroes.combat.objectiveTime.ToString();
                string CompsoloKills          = dataObject.competitiveStats.careerStats.allHeroes.combat.soloKills.ToString();
                string ComptimeSpentOnFire    = dataObject.competitiveStats.careerStats.allHeroes.combat.timeSpentOnFire.ToString();

                string CompallDamageDoneAvgPer10Min     = dataObject.competitiveStats.careerStats.allHeroes.average.allDamageDoneAvgPer10Min.ToString();
                string CompbarrierDamageDoneAvgPer10Min = dataObject.competitiveStats.careerStats.allHeroes.average.barrierDamageDoneAvgPer10Min.ToString();
                string CompdeathsAvgPer10Min            = dataObject.competitiveStats.careerStats.allHeroes.average.deathsAvgPer10Min.ToString();
                string CompeliminationsAvgPer10Min      = dataObject.competitiveStats.careerStats.allHeroes.average.eliminationsAvgPer10Min.ToString();
                string CompfinalBlowsAvgPer10Min        = dataObject.competitiveStats.careerStats.allHeroes.average.finalBlowsAvgPer10Min.ToString();
                string ComphealingDoneAvgPer10Min       = dataObject.competitiveStats.careerStats.allHeroes.average.healingDoneAvgPer10Min.ToString();
                string CompheroDamageDoneAvgPer10Min    = dataObject.competitiveStats.careerStats.allHeroes.average.heroDamageDoneAvgPer10Min.ToString();
                string CompobjectiveKillsAvgPer10Min    = dataObject.competitiveStats.careerStats.allHeroes.average.objectiveKillsAvgPer10Min.ToString();
                string CompobjectiveTimeAvgPer10Min     = dataObject.competitiveStats.careerStats.allHeroes.average.objectiveTimeAvgPer10Min.ToString();
                string CompsoloKillsAvgPer10Min         = dataObject.competitiveStats.careerStats.allHeroes.average.soloKillsAvgPer10Min.ToString();
                string ComptimeSpentOnFireAvgPer10Min   = dataObject.competitiveStats.careerStats.allHeroes.average.timeSpentOnFireAvgPer10Min.ToString();

                string CompallDamageDoneMostInGame      = dataObject.competitiveStats.careerStats.allHeroes.best.allDamageDoneMostInGame.ToString();
                string CompbarrierDamageDoneMostInGame  = dataObject.competitiveStats.careerStats.allHeroes.best.barrierDamageDoneMostInGame.ToString();
                string CompdefensiveAssistsMostInGame   = dataObject.competitiveStats.careerStats.allHeroes.best.defensiveAssistsMostInGame.ToString();
                string CompeliminationsMostInGame       = dataObject.competitiveStats.careerStats.allHeroes.best.eliminationsMostInGame.ToString();
                string CompenvironmentalKillsMostInGame = dataObject.competitiveStats.careerStats.allHeroes.best.environmentalKillsMostInGame.ToString();
                string CompfinalBlowsMostInGame         = dataObject.competitiveStats.careerStats.allHeroes.best.finalBlowsMostInGame.ToString();
                string ComphealingDoneMostInGame        = dataObject.competitiveStats.careerStats.allHeroes.best.healingDoneMostInGame.ToString();
                string CompheroDamageDoneMostInGame     = dataObject.competitiveStats.careerStats.allHeroes.best.heroDamageDoneMostInGame.ToString();
                string CompkillsStreakBest            = dataObject.competitiveStats.careerStats.allHeroes.best.killsStreakBest.ToString();
                string CompmeleeFinalBlowsMostInGame  = dataObject.competitiveStats.careerStats.allHeroes.best.meleeFinalBlowsMostInGame.ToString();
                string CompmultikillsBest             = dataObject.competitiveStats.careerStats.allHeroes.best.multikillsBest.ToString();
                string CompobjectiveKillsMostInGame   = dataObject.competitiveStats.careerStats.allHeroes.best.objectiveKillsMostInGame.ToString();
                string CompobjectiveTimeMostInGame    = dataObject.competitiveStats.careerStats.allHeroes.best.objectiveTimeMostInGame.ToString();
                string CompoffensiveAssistsMostInGame = dataObject.competitiveStats.careerStats.allHeroes.best.offensiveAssistsMostInGame.ToString();
                string CompsoloKillsMostInGame        = dataObject.competitiveStats.careerStats.allHeroes.best.soloKillsMostInGame.ToString();
                string ComptimeSpentOnFireMostInGame  = dataObject.competitiveStats.careerStats.allHeroes.best.timeSpentOnFireMostInGame.ToString();

                string CompgamesLost   = dataObject.competitiveStats.careerStats.allHeroes.game.gamesLost.ToString();
                string CompgamesPlayed = dataObject.competitiveStats.careerStats.allHeroes.game.gamesPlayed.ToString();
                string CompgamesTied   = dataObject.competitiveStats.careerStats.allHeroes.game.gamesTied.ToString();
                string CompgamesWon    = dataObject.competitiveStats.careerStats.allHeroes.game.gamesWon.ToString();
                string ComptimePlayed  = dataObject.competitiveStats.careerStats.allHeroes.game.timePlayed.ToString();

                string compcards       = dataObject.competitiveStats.awards.cards.ToString();
                string compmedal       = dataObject.competitiveStats.awards.medals.ToString();
                string compmedalGold   = dataObject.competitiveStats.awards.medalsGold.ToString();
                string compmedalSilver = dataObject.competitiveStats.awards.medalsSilver.ToString();
                string compmedalBronze = dataObject.competitiveStats.awards.medalsBronze.ToString();
                string compgames       = dataObject.competitiveStats.games.played.ToString();
                string compwon         = dataObject.competitiveStats.games.won.ToString();

                string endorsement     = dataObject.endorsement.ToString();
                string endorsementIcon = dataObject.endorsementIcon.ToString();
                string playerIcon      = dataObject.icon.ToString();
                string gamesWon        = dataObject.gamesWon.ToString();
                string level           = dataObject.level.ToString();
                string prestige        = dataObject.prestige.ToString();

                string sr     = dataObject.rating.ToString();
                string srIcon = dataObject.ratingIcon.ToString();

                var bottom = new EmbedFooterBuilder()
                {
                    Text    = "Powered by the OW-API",
                    IconUrl = srIcon
                };

                var top = new EmbedAuthorBuilder()
                {
                    Name    = $"{username}'s Competitive Overwatch Profile",
                    IconUrl = endorsementIcon
                };

                var embed = new EmbedBuilder()
                {
                    Author = top,
                    Footer = bottom
                };
                embed.WithThumbnailUrl(playerIcon);
                embed.WithColor(37, 152, 255);
                embed.AddField("Competitive All Hero Stats Total", $"Defensive Assists: **{CompdefensiveAssists}**\nOffensive Assists: **{CompoffensiveAssists}**\nDamage Done: **{CompdamageDone}**\nBarrier Damage Done: **{CompbarrierDamageDone}**\nHero Damage Done: **{CompheroDamageDone}**\nHealing Done: **{ComphealingDone}**\nEliminations: **{Compeliminations}**\nDeaths: **{Compdeaths}**\nEnvironmental Kills: **{CompenvironmentalKills}**\nFinal Blows: **{CompfinalBlows}**\nMelee Final Blows: **{CompmeleeFinalBlows}**\nMulti Kills: **{Compmultikills}**\nObjective Kills: **{CompobjectiveKills}**\nObjective Time: **{CompobjectiveTime}**\nSolo Kills: **{CompsoloKills}**\nTime Spent On Fire: **{ComptimeSpentOnFire}**", true);
                embed.AddField("Competitive All Hero Stats Averages Per 10 Minutes", $"Barrier Damage Done: **{CompbarrierDamageDoneAvgPer10Min}**\nHero Damage Done: **{CompheroDamageDoneAvgPer10Min}**\nHealing Done: **{ComphealingDoneAvgPer10Min}**\nEliminations: **{CompeliminationsAvgPer10Min}**\nDeaths: **{CompdeathsAvgPer10Min}**\nFinal Blows: **{CompfinalBlowsAvgPer10Min}**\nObjective Kills: **{CompobjectiveKillsAvgPer10Min}**\nObjective Time: **{CompobjectiveTimeAvgPer10Min}**\nSolo Kills: **{CompsoloKillsAvgPer10Min}**\nTime Spent On Fire: **{ComptimeSpentOnFireAvgPer10Min}**", true);
                embed.AddField("Competitive All Hero Stats Best In Game", $"Defensive Assists: **{CompdefensiveAssistsMostInGame}**\nOffensive Assists: **{CompoffensiveAssistsMostInGame}**\nDamage Done: **{CompallDamageDoneMostInGame}**\nBarrier Damage Done: **{CompbarrierDamageDoneMostInGame}**\nHero Damage Done: **{CompheroDamageDoneMostInGame}**\nHealing Done: **{ComphealingDoneMostInGame}**\nEliminations: **{CompeliminationsMostInGame}**\nEnvironmental Kills: **{CompenvironmentalKillsMostInGame}**\nFinal Blows: **{CompfinalBlowsMostInGame}**\nMelee Final Blows: **{CompmeleeFinalBlowsMostInGame}**\nObjective Kills: **{CompobjectiveKillsMostInGame}**\nObjective Time: **{CompobjectiveTimeMostInGame}**\nSolo Kills: **{CompsoloKillsMostInGame}**\nTime Spent On Fire: **{ComptimeSpentOnFireMostInGame}**", true);
                embed.AddField("Competitive Game Stats", $"Games Played: **{CompgamesPlayed}**\nGames Won: **{CompgamesWon}**\nGames Tied: **{CompgamesTied}**\nGames Lost: **{CompgamesLost}**\nTime Played: **{ComptimePlayed}**", true);
                embed.AddField("Competitive Awards", $"Total Medals: **{compmedal}**\n:first_place: Gold Medals: **{compmedalGold}**\n:second_place: Silver Medals: **{compmedalSilver}**\n:third_place: Bronze Medals: **{compmedalBronze}**\nCards: **{compcards}**", true);
                embed.AddField("Overall", $"Level: **{level}**\nPrestige: **{prestige}**\nSR: **{sr}**\nEndorsement Level: **{endorsement}**", true);

                await Context.Channel.SendMessageAsync("", embed : embed.Build());
            }
            catch
            {
                await Context.Channel.SendMessageAsync("Oops! Are you sure that your Overwatch career profile is set to public and you typed in your username correctly?\n**w!owsc <Your Battle.net username and id> <platform (pc/xbl/psn)> <region> Ex: w!owstatscomp Phytal-1427 pc us**");
            }
        }
Пример #9
0
        public async Task ChomusukePlay()
        {
            var config = GlobalUserAccounts.GetUserAccount(Context.User);

            if (config.ActiveChomusuke == 0) //if they set an active chomusuke
            {
                await SendMessage(Context, null,
                                  $"{Global.ENo}  **|**  **{Context.User.Username}**, you don't have an active {Global.EChomusuke} Chomusuke set!\n\nSet an active Chomusuke with `n!active`!");
            }
            else
            {
                var chom = ActiveChomusuke.GetOneActiveChomusuke(config.Id);
                if (chom.Trust == 20)
                {
                    var thumbnailurl = Context.User.GetAvatarUrl();
                    var auth         = new EmbedAuthorBuilder()
                    {
                        Name    = "Chiiiii..",
                        IconUrl = thumbnailurl,
                    };
                    var embed = new EmbedBuilder()
                    {
                        Author = auth
                    };
                    embed.WithColor(255, 128, 0);
                    embed.WithThumbnailUrl(NoPlayLinks[Global.Rng.Next(NoPlayLinks.Length)]);
                    embed.WithDescription(
                        $":soccer:  **|**  **{Context.User.Username}, your {Global.EChomusuke} Chomusuke is bored of playing right now!**");
                    await SendMessage(Context, embed.Build());

                    return;
                }

                {
                    int    randomIndex = Global.Rng.Next(playTexts.Length);
                    string text        = playTexts[randomIndex];
                    int    trustGain   = Global.Rng.Next(4, 9);
                    chom.Trust += (byte)trustGain;
                    if (chom.Trust > 20)
                    {
                        chom.Trust = 20;
                    }

                    await ActiveChomusuke.ConvertOneActiveVariable(config.Id, chom);

                    GlobalUserAccounts.SaveAccounts(Context.User.Id);
                    var thumbnailurl = Context.User.GetAvatarUrl();
                    var auth         = new EmbedAuthorBuilder()
                    {
                        Name    = "Success!",
                        IconUrl = thumbnailurl,
                    };
                    var embed = new EmbedBuilder()
                    {
                        Author = auth
                    };
                    embed.WithColor(0, 255, 0);
                    embed.WithThumbnailUrl(YesPlayLinks[Global.Rng.Next(YesPlayLinks.Length)]);
                    embed.WithDescription(
                        $":soccer:  **|**  **{Context.User.Username}**, {text} **(+{trustGain} trust)**");
                    await SendMessage(Context, embed.Build());
                }
            }
        }
Пример #10
0
        public async Task GetOwQpStats()
        {
            try
            {
                var config = GlobalUserAccounts.GetUserAccount(Context.User);

                var username = config.OverwatchID;
                var platform = config.OverwatchPlatform;
                var region   = config.OverwatchRegion;

                var json = await Global.SendWebRequest($"https://ow-api.com/v1/stats/{platform}/{region}/{username}/complete");

                var dataObject = JsonConvert.DeserializeObject <dynamic>(json);

                string qpcards       = dataObject.quickPlayStats.awards.cards.ToString();
                string qpmedal       = dataObject.quickPlayStats.awards.medals.ToString();
                string qpmedalGold   = dataObject.quickPlayStats.awards.medalsGold.ToString();
                string qpmedalSilver = dataObject.quickPlayStats.awards.medalsSilver.ToString();
                string qpmedalBronze = dataObject.quickPlayStats.awards.medalsBronze.ToString();
                string qpgames       = dataObject.quickPlayStats.games.played.ToString();
                string qpwon         = dataObject.quickPlayStats.games.won.ToString();

                string endorsement     = dataObject.endorsement.ToString();
                string endorsementIcon = dataObject.endorsementIcon.ToString();
                string playerIcon      = dataObject.icon.ToString();
                string levelIcon       = dataObject.levelIcon.ToString();
                string gamesWon        = dataObject.gamesWon.ToString();
                string level           = dataObject.level.ToString();
                string prestige        = dataObject.prestige.ToString();

                string QpdefensiveAssists   = dataObject.quickPlayStats.careerStats.allHeroes.assists.defensiveAssists.ToString();
                string QphealingDone        = dataObject.quickPlayStats.careerStats.allHeroes.assists.defensiveAssists.ToString();
                string QpoffensiveAssists   = dataObject.quickPlayStats.careerStats.allHeroes.assists.defensiveAssists.ToString();
                string QpbarrierDamageDone  = dataObject.quickPlayStats.careerStats.allHeroes.combat.barrierDamageDone.ToString();
                string QpdamageDone         = dataObject.quickPlayStats.careerStats.allHeroes.combat.damageDone.ToString();
                string Qpdeaths             = dataObject.quickPlayStats.careerStats.allHeroes.combat.deaths.ToString();
                string Qpeliminations       = dataObject.quickPlayStats.careerStats.allHeroes.combat.eliminations.ToString();
                string QpenvironmentalKills = dataObject.quickPlayStats.careerStats.allHeroes.combat.environmentalKills.ToString();
                string QpfinalBlows         = dataObject.quickPlayStats.careerStats.allHeroes.combat.finalBlows.ToString();
                string QpheroDamageDone     = dataObject.quickPlayStats.careerStats.allHeroes.combat.heroDamageDone.ToString();
                string QpmeleeFinalBlows    = dataObject.quickPlayStats.careerStats.allHeroes.combat.meleeFinalBlows.ToString();
                string Qpmultikills         = dataObject.quickPlayStats.careerStats.allHeroes.combat.multikills.ToString();
                string QpobjectiveKills     = dataObject.quickPlayStats.careerStats.allHeroes.combat.objectiveKills.ToString();
                string QpobjectiveTime      = dataObject.quickPlayStats.careerStats.allHeroes.combat.objectiveTime.ToString();
                string QpsoloKills          = dataObject.quickPlayStats.careerStats.allHeroes.combat.soloKills.ToString();
                string QptimeSpentOnFire    = dataObject.quickPlayStats.careerStats.allHeroes.combat.timeSpentOnFire.ToString();

                string QpallDamageDoneAvgPer10Min     = dataObject.quickPlayStats.careerStats.allHeroes.average.allDamageDoneAvgPer10Min.ToString();
                string QpbarrierDamageDoneAvgPer10Min = dataObject.quickPlayStats.careerStats.allHeroes.average.barrierDamageDoneAvgPer10Min.ToString();
                string QpdeathsAvgPer10Min            = dataObject.quickPlayStats.careerStats.allHeroes.average.deathsAvgPer10Min.ToString();
                string QpeliminationsAvgPer10Min      = dataObject.quickPlayStats.careerStats.allHeroes.average.eliminationsAvgPer10Min.ToString();
                string QpfinalBlowsAvgPer10Min        = dataObject.quickPlayStats.careerStats.allHeroes.average.finalBlowsAvgPer10Min.ToString();
                string QphealingDoneAvgPer10Min       = dataObject.quickPlayStats.careerStats.allHeroes.average.healingDoneAvgPer10Min.ToString();
                string QpheroDamageDoneAvgPer10Min    = dataObject.quickPlayStats.careerStats.allHeroes.average.heroDamageDoneAvgPer10Min.ToString();
                string QpobjectiveKillsAvgPer10Min    = dataObject.quickPlayStats.careerStats.allHeroes.average.objectiveKillsAvgPer10Min.ToString();
                string QpobjectiveTimeAvgPer10Min     = dataObject.quickPlayStats.careerStats.allHeroes.average.objectiveTimeAvgPer10Min.ToString();
                string QpsoloKillsAvgPer10Min         = dataObject.quickPlayStats.careerStats.allHeroes.average.soloKillsAvgPer10Min.ToString();
                string QptimeSpentOnFireAvgPer10Min   = dataObject.quickPlayStats.careerStats.allHeroes.average.timeSpentOnFireAvgPer10Min.ToString();

                string QpallDamageDoneMostInGame      = dataObject.quickPlayStats.careerStats.allHeroes.best.allDamageDoneMostInGame.ToString();
                string QpbarrierDamageDoneMostInGame  = dataObject.quickPlayStats.careerStats.allHeroes.best.barrierDamageDoneMostInGame.ToString();
                string QpdefensiveAssistsMostInGame   = dataObject.quickPlayStats.careerStats.allHeroes.best.defensiveAssistsMostInGame.ToString();
                string QpeliminationsMostInGame       = dataObject.quickPlayStats.careerStats.allHeroes.best.eliminationsMostInGame.ToString();
                string QpenvironmentalKillsMostInGame = dataObject.quickPlayStats.careerStats.allHeroes.best.environmentalKillsMostInGame.ToString();
                string QpfinalBlowsMostInGame         = dataObject.quickPlayStats.careerStats.allHeroes.best.finalBlowsMostInGame.ToString();
                string QphealingDoneMostInGame        = dataObject.quickPlayStats.careerStats.allHeroes.best.healingDoneMostInGame.ToString();
                string QpheroDamageDoneMostInGame     = dataObject.quickPlayStats.careerStats.allHeroes.best.heroDamageDoneMostInGame.ToString();
                string QpkillsStreakBest            = dataObject.quickPlayStats.careerStats.allHeroes.best.killsStreakBest.ToString();
                string QpmeleeFinalBlowsMostInGame  = dataObject.quickPlayStats.careerStats.allHeroes.best.meleeFinalBlowsMostInGame.ToString();
                string QpmultikillsBest             = dataObject.quickPlayStats.careerStats.allHeroes.best.multikillsBest.ToString();
                string QpobjectiveKillsMostInGame   = dataObject.quickPlayStats.careerStats.allHeroes.best.objectiveKillsMostInGame.ToString();
                string QpobjectiveTimeMostInGame    = dataObject.quickPlayStats.careerStats.allHeroes.best.objectiveTimeMostInGame.ToString();
                string QpoffensiveAssistsMostInGame = dataObject.quickPlayStats.careerStats.allHeroes.best.offensiveAssistsMostInGame.ToString();
                string QpsoloKillsMostInGame        = dataObject.quickPlayStats.careerStats.allHeroes.best.soloKillsMostInGame.ToString();
                string QptimeSpentOnFireMostInGame  = dataObject.quickPlayStats.careerStats.allHeroes.best.timeSpentOnFireMostInGame.ToString();

                string QpgamesWon   = dataObject.quickPlayStats.careerStats.allHeroes.game.gamesWon.ToString();
                string QptimePlayed = dataObject.quickPlayStats.careerStats.allHeroes.game.timePlayed.ToString();

                string Qpcards        = dataObject.quickPlayStats.careerStats.allHeroes.matchAwards.cards.ToString();
                string Qpmedals       = dataObject.quickPlayStats.careerStats.allHeroes.matchAwards.medals.ToString();
                string QpmedalsBronze = dataObject.quickPlayStats.careerStats.allHeroes.matchAwards.medalsBronze.ToString();
                string QpmedalsGold   = dataObject.quickPlayStats.careerStats.allHeroes.matchAwards.medalsGold.ToString();
                string QpmedalsSilver = dataObject.quickPlayStats.careerStats.allHeroes.matchAwards.medalsSilver.ToString();
                var    bottom         = new EmbedFooterBuilder()
                {
                    Text    = "Powered by the OW-API",
                    IconUrl = levelIcon
                };

                var top = new EmbedAuthorBuilder()
                {
                    Name    = $"{username}'s Quickplay Overwatch Profile",
                    IconUrl = endorsementIcon
                };

                var embed = new EmbedBuilder()
                {
                    Author = top,
                    Footer = bottom
                };
                embed.WithThumbnailUrl(playerIcon);
                embed.WithColor(37, 152, 255);
                embed.AddField("Quickplay All Hero Stats Total", $"Defensive Assists: **{QpdefensiveAssists}**\nOffensive Assists: **{QpoffensiveAssists}**\nDamage Done: **{QpdamageDone}**\nBarrier Damage Done: **{QpbarrierDamageDone}**\nHero Damage Done: **{QpheroDamageDone}**\nHealing Done: **{QphealingDone}**\nEliminations: **{Qpeliminations}**\nDeaths: **{Qpdeaths}**\nEnvironmental Kills: **{QpenvironmentalKills}**\nFinal Blows: **{QpfinalBlows}**\nMelee Final Blows: **{QpmeleeFinalBlows}**\nMulti Kills: **{Qpmultikills}**\nObjective Kills: **{QpobjectiveKills}**\nObjective Time: **{QpobjectiveTime}**\nSolo Kills: **{QpsoloKills}**\nTime Spent On Fire: **{QptimeSpentOnFire}**", true);
                embed.AddField("Quickplay All Hero Stats Averages Per 10 Minutes", $"Barrier Damage Done: **{QpbarrierDamageDoneAvgPer10Min}**\nHero Damage Done: **{QpheroDamageDoneAvgPer10Min}**\nHealing Done: **{QphealingDoneAvgPer10Min}**\nEliminations: **{QpeliminationsAvgPer10Min}**\nDeaths: **{QpdeathsAvgPer10Min}**\nFinal Blows: **{QpfinalBlowsAvgPer10Min}**\nObjective Kills: **{QpobjectiveKillsAvgPer10Min}**\nObjective Time: **{QpobjectiveTimeAvgPer10Min}**\nSolo Kills: **{QpsoloKillsAvgPer10Min}**\nTime Spent On Fire: **{QptimeSpentOnFireAvgPer10Min}**", true);
                embed.AddField("Quickplay All Hero Stats Best In Game", $"Defensive Assists: **{QpdefensiveAssistsMostInGame}**\nOffensive Assists: **{QpoffensiveAssistsMostInGame}**\nDamage Done: **{QpallDamageDoneMostInGame}**\nBarrier Damage Done: **{QpbarrierDamageDoneMostInGame}**\nHero Damage Done: **{QpheroDamageDoneMostInGame}**\nHealing Done: **{QphealingDoneMostInGame}**\nEliminations: **{QpeliminationsMostInGame}**\nEnvironmental Kills: **{QpenvironmentalKillsMostInGame}**\nFinal Blows: **{QpfinalBlowsMostInGame}**\nMelee Final Blows: **{QpmeleeFinalBlowsMostInGame}**\nObjective Kills: **{QpobjectiveKillsMostInGame}**\nObjective Time: **{QpobjectiveTimeMostInGame}**\nSolo Kills: **{QpsoloKillsMostInGame}**\nTime Spent On Fire: **{QptimeSpentOnFireMostInGame}**", true);
                embed.AddField("Quickplay Game Stats", $"Games Played: **{qpgames}**\nGames Won: **{QpgamesWon}**\nTime Played: **{QptimePlayed}**", true);
                embed.AddField("Quickplay Awards", $"Total Medals: **{qpmedal}**\n:first_place: Gold Medals: **{qpmedalGold}**\n:second_place: Silver Medals: **{qpmedalSilver}**\n:third_place: Bronze Medals: **{qpmedalBronze}**\nCards: **{Qpcards}**", true);
                embed.AddField("Overall", $"Level: **{level}**\nPrestige: **{prestige}**\nEndorsement Level: **{endorsement}**", true);

                await Context.Channel.SendMessageAsync("", embed : embed.Build());
            }
            catch
            {
                await Context.Channel.SendMessageAsync("Oops! Are you sure that your Overwatch career profile is set to public and you already set your account information?\n**w!myowsqp**");
            }
        }
Пример #11
0
        public async Task CheckMiuniesOther(IGuildUser target)
        {
            var account = GlobalUserAccounts.GetUserAccount(target.Id);

            await ReplyAsync(GetMiuniesReport(account.Miunies, target.Mention));
        }
        public MiunieCommandContext(DiscordSocketClient client, SocketUserMessage msg, GlobalUserAccounts globalUserAccounts) : base(client, msg)
        {
            this._globalUserAccounts = globalUserAccounts;

            if (User is null)
            {
                return;
            }

            UserAccount = globalUserAccounts.GetFromDiscordUser(User);
        }
Пример #13
0
        public async Task AddReminderOn(string timeOn, [Remainder] string args)
        {
            string[] splittedArgs = { };
            if (args.ToLower().Contains("  at "))
            {
                splittedArgs = args.ToLower().Split(new[] { "  at " }, StringSplitOptions.None);
            }
            else if (args.ToLower().Contains(" at  "))
            {
                splittedArgs = args.ToLower().Split(new[] { " at  " }, StringSplitOptions.None);
            }
            else if (args.ToLower().Contains("  at  "))
            {
                splittedArgs = args.ToLower().Split(new[] { "  at  " }, StringSplitOptions.None);
            }
            else if (args.ToLower().Contains(" at "))
            {
                splittedArgs = args.ToLower().Split(new[] { " at " }, StringSplitOptions.None);
            }

            if (!DateTime.TryParse(timeOn, out var myDate)) //|| myDate < DateTime.Now
            {
                await ReplyAsync("Date input is not correct, you can try this `yyyy-mm-dd`");

                return;
            }

            if (splittedArgs == null)
            {
                await ReplyAsync("I think you are confused about how to use this command... aren't you?\n" +
                                 "Let me REMIND you it is: `remindOn 2018-08-22 ANY_TEXT at 14:22`\n" +
                                 "And the ` in ` before the timeparameters is very important you little dumbo you...");

                return;
            }

            var account    = GlobalUserAccounts.GetUserAccount(Context.User.Id);
            var timezone   = account.TimeZone ?? "UTC";
            var tz         = TimeZoneInfo.FindSystemTimeZoneById($"{timezone}");
            var timeString = splittedArgs[splittedArgs.Length - 1];

            splittedArgs[splittedArgs.Length - 1] = "";

            var reminderString = string.Join(" at ", splittedArgs, 0, splittedArgs.Length - 1);
            var hourTime       = TimeSpan.ParseExact(timeString, "h\\:mm", CultureInfo.CurrentCulture);
            var timeDateTime   = TimeZoneInfo.ConvertTimeToUtc(myDate + hourTime, tz);
            var newReminder    = new ReminderEntry(timeDateTime, reminderString);

            account.Reminders.Add(newReminder);
            GlobalUserAccounts.SaveAccounts(Context.User.Id);

            var bigmess2 =
                $"{reminderString}\n\n" +
                $"We will send you a DM in  __**{myDate + hourTime}**__ `by {timezone}`\n";

            var embed = new EmbedBuilder();

            embed.WithAuthor(Context.User);
            embed.WithCurrentTimestamp();
            embed.WithColor(Color.Blue);
            embed.WithTitle("I will remind you through DM:");
            embed.AddField($"**____**", $"{bigmess2}");
            ReplyAsync("", false, embed.Build());
        }
Пример #14
0
        public async Task OpenLootBoxCommand([Remainder] string arg)
        {
            var config = GlobalUserAccounts.GetUserAccount(Context.User);

            switch (arg)
            {
            case "common":
                if (config.LootBoxCommon > 0)
                {
                    config.LootBoxCommon -= 1;
                    await OpenLootBox.OpenCommonBox(Context.User, (ITextChannel)Context.Channel);
                }
                else
                {
                    await SendMessage(Context, null,
                                      $"🛑  **|**  **{Context.User.Username}**, you don't have any Common Loot Boxes!");

                    return;
                }

                break;

            case "uncommon":
                if (config.LootBoxUncommon > 0)
                {
                    config.LootBoxUncommon -= 1;
                    await OpenLootBox.OpenUncommonBox(Context.User, (ITextChannel)Context.Channel);
                }
                else
                {
                    await SendMessage(Context, null,
                                      $"🛑  **|**  **{Context.User.Username}**, you don't have any Uncommon Loot Boxes!");

                    return;
                }

                break;

            case "rare":
                if (config.LootBoxRare > 0)
                {
                    config.LootBoxRare -= 1;
                    await OpenLootBox.OpenRareBox(Context.User, (ITextChannel)Context.Channel);
                }
                else
                {
                    await SendMessage(Context, null,
                                      $"🛑  **|**  **{Context.User.Username}**, you don't have any Rare Loot Boxes!");

                    return;
                }

                break;

            case "epic":
                if (config.LootBoxEpic > 0)
                {
                    config.LootBoxEpic -= 1;
                    await OpenLootBox.OpenEpicBox(Context.User, (ITextChannel)Context.Channel);
                }
                else
                {
                    await SendMessage(Context, null,
                                      $"🛑  **|**  **{Context.User.Username}**, you don't have any Epic Loot Boxes!");

                    return;
                }

                break;

            case "legendary":
                if (config.LootBoxLegendary > 0)
                {
                    config.LootBoxLegendary -= 1;
                    await OpenLootBox.OpenLegendaryBox(Context.User, (ITextChannel)Context.Channel);
                }
                else
                {
                    await SendMessage(Context, null,
                                      $"🛑  **|**  **{Context.User.Username}**, you don't have any Legendary Loot Boxes!");

                    return;
                }

                break;
            }

            GlobalUserAccounts.SaveAccounts(Context.User.Id);
        }
Пример #15
0
        public static AttackResult BashAttack(ShardedCommandContext context)
        {
            var config  = GlobalUserAccounts.GetUserAccount(context.User);
            var player2 = context.Guild.GetUser(config.OpponentId);
            var choms   = ActiveChomusuke.GetActiveChomusuke(config.Id, config.OpponentId);
            var chom1   = choms.Item1;
            var chom2   = choms.Item2;

            string response;
            bool   success  = false;
            var    dmg      = (int)Math.Round(Attack.Damage * chom1.CP * .05);
            var    stunProb = Global.Rng.Next(1, 3);

            chom1.Mana -= Attack.Mana;

            var result = CheckModifiers.GetDMGModifiers(context.User, player2, dmg);

            dmg = result.Item1;
            int modifier = result.Item2;

            var block = CheckModifiers.CheckForBlock(context.User, player2, dmg);

            if (block.Item1)
            {
                chom2.Health -= (uint)block.Item3;
                GlobalUserAccounts.SaveAccounts(config.Id);
                response =
                    $"**{context.User.Username}**, You bashed **{chom2.Name}** and did **{dmg}** damage (buffed by {modifier}% due to active damage modifiers), but **{block.Item2}** damage was blocked!\n\n{Helpers.GetHpLeft(chom1, chom2)}";
                dmg = block.Item3;
                return(new AttackResult {
                    Success = success, Response = response, Damage = dmg
                });
            }

            var deflect = CheckModifiers.CheckForDeflect(context.User, player2, dmg);

            if (deflect.Item1)
            {
                chom2.Health -= (uint)deflect.Item2;
                chom1.Health -= (uint)deflect.Item2;
                GlobalUserAccounts.SaveAccounts(config.Id);
                response =
                    $"**{context.User.Username}**, You bashed **{chom2.Name}** and did **{dmg}** damage (buffed by {modifier}% due to active damage modifiers), but **{deflect.Item2}** damage was deflected back!\n\n{Helpers.GetHpLeft(chom1, chom2)}";
                dmg = deflect.Item2;
                return(new AttackResult {
                    Success = success, Response = response, Damage = dmg
                });
            }

            if (stunProb == 1)
            {
                response =
                    $"**{context.User.Username}**, You bashed **{chom2.Name}** and did **{dmg}** damage (buffed by {modifier}% due to active damage modifiers)!**{chom2.Name}** is now stunned!\n\n{Helpers.GetHpLeft(chom1, chom2)}";
                foreach (Effect effect in Attack.Effects)
                {
                    chom2.Effects.Add(effect);
                }
            }

            chom2.Health -= (uint)dmg;
            GlobalUserAccounts.SaveAccounts(context.User.Id, player2.Id);

            response =
                $"**{context.User.Username}**, You bashed **{chom2.Name}** and did **{dmg}** damage (buffed by {modifier}% due to active damage modifiers)!\n\n{Helpers.GetHpLeft(chom1, chom2)}";
            success = true;

            return(new AttackResult {
                Success = success, Response = response, Damage = dmg
            });
        }
Пример #16
0
        public async Task Chomusuke([Remainder] string arg = "")
        {
            var        mentionedUser = Context.Message.MentionedUsers.FirstOrDefault();
            SocketUser user          = mentionedUser ?? Context.User;
            var        config        = GlobalUserAccounts.GetUserAccount(user);

            if (config.ActiveChomusuke == 0 && user == Context.User) //if they own a Chomusuke or not
            {
                await SendMessage(Context, null,
                                  $"{Global.ENo}  **|**  **{Context.User.Username}**, you don't have an active {Global.EChomusuke} Chomusuke set!\n\nSet an active Chomusuke with `n!active`!");
            }
            else //show their Chomusuke status
            {
                var thumbnailurl = Context.User.GetAvatarUrl();
                var auth         = new EmbedAuthorBuilder()
                {
                    Name    = $"{user.Username}'s Active Chomusuke",
                    IconUrl = thumbnailurl,
                };
                var embed = new EmbedBuilder()
                {
                    Author = auth
                };
                if (config.ActiveChomusuke == 1)
                {
                    string sick = ConvertBool.ConvertBooleanYN(config.Chomusuke1.Sick);
                    if (config.Chomusuke1.Shiny)
                    {
                        embed.WithThumbnailUrl("https://i.imgur.com/oKGxPZ4.png");
                    }
                    else
                    {
                        embed.WithThumbnailUrl("https://i.imgur.com/7kpEWPb.png");
                    }
                    embed.WithColor(Global.NayuColor);
                    embed.AddField("Owner", user, true);
                    embed.AddField("Name", config.Chomusuke1.Name, true);
                    embed.AddField("Zodiac", config.Chomusuke1.Zodiac + $":{config.Chomusuke1.Zodiac.ToLower()}:",
                                   true);
                    embed.AddField("Type", config.Chomusuke1.Type, true);
                    embed.AddField("Combat Power", config.Chomusuke1.CP, true);
                    embed.AddField("Exp", config.Chomusuke1.XP, true);
                    embed.AddField("Level", config.Chomusuke1.LevelNumber, true);
                    embed.AddField("Control", config.Chomusuke1.Control, true);
                    embed.AddField("Health", config.Chomusuke1.HealthCapacity, true);
                    embed.AddField("Shield", config.Chomusuke1.ShieldCapacity, true);
                    embed.AddField("Mana", config.Chomusuke1.ManaCapacity, true);
                    embed.AddField("Waste", config.Chomusuke1.Waste, true);
                    embed.AddField("Trust", config.Chomusuke1.Trust, true);
                    embed.AddField("Hunger", config.Chomusuke1.Hunger, true);
                    embed.AddField("Sick", sick, true);
                }

                if (config.ActiveChomusuke == 2)
                {
                    string sick = ConvertBool.ConvertBooleanYN(config.Chomusuke2.Sick);
                    if (config.Chomusuke2.Shiny)
                    {
                        embed.WithThumbnailUrl("https://i.imgur.com/oKGxPZ4.png");
                    }
                    else
                    {
                        embed.WithThumbnailUrl("https://i.imgur.com/7kpEWPb.png");
                    }
                    embed.WithColor(Global.NayuColor);
                    embed.AddField("Owner", user, true);
                    embed.AddField("Name", config.Chomusuke2.Name, true);
                    embed.AddField("Zodiac", config.Chomusuke2.Zodiac + $":{config.Chomusuke2.Zodiac.ToLower()}:",
                                   true);
                    embed.AddField("Type", config.Chomusuke2.Type, true);
                    embed.AddField("Combat Power", config.Chomusuke2.CP, true);
                    embed.AddField("Exp", config.Chomusuke2.XP, true);
                    embed.AddField("Level", config.Chomusuke2.LevelNumber, true);
                    embed.AddField("Control", config.Chomusuke2.Control, true);
                    embed.AddField("Health", config.Chomusuke2.HealthCapacity, true);
                    embed.AddField("Shield", config.Chomusuke2.ShieldCapacity, true);
                    embed.AddField("Mana", config.Chomusuke2.ManaCapacity, true);
                    embed.AddField("Waste", config.Chomusuke2.Waste, true);
                    embed.AddField("Trust", config.Chomusuke2.Trust, true);
                    embed.AddField("Hunger", config.Chomusuke2.Hunger, true);
                    embed.AddField("Sick", sick, true);
                }

                if (config.ActiveChomusuke == 3)
                {
                    string sick = ConvertBool.ConvertBooleanYN(config.Chomusuke3.Sick);
                    if (config.Chomusuke3.Shiny)
                    {
                        embed.WithThumbnailUrl("https://i.imgur.com/oKGxPZ4.png");
                    }
                    else
                    {
                        embed.WithThumbnailUrl("https://i.imgur.com/7kpEWPb.png");
                    }
                    embed.WithColor(Global.NayuColor);
                    embed.AddField("Owner", user, true);
                    embed.AddField("Name", config.Chomusuke3.Name, true);
                    embed.AddField("Zodiac", config.Chomusuke3.Zodiac + $":{config.Chomusuke3.Zodiac.ToLower()}:",
                                   true);
                    embed.AddField("Type", config.Chomusuke3.Type, true);
                    embed.AddField("Combat Power", config.Chomusuke3.CP, true);
                    embed.AddField("Exp", config.Chomusuke3.XP, true);
                    embed.AddField("Level", config.Chomusuke3.LevelNumber, true);
                    embed.AddField("Control", config.Chomusuke3.Control, true);
                    embed.AddField("Health", config.Chomusuke3.HealthCapacity, true);
                    embed.AddField("Shield", config.Chomusuke3.ShieldCapacity, true);
                    embed.AddField("Mana", config.Chomusuke3.ManaCapacity, true);
                    embed.AddField("Waste", config.Chomusuke3.Waste, true);
                    embed.AddField("Trust", config.Chomusuke3.Trust, true);
                    embed.AddField("Hunger", config.Chomusuke3.Hunger, true);
                    embed.AddField("Sick", sick, true);
                }

                await SendMessage(Context, embed.Build());
            }
        }
Пример #17
0
        public static AttackResult AbsorbAttack(ShardedCommandContext context)
        {
            var config  = GlobalUserAccounts.GetUserAccount(context.User);
            var player2 = context.Guild.GetUser(config.OpponentId);
            var choms   = ActiveChomusuke.GetActiveChomusuke(config.Id, config.OpponentId);
            var chom1   = choms.Item1;
            var chom2   = choms.Item2;

            string response;
            bool   success;
            int    hit = Global.Rng.Next(1, Attack.Accuracy + 1);

            if (hit == 1)
            {
                //use if something negates this

                /*if (configg.armour == "reinforced")
                 * {
                 *  GlobalUserAccounts.SaveAccounts();
                 *  response =
                 *      $":fire: **|** **{configg.OpponentName}** used **Absorb** but {config.OpponentName}** has reinforced armour. Therefore it had no effect.";
                 *  success = true;
                 *  return new AttackResult{Success = success, Response = response, Damage = 0};
                 * }*/

                var dmg = (int)Math.Round(Attack.Damage * chom1.CP * .05);

                var result = CheckModifiers.GetDMGModifiers(context.User, player2, dmg);
                dmg = result.Item1;
                var modifier = result.Item2;

                var block = CheckModifiers.CheckForBlock(context.User, player2, dmg);
                if (block.Item1 == true)
                {
                    chom2.Health -= (uint)block.Item3;
                    GlobalUserAccounts.SaveAccounts(config.Id);
                    response =
                        $":comet:  | **{context.User.Username}**,You absorbed **{dmg}** health and did **{dmg}** damage (buffed by {modifier}% due to active damage modifiers), but **{block.Item2}** damage was blocked!\n\n{Helpers.GetHpLeft(chom1, chom2)}";
                    dmg     = block.Item3;
                    success = true;
                    return(new AttackResult {
                        Success = success, Response = response, Damage = dmg
                    });
                }

                var deflect = CheckModifiers.CheckForDeflect(context.User, player2, dmg);
                if (deflect.Item1 == true)
                {
                    chom2.Health -= (uint)deflect.Item2;
                    chom1.Health -= (uint)deflect.Item2;
                    GlobalUserAccounts.SaveAccounts(config.Id);
                    response =
                        $":comet:  | **{context.User.Username}**, You absorbed **{dmg}** health and did **{dmg}** damage (buffed by {modifier}% due to active damage modifiers), but **{deflect.Item2}** damage was deflected back!\n\n{Helpers.GetHpLeft(chom1, chom2)}";
                    dmg     = deflect.Item2;
                    success = true;
                    return(new AttackResult {
                        Success = success, Response = response, Damage = dmg
                    });
                }

                chom2.Health -= (uint)dmg;
                GlobalUserAccounts.SaveAccounts(config.Id);

                response =
                    $":comet:  | **{context.User.Username}**, You absorbed **{dmg}** health and did **{dmg}** damage (buffed by {modifier}% due to active damage modifiers)!\n\n{Helpers.GetHpLeft(chom1, chom2)}";
                success = true;
                return(new AttackResult {
                    Success = success, Response = response, Damage = dmg
                });
            }
            else
            {
                int dmg    = 0;
                var result = CheckModifiers.GetDMGModifiers(context.User, player2, dmg); //resets 1 turn buffs
                response = $":dash:  **|** **{context.User.Username}**, your attack missed!";
                success  = true;
                return(new AttackResult {
                    Success = success, Response = response, Damage = dmg
                });
            }
        }
Пример #18
0
 public PersonalTags(GlobalUserAccounts globalUserAccounts)
 {
     _globalUserAccounts = globalUserAccounts;
 }
Пример #19
0
 public RepeatedTaskFunctions(GlobalUserAccounts globalUserAccounts)
 {
     _globalUserAccounts = globalUserAccounts;
 }
Пример #20
0
        public static string GetDuelItem(SocketUser user, int value)
        {
            var    config     = GlobalUserAccounts.GetUserAccount(user);
            string item       = string.Empty;
            var    wasagotchi = WasagotchiInteractive.GetWasagotchi(value);

            switch (value)
            {
            case 1:
            case 2:
            case 3:
            case 4:
            case 5:
            case 6:
            case 7:
                item = "Strength Potion";
                if (config.Items.ContainsKey("Strength Potion"))
                {
                    config.Items["Strength Potion"] += 1;
                }
                else
                {
                    config.Items.Add("Strength Potion", 1);
                }
                break;

            case 13:
            case 8:
            case 9:
            case 10:
            case 11:
            case 12:
            case 14:
                item = "Speed Potion";
                if (config.Items.ContainsKey("Speed Potion"))
                {
                    config.Items["Speed Potion"] += 1;
                }
                else
                {
                    config.Items.Add("Speed Potion", 1);
                }
                break;

            case 19:
            case 20:
            case 15:
            case 16:
            case 17:
            case 18:
            case 21:
                item = "Debuff Potion";
                if (config.Items.ContainsKey("Debuff Potion"))
                {
                    config.Items["Debuff Potion"] += 1;
                }
                else
                {
                    config.Items.Add("Debuff Potion", 1);
                }
                break;

            case 25:
            case 26:
            case 27:
            case 22:
            case 23:
            case 24:
            case 28:
                item = "Equalizer Potion";
                if (config.Items.ContainsKey("Equalizer Potion"))
                {
                    config.Items["Equalizer Potion"] += 1;
                }
                else
                {
                    config.Items.Add("Equalizer Potion", 1);
                }
                break;

            case 44:
            case 45:
            case 46:
            case 47:
            case 48:
                item = "Vile of Poison";
                if (config.Items.ContainsKey("Vile Of Poison"))
                {
                    config.Items["Vile Of Poison"] += 1;
                }
                else
                {
                    config.Items.Add("Vile Of Poison", 1);
                }
                break;

            case 29:
            case 30:
            case 31:
            case 32:
            case 33:
                item = "Metallic Acid";
                if (config.Items.ContainsKey("Metallic Acid"))
                {
                    config.Items["Metallic Acid"] += 1;
                }
                else
                {
                    config.Items.Add("Metallic Acid", 1);
                }
                break;

            case 34:
            case 35:
            case 36:
            case 37:
            case 38:
                item = "Weapon Liquifier";
                if (config.Items.ContainsKey("Weapon Liquifier"))
                {
                    config.Items["Weapon Liquifier"] += 1;
                }
                else
                {
                    config.Items.Add("Weapon Liquifier", 1);
                }
                break;

            case 39:
            case 40:
            case 41:
            case 42:
            case 43:
                item = "Basic Treatment";
                if (config.Items.ContainsKey("Basic Treatment"))
                {
                    config.Items["Basic Treatment"] += 1;
                }
                else
                {
                    config.Items.Add("Basic Treatment", 1);
                }
                break;

            case 49:
            case 50:
            case 51:
            case 52:
                item = "Divine Shield";
                if (config.Items.ContainsKey("Divine Shield"))
                {
                    config.Items["Divine Shield"] += 1;
                }
                else
                {
                    config.Items.Add("Divine Shield", 1);
                }
                break;

            case 53:
                if (config.blessingProtection != true)
                {
                    item = "Blessing of Protection";
                    config.blessingProtection = true;
                }
                else
                {
                    item         = "Blessing of Protection [DUPLICATE] (+2000 Potatoes)";
                    config.Money = config.Money + 2000;
                }
                break;

            case 54:
                if (config.blessingSwiftness != true)
                {
                    item = "Blessing of Swiftness";
                    config.blessingSwiftness = true;
                }
                else
                {
                    item         = "Blessing of Swiftness [DUPLICATE] (+2000 Potatoes)";
                    config.Money = config.Money + 2000;
                }
                break;

            case 55:
                if (config.blessingStrength != true)
                {
                    item = "Blessing of Stength";
                    config.blessingStrength = true;
                }
                else
                {
                    item         = "Blessing of Stength [DUPLICATE] (+2000 Potatoes)";
                    config.Money = config.Money + 2000;
                }
                break;

            case 56:
                if (config.blessingWar != true)
                {
                    item = "Blessing of War";
                    config.blessingWar = true;
                }
                else
                {
                    item         = "Blessing of War [DUPLICATE] (+2000 Potatoes)";
                    config.Money = config.Money + 2000;
                }
                break;
            }
            GlobalUserAccounts.SaveAccounts();
            return(item);
        } //1-56
Пример #21
0
        public async Task SellChomusukeAsync()
        {
            var config     = GlobalUserAccounts.GetUserAccount(Context.User);
            var activeChom = ActiveChomusuke.GetOneActiveChomusuke(Context.User.Id);

            if ((DateTime.Now - activeChom.BoughtDay).Days < 1)
            {
                throw new Exception("You cannot sell a Chomusuke that's under a day old!");
            }
            string shoptext =
                $":department_store:  **| Are you sure you want to sell your active Chomusuke, {activeChom.Name}? [y/n]";
            var shop = await Context.Channel.SendMessageAsync(shoptext);

            var response = await NextMessageAsync();

            if (response == null)
            {
                await shop.ModifyAsync(m =>
                {
                    m.Content = $"{Context.User.Mention}, The interface has closed due to inactivity";
                });

                return;
            }

            if (response.Content.Equals("y", StringComparison.CurrentCultureIgnoreCase) &&
                (response.Author.Equals(Context.User)))
            {
                var value = GetChomusukeValue(activeChom);
                await shop.ModifyAsync(m =>
                {
                    m.Content =
                        $":feet:  |  **Your {Emote.Parse("<:chomusuke:601183653657182280>")} Chomusuke is worth {value} Taiyakis, do you wish to sell it? (**900** {Emote.Parse("<:taiyaki:599774631984889857>")})**\n\nType `confirm` to continue or `cancel` to cancel.\n\n**Warning: this is irreversible!**";
                });

                var newresponse = await NextMessageAsync();

                if (newresponse.Content.Equals("confirm", StringComparison.CurrentCultureIgnoreCase) &&
                    (response.Author.Equals(Context.User)))
                {
                    //remove chomusuke
                    config.ActiveChomusuke = 0;
                    config.Taiyaki        += value;
                    GlobalUserAccounts.SaveAccounts(Context.User.Id);
                    await SendMessage(Context, null, $"You have successfully sold your Chomusuke {activeChom.Name}");

                    return;
                }

                if (newresponse.Content.Equals("n", StringComparison.CurrentCultureIgnoreCase) &&
                    (response.Author.Equals(Context.User)))
                {
                    await shop.ModifyAsync(m =>
                    {
                        m.Content = $":feet:  **|**  **{Context.User.Username}**, action cancelled.";
                    });

                    return;
                }

                if (response == null)
                {
                    await shop.ModifyAsync(m =>
                    {
                        m.Content = $"{Context.User.Mention}, The interface has closed due to inactivity";
                    });

                    return;
                }
                else
                {
                    await shop.ModifyAsync(m =>
                    {
                        m.Content = $"{Global.ENo}  **|** That is an invalid response. Please try again.";
                    });

                    return;
                }
            }
        }
Пример #22
0
        public async Task ShowRichesPeople(int page = 1)
        {
            if (page < 1)
            {
                await ReplyAsync("Are you really trying that right now? **REALLY?**");

                return;
            }

            var guildUserIds = Context.Guild.Users.Select(user => user.Id);
            // Get only accounts of this server
            var accounts = GlobalUserAccounts.GetFilteredAccounts(acc => guildUserIds.Contains(acc.Id));

            const int usersPerPage = 9;
            // Calculate the highest accepted page number => amount of pages we need to be able to fit all users in them
            // (amount of users) / (how many to show per page + 1) results in +1 page more every time we exceed our usersPerPage
            var lastPageNumber = 1 + (accounts.Count / (usersPerPage + 1));

            if (page > lastPageNumber)
            {
                await ReplyAsync($"There are not that many pages...\nPage {lastPageNumber} is the last one...");

                return;
            }
            // Sort the accounts descending by Minuies
            var ordered = accounts.OrderByDescending(acc => acc.Miunies).ToList();

            var embB = new EmbedBuilder()
                       .WithTitle("These are the richest people:")
                       .WithFooter($"Page {page}/{lastPageNumber}");

            // Add fields to the embed with information of users according to the provided page we should show
            // Two conditions because:  1. Only get as many as we want
            //                          2. The last page might not be completely filled so we have to interrupt early
            page--;
            for (var i = 1; i <= usersPerPage && i + usersPerPage * page <= ordered.Count; i++)
            {
                // -1 because we take the users non zero based input
                var account = ordered[i - 1 + usersPerPage * page];
                var user    = Context.Client.GetUser(account.Id);

                //try to give it a medal in cases 1 - 3, if it is not possible just send it with out change
                var contentName = string.Empty;
                if (page == 0)
                {
                    switch (i)
                    {
                    case 1:
                        contentName = $"🥇 #{i + usersPerPage * page} {user.Username}";
                        break;

                    case 2:
                        contentName = $"🥈 #{i + usersPerPage * page} {user.Username}";
                        break;

                    case 3:
                        contentName = $"🥉 #{i + usersPerPage * page} {user.Username}";
                        break;

                    default:
                        contentName = $"#{i + usersPerPage * page} {user.Username}";
                        break;
                    }
                }
                else
                {
                    contentName = $"#{i + usersPerPage * page} {user.Username}";
                }
                embB.AddField(contentName, $"{account.Miunies} Miunies", true);
            }

            await ReplyAsync("", false, embB.Build());
        }
Пример #23
0
        public async Task Gift(string Rarity, IGuildUser userB)
        {
            var giveaccount = GlobalUserAccounts.GetUserAccount(Context.User);

            Rarity = Rarity.ToUpper();
            uint numOfLootboxes = 0;

            if (Rarity == "COMMON")
            {
                numOfLootboxes = giveaccount.LootBoxCommon;
            }
            if (Rarity == "UNCOMMON")
            {
                numOfLootboxes = giveaccount.LootBoxUncommon;
            }
            if (Rarity == "RARE")
            {
                numOfLootboxes = giveaccount.LootBoxRare;
            }
            if (Rarity == "EPIC")
            {
                numOfLootboxes = giveaccount.LootBoxEpic;
            }
            if (Rarity == "LEGENDARY")
            {
                numOfLootboxes = giveaccount.LootBoxLegendary;
            }

            if (numOfLootboxes < 1)
            {
                await ReplyAsync(":angry:  **|** Stop trying to gift loot boxes you don't have!");
            }
            else
            {
                if (userB == null)
                {
                    var embed = new EmbedBuilder();
                    embed.WithColor(Global.NayuColor);
                    embed.WithTitle(
                        "🖐️ **|** Please say who you want to gift loot boxes to. Ex: n!gift <rarity of loot box> @user");
                    await SendMessage(Context, embed.Build());
                }
                else
                {
                    var receiver = GlobalUserAccounts.GetUserAccount((SocketUser)userB);

                    if (Rarity == "COMMON")
                    {
                        giveaccount.LootBoxCommon--;
                        receiver.LootBoxCommon++;
                    }

                    if (Rarity == "UNCOMMON")
                    {
                        giveaccount.LootBoxUncommon--;
                        receiver.LootBoxUncommon++;
                    }

                    if (Rarity == "RARE")
                    {
                        giveaccount.LootBoxRare--;
                        receiver.LootBoxRare++;
                    }

                    if (Rarity == "EPIC")
                    {
                        giveaccount.LootBoxEpic--;
                        receiver.LootBoxEpic++;
                    }

                    if (Rarity == "LEGENDARY")
                    {
                        giveaccount.LootBoxLegendary--;
                        receiver.LootBoxLegendary++;
                    }

                    GlobalUserAccounts.SaveAccounts(giveaccount.Id, receiver.Id);

                    await SendMessage(Context, null,
                                      $":gift:  **|** {Context.User.Mention} has gifted {userB.Mention} a **{Rarity}** Loot box! How generous.");
                }
            }
        }
 public MessageRewardHandler(GlobalUserAccounts globalUserAccounts)
 {
     _globalUserAccounts = globalUserAccounts;
 }
 public CommandHandler(DiscordSocketClient client, CommandService cmdService, IServiceProvider serviceProvider, GlobalGuildAccounts globalGuildAccounts, GlobalUserAccounts globalUserAccounts, RoleByPhraseProvider roleByPhraseProvider)
 {
     _client               = client;
     _cmdService           = cmdService;
     _serviceProvider      = serviceProvider;
     _globalGuildAccounts  = globalGuildAccounts;
     _globalUserAccounts   = globalUserAccounts;
     _roleByPhraseProvider = roleByPhraseProvider;
 }
Пример #26
0
        public async Task CheckMiuniesOther(IGuildUser Użytkownik)
        {
            var account = GlobalUserAccounts.GetUserAccount(Użytkownik.Id);

            await ReplyAsync(GetMiuniesReport(account.Miunies, Użytkownik.Mention));
        }
Пример #27
0
        public async Task CheckMiunies()
        {
            var account = GlobalUserAccounts.GetUserAccount(Context.User.Id);

            await ReplyAsync(GetMiuniesReport(account.Miunies, Context.User.Mention));
        }
Пример #28
0
        public async Task ShowRichesPeople(int NumerStrony = 1)
        {
            if (NumerStrony < 1)
            {
                await ReplyAsync("Czy Ty naprawde próbujesz to zrobić? xD ***SRSLY?!***");

                return;
            }

            var guildUserIds = Context.Guild.Users.Select(user => user.Id);
            // Pokaż tylko użytkowników tego serwera
            var accounts = GlobalUserAccounts.GetFilteredAccounts(acc => guildUserIds.Contains(acc.Id));

            const int usersPerPage = 9;
            // Oblicz najwyższą akceptowany numer storny => amount of pages we need to be able to fit all users in them
            // (amount of users) / (how many to show per page + 1) results in +1 page more every time we exceed our usersPerPage
            var lastPageNumber = 1 + (accounts.Count / (usersPerPage + 1));

            if (NumerStrony > lastPageNumber)
            {
                await ReplyAsync($"Nie ma aż tylu stron...\nStrona numer {lastPageNumber} jest ostatnia.");

                return;
            }
            // Sortuj użytkowników malejąco według punktów
            var ordered = accounts.OrderByDescending(acc => acc.Miunies).ToList();

            var embB = new EmbedBuilder()
                       .WithTitle("Najszczęśliwsi są:")
                       .WithFooter($"Strona {NumerStrony}/{lastPageNumber}");

            // Add fields to the embed with information of users according to the provided page we should show
            // Two conditions because:  1. Only get as many as we want
            //                          2. The last page might not be completely filled so we have to interrupt early
            NumerStrony--;
            for (var i = 1; i <= usersPerPage && i + usersPerPage * NumerStrony <= ordered.Count; i++)
            {
                // -1 because we take the users non zero based input
                var account = ordered[i - 1 + usersPerPage * NumerStrony];
                var user    = Context.Client.GetUser(account.Id);

                //try to give it a medal in cases 1 - 3, if it is not possible just send it with out change
                var contentName = string.Empty;
                if (NumerStrony == 0)
                {
                    switch (i)
                    {
                    case 1:
                        contentName = $"🥇 #{i + usersPerPage * NumerStrony} {user.Username}";
                        break;

                    case 2:
                        contentName = $"🥈 #{i + usersPerPage * NumerStrony} {user.Username}";
                        break;

                    case 3:
                        contentName = $"🥉 #{i + usersPerPage * NumerStrony} {user.Username}";
                        break;

                    default:
                        contentName = $"#{i + usersPerPage * NumerStrony} {user.Username}";
                        break;
                    }
                }
                else
                {
                    contentName = $"#{i + usersPerPage * NumerStrony} {user.Username}";
                }
                embB.AddField(contentName, $"{account.Miunies} Punktów Szczęścia", true);
            }

            await ReplyAsync("", false, embB.Build());
        }
Пример #29
0
        public async Task SpinSlot(uint amount)
        {
            if (amount < 1)
            {
                await ReplyAsync($"You can' spin for that amount of Miunies.\nAND YOU KNOW IT!");

                return;
            }
            var account = GlobalUserAccounts.GetUserAccount(Context.User.Id);

            if (account.Miunies < amount)
            {
                await ReplyAsync($"Sorry but it seems like you don't have enough Minuies... You only have {account.Miunies}.");

                return;
            }

            account.Miunies -= amount;
            GlobalUserAccounts.SaveAccounts();

            IUserMessage msg = await ReplyAsync(Global.slot.Spin());

            await Task.Delay(1000);

            await msg.ModifyAsync(m => m.Content = Global.slot.Spin());

            await Task.Delay(1000);

            await msg.ModifyAsync(m => m.Content = Global.slot.Spin());

            uint moneyGain = Global.slot.GetPayout(amount);

            if (moneyGain > 0)
            {
                account.Miunies += moneyGain;
                GlobalUserAccounts.SaveAccounts();
            }

            string message = "You played and ";

            if (moneyGain > amount)
            {
                message += $"got wopping **{moneyGain} Miunies** out of it!";
            }
            else if (moneyGain == amount)
            {
                message += "you got your money back... well at least you haven't lost anything right?";
            }
            else if (moneyGain > 0)
            {
                message += $"at least you got some of your cash back... have those {moneyGain} Miunies!";
            }
            else
            {
                message += "lost everything!";
            }

            await Task.Delay(1000);

            await ReplyAsync(message);
        }
Пример #30
0
 public SetTimeZone(GlobalUserAccounts globalUserAccounts)
 {
     _globalUserAccounts = globalUserAccounts;
 }