예제 #1
0
        public static List <AskModel> Ask(List <string> ques)
        {
            if (!ques.Any())
            {
                return(new List <AskModel>());
            }
            var list = ques.Select(p => new AskModel
            {
                Quest = p
            }).ToList();
            int i = 0;

            while (i < 1000)
            {
                var dindex = DiceManager.RollDice(ques.Count) - 1;
                var des    = DiceManager.RollDice(1000);
                if (des >= 850 && i <= 999)
                {
                    var newRes = DiceManager.RollDice(999 - i);
                    list[dindex].Percent += newRes / 10m;
                    i += newRes;
                }
                else
                {
                    list[dindex].Percent += 0.1m;
                    i++;
                }
            }
            return(list);
        }
예제 #2
0
        public override async Task ExecuteAsync(List <string> command, EventSourceType sourceType, UserInfo qq, Group group, GroupMember member)
        {
            var name = "";

            if (sourceType == EventSourceType.Group)
            {
                if (member == null)
                {
                    return;
                }

                name = string.IsNullOrWhiteSpace(member.GroupName) ? qq.Name : member.GroupName;
            }
            else if (sourceType == EventSourceType.Private)
            {
                if (qq == null)
                {
                    return;
                }
                name = qq.Name;
            }

            var str         = $"{name}的疯狂发作 - 总结症状:\n";
            var insaneIndex = DiceManager.RollDice(_longInsaneList.Count - 1);

            str += $"1d{_longInsaneList.Count - 1}={insaneIndex}\n";
            var duration = DiceManager.RollDice(10);

            if (insaneIndex == 9)
            {
                var fearIndex = DiceManager.RollDice(_fearList.Count - 1);
                str += string.Format($"症状=>{_longInsaneList[insaneIndex]}", "1d10=" + duration, $"1d{_fearList.Count - 1}={fearIndex}",
                                     _fearList[fearIndex]);
            }
            else if (insaneIndex == 10)
            {
                var panicIndex = DiceManager.RollDice(_panicList.Count - 1);
                str += string.Format($"症状=>{_longInsaneList[insaneIndex]}", "1d10=" + duration, $"1d{_panicList.Count - 1}={panicIndex}",
                                     _panicList[panicIndex]);
            }
            else
            {
                str += string.Format($"症状=>{_longInsaneList[insaneIndex]}", "1d10=" + duration);
            }

            MessageManager.Send(sourceType, str, qq?.QQ, member?.GroupNumber);
        }
예제 #3
0
        public static int GetJrrp(UserInfo user, bool reroll = false)
        {
            //LastJrrpDate为空即表示第一次使用jrrp,不做特殊处理
            if (!user.LastJrrpDate.HasValue)
            {
                user.Jrrp         = DiceManager.RollDice();
                user.LastJrrpDate = DateTime.Today;
                ReRollCheck(ref user);
                return(user.Jrrp);
            }
            else
            {
                //LastJrrpDate有值但不为今日则表明过去使用过jrrp而今日未使用,需要重新计算jrrp值
                if (user.LastJrrpDate != DateTime.Today)
                {
                    user.ReRollStep = UserInfo.RerollStep.None;
                    user.Jrrp       = DiceManager.RollDice();

                    ReRollCheck(ref user);
                    user.LastJrrpDate = DateTime.Today;
                }
                else
                {
                    if (reroll)
                    {
                        var rerollJrrp = DiceManager.RollDice();
                        if (rerollJrrp > 70)
                        {
                            user.ReRollStep = UserInfo.RerollStep.RerollSuccess;
                            user.Jrrp       = rerollJrrp;
                        }
                        else if (rerollJrrp > 25)
                        {
                            user.ReRollStep = UserInfo.RerollStep.RerollFaild;
                        }
                        else
                        {
                            user.ReRollStep = UserInfo.RerollStep.RerollDevastated;
                            user.Jrrp       = DiceManager.RollDice((rerollJrrp + 1) / 2);
                        }
                    }
                }
                return(user.Jrrp);
            }
        }