public void StartGame(PetRecord selfPet, PetRecord aimPet, long groupNum, string bindAi) { var engine = new PetAgainstEngine() { SelfPet = new GamingPet() { Name = selfPet.Name, HP = PetLevelSvc[selfPet.Level].HP, QQNum = selfPet.QQNum, Skills = new Dictionary <string, int>(selfPet.Skills), Level = selfPet.Level }, AimPet = new GamingPet() { Name = aimPet.Name, HP = PetLevelSvc[aimPet.Level].HP, QQNum = aimPet.QQNum, Skills = new Dictionary <string, int>(aimPet.Skills), Level = aimPet.Level }, GroupNum = groupNum, BindAi = bindAi }; Engines.Add(engine); engine.StartGame(); Engines.Remove(engine); }
public bool Expedite(MsgInformationEx MsgDTO, object[] param) { var expeditionRec = ExpeditionRecord.GetLastest(MsgDTO.FromQQ); if (expeditionRec == null) { return(StartExpedite(MsgDTO)); } var pet = PetRecord.Get(MsgDTO.FromQQ); if (expeditionRec.IsExpediting) { MsgSender.PushMsg(MsgDTO, $"{pet.Name}还在远征中,请于 {expeditionRec.EndTime:yyyy-MM-dd HH:mm:ss}后再试!"); return(false); } if (expeditionRec.IsDrawn) { return(StartExpedite(MsgDTO)); } DrawAwards(expeditionRec, MsgDTO); return(true); }
public bool Purchase(MsgInformationEx MsgDTO) { var pet = PetRecord.Get(MsgDTO.FromQQ); var msg = pet.ExtGain(MsgDTO, 100); MsgSender.PushMsg(MsgDTO, msg); return(true); }
public async Task <ActionResult> DeleteConfirmed(int id) { PetRecord petRecord = await db.Pets.FindAsync(id); db.Pets.Remove(petRecord); await db.SaveChangesAsync(); return(RedirectToAction("Index")); }
//随机宠物特长 public static void RefreshSpeciality(ItemBase item, PetRecord tbPet) { var skills = new Dictionary <int, int>(); for (var index = 0; index != 3; ++index) { var tbPetSkill = Table.GetPetSkillBase(tbPet.SpecialityLibrary[index]); if (tbPetSkill == null) { return; } var needCount = 1; //if (tbPet.Speciality[index] > 1) //{ // continue; //} //for (int i = 0; i != 3; i++) //{ // if (tbPet.Speciality[i] <= 1) // { // needCount++; // } //} skills.Clear(); var nTotleAttrPro = 0; for (var i = 0; i < tbPetSkill.SpecialityPro.Length; i++) { if (tbPetSkill.SpecialityPro[i] < 0 || tbPetSkill.Speciality[i] < 0) { break; } skills.Add(tbPetSkill.Speciality[i], tbPetSkill.SpecialityPro[i]); nTotleAttrPro += tbPetSkill.SpecialityPro[i]; } //整理概率 int nRandom, nTotleRandom; for (var i = 0; i != needCount; ++i) { nRandom = MyRandom.Random(nTotleAttrPro); nTotleRandom = 0; foreach (var i1 in skills) { nTotleRandom += i1.Value; if (nRandom < nTotleRandom) { item.SetExdata(5 + index, i1.Key); nTotleAttrPro -= i1.Value; skills.Remove(i1.Key); break; } } } } }
public async Task <ActionResult> Edit([Bind(Include = "PetID,PetName,Species,Breed,Description,ImageURL,SpecialNeeds,LocationLost,OwnerID")] PetRecord petRecord) { if (ModelState.IsValid) { db.Entry(petRecord).State = System.Data.Entity.EntityState.Modified; await db.SaveChangesAsync(); return(RedirectToAction("Index")); } ViewBag.OwnerID = new SelectList(db.Profiles, "OwnerID", "UserName", petRecord.OwnerID); return(View(petRecord)); }
public static IEnumerable <int> EnumPetSkill(PetRecord table) { var tableSkillLength3 = table.Skill.Length; for (var i = 0; i < tableSkillLength3; i++) { if (table.Ladder > table.ActiveLadder[i]) { yield return(table.Skill[i]); } } }
public bool Purchase(MsgInformationEx MsgDTO) { var endurance = PetEnduranceRecord.Get(MsgDTO.FromQQ); endurance.ConsumeTotal -= 10; endurance.ConsumeTotal = Math.Max(0, endurance.ConsumeTotal); endurance.Update(); var pet = PetRecord.Get(MsgDTO.FromQQ); MsgSender.PushMsg(MsgDTO, $"{pet.Name}感觉一股清凉传遍全身,恢复了10点耐力!"); return(true); }
public bool Purchase(MsgInformationEx MsgDTO) { var pet = PetRecord.Get(MsgDTO.FromQQ); var petLevel = PetLevelSvc[pet.Level]; var enduranceConsume = PetEnduranceRecord.Get(MsgDTO.FromQQ); var restoreEndurance = Math.Min(petLevel.Endurance / 2, enduranceConsume.ConsumeTotal); enduranceConsume.ConsumeTotal -= restoreEndurance; enduranceConsume.Update(); MsgSender.PushMsg(MsgDTO, $"恭喜{pet.Name}恢复了 {restoreEndurance}点耐力!"); return(true); }
// GET: PetRecords/Details/5 public async Task <ActionResult> Details(int?id) { if (id == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } PetRecord petRecord = await db.Pets.FindAsync(id); if (petRecord == null) { return(HttpNotFound()); } return(View(petRecord)); }
// GET: PetRecords/Edit/5 public async Task <ActionResult> Edit(int?id) { if (id == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } PetRecord petRecord = await db.Pets.FindAsync(id); if (petRecord == null) { return(HttpNotFound()); } ViewBag.OwnerID = new SelectList(db.Profiles, "OwnerID", "UserName", petRecord.OwnerID); return(View(petRecord)); }
public bool PetExpBonus(MsgInformationEx MsgDTO, object[] param) { var qqNum = (long)param[0]; var exp = (int)(long)param[1]; var pet = PetRecord.Get(qqNum); MsgDTO.FromQQ = qqNum; var msg = pet.ExtGain(MsgDTO, exp); msg += "\r\n奖励已生效!"; MsgSender.PushMsg(MsgDTO, msg); return(true); }
private bool StartExpedite(MsgInformationEx MsgDTO) { var extEndur = VipArmerRecord.Get(MsgDTO.FromQQ).CheckArmer("耐力护符") ? 10 : 0; var pet = PetRecord.Get(MsgDTO.FromQQ); var petLevel = PetLevelSvc[pet.Level]; var enduranceConsume = PetEnduranceRecord.Get(MsgDTO.FromQQ); var curEndurance = petLevel.Endurance - enduranceConsume.ConsumeTotal + extEndur; var todayExpeditions = ExpeditionSceneSvc.TodayExpedition().Where(p => p.Endurance <= curEndurance).ToList(); if (todayExpeditions.IsNullOrEmpty()) { MsgSender.PushMsg(MsgDTO, $"{pet.Name}已经累的完全动不了了!"); return(false); } var msg = $"请选择远征副本:\r\n{todayExpeditions.Select((exp, idx) => $"{idx + 1}:{exp.ToString(curEndurance)}").JoinToString("\r\n")}"; var selection = WaiterSvc.WaitForNum(MsgDTO.FromGroup, MsgDTO.FromQQ, msg, i => i > 0 && i <= todayExpeditions.Count, MsgDTO.BindAi, 12, false); if (selection < 0) { MsgSender.PushMsg(MsgDTO, "操作取消"); return(false); } var aimExpedition = todayExpeditions[selection - 1]; var expRec = new ExpeditionRecord { EndTime = DateTime.Now.AddMinutes(aimExpedition.TimeConsume), QQNum = MsgDTO.FromQQ, Scene = aimExpedition.Name }; expRec.Insert(); enduranceConsume.ConsumeTotal += aimExpedition.Endurance; enduranceConsume.Update(); MsgSender.PushMsg(MsgDTO, $"远征开始!目标:【{aimExpedition.Name}】!(请于{expRec.EndTime:yyyy-MM-dd HH:mm:ss}后使用 宠物远征 命令回收远征奖励!)"); return(true); }
public bool Cook(MsgInformationEx MsgDTO, object[] param) { var dietName = param[0] as string; var Diet = CookingDietSvc[dietName]; if (Diet == null) { MsgSender.PushMsg(MsgDTO, "未查找到相关菜肴名称!"); return(false); } var pet = PetRecord.Get(MsgDTO.FromQQ); if (pet.Level < Diet.Level) { MsgSender.PushMsg(MsgDTO, $"{pet.Name}的等级太低,还不能烹饪该菜肴!({pet.Level}/{Diet.Level})"); return(false); } var cookingRec = CookingRecord.Get(MsgDTO.FromQQ); if (cookingRec.LearndDietMenu.IsNullOrEmpty() || !cookingRec.LearndDietMenu.Contains(dietName)) { MsgSender.PushMsg(MsgDTO, $"你尚未学会{dietName}的烹饪方法!(可使用【{Diet.ExchangeHonor}】兑换,详情请参见【帮助 兑换菜谱】)"); return(false); } var falvoringNeedStr = string.Join(",", Diet.Flavorings.Select(f => $"{f.Key}({cookingRec.FlavoringDic.GetDicValueSafe(f.Key)}/{f.Value})")); if (!Diet.Flavorings.IsNullOrEmpty() && !cookingRec.CheckFlavorings(Diet.Flavorings)) { MsgSender.PushMsg(MsgDTO, $"调味料不足!({falvoringNeedStr})"); return(false); } var itemColle = ItemCollectionRecord.Get(MsgDTO.FromQQ); var allitems = itemColle.AllItemsDic; var materialNeedStr = string.Join(",", Diet.Materials.Select(m => $"{m.Key}({allitems.GetDicValueSafe(m.Key)}/{m.Value})")); if (!Diet.Materials.IsNullOrEmpty() && !itemColle.CheckItem(Diet.Materials)) { MsgSender.PushMsg(MsgDTO, $"材料不足!({materialNeedStr})"); return(false); } var msg = $"烹饪 {dietName} 将需要消耗\r\n{falvoringNeedStr}\r\n{materialNeedStr}\r\n是否确认?"; if (!WaiterSvc.WaitForConfirm(MsgDTO, msg)) { MsgSender.PushMsg(MsgDTO, "操作取消!"); return(false); } cookingRec.FlavoringConsume(Diet.Flavorings); itemColle.ItemConsume(Diet.Materials); cookingRec.AddDiet(dietName); cookingRec.Update(); itemColle.Update(); MsgSender.PushMsg(MsgDTO, "烹饪成功!"); return(true); }
public bool OpenFinalTreasure(MsgInformationEx MsgDTO, object[] param) { var record = SegmentRecord.Get(MsgDTO.FromQQ); if (!record.CanOpenFinalTreasure) { MsgSender.PushMsg(MsgDTO, "很遗憾,你还不能开启终极宝藏,继续努力吧!(开启过所有其他宝藏才能开启终极宝藏!)", true); return(false); } var options = new[] { "获取500金币", "随机获取商店售卖的一件商品*5", "宠物获取50点经验值", "捞瓶子机会*5(仅当日有效)" }; var selectedIdx = WaiterSvc.WaitForOptions(MsgDTO.FromGroup, MsgDTO.FromQQ, "请选择你要开启的宝藏:", options, MsgDTO.BindAi); if (selectedIdx < 0) { MsgSender.PushMsg(MsgDTO, "你已经放弃了思考!"); return(false); } switch (selectedIdx) { case 0: { var osPerson = OSPerson.GetPerson(MsgDTO.FromQQ); osPerson.Golds += 500; osPerson.Update(); MsgSender.PushMsg(MsgDTO, $"恭喜你获得了 {500.CurencyFormat()}!"); break; } case 1: { var items = TransHelper.GetDailySellItems(); var randItem = items.RandElement(); MsgSender.PushMsg(MsgDTO, $"恭喜你获得了 {randItem.Name}*5!"); var collo = ItemCollectionRecord.Get(MsgDTO.FromQQ); var msg = collo.ItemIncome(randItem.Name, 5); if (!string.IsNullOrEmpty(msg)) { MsgSender.PushMsg(MsgDTO, msg); } break; } case 2: { var pet = PetRecord.Get(MsgDTO.FromQQ); var msg = pet.ExtGain(MsgDTO, 50); MsgSender.PushMsg(MsgDTO, msg); break; } case 3: { var dailyLimit = DailyLimitRecord.Get(MsgDTO.FromQQ, "DriftBottleAI_FishingBottle"); dailyLimit.Decache(5); dailyLimit.Update(); MsgSender.PushMsg(MsgDTO, "恭喜你获取 捞瓶子机会*5(仅当日有效) !"); break; } } record.FinalTreasureCount++; record.Update(); return(true); }
public bool AssertCalculate(MsgInformationEx MsgDTO, object[] param) { var osPerson = OSPerson.GetPerson(MsgDTO.FromQQ); if (osPerson.Golds < 50) { MsgSender.PushMsg(MsgDTO, $"你的金币余额不足({osPerson.Golds.CurencyFormat()}/{50.CurencyFormat()})!"); return(false); } if (!WaiterSvc.WaitForConfirm_Gold(MsgDTO, 50)) { MsgSender.PushMsg(MsgDTO, "操作取消!"); return(false); } osPerson.Golds -= 50; osPerson.Update(); var resultDic = new Dictionary <string, int> { { "金币资产", osPerson.Golds } }; var itemRecord = ItemCollectionRecord.Get(MsgDTO.FromQQ); if (!itemRecord.HonorCollections.IsNullOrEmpty()) { var itemAssert = itemRecord.AssertToGold(); resultDic.Add("物品资产", itemAssert); } if (!osPerson.GiftDic.IsNullOrEmpty()) { var giftsMaterialDic = osPerson.GiftDic.SelectMany(p => GiftSvc[p.Key].MaterialDic); var giftAssert = giftsMaterialDic.Sum(g => HonorSvc.FindItem(g.Key).Price *g.Value); resultDic.Add("礼物资产", giftAssert); } var pet = PetRecord.Get(MsgDTO.FromQQ); if (pet.Level > 0 || pet.Exp > 0) { var petAssert = PetLevelSvc.ExpToGolds(pet.Level, pet.Exp); resultDic.Add("宠物资产", petAssert); } var dietRec = CookingRecord.Get(MsgDTO.FromQQ); if (!dietRec.LearndDietMenu.IsNullOrEmpty() || !dietRec.CookedDietDic.IsNullOrEmpty() || !dietRec.FlavoringDic.IsNullOrEmpty()) { var dietAssert = dietRec.LearndDietMenu.Sum(menu => HonorSvc.FindHonor(CookingDietSvc[menu].ExchangeHonor).Items.Sum(item => item.Price)); dietAssert += dietRec.CookedDietDic.Sum(diet => CookingDietSvc[diet.Key].EstimatedPrice * diet.Value); dietAssert += dietRec.FlavoringDic.Sum(p => p.Value) * 20; resultDic.Add("烹饪资产", dietAssert); } var msg = "请查阅你的资产评估报告:\r\n" + $"{string.Join("\r\n", resultDic.Select(rd => $"{rd.Key}:{rd.Value.CurencyFormat()}"))}" + $"\r\n总资产:{resultDic.Sum(p => p.Value).CurencyFormat()}"; MsgSender.PushMsg(MsgDTO, msg, true); return(true); }
public bool RuleDestruction(MsgInformationEx MsgDTO, object[] param) { var key = param[0] as string; var value = param[1] as string; string msg; MsgSender.PushMsg(MsgDTO, "世界树规则析构引擎正在启动,请稍候..."); Thread.Sleep(2000); switch (key) { case "GroupSettings": { if (!long.TryParse(value, out var groupNum)) { msg = $"规则引擎解析错误:{groupNum}"; break; } var record = GroupSettings.Get(groupNum); if (record == null) { msg = $"未匹配到基元数据:{groupNum}"; break; } msg = JsonConvert.SerializeObject(record); break; } case "OSPerson": { if (!long.TryParse(value, out var personNum)) { msg = $"规则引擎解析错误:{personNum}"; break; } var osPerson = OSPerson.GetPerson(personNum); if (osPerson == null) { msg = $"未匹配到基元数据:{personNum}"; break; } msg = JsonConvert.SerializeObject(osPerson); break; } case "Pet": { if (!long.TryParse(value, out var personNum)) { msg = $"规则引擎解析错误:{personNum}"; break; } var pet = PetRecord.Get(personNum); msg = JsonConvert.SerializeObject(pet); break; } default: { msg = "未匹配到指定规则,请先查阅世界规则手册!"; break; } } MsgSender.PushMsg(MsgDTO, msg); return(true); }