public override bool TakeAction() { ItemBaseInfo itemBaseInfo = new ConfigCacheSet<ItemBaseInfo>().FindKey(_materialsID); if (itemBaseInfo.ItemType == ItemType.CaiLiao) { //寻材料 List<MonsterInfo> monsterArray = new ConfigCacheSet<MonsterInfo>().FindAll(m => m.ItemID == _materialsID); if (monsterArray.Count > 0) { MonsterInfo monsterInfo = monsterArray[0]; var plotEmbattles = new ConfigCacheSet<PlotEmbattleInfo>().FindAll(m => m.MonsterID == monsterInfo.MonsterID); foreach (var embattle in plotEmbattles) { PlotNPCInfo npcInfo = new ConfigCacheSet<PlotNPCInfo>().FindKey(embattle.PlotNpcID); if (npcInfo != null) { PlotInfo temp = new ConfigCacheSet<PlotInfo>().FindKey(npcInfo.PlotID); if (temp != null && temp.CityID > CurrCityID(ContextUser.UserLv)) { ErrorCode = LanguageManager.GetLang().ErrorCode; ErrorInfo = LanguageManager.GetLang().St1604_MaterialsCityID; return false; } if (CheckPlot(temp)) { _plotInfo = temp; break; } } } } } return true; }
/// <summary> /// 获取玩家副本进度 /// </summary> /// <param name="gameUser"></param> /// <returns></returns> public static PlotInfo GetUserPlotInfo(GameUser gameUser) { PlotInfo plotInfo = new PlotInfo(); if (gameUser != null) { var taskInfo = new ConfigCacheSet<StoryTaskInfo>().FindKey(gameUser.TaskProgress) ?? new StoryTaskInfo(); plotInfo = new ConfigCacheSet<PlotInfo>().FindKey(taskInfo.PlotID); } return plotInfo; }
private bool CheckPlot(PlotInfo plotInfo) { if (plotInfo.CityID == 3 || plotInfo.CityID == 4) { CountryType countryType = plotInfo.CityID == 3 ? CountryType.M : CountryType.H; return ContextUser.CountryID == countryType; } return true; }
public override bool TakeAction() { List<PlotNPCInfo> plotNPCInfoList = new ConfigCacheSet<PlotNPCInfo>().FindAll(m => m.PlotID == plotID); npcCount = (short)plotNPCInfoList.Count; var cacheSet = new GameDataCacheSet<UserQueue>(); List<UserQueue> userQueueList = cacheSet.FindAll(ContextUser.UserID, m => m.QueueType == QueueType.SaoDang); if (userQueueList.Count > 0) { UserQueue userQueue = userQueueList[0]; coldTime = userQueue.DoRefresh(); if (coldTime == 0) { cacheSet.Delete(userQueue); ContextUser.ResetSweepPool(0); ContextUser.UserStatus = UserStatus.Normal; //ContextUser.Update(); } int tempNum = PlotHelper.GetBattleNum(userQueue.GetTiming()) + 1; if (npcCount > 0) { turnsNum = PlotHelper.GetTurnsNum(npcCount, tempNum); timesNum = PlotHelper.GetTimesNum(npcCount, tempNum); } //PlotHelper.CheckSweepCount(npcCount, userQueue.GetTiming(), out turnsNum, out battleNum); //if (battleNum >= npcCount) //{ // turnsNum = turnsNum + 1; //} //else //{ // battleNum = battleNum + 1; //} } userItemCount = (short)UserItemHelper.GetItems(Uid).FindAll(m => m.ItemStatus == ItemStatus.BeiBao).Count; plotInfo = new ConfigCacheSet<PlotInfo>().FindKey(plotID); if (plotInfo == null) { return false; } foreach (PlotNPCInfo npcInfo in plotNPCInfoList) { if (npcInfo == null) { continue; } List<PlotEmbattleInfo> embattleInfoList = new ConfigCacheSet<PlotEmbattleInfo>().FindAll(m => m.PlotNpcID == npcInfo.PlotNpcID); foreach (PlotEmbattleInfo embattleInfo in embattleInfoList) { if (monsterDict.ContainsKey(embattleInfo.MonsterID)) { if (monsterNumDict.ContainsKey(embattleInfo.MonsterID)) { monsterNumDict[embattleInfo.MonsterID] = monsterNumDict[embattleInfo.MonsterID] + 1; } } else { MonsterInfo monsterInfo = new ConfigCacheSet<MonsterInfo>().FindKey(embattleInfo.MonsterID); if (monsterInfo != null) { monsterDict.Add(embattleInfo.MonsterID, monsterInfo); monsterNumDict.Add(embattleInfo.MonsterID, 1); } } } } return true; }
/// <summary> /// 是否是最后一层 /// </summary> /// <param name="plotInfo"></param> /// <returns></returns> public static bool IsLastLayer(PlotInfo plotInfo) { return new ConfigCacheSet<PlotInfo>().FindKey(plotInfo == null ? 0 : plotInfo.AftPlotID) == null; }
public override bool TakeAction() { List<UniversalInfo> universalList = new List<UniversalInfo>(); int layerNum = CheckUserPlotLayerNum(ContextUser); hurdleNum = CheckUserPlotHurdleNum(ContextUser); plotInfoArray = new ConfigCacheSet<PlotInfo>().FindAll(m => m.LayerNum == layerNum && m.PlotType == PlotType.Kalpa); if (plotInfoArray.Count > 0) { plotInfo = new List<PlotInfo>(plotInfoArray).Find(u => u.PlotSeqNo == hurdleNum); if (plotInfo != null) { plotNpcInfoArray = new ConfigCacheSet<PlotNPCInfo>().FindAll(m => m.PlotID == plotInfo.PlotID); foreach (var info in plotNpcInfoArray) { SparePartInfo partInfo = new ConfigCacheSet<SparePartInfo>().FindKey(info.SparePartID); if (partInfo != null) { universalList.Add(new UniversalInfo() { Name = partInfo.Name, HeadID = partInfo.HeadID, Num = 1 }); } } npcName = plotNpcInfoArray.Count == 0 ? string.Empty : plotNpcInfoArray[0].NpcName; var userPlot = UserPlotHelper.GetUserPlotInfo(ContextUser.UserID, plotInfo.PlotID); //todo new GameDataCacheSet<UserPlot>().FindKey(Uid, plotInfo.PlotID); _isOverCombat = userPlot != null && userPlot.PlotStatus == PlotStatus.Completed; strEnchant = plotInfo.EnchantID.Split(','); if (strEnchant.Length > 0) { universalList.Add(new UniversalInfo() { Name = LanguageManager.GetLang().St4301_RandomEnchant, HeadID = string.Empty, Num = 1 }); } universalArray = universalList.ToArray(); } } return true; }
/// <summary> /// 当前玩家所在的层、关的副本 /// </summary> /// <returns></returns> public static PlotInfo CheckUserPlotKalpa(GameUser user) { PlotInfo plotInfo = null; var userPlotArray = UserPlotHelper.UserPlotFindAll(user.UserID).FindAll(m => m.PlotType == PlotType.Kalpa); if (userPlotArray.Count == 0) { PlotHelper.EnablePlot(user.UserID, 8000); UserPlotHelper.UserPlotFindAll(user.UserID).FindAll(m => m.PlotType == PlotType.Kalpa); } if (userPlotArray.Count > 0) { userPlotArray.QuickSort((x, y) => { int result = 0; if (x == null && y == null) return 0; if (x != null && y == null) return 1; if (x == null) return -1; result = new ConfigCacheSet<PlotInfo>().FindKey(y.PlotID).LayerNum.CompareTo( new ConfigCacheSet<PlotInfo>().FindKey(x.PlotID).LayerNum); if (result == 0) { result = new ConfigCacheSet<PlotInfo>().FindKey(y.PlotID).PlotSeqNo.CompareTo( new ConfigCacheSet<PlotInfo>().FindKey(x.PlotID).PlotSeqNo); } return result; }); plotInfo = new ConfigCacheSet<PlotInfo>().FindKey(userPlotArray[0].PlotID); } return plotInfo; }
public override bool TakeAction() { var plotTeam = new PlotTeamCombat(ContextUser); teamCombatResult = plotTeam.GetCombatProcess(teamID); teamPlot = plotTeam.GetTeam(teamID); plotInfo = new ConfigCacheSet<PlotInfo>().FindKey(plotID); if (teamCombatResult.IsWin) { //日常任务-多人副本 TaskHelper.TriggerDailyTask(Uid, 4007); if (ContextUser.UserExtend != null && ContextUser.UserExtend.DailyInfo != null) { if (ContextUser.UserExtend.DailyInfo.RefreshDate.Date == DateTime.Now.Date) { ContextUser.UserExtend.DailyInfo.MoreNum = MathUtils.Addition(ContextUser.UserExtend.DailyInfo.MoreNum, 1); } else { ContextUser.UserExtend.DailyInfo.RefreshDate = DateTime.Now; ContextUser.UserExtend.DailyInfo.MoreNum = 1; } } else if (ContextUser.UserExtend != null) { DailyRefresh dailyRefresh = new DailyRefresh(); dailyRefresh.RefreshDate = DateTime.Now; dailyRefresh.MoreNum = 1; ContextUser.UserExtend.DailyInfo = dailyRefresh; } //ContextUser.Update(); } return true; }
public override bool TakeAction() { if (ContextUser.UserStatus == UserStatus.CountryCombat) { CountryCombat countryCombat = new CountryCombat(ContextUser); if (countryCombat.GameActive != null && countryCombat.GameActive.RefreshStatus() == CombatStatus.Combat) { countryCombat.Exit(); } } if (ContextUser.EnergyNum <= 0 && ContextUser.SurplusEnergy <= 0) { ErrorCode = 3; ErrorInfo = LanguageManager.GetLang().St_EnergyNotEnough; return false; } //if (_ops != 1 && UserHelper.IsPromptBlood(ContextUser.UserID)) //{ // ErrorCode = 1; // ErrorInfo = LanguageManager.GetLang().St4002_PromptBlood; // return false; //} //if (_ops != 1 && UserItemHelper.CheckItemOut(ContextUser, ItemStatus.BeiBao)) //{ // ErrorCode = 1; // ErrorInfo = LanguageManager.GetLang().St_User_BeiBaoMsg; // return false; //} UserHelper.UserGeneralPromptBlood(ContextUser);//佣兵自动使用绷带补血 plotInfo = new ConfigCacheSet<PlotInfo>().FindKey(plotID); if (plotInfo == null) { ErrorCode = LanguageManager.GetLang().ErrorCode; ErrorInfo = LanguageManager.GetLang().LoadDataError; return false; } int challengeNum = PlotHelper.GetPlotChallengeNum(UserId.ToString(), plotInfo.PlotID); if (plotInfo.PlotType == PlotType.Elite && challengeNum >= plotInfo.ChallengeNum) { ErrorCode = 4; ErrorInfo = LanguageManager.GetLang().St4002_IsPlotEliteNotChallengeNum; return false; } if ((challengeNum >= plotInfo.ChallengeNum && ContextUser.VipLv < 3)) { ErrorCode = LanguageManager.GetLang().ErrorCode; ErrorInfo = LanguageManager.GetLang().St4002_NotChallengeNum; return false; } int num = challengeNum; int challengeDefSoldNum = ConfigEnvSet.GetInt("UserPlot.ChallengeDefSoldNum"); int challengeDoubleSoldNum = ConfigEnvSet.GetInt("UserPlot.ChallengeDoubleSoldNum"); if (_ops != 1 && num >= plotInfo.ChallengeNum && PlotHelper.GetPlotIsOne(UserId.ToString(), plotInfo.PlotID)) { ErrorCode = 1; _plotNum = challengeDefSoldNum; return false; } else { if (_ops != 1 && num >= plotInfo.ChallengeNum && PlotHelper.GetPlotIsOne(UserId.ToString(), plotInfo.PlotID) == false) { int openNum = num - plotInfo.ChallengeNum + 1; _plotNum = challengeDoubleSoldNum * openNum + challengeDefSoldNum; } } if (_ops != 1 && num >= plotInfo.ChallengeNum) { ErrorCode = 1; ErrorInfo = string.Format(LanguageManager.GetLang().St4002_IsPlotNum, _plotNum); return false; } if (_ops == 1 && num >= plotInfo.ChallengeNum) { if (ContextUser.GoldNum < _plotNum) { ErrorCode = LanguageManager.GetLang().ErrorCode; ErrorInfo = LanguageManager.GetLang().St_GoldNotEnough; return false; } ContextUser.UseGold = MathUtils.Subtraction(ContextUser.UseGold, _plotNum); } if (_ops == 1 && num >= plotInfo.ChallengeNum && PlotHelper.GetPlotIsOne(UserId.ToString(), plotInfo.PlotID) == false) { int openNum = num - plotInfo.ChallengeNum + 1; _plotNum = challengeDoubleSoldNum * openNum + challengeDefSoldNum; ; if (ContextUser.GoldNum < _plotNum) { ErrorCode = 2; ErrorInfo = LanguageManager.GetLang().St_GoldNotEnough; return false; } ContextUser.UseGold = MathUtils.Addition(ContextUser.UseGold, _plotNum); } if (_ops != 1 && !string.IsNullOrEmpty(plotInfo.EnchantID) && plotInfo.EnchantProbability > 0 && EnchantHelper.IsEnchantPackage(ContextUser.UserID)) { ErrorCode = 1; ErrorInfo = LanguageManager.GetLang().St4002_EnchantPackageFull; return false; } //var cacheSetUserPlot = new GameDataCacheSet<UserPlotPackage>(); //var userPlotPack = cacheSetUserPlot.FindKey(ContextUser.UserID); //var userPlot = userPlotPack != null ? userPlotPack.PlotPackage.Find(s => s.PlotID == npcInfo.PlotID) : null; var userPlot = UserPlotHelper.GetUserPlotInfo(ContextUser.UserID, plotID); if (userPlot != null && userPlot.PlotNum >= plotInfo.ChallengeNum) { if (plotInfo.PlotType == PlotType.Elite) { ErrorCode = LanguageManager.GetLang().ErrorCode; ErrorInfo = LanguageManager.GetLang().St4002_EliteUsed; return false; } else if (plotInfo.PlotType == PlotType.HeroPlot) { ErrorCode = LanguageManager.GetLang().ErrorCode; ErrorInfo = LanguageManager.GetLang().St4002_HeroPlotNum; return false; } } npcList = new ConfigCacheSet<PlotNPCInfo>().FindAll(m => m.PlotID == plotID); //if (ContextUser.EnergyNum < (npcList.Count * PlotInfo.BattleEnergyNum)) //{ // ErrorCode = 3; // ErrorInfo = LanguageManager.GetLang().St_EnergyNotEnough; // return false; //} ContextUser.InPlotDate = DateTime.Now; //if (ContextUser.UserExtend == null || ContextUser.UserExtend.PlotStatusID == 0 || ContextUser.UserExtend.MercenarySeq == 0) //{ // ContextUser.TempEnergyNum = PlotInfo.BattleEnergyNum; // //ContextUser.RemoveEnergyNum(PlotInfo.BattleEnergyNum); //} //ContextUser.Update(); if (ContextUser.UserExtend != null && ContextUser.UserExtend.PlotStatusID <= 0) { ContextUser.UserExtend.UpdateNotify(obj => { ContextUser.UserExtend.PlotStatusID = plotID; ContextUser.UserExtend.PlotNpcID = -1; ContextUser.UserExtend.MercenarySeq = 1; ContextUser.UserExtend.IsBoss = false; return true; }); } _isOverCombat = userPlot != null && userPlot.PlotStatus == PlotStatus.Completed; ContextUser.TempEnergyNum = PlotInfo.BattleEnergyNum; return true; }
/// <summary> /// 是否是最后一层 /// </summary> /// <param name="plotInfo"></param> /// <returns></returns> public static bool IsLastLayer(PlotInfo plotInfo) { return new ShareCacheStruct<PlotInfo>().FindKey(plotInfo == null ? 0 : plotInfo.AftPlotID) == null; }