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); }
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); }
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); } }