/// <summary> /// 抽到最多的5星角色 /// </summary> /// <param name="datas"></param> /// <param name="infos"></param> private static void 五星角色爱你哟(List <WishData> datas, List <AchievementInfo> infos) { var groups = datas.Where(x => x.ItemType == "角色" && x.Rank == 5).GroupBy(x => x.Name); groups = groups.OrderByDescending(x => x.Count()); var n = groups.First().Count(); foreach (var group in groups) { if (group.Count() == n) { var list = group.OrderByDescending(x => x.Time); var a = list.First(); var info = new AchievementInfo { Name = $"「{a.Name}」爱你哟", Description = $"抽到最多的5星角色是「{a.Name}」", IsFinished = true, FinishTime = a.Time, Total = $"总计 {list.Count()}", }; infos.Add(info); } else { break; } } }
/// <summary> /// 在一次「浮生孰来」活动祈愿中抽中「甘雨」和「刻晴」 /// </summary> /// <param name="datas"></param> /// <param name="infos"></param> private static void 心甘晴愿(List <WishData> datas, List <AchievementInfo> infos) { var events = WishEventList.FindAll(x => x.Name == "浮生孰来"); foreach (var item in events) { var list = datas.Where(x => x.Time >= item.StartTime && x.Time <= item.EndTime); list = list.Where(x => x.Name == "甘雨" || x.Name == "刻晴").Select(x => x); bool hasGanyu = false, hasKeqing = false; foreach (var data in list) { if (data.Name == "甘雨") { hasGanyu = true; } else { hasKeqing = true; } if (hasGanyu && hasKeqing) { var info = new AchievementInfo { Name = "心甘晴愿", Description = "在一次「浮生孰来」活动祈愿中抽中「甘雨」和「刻晴」", IsFinished = true, FinishTime = data.Time, }; infos.Add(info); break; } } } }
/// <summary> /// 累计20天没有进行活动祈愿 /// </summary> /// <param name="datas"></param> /// <param name="infos"></param> public static void 仓鼠(List <WishData> datas, List <AchievementInfo> infos) { var list = datas.Where(x => x.WishType == WishType.CharacterEvent || x.WishType == WishType.WeaponEvent).GroupBy(x => x.Time.Date).OrderBy(g => g.Key).ToList(); if (list.Count == 1) { return; } var span = list[1].Key - list[0].Key; var time = list[1].Key; for (int i = 1; i < list.Count; i++) { var tmp = list[i].Key - list[i - 1].Key; if (tmp > span) { span = tmp; time = list[i].Key; } } var info = new AchievementInfo { Name = "仓鼠", Description = "累计超过20天没有进行活动祈愿", //todo Comment = "原石的数量,令人安心", IsFinished = true, FinishTime = time, Total = $"总计 {span.Days}", }; infos.Add(info); }
/// <summary> /// 一天抽卡达到78次 /// </summary> /// <param name="datas"></param> /// <param name="infos"></param> public static void 一掷千金(List <WishData> datas, List <AchievementInfo> infos) { var group = datas.GroupBy(x => x.Time.Date).OrderByDescending(x => x.Count()).First(); if (group.Count() >= 78) { var info = new AchievementInfo { Name = "一掷千金", Description = "一天抽卡达到78次", //todo 成就一掷千金的完成评论 Comment = "", IsFinished = true, FinishTime = group.Key, Total = $"总计 {group.Count()}", }; infos.Add(info); } else { var info = new AchievementInfo { Name = "一掷千金", Description = "一天抽卡达到78次", Comment = "", IsFinished = false, Progress = $"{group.Count() / 78}", }; infos.Add(info); } }
/// <summary> /// 在一次「神铸赋形」活动祈愿中抽出7把狼的末路,还没有抽出护摩之杖 /// </summary> /// <param name="datas"></param> /// <param name="infos"></param> private static void 七匹狼的诅咒(List <WishData> datas, List <AchievementInfo> infos) { var events = WishEventList.Where(x => x.UpStar5.Contains("护摩之杖")); foreach (var item in events) { var list = datas.Where(x => x.Time >= item.StartTime && x.Time <= item.EndTime).Where(x => x.Name == "狼的末路" || x.Name == "护摩之杖"); int langmo = 0; DateTime time = DateTime.Now; foreach (var data in list) { if (data.Name == "狼的末路") { langmo++; time = data.Time; } else { break; } } if (langmo >= 7) { var info = new AchievementInfo { Name = "七匹狼的诅咒", Description = "在一次「神铸赋形」活动祈愿中抽出7把狼的末路,还没有抽出护摩之杖", IsFinished = true, FinishTime = time, Total = $"总计 {langmo}", }; infos.Add(info); } if (langmo > 0) { var info = new AchievementInfo { Name = "七匹狼的诅咒", Description = "在一次「神铸赋形」活动祈愿中抽出7把狼的末路,还没有抽出护摩之杖", IsFinished = false, Progress = $"{langmo}/7", }; infos.Add(info); } } }
/// <summary> /// 累计抽出7把狼的末路 /// </summary> /// <param name="datas"></param> /// <param name="infos"></param> private static void 七匹狼(List <WishData> datas, List <AchievementInfo> infos) { var list = datas.Where(x => x.Name == "狼的末路"); if (list.Count() >= 7) { var info = new AchievementInfo { Name = "七匹狼", Description = "累计抽出7把狼的末路", IsFinished = true, FinishTime = list.ElementAt(6).Time, Total = $"总计 {list.Count()}", }; infos.Add(info); } }
/// <summary> /// 十连两金及以上 /// </summary> /// <param name="datas"></param> /// <param name="infos"></param> public static void 我就是欧皇(List <WishData> datas, List <AchievementInfo> infos) { var list = datas.GroupBy(x => x.Time).Where(g => g.Count(x => x.Rank == 5) >= 2).OrderBy(g => g.Key); if (list.Any()) { var info = new AchievementInfo { Name = "我就是欧皇!", Description = "十连两金及以上", Comment = "", IsFinished = true, FinishTime = list.First().Key, Total = $"总计 {list.Count()} 次", }; infos.Add(info); } }
/// <summary> /// 在一次「赤团开时」活动祈愿中获取三个胡桃 /// </summary> /// <param name="datas"></param> /// <param name="infos"></param> private static void 个胡桃(List <WishData> datas, List <AchievementInfo> infos) { var events = WishEventList.FindAll(x => x.Name == "赤团开时"); foreach (var item in events) { var list = datas.Where(x => x.Time >= item.StartTime && x.Time <= item.EndTime).Select(x => x); list = list.Where(x => x.Name == "胡桃").Select(x => x); if (list.Count() >= 3) { var info = new AchievementInfo { Name = "一个胡桃,两个胡桃,三个胡桃", Description = "在一次「赤团开时」活动祈愿中获取三个胡桃", IsFinished = true, FinishTime = list.ElementAt(2).Time, Total = $"总计 {list.Count()}", }; infos.Add(info); } } }