示例#1
0
        public async override Task <bool> ActivateAsync(IPost n, IShell shell, Server core)
        {
            if (n.Text != null && Regex.IsMatch(n.Text.ToLowerInvariant(), "占|運勢|みくじ|fortune"))
            {
                core.LikeWithLimited(n.User);
                var isPremium = EconomyModule.HasItem(n.User, "fortuneplus", core);
                var r         = new Random(n.User.Id.GetHashCode() + DateTime.Now.Day + DateTime.Now.Month - DateTime.Now.Year);

                int min = 1;
                int max = 6;

                int love  = r.Next(min, max),
                    money = r.Next(min, max),
                    work  = r.Next(min, max),
                    study = r.Next(min, max);

                // premium
                int health   = r.Next(min, max),
                    hobby    = r.Next(min, max),
                    sns      = r.Next(min, max),
                    gaming   = r.Next(min, max),
                    meal     = r.Next(min, max),
                    goingOut = r.Next(min, max),
                    shopping = r.Next(min, max);

                var builder = new StringBuilder();

                var list = new List <(string name, string emoji, int value, string bestMessage, string worstMessage)>
                {
                    ("恋愛運", "❤", love, "気になるあの人にアタックしてみては...?", "グイグイ迫るとかえって痛い目を見るかも."),
                    ("金運", "💰", money, "意外なことで得するかも.", "ぼったくりには気をつけてね."),
                    ("仕事運", "💻", work, "日頃の頑張りがきっと報われるよ.", "やる気が空回りして,大ミスしちゃわないように気をつけてね."),
                    ("勉強運", "📒", study, "昨日わからなかったことがわかる日かも.", "無理して勉強しても頭に入らないかも.")
                };

                if (isPremium)
                {
                    list.Add(("健康運", "💪", health, "今日一日バリバリ過ごせるでしょう.", "風邪を引かないよう気をつけて"));
                    list.Add(("趣味運", "🎸", hobby, "好きなことに打ち込もう!", "挫折に気をつけてね."));
                    list.Add(("食事運", "🍣", meal, "奮発して美味しい出前を取ろう.", "まずい食べ物に巡り合っちゃうかも"));
                    list.Add(("SNS運", "💬", sns, "喧嘩なく, 平和に過ごせるよ.", "何気ない発言で炎上しちゃうかも.気をつけて."));
                    list.Add(("ゲーム運", "🎮", gaming, "スコアが伸びる日だよ. やり込もう!", "頑張ってもスコアが伸びない日だよ. 無理はしないで."));
                    list.Add(("ステイホーム運", "🏠", goingOut, "のんびりお家で好きなことをして過ごそう.", "することに飽きてしまってませんか? 新たな趣味を見つける旅をしてみよう!"));
                    list.Add(("買いもの運", "👜", shopping, "思い切って,欲しかったものを買ってみては?", "不良品を引いちゃうかも. お買い物は程々に."));
                }

                var avg = (int)Math.Round(list.Average(el => el.value));

                builder.AppendLine($"***{results[avg - 1]}***");

                list.ForEach(r => builder.AppendLine($"{r.name}{r.emoji}: {GetStar(r.value, 5)}"));

                var luckyItem = GenerateWord(r);

                builder.AppendLine($"ラッキーアイテム💎: {luckyItem}");

                if (isPremium)
                {
                    var orderby = list.OrderByDescending(r => r.value);
                    var(name, emoji, value, bestMessage, worstMessage) = orderby.First();
                    var worst = orderby.Last();
                    builder
                    .AppendLine()
                    .Append("シトリンから一言: ")
                    .Append($"{worst.name}が低いね.{worst.worstMessage}")
                    .AppendLine($"{name}が高いね.{bestMessage}");
                }

                core.Storage[n.User].Add(StatFortuneCount);
                await shell.ReplyAsync(n, builder.ToString(), $"今日の{core.GetNicknameOf(n.User)}の運勢");

                EconomyModule.Pay(n, shell, core);
                return(true);
            }

            return(false);
        }