Example #1
0
        /// <summary>
        /// ��ȡ�������Ӷ��ID
        /// </summary>
        /// <param name="userID"></param>
        /// <returns></returns>
        public static int MainGeneralID(string userID)
        {
            UserGeneral general = GetMainGeneral(userID);

            if (general != null)
            {
                return(general.GeneralID);
            }
            return(0);
        }
Example #2
0
        public static short _currMaxLv = GameConfigSet.CurrMaxLv.ToShort(); //玩家最大等级

        #endregion Fields

        #region Methods

        /// <summary>
        /// 创建佣兵或佣兵灵魂
        /// </summary>
        /// <param name="userID"></param>
        /// <param name="general"></param>
        /// <param name="type"></param>
        /// <param name="num"></param>
        public static void CreateUserGeneral(string userID, GeneralInfo general, GeneralType type, int num)
        {
            var cacheSet = new GameDataCacheSet<UserGeneral>();
            int generalID = 0;
            CareerInfo careerInfo = null;
            if (type == GeneralType.YongBing)
            {
                generalID = general.GeneralID;
                careerInfo = new ConfigCacheSet<CareerInfo>().FindKey(general.CareerID);
            }
            else if (type == GeneralType.Soul)
            {
                generalID = general.SoulID;
            }
            if (generalID > 0)
            {
                UserGeneral userGeneral = new UserGeneral();
                userGeneral.UserID = userID;
                userGeneral.GeneralID = generalID;
                userGeneral.GeneralName = general.GeneralName;
                userGeneral.HeadID = general.HeadID;
                userGeneral.PicturesID = general.PicturesID;
                userGeneral.GeneralLv = 1;
                userGeneral.GeneralType = type;
                userGeneral.CareerID = general.CareerID;
                userGeneral.PowerNum = general.PowerNum;
                userGeneral.SoulNum = general.SoulNum;
                userGeneral.IntellectNum = general.IntellectNum;
                userGeneral.TrainingPower = 0;
                userGeneral.TrainingSoul = 0;
                userGeneral.TrainingIntellect = 0;
                userGeneral.AbilityID = general.AbilityID;
                userGeneral.Momentum = 0;
                userGeneral.Description = string.Empty;
                userGeneral.HitProbability = ConfigEnvSet.GetDecimal("Combat.HitiNum");
                userGeneral.GeneralStatus = GeneralStatus.DuiWuZhong;
                userGeneral.CurrExperience = 0;
                userGeneral.Experience1 = 0;
                userGeneral.Experience2 = 0;
                if (careerInfo != null)
                {
                    userGeneral.LifeNum = MathUtils.Addition(general.LifeNum, careerInfo.LifeIncreaseNum * (MathUtils.Subtraction(careerInfo.Lv, (short)1, (short)0)), int.MaxValue);
                }
                if (type == GeneralType.Soul)
                {
                    userGeneral.AtmanNum = num;
                }
                userGeneral.HeritageType = HeritageType.Normal;
                userGeneral.AbilityNum = 3;
                cacheSet.Add(userGeneral, GameEnvironment.CacheUserPeriod);
            }
        }
Example #3
0
 public override bool TakeAction()
 {
     int maxGeneralNum = ContextUser.GeneralMaxNum;
     var userGeneralsList = new PersonalCacheStruct<UserGeneral>().FindAll(ContextUser.UserID, u => u.GeneralStatus == GeneralStatus.DuiWuZhong && u.GeneralType != GeneralType.Soul);
     if (userGeneralsList.Count >= MathUtils.Addition(maxGeneralNum, 1, int.MaxValue))
     {
         ErrorCode = LanguageManager.GetLang().ErrorCode;
         ErrorInfo = LanguageManager.GetLang().St1404_MaxGeneralNumFull;
         return false;
     }
     var generalInfo = new ShareCacheStruct<GeneralInfo>().FindKey(generalID);
     if (generalInfo == null)
     {
         ErrorCode = LanguageManager.GetLang().ErrorCode;
         return false;
     }
     var userGeneral = new PersonalCacheStruct<UserGeneral>().FindKey(ContextUser.UserID, generalID);
     if (userGeneral == null && GeneralHelper.IsGeneralRecruit(ContextUser.UserID, generalID) == 1)
     {
         userGeneral = new UserGeneral();
         userGeneral.UserID = ContextUser.UserID;
         userGeneral.GeneralID = generalID;
         userGeneral.GeneralName = generalInfo.GeneralName;
         userGeneral.HeadID = generalInfo.HeadID;
         userGeneral.PicturesID = generalInfo.PicturesID;
         userGeneral.GeneralLv = (short)generalInfo.GeneralLv;
         userGeneral.LifeNum = generalInfo.LifeNum;
         userGeneral.GeneralType = GeneralType.YongBing;
         userGeneral.CareerID = generalInfo.CareerID;
         userGeneral.PowerNum = generalInfo.PowerNum;
         userGeneral.SoulNum = generalInfo.SoulNum;
         userGeneral.IntellectNum = generalInfo.IntellectNum;
         userGeneral.TrainingPower = 0;
         userGeneral.TrainingSoul = 0;
         userGeneral.TrainingIntellect = 0;
         userGeneral.HitProbability = ConfigEnvSet.GetDecimal("Combat.HitiNum");
         userGeneral.AbilityID = generalInfo.AbilityID;
         userGeneral.Momentum = 0;
         userGeneral.Description = generalInfo.Description;
         userGeneral.GeneralStatus = GeneralStatus.DuiWuZhong;
         userGeneral.CurrExperience = 0;
         userGeneral.Experience1 = 0;
         userGeneral.Experience2 = 0;
         var cacheSet = new PersonalCacheStruct<UserGeneral>();
         cacheSet.Add(userGeneral);
     }
     ErrorCode = 0;
     ErrorInfo = LanguageManager.GetLang().St1434_RecruitmentErfolg;
     return true;
 }
Example #4
0
        /// 获得灵魂
        /// </summary>
        /// <param name="userId"></param>
        /// <param name="itemId"></param>
        /// <param name="num"></param>
        public static void AddGeneralSoul(string userId, int itemId, int num)
        {
            var cacheSetGeneral     = new GameDataCacheSet <UserGeneral>();
            var cacheSetGeneralInfo = new ConfigCacheSet <GeneralInfo>();
            var generalInfo         = cacheSetGeneralInfo.Find(s => s.SoulID == itemId);
            var userGeneral         = cacheSetGeneral.FindKey(userId, itemId);

            if (userGeneral != null && generalInfo != null)
            {
                userGeneral.AtmanNum = MathUtils.Addition(userGeneral.AtmanNum, num).ToShort();
            }
            else
            {
                if (generalInfo != null)
                {
                    userGeneral                   = new UserGeneral();
                    userGeneral.UserID            = userId;
                    userGeneral.GeneralID         = itemId;
                    userGeneral.AtmanNum          = num;
                    userGeneral.GeneralName       = generalInfo.GeneralName;
                    userGeneral.HeadID            = generalInfo.HeadID;
                    userGeneral.PicturesID        = generalInfo.PicturesID;
                    userGeneral.GeneralLv         = generalInfo.GeneralLv;
                    userGeneral.LifeNum           = generalInfo.LifeNum;
                    userGeneral.GeneralType       = generalInfo.GeneralType;
                    userGeneral.CareerID          = generalInfo.CareerID;
                    userGeneral.PowerNum          = generalInfo.PowerNum;
                    userGeneral.SoulNum           = generalInfo.SoulNum;
                    userGeneral.IntellectNum      = generalInfo.IntellectNum;
                    userGeneral.TrainingPower     = 0;
                    userGeneral.TrainingSoul      = 0;
                    userGeneral.TrainingIntellect = 0;
                    userGeneral.HitProbability    = ConfigEnvSet.GetDecimal("Combat.HitiNum");
                    userGeneral.AbilityID         = generalInfo.AbilityID;
                    userGeneral.Momentum          = 0;
                    userGeneral.Description       = generalInfo.Description;
                    userGeneral.AddGeneralStatus(2);
                    userGeneral.CurrExperience = 0;
                    userGeneral.Experience1    = 0;
                    userGeneral.Experience2    = 0;
                    userGeneral.AbilityNum     = 3;
                    cacheSetGeneral.Add(userGeneral, GameEnvironment.CacheUserPeriod);
                }
            }
        }
Example #5
0
 /// <summary>
 /// 好感度升级
 /// </summary>
 /// <param name="general"></param>
 /// <param name="experience"></param>
 public static void GeneralFeelUpgrade(UserGeneral general, int experience, short saturationNum)
 {
     if (general != null)
     {
         int maxSatiationNum = ConfigEnvSet.GetInt("User.FeelMaxSatiationNum");
         general.FeelExperience = MathUtils.Addition(general.FeelExperience, experience);
         general.SaturationNum = MathUtils.Addition(general.SaturationNum, saturationNum, (short)maxSatiationNum);
         while (true)
         {
             short feelLv = MathUtils.Addition(general.FeelLv, (short)1, maxFeelLv);
             FeelLvInfo upfeelLvInfo = new ConfigCacheSet<FeelLvInfo>().FindKey(feelLv);
             if (general.FeelLv < feelLv && upfeelLvInfo != null)
             {
                 if (general.FeelExperience >= upfeelLvInfo.Experience)
                 {
                     general.FeelLv = MathUtils.Addition(general.FeelLv, (short)1, maxFeelLv);
                     general.FeelExperience = MathUtils.Subtraction(general.FeelExperience, upfeelLvInfo.Experience, 0);
                     general.RefreshMaxLife();
                     GeneralInfo generalInfo = new ConfigCacheSet<GeneralInfo>().FindKey(general.GeneralID);
                     if (generalInfo != null && generalInfo.ReplaceSkills != null)
                     {
                         if (general.FeelLv >= generalInfo.ReplaceSkills.FeelLv && general.AbilityID != generalInfo.ReplaceSkills.AbilityID)
                         {
                             general.AbilityID = generalInfo.ReplaceSkills.AbilityID;
                         }
                     }
                 }
                 else
                 {
                     break;
                 }
             }
             else
             {
                 break;
             }
         }
     }
 }
Example #6
0
 private void Process(string userID, int generalID)
 {
     GeneralInfo generalInfo = new ShareCacheStruct<GeneralInfo>().FindKey(generalID);
     if (generalInfo != null)
     {
         var cacheSet = new PersonalCacheStruct<UserGeneral>();
         var usergeneral = cacheSet.FindKey(userID, generalID);
         if (usergeneral == null)
         {
             usergeneral = new UserGeneral()
             {
                 UserID = userID,
                 GeneralID = generalID,
                 GeneralName = generalInfo.GeneralName,
                 HeadID = generalInfo.HeadID,
                 PicturesID = generalInfo.PicturesID,
                 GeneralLv = generalInfo.GeneralLv,
                 LifeNum = generalInfo.LifeNum,
                 GeneralType = GeneralType.YongBing,
                 CareerID = generalInfo.CareerID,
                 PowerNum = generalInfo.PowerNum,
                 SoulNum = generalInfo.SoulNum,
                 IntellectNum = generalInfo.IntellectNum,
                 TrainingPower = 0,
                 TrainingSoul = 0,
                 TrainingIntellect = 0,
                 AbilityID = generalInfo.AbilityID,
                 Momentum = 25,
                 HitProbability = 85,
                 GeneralStatus = GeneralStatus.DuiWuZhong,
                 Experience1 = 0,
                 Experience2 = 0,
                 CurrExperience = 0,
                 Description = string.Empty,
             };
             cacheSet.Add(usergeneral);
         }
     }
 }
Example #7
0
 public override bool TakeAction()
 {
     PlantType pType = (PlantType)Enum.Parse(typeof(PlantType), plantType.ToString());
     UserPlantQuality userPlantQuality = new GameDataCacheSet<UserPlantQuality>().FindKey(ContextUser.UserID, generalID, pType);
     if (userPlantQuality != null)
     {
         plantQualityType = (short)userPlantQuality.PlantQuality;
     }
     else
     {
         UserPlantQuality plant = new UserPlantQuality()
         {
             UserID = ContextUser.UserID,
             GeneralID = generalID,
             PlantQuality = PlantQualityType.PuTong,
             PlantType = pType,
             RefreshNum = 0,
             RefreshDate = DateTime.Now,
         };
         new GameDataCacheSet<UserPlantQuality>().Add(plant, GameEnvironment.CacheUserPeriod);
         plantQualityType = 1;
     }
     PlantQualityType qualityType = (PlantQualityType)Enum.Parse(typeof(PlantQualityType), plantQualityType.ToString());
     short generalLv = 0;
     userGeneral = new GameDataCacheSet<UserGeneral>().FindKey(ContextUser.UserID, generalID);
     if (userGeneral == null)
     {
         ErrorCode = LanguageManager.GetLang().ErrorCode;
         return false;
     }
     if (pType == PlantType.Experience)
     {
         generalLv = ContextUser.UserLv;
     }
     else if (pType == PlantType.GameGoin)
     {
         generalLv = userGeneral.GeneralLv;
     }
     plantInfo = new ConfigCacheSet<PlantInfo>().FindKey(generalLv, plantType, qualityType);
     double addNum = FestivalHelper.SurplusPurchased(ContextUser.UserID, FestivalType.ManorAddition);//活动加成
     rewardNum = plantInfo.GainNum;
     UserLand land = new GameDataCacheSet<UserLand>().FindKey(ContextUser.UserID, landPostion);
     if (land != null && land.IsRedLand == 1)
     {
         rewardNum = MathUtils.Addition(rewardNum, (int)(rewardNum * 0.2), int.MaxValue);
     }
     if (land != null && land.IsBlackLand == 1)
     {
         rewardNum = MathUtils.Addition(rewardNum, (int)(rewardNum * 0.4), int.MaxValue);
     }
     rewardNum = (rewardNum * addNum).ToInt();
     return true;
 }
Example #8
0
        /// <summary>
        /// 佣兵升级
        /// </summary>
        /// <param name="general"></param>
        /// <param name="exprience"></param>
        public static void TriggerGeneral(UserGeneral general, int exprience)
        {
            if (general == null)
            {
                return;
            }
            GameUser user = new GameDataCacheSet<GameUser>().FindKey(general.UserID);
            short generalMaxLv = user == null ? _currMaxLv : (user.UserLv * 3).ToShort();
            if (general.GeneralLv >= generalMaxLv)
            {
                return;
            }
            short nextLv = MathUtils.Addition(general.GeneralLv, 1.ToShort());
            var generalEscalateInfo = new ConfigCacheSet<GeneralEscalateInfo>().FindKey(nextLv, GeneralType.YongBing);
            int tempExpri = generalEscalateInfo.UpExperience - general.CurrExperience;
            if ((general.GeneralLv+1).ToShort() >= (user.UserLv * 3).ToShort() && exprience > tempExpri)
            {
                general.CurrExperience = MathUtils.Addition(general.CurrExperience, tempExpri);
            }
            else
            {

                general.CurrExperience = MathUtils.Addition(general.CurrExperience, exprience);
            }

            while (nextLv <= generalMaxLv)
            {
                GeneralEscalateInfo generalEscalate = new ConfigCacheSet<GeneralEscalateInfo>().FindKey(nextLv, GeneralType.YongBing);
                if (general.GeneralLv >= _currMaxLv)
                {
                    break;
                }
                else if (generalEscalate != null && general.CurrExperience >= generalEscalate.UpExperience)
                {
                    general.RefreshMaxLife();
                    general.SetEscalate(generalEscalate.UpExperience);
                    general.GeneralLv = MathUtils.Addition(general.GeneralLv, (short)1, short.MaxValue);
                    general.LifeNum = general.LifeMaxNum;
                    GeneralHelper.GeneralUpgradeproperty(general); //佣兵升级加属性
                    nextLv = MathUtils.Addition(general.GeneralLv, 1.ToShort());
                    if (general.GeneralLv >= _currMaxLv)
                    {
                        general.CurrExperience = 0;
                    }
                }
                else
                {
                    break;
                }
            }
            if (general.GeneralLv >= generalMaxLv)
            {
                general.CurrExperience = 0;
            }
        }
Example #9
0
        private void CreateGeneral(CareerInfo careerInfo)
        {
            GeneralInfo general = new ShareCacheStruct<GeneralInfo>().FindKey(generalID);
            List<UserGeneral> userGeneralArray = new PersonalCacheStruct<UserGeneral>().FindAll(UserId.ToString());
            if (userGeneralArray.Count > 0 || general == null)
            {
                return;
            }

            UserGeneral userGeneral = new UserGeneral();
            userGeneral.UserID = UserId.ToString();
            userGeneral.GeneralID = general.GeneralID;
            userGeneral.GeneralName = general.GeneralName;
            userGeneral.HeadID = general.HeadID;
            userGeneral.PicturesID = general.PicturesID;
            userGeneral.GeneralLv = (short)careerInfo.Lv;
            userGeneral.GeneralType = GeneralType.YongHu;
            userGeneral.CareerID = _careerID;
            userGeneral.PowerNum = general.PowerNum;
            userGeneral.SoulNum = general.SoulNum;
            userGeneral.IntellectNum = general.IntellectNum;
            userGeneral.TrainingPower = 0;
            userGeneral.TrainingSoul = 0;
            userGeneral.TrainingIntellect = 0;
            userGeneral.AbilityID = general.AbilityID;
            userGeneral.Momentum = 0;
            userGeneral.Description = string.Empty;
            userGeneral.HitProbability = ConfigEnvSet.GetDecimal("Combat.HitiNum");
            userGeneral.GeneralStatus = GeneralStatus.DuiWuZhong;
            userGeneral.CurrExperience = 0;
            userGeneral.Experience1 = 0;
            userGeneral.Experience2 = 0;
            //userGeneral.LifeNum = MathUtils.Addition(general.LifeNum, careerInfo.LifeIncreaseNum * (MathUtils.Subtraction(careerInfo.Lv, (short)1, (short)0)), int.MaxValue);
            userGeneral.RefreshMaxLife();
            userGeneral.HeritageType = HeritageType.Normal;
            userGeneral.AbilityNum = 3;
            var cacheSet = new PersonalCacheStruct<UserGeneral>();
            cacheSet.Add(userGeneral);
            cacheSet.Update();
            UserAbilityHelper.AddUserAbility(general.AbilityID, UserId, generalID, 1);
          
        }
Example #10
0
        public override bool TakeAction()
        {
            bool result = true;
            taskInfo = new ConfigCacheSet<StoryTaskInfo>().FindKey(TaskID);
            if (taskInfo == null)
            {
                ErrorCode = LanguageManager.GetLang().ErrorCode;
                //this.ErrorInfo = LanguageManager.GetLang().St3002_NotFind;
                SaveLog(new Exception(string.Format("{0},User:{1},task:{2}", LanguageManager.GetLang().St3002_NotFind, ContextUser.UserID, TaskID)));
                return false;
            }
            _userGeneral = UserGeneral.GetMainGeneral(Uid);
            //获得奖励
            UserTask userTask = new GameDataCacheSet<UserTask>().FindKey(ContextUser.UserID, TaskID);
            if (userTask == null || userTask.TaskState != TaskState.Completed)
            {
                ErrorCode = LanguageManager.GetLang().ErrorCode;
                ErrorInfo = LanguageManager.GetLang().St3007_NoCompleted;
                return false;
            }
            //交付物品任务扣除材料
            if (taskInfo.TermsType == PlotTermsType.Shouji || taskInfo.TermsType == PlotTermsType.Delivery)
            {
                UserItemHelper.UseUserItem(Uid, taskInfo.TargetItemID, taskInfo.TargetItemNum);
            }
            userTask.TaskState = TaskState.Close;
            UserTaskLog taskLog = new UserTaskLog()
            {
                LogID = Guid.NewGuid().ToString(),
                TaskID = userTask.TaskID,
                UserID = userTask.UserID,
                TaskType = userTask.TaskType,
                TaskState = userTask.TaskState,
                TaskPrize = string.Format("Experience:{0},GameCoin:{1};GameCoin:{2} ",
                    taskInfo.Experience,
                    taskInfo.GameCoin,
                    ContextUser.GameCoin
                ),
                CreateDate = DateTime.Now
            };
            var sender = DataSyncManager.GetDataSender();
            sender.Send(taskLog);

            ContextUser.GameCoin = MathUtils.Addition(ContextUser.GameCoin, taskInfo.GameCoin, int.MaxValue);
            if (taskInfo.TaskType == TaskType.Master && ContextUser.TaskProgress < TaskID)
            {
                ContextUser.TaskProgress = TaskID;
            }
            //ContextUser.Update();

            //任务加佣兵经验
            //var userEmbattles = new GameDataCacheSet<UserEmbattle>().FindAll(UserEmbattle.Index_UserID_MagicID, Uid, ContextUser.UseMagicID);
            //foreach (var userEmbattle in userEmbattles)
            //{
            //    UserGeneral userGeneral = new GameDataCacheSet<UserGeneral>().FindKey(ContextUser.UserID, userEmbattle.GeneralID);
            //    if (userGeneral == null) continue;
            //    userGeneral.CurrExperience = MathUtils.Addition(userGeneral.CurrExperience, taskInfo.Experience, int.MaxValue);
            //    //userGeneral.Update();
            //}
            UserHelper.UserGeneralExp(ContextUser.UserID,taskInfo.Experience);

            //开启功能
            TaskHelper.EnableFunction(ContextUser, taskInfo.FunctionEnum);

            //下发可接任务
            TaskHelper.SendAllowTask(ContextUser, TaskID);

            //开启副本
            PlotHelper.EnablePlot(Uid, taskInfo.EnablePlot);

            //保留主线任务
            var cacheSet = new GameDataCacheSet<UserTask>();
            if (userTask.TaskType == TaskType.Master)
            {
                //userTask.Update();
            }
            else
            {
                //原因:最后支线任务无限刷新BUG
                if (!TaskHelper.IsLastTask(userTask))
                {
                    cacheSet.Delete(userTask);
                }
            }
            return result;
        }
Example #11
0
        public override bool TakeAction()
        {
            int currMaxLv = GameConfigSet.CurrMaxLv;
            string lifeUserID = string.Empty;

            UserCrystalInfo[] userCrystalsArrray = new UserCrystalInfo[0];
            if (!string.IsNullOrEmpty(toUserID))
            {
                var packageCrystal = UserCrystalPackage.Get(toUserID);
                userGeneral = new GameDataCacheSet<UserGeneral>().FindKey(toUserID, generalID);
                userCrystalsArrray = packageCrystal.CrystalPackage.FindAll(m => m.IsSale == 2 && m.GeneralID.Equals(generalID)).ToArray();
                var package = UserItemPackage.Get(toUserID);
                userItemArray = package.ItemPackage.FindAll(
                    u => !u.IsRemove && u.GeneralID.Equals(generalID) &&
                        u.ItemStatus == ItemStatus.YongBing);
                lifeUserID = toUserID;
            }
            else
            {
                var packageCrystal = UserCrystalPackage.Get(ContextUser.UserID);
                userGeneral = new GameDataCacheSet<UserGeneral>().FindKey(ContextUser.UserID, generalID);
                userCrystalsArrray = packageCrystal.CrystalPackage.FindAll(m => m.IsSale == 2 && m.GeneralID.Equals(generalID)).ToArray();

                var package = UserItemPackage.Get(ContextUser.UserID);
                userItemArray = package.ItemPackage.FindAll(u => !u.IsRemove && u.GeneralID.Equals(generalID) && u.ItemStatus == ItemStatus.YongBing);
                lifeUserID = ContextUser.UserID;
            }
            UserCacheGlobal.LoadOffline(lifeUserID);
            GeneralInfo generalInfo = new ConfigCacheSet<GeneralInfo>().FindKey(generalID);
            generalQuality = generalInfo == null ? (short)0 : generalInfo.GeneralQuality;
            if (generalInfo != null && userGeneral != null)
            {
                description = generalInfo.Description;
                if (userGeneral.GeneralLv >= currMaxLv)
                {
                    genLv = (short)currMaxLv;
                    userGeneral.CurrExperience = 0;
                }
                else
                {
                    genLv = userGeneral.GeneralLv;
                }
                generalName = userGeneral.GeneralName;
                headID = userGeneral.HeadID;
                picturesID = userGeneral.PicturesID;
                _battleHeadId = generalInfo.BattleHeadID;
                _hitProbability = generalInfo.HitProbability;
                careerInfo = new ConfigCacheSet<CareerInfo>().FindKey(userGeneral.CareerID);
                GeneralEscalateInfo generalEscalate = new ConfigCacheSet<GeneralEscalateInfo>().FindKey(genLv);
                if (generalEscalate != null)
                {
                    currExperience = userGeneral.CurrExperience;
                    maxExperience = generalEscalate.UpExperience;
                }
                powerNum = MathUtils.Addition(userGeneral.PowerNum, userGeneral.TrainingPower, short.MaxValue);
                soulNum = MathUtils.Addition(userGeneral.SoulNum, userGeneral.TrainingSoul, short.MaxValue);
                intellectNum = MathUtils.Addition(userGeneral.IntellectNum, userGeneral.TrainingIntellect, short.MaxValue);
                if (!string.IsNullOrEmpty(ContextUser.MercenariesID) && generalID == LanguageManager.GetLang().GameUserGeneralID)
                {
                    //公会技能加成
                    powerNum = MathUtils.RoundCustom(powerNum * CombatHelper.GetGuildAbilityNum(ContextUser.UserID, GuildAbilityType.PowerNum)).ToShort();
                    soulNum = MathUtils.RoundCustom(soulNum * CombatHelper.GetGuildAbilityNum(ContextUser.UserID, GuildAbilityType.SoulNum)).ToShort();
                    intellectNum = MathUtils.RoundCustom(intellectNum * CombatHelper.GetGuildAbilityNum(ContextUser.UserID, GuildAbilityType.IntellectNum)).ToShort();
                }
                if (generalID == LanguageManager.GetLang().GameUserGeneralID)
                {
                    //法宝基础属性加成
                    powerNum = MathUtils.Addition(powerNum, TrumpAbilityAttack.TrumpPropertyNum(ContextUser.UserID, generalID, AbilityType.PowerNum));
                    soulNum = MathUtils.Addition(soulNum, TrumpAbilityAttack.TrumpPropertyNum(ContextUser.UserID, generalID, AbilityType.SoulNum));
                    intellectNum = MathUtils.Addition(intellectNum, TrumpAbilityAttack.TrumpPropertyNum(ContextUser.UserID, generalID, AbilityType.IntelligenceNum));

                    //法宝--技能属性转换获得的值
                    //法宝--技能属性转换获得的值
                    decimal trumpPower = TrumpAbilityAttack.ConversionPropertyNum(ContextUser.UserID, powerNum, soulNum, intellectNum, AbilityType.PowerNum);
                    decimal trumpsoul = TrumpAbilityAttack.ConversionPropertyNum(ContextUser.UserID, powerNum, soulNum, intellectNum, AbilityType.SoulNum);
                    decimal trumpintellect = TrumpAbilityAttack.ConversionPropertyNum(ContextUser.UserID, powerNum, soulNum, intellectNum, AbilityType.IntelligenceNum);
                    powerNum = MathUtils.Addition(trumpPower.ToShort(), powerNum);
                    soulNum = MathUtils.Addition(trumpsoul.ToShort(), soulNum);
                    intellectNum = MathUtils.Addition(trumpintellect.ToShort(), intellectNum);
                }
                lifeNum = userGeneral.LifeNum;
                lifeMaxNum = UserHelper.GetMaxLife(lifeUserID, generalID);
                genLv = userGeneral.GeneralLv;
                generalStatus = (short)userGeneral.GeneralStatus;

                talentAbility = userGeneral.AbilityID;
                _potential = userGeneral.Potential;
                _battleHeadID = generalInfo.BattleHeadID;
                //玩家佣兵职业名称
                userCareerName = careerInfo.CareerName;
            }
            else if (generalInfo != null)
            {
                genLv = 1;
                generalName = generalInfo.GeneralName;
                headID = generalInfo.HeadID;
                picturesID = generalInfo.PicturesID;
                _battleHeadId = generalInfo.BattleHeadID;
                careerInfo = new ConfigCacheSet<CareerInfo>().FindKey(generalInfo.CareerID);
                GeneralEscalateInfo generalEscalate = new ConfigCacheSet<GeneralEscalateInfo>().FindKey(genLv);
                if (generalEscalate != null)
                {
                    currExperience = 0;
                    maxExperience = generalEscalate.UpExperience;
                }
                powerNum = generalInfo.PowerNum;
                soulNum = generalInfo.SoulNum;
                intellectNum = generalInfo.IntellectNum;
                lifeNum = generalInfo.LifeNum;
                lifeMaxNum = generalInfo.LifeNum;
                genLv = generalInfo.GeneralLv;
                generalStatus = (short)GeneralStatus.KeZhaoMu;

                talentAbility = generalInfo.AbilityID;
            }
            AbilityInfo ability = new ConfigCacheSet<AbilityInfo>().FindKey(talentAbility);
            talentName = ability == null ? string.Empty : ability.AbilityName;

            gPropertyList = CombatHelper.GetAbility(lifeUserID, generalID, userGeneral);

            int sumCrystal = 0;
            foreach (UserCrystalInfo crystal in userCrystalsArrray)
            {
                sumCrystal = MathUtils.Addition(sumCrystal, crystal.CurrExprience, int.MaxValue);
            }
            vitalityNum = (sumCrystal / 10);
            functionList = ViewHelper.GetFunctionList(lifeUserID);

            //佣兵魂技
            UserAbility userAbility = new GameDataCacheSet<UserAbility>().FindKey(ContextUser.UserID);
            if (userAbility != null)
            {
                abilityList = userAbility.AbilityList.FindAll(s => s.GeneralID == generalID);
            }
            soulGrid = UserPackHelper.GetPackTypePositionNum(BackpackType.HunJi, ContextUser.UserID);

            // 缘分系统
            KarmaInfo karmaInfo = new ShareCacheStruct<KarmaInfo>().FindKey(generalID);

            if (karmaInfo != null && karmaInfo.KarmaList != null)
            {
                // 满足缘分条件显示激活状态

                // 判断佣兵
                UserMagic userMagic = new GameDataCacheSet<UserMagic>().Find(ContextUser.UserID, s => s.IsEnabled);
                var cacheSetUserEmbattle = new GameDataCacheSet<UserEmbattle>();
                List<Karma> yongBingList = karmaInfo.KarmaList.FindAll(s => s.KarmaType == KarmaType.YongBing);
                yongBingList.ForEach(yongBingInfo =>
                                         {
                                             //yongBingInfo.IsActive = 1;
                                             // 若阵型中存在该记录,该缘分为激活状态
                                             if (yongBingInfo.ValueID.Contains(","))
                                             {
                                                 string[] valueID = yongBingInfo.ValueID.Split(',');
                                                 int i = 0;
                                                 foreach (var id in valueID)
                                                 {
                                                     if (cacheSetUserEmbattle.Find(ContextUser.UserID, s => s.MagicID == userMagic.MagicID && s.GeneralID == MathUtils.ToInt(id)) != null)
                                                     {
                                                         i++;
                                                     }
                                                 }
                                                 yongBingInfo.IsActive = i == valueID.Length ? 1 : 0;

                                             }
                                             else
                                             {
                                                 if (cacheSetUserEmbattle.Find(ContextUser.UserID, s => s.MagicID == userMagic.MagicID && s.GeneralID == MathUtils.ToInt(yongBingInfo.ValueID)) != null)
                                                 {
                                                     yongBingInfo.IsActive = 1;
                                                 }
                                                 else
                                                 {
                                                     yongBingInfo.IsActive = 0;
                                                 }

                                             }
                                         });
                // 判断装备
                UserItemPackage itemPackage = new GameDataCacheSet<UserItemPackage>().FindKey(UserId.ToString());
                if (itemPackage != null)
                {
                    List<Karma> itemList = karmaInfo.KarmaList.FindAll(s => s.KarmaType == KarmaType.ZhuangBei);
                    itemList.ForEach(itemInfo =>
                    {
                        if (itemPackage.ItemPackage.Find(s => s.ItemID == MathUtils.ToInt(itemInfo.ValueID) && s.GeneralID == generalID) != null)
                        {
                            itemInfo.IsActive = 1;
                        }
                        else
                        {
                            itemInfo.IsActive = 0;
                        }
                    });
                }

                // 判断命运水晶
                UserCrystalPackage crystalPackage = new GameDataCacheSet<UserCrystalPackage>().FindKey(UserId.ToString());
                if (itemPackage != null)
                {
                    List<Karma> crystalList = karmaInfo.KarmaList.FindAll(s => s.KarmaType == KarmaType.ShuiJing);
                    crystalList.ForEach(crystalInfo =>
                    {
                        if (crystalPackage.CrystalPackage.Find(s => s.CrystalID == MathUtils.ToInt(crystalInfo.ValueID) && s.GeneralID == generalID) != null)
                        {
                            crystalInfo.IsActive = 1;
                        }
                        else
                        {
                            crystalInfo.IsActive = 0;
                        }
                    });
                }

                // 判断技能
                UserAbility userAbilityInfo = new GameDataCacheSet<UserAbility>().FindKey(UserId.ToString());
                if (userAbilityInfo != null)
                {
                    List<Karma> abilityList = karmaInfo.KarmaList.FindAll(s => s.KarmaType == KarmaType.JiNen);
                    abilityList.ForEach(abilityInfo =>
                                            {
                                                if (userAbilityInfo.AbilityList.Find(s => s.AbilityID == MathUtils.ToInt(abilityInfo.ValueID) && s.GeneralID == generalID) != null)
                                                {
                                                    abilityInfo.IsActive = 1;
                                                }
                                                else
                                                {
                                                    abilityInfo.IsActive = 0;
                                                }
                                            });
                }
                karmaList = karmaInfo.KarmaList;
                if (userGeneral != null)
                {
                    lifeNum = userGeneral.TLifeNum;
                    lifeMaxNum = userGeneral.TLifeMaxNun;
                }
            }
            return true;
        }
Example #12
0
 public override bool TakeAction()
 {
     string publicUserID = string.Empty;
     if (string.IsNullOrEmpty(toUserID))
     {
         publicUserID = ContextUser.UserID;
     }
     else
     {
         publicUserID = toUserID;
         UserCacheGlobal.LoadOffline(publicUserID);
     }
     generalInfo = UserGeneral.GetMainGeneral(publicUserID);
     generalMedicineArray = new PersonalCacheStruct<GeneralMedicine>().FindAll(publicUserID, m => m.GeneralID == generalID);
     foreach (GeneralMedicine medicine in generalMedicineArray)
     {
         if (medicine.MedicineType == 1)
         {
             powerNum = MathUtils.Addition(powerNum, (short)medicine.BaseNum, short.MaxValue);
         }
         else if (medicine.MedicineType == 2)
         {
             soulNum = MathUtils.Addition(soulNum, (short)medicine.BaseNum, short.MaxValue);
         }
         else if (medicine.MedicineType == 3)
         {
             intellectNum = MathUtils.Addition(intellectNum, (short)medicine.BaseNum, short.MaxValue);
         }
     }
     return true;
 }
Example #13
0
 public override bool TakeAction()
 {
     userGeneral = new GameDataCacheSet<UserGeneral>().FindKey(ContextUser.UserID, generalID);
     cultureList = UserHelper.GetCultureType(ContextUser.UserID, generalID);
     return true;
 }
Example #14
0
        public override bool TakeAction()
        {
            UserHelper.GetFeelHunger(ContextUser.UserID, generalID);
            UserHelper.ChechDailyRestrain(ContextUser.UserID);
            generalInfo = new ConfigCacheSet<GeneralInfo>().FindKey(generalID);
            if (generalInfo != null)
            {
                giftName = GiftHelper.GetGiftTypeName(generalInfo.GiftType);
                if (generalInfo.ReplaceSkills != null)
                {
                    demandLv = generalInfo.ReplaceSkills.FeelLv;
                    AbilityInfo abilityInfo =
                        new ConfigCacheSet<AbilityInfo>().FindKey(generalInfo.ReplaceSkills.AbilityID);
                    if (abilityInfo != null)
                    {
                        skillName = abilityInfo.AbilityName;
                        skillDesc = abilityInfo.AbilityDesc;
                    }
                }
            }
            userGeneral = new GameDataCacheSet<UserGeneral>().FindKey(ContextUser.UserID, generalID);
            if (userGeneral != null)
            {
                FeelLvInfo feelLvInfo = new ConfigCacheSet<FeelLvInfo>().FindKey(userGeneral.FeelLv);
                if (feelLvInfo != null)
                {
                    propertyList = feelLvInfo.Property.ToList();
                }
                short feelLv = MathUtils.Addition(userGeneral.FeelLv, (short)1, GiftHelper.maxFeelLv);
                FeelLvInfo upfeelLvInfo = new ConfigCacheSet<FeelLvInfo>().FindKey(feelLv);
                if (upfeelLvInfo != null)
                {
                    upExperience = upfeelLvInfo.Experience;
                }
                if (demandLv > 0 && userGeneral.FeelLv >= demandLv)
                {
                    isLearn = 1;
                }
                else
                {
                    isLearn = 0;
                }
            }

            goldNum = GiftHelper.SurplusGoldNum(ContextUser.UserID);
            int _itemid = 5050; //消除饱食度物品ID
            var package = UserItemPackage.Get(ContextUser.UserID);
            var itemArray =
                package.ItemPackage.FindAll(
                    m => m.ItemStatus.Equals(ItemStatus.BeiBao) && m.ItemID.Equals(_itemid));
            if (itemArray.Count > 0)
            {
                isSaturation = 1;
            }
            else
            {
                isSaturation = 0;
            }

            return true;
        }
Example #15
0
 public override bool TakeAction()
 {
     var userGeneralList = new GameDataCacheSet<UserGeneral>().FindAll(ContextUser.UserID,
                                                                       s =>
                                                                       s.GeneralID != generalID &&
                                                                       s.GeneralType == GeneralType.YongBing && s.GeneralType != GeneralType.Soul);
     foreach (var general in userGeneralList)
     {
         general.GeneralCard = string.Empty;
     }
     userGeneral = new GameDataCacheSet<UserGeneral>().FindKey(ContextUser.UserID, generalID);
     if (userGeneral != null)
     {
         nextLv = MathUtils.Addition(userGeneral.GeneralLv, (short)1);
         if (!string.IsNullOrEmpty(userGeneral.GeneralCard))
         {
             strUserItemID = userGeneral.GeneralCard.TrimEnd(',').Split(',');
         }
     }
     var generalInfo = new ConfigCacheSet<GeneralInfo>().FindKey(generalID);
     if (generalInfo != null)
     {
         isUp = 1;
     }
     return true;
 }
Example #16
0
        public override bool TakeAction()
        {
            short currMaxLv = ConfigEnvSet.GetInt("User.CurrMaxLv").ToShort();
            //NoviceHelper.CheckFestival(ContextUser);

            NoviceHelper.GetFunctionEnum(Uid); //默认开启金币,精力大作战功能
            if (!string.IsNullOrEmpty(ContextUser.MercenariesID))
            {
                UserHelper.ChecheDailyContribution(ContextUser.MercenariesID, ContextUser.UserID);
            }
            PaymentService.Trigger(ContextUser);
            if (ContextUser.UserLv > currMaxLv)
            {
                genlv = currMaxLv;
            }
            else
            {
                genlv = ContextUser.UserLv;
            }
            var cacheSetGeneralEscalate = new ConfigCacheSet<GeneralEscalateInfo>();
            GeneralEscalateHelper.AddUserLv(ContextUser, 0);
            _honourNum = ContextUser.HonourNum;
            int lv = ContextUser.UserLv;
            lv = lv < 0 ? 1 : lv + 1;
            var generalEscalate =
                cacheSetGeneralEscalate.Find(s => s.GeneralType == GeneralType.YongHu && s.GeneralLv == lv);
            if (generalEscalate != null)
            {
                _nextHonourNum = generalEscalate.UpExperience;
            }
            guildID = ContextUser.MercenariesID;
            var userGeneralList = new GameDataCacheSet<UserGeneral>().FindAll(ContextUser.UserID);
            if (userGeneralList.Count == 0)
            {
                ErrorCode = LanguageManager.GetLang().ErrorCode;
                return false;
            }

            userGeneralInfo = userGeneralList[0]; //UserGeneral.GetMainGeneral(ContextUser.UserID);
            if (userGeneralInfo != null)
            {
                //wuzf 去掉刷新血量,其它改变血量接口有触发刷新
                //userGeneralInfo.RefreshMaxLife();
                generalID = userGeneralInfo.GeneralID;
                //careerInfo = new ConfigCacheSet<CareerInfo>().FindKey(userGeneralInfo.CareerID);
                headID = userGeneralInfo.HeadID; //ContextUser.Sex ? careerInfo.HeadID2 : careerInfo.HeadID;
                escalateInfo = new ConfigCacheSet<GeneralEscalateInfo>().FindKey(genlv);
                lifeNum = userGeneralInfo.LifeNum;
                careerID = userGeneralInfo.CareerID;
            }
            lifeMaxNum = UserHelper.GetMaxLife(ContextUser.UserID, generalID);
            maxEnergyNum = (short)ConfigEnvSet.GetInt("User.MaxEnergyNum");
            sex = ContextUser.Sex ? 1 : 0;

            //道具图标
            _blessingList = UserHelper.BlessingInfoList(ContextUser);
            //变身卡图标
            List<UserProps> userPropsList = new GameDataCacheSet<UserProps>().FindAll(ContextUser.UserID, u => u.PropType == 3 && u.ItemID != 5200 && u.ItemID != 7003);
            if (userPropsList.Count > 0)
            {
                UserProps props = userPropsList[0];
                int pTime = props.DoRefresh();
                ItemBaseInfo itemInfo = new ConfigCacheSet<ItemBaseInfo>().FindKey(props.ItemID);
                if (itemInfo != null && pTime > pictureTime)
                {
                    pictureID = itemInfo.PictrueID;
                    pictureTime = pTime;
                }
            }
            //兼容客户端上已版本血量图标
            List<UserProps> userPropsList2 = new GameDataCacheSet<UserProps>().FindAll(ContextUser.UserID, u => u.PropType == 1);
            if (userPropsList2.Count > 0)
            {
                UserProps props = userPropsList2[0];
                int pTime = props.DoRefresh();
                ItemBaseInfo itemInfo = new ConfigCacheSet<ItemBaseInfo>().FindKey(props.ItemID);
                if (itemInfo != null && pTime > pictureTime)
                {
                    _itemLiveNum = props.SurplusNum;
                    _itemLiveMaxNum = itemInfo.EffectNum;
                }
            }


            //加量,领土战不能加血wuzf)
            if (ContextUser.UserStatus != UserStatus.CountryCombat)
            {
                UserHelper.GetGeneralLife(ContextUser.UserID);
            }
          


            //精力恢复
            List<UserQueue> energyQueueArray = new GameDataCacheSet<UserQueue>().FindAll(ContextUser.UserID, m => m.QueueType == QueueType.EnergyHuiFu);
            if (energyQueueArray.Count > 0)
            {
                UserQueue energyQueue = energyQueueArray[0];
                short energyMaxNum = (short)ConfigEnvSet.GetInt("User.MaxEnergyNum");
                int restorationDate = ConfigEnvSet.GetInt("UserQueue.EnergyRestorationDate"); //半小时
                int restorationNum = ConfigEnvSet.GetInt("UserQueue.EnergyRestorationNum"); //恢复5点

                if (energyQueue.Timing > DateTime.Now)
                {
                    energyQueue.Timing = DateTime.Now;
                }
                //原因:玩家满精力时,精力恢复累加
                int timeCount = (int)(DateTime.Now - energyQueue.Timing).TotalSeconds / restorationDate;
                if (timeCount > 0)
                {
                    short energyNum = (short)(timeCount * restorationNum);
                    if (ContextUser.EnergyNum < energyMaxNum)
                    {
                        ContextUser.EnergyNum = MathUtils.Addition(ContextUser.EnergyNum, energyNum, energyMaxNum);
                    }
                    energyQueue.Timing = DateTime.Now;
                }
                else
                {
                    if (energyMaxNum > ContextUser.EnergyNum)
                    {
                        rstore = (int)(energyQueue.Timing.AddSeconds(restorationDate) - DateTime.Now).TotalSeconds;
                        totalRstore =
                            (energyQueue.Timing.AddSeconds((energyMaxNum - ContextUser.EnergyNum) * restorationDate) -
                             DateTime.Now).TotalSeconds.ToInt();
                    }
                }

            }
            else
            {
                UserQueue queue = new UserQueue()
                {
                    QueueID = Guid.NewGuid().ToString(),
                    UserID = ContextUser.UserID,
                    QueueType = QueueType.EnergyHuiFu,
                    QueueName = QueueType.EnergyHuiFu.ToString(),
                    Timing = DateTime.Now,
                    ColdTime = 0,
                    TotalColdTime = 0,
                    IsSuspend = false,
                    StrengNum = 0
                };
                new GameDataCacheSet<UserQueue>().Add(queue);
            }


            VipLvInfo lvInfo = new ConfigCacheSet<VipLvInfo>().FindKey(MathUtils.Addition(ContextUser.VipLv, 1, int.MaxValue));
            if (lvInfo != null)
            {
                demandGold = MathUtils.Subtraction(lvInfo.PayGold, ContextUser.PayGold, 0);
                demandGold = MathUtils.Subtraction(demandGold, ContextUser.ExtGold, 0);
            }
            UserHelper.GetGameUserCombat(ContextUser.UserID);

            if ((int)(DateTime.Now - ContextUser.DailyLoginTime).TotalSeconds <= 5 && ContextUser.UserLv > 10)
            {
                isHelper = 1;
            }
            FestivalHelper.DoFestival(ContextUser);
            if (ContextUser.UserExtend != null)
            {
                if ((plotstatucID > 0 || ContextUser.TempEnergyNum == 0) && !ContextUser.UserExtend.IsBoss)
                {
                    ContextUser.TempEnergyNum = 1;
                }

                if ((plotstatucID == 0 && ContextUser.TempEnergyNum == 0) || ContextUser.UserExtend.IsBoss)
                {
                    ContextUser.UserExtend.UpdateNotify(obj =>
                    {
                        ContextUser.UserExtend.PlotStatusID = 0;
                        ContextUser.UserExtend.PlotNpcID = -1;
                        ContextUser.UserExtend.MercenarySeq = 0;
                        ContextUser.UserExtend.IsBoss = false;
                        return true;
                    });
                }

                plotstatucID = ContextUser.UserExtend.PlotStatusID;
                mercenarySeq = ContextUser.UserExtend.MercenarySeq;
                cardUserID = ContextUser.UserExtend.CardUserID;
            }

            //公会晨练结束,退出公会晨练
            int activeID = 11;
            GameActive active = new ShareCacheStruct<GameActive>().FindKey(activeID);
            if (active != null)
            {
                DateTime stratTime = active.BeginTime;
                DateTime endTime = active.BeginTime.AddMinutes(active.Minutes);
                if (ContextUser.UserLocation == Location.GuildExercise && (DateTime.Now < stratTime || DateTime.Now > endTime))
                {
                    ContextUser.UserLocation = Location.Guid;
                }
            }
            DateTime nextDate;
            FightStage stage = GuildFightCombat.GetStage(out nextDate);
            //公会战结束后
            if (stage == FightStage.Apply && ContextUser.UserStatus == UserStatus.FightCombat)
            {
                ContextUser.UserStatus = UserStatus.Normal;
            }
            battleNum = EmbattleHelper.CurrEmbattle(ContextUser.UserID, true).Count;
            totalBattle = EmbattleHelper.CurrEmbattle(ContextUser.UserID, false).Count;
            var userEmbattleList = EmbattleHelper.CurrEmbattle(ContextUser.UserID, true);
            foreach (var userEmbattle in userEmbattleList)
            {
                _talPriority = MathUtils.Addition(_talPriority, PriorityHelper.GeneralTotalPriority(ContextUser.UserID, userEmbattle.GeneralID));
            }
            functionList = new GameDataCacheSet<UserFunction>().FindAll(ContextUser.UserID);

            // 精灵祝福
            if (ContextUser != null)
            {
                if (MathUtils.SqlMinDate == ContextUser.WizardDate)  // 玩家第一次进入
                {
                    ContextUser.WizardDate = DateTime.Now;
                    ContextUser.WizardNum = 1;
                }
                else
                {

                    double diffHours = (DateTime.Now - ContextUser.WizardDate).TotalHours;
                    if (diffHours >= 1)
                    {
                        ContextUser.WizardNum = MathUtils.Addition(ContextUser.WizardNum, Convert.ToInt32(diffHours), 3);
                        ContextUser.WizardDate = DateTime.Now;
                    }
                }
            }

            // 未读信件的数量
            TjxMailService tjxMailService = new TjxMailService(ContextUser);
            tjxMailService.GetMail(out unReadCount);
            return true;
        }
Example #17
0
        /// <summary>
        /// 佣兵升级
        /// </summary>
        /// <param name="userGeneral"></param>
        public static void GeneralUp(UserGeneral userGeneral)
        {

            var cacheSetGeneralEscalate = new ShareCacheStruct<GeneralEscalateInfo>();
            var GeneralEscalateList = cacheSetGeneralEscalate.FindAll(s => s.GeneralType == GeneralType.YongBing && s.UpExperience <= userGeneral.CurrExperience);
            short generalLv = userGeneral.GeneralLv;
            GeneralEscalateInfo generalEscalateInfo = new GeneralEscalateInfo();
            GeneralEscalateList.ForEach(item =>
            {
                if (item.GeneralLv > generalLv)
                {
                    generalLv = item.GeneralLv;
                    generalEscalateInfo = item;
                }
            });
            if (generalLv > userGeneral.GeneralLv)
            {
                userGeneral.GeneralLv = generalLv;

                userGeneral.CurrExperience = MathUtils.Subtraction(userGeneral.CurrExperience, generalEscalateInfo.UpExperience);

            }
        }
Example #18
0
 /// <summary>
 /// 升级加属性
 /// </summary>
 /// <param name="general"></param>
 /// <param name="property"></param>
 public static void UpdateGeneralPro(UserGeneral general, AbilityType type, decimal num)
 {
     if (type == AbilityType.Potential)
     {
         general.Potential = MathUtils.Addition(general.Potential, num).ToInt();
     }
     var property = general.Attribute.Find(s => s.AbilityType == type);
     if (property != null)
     {
         general.Attribute.UpdateNotify(obj =>
         {
             property.AbilityValue = MathUtils.Addition(property.AbilityValue, num);
             return true;
         });
         //property.UpdateNotify(obj =>
         //{
         //    property.AbilityValue = num;
         //    return true;
         //});
     }
     else
     {
         property = new GeneralProperty();
         property.AbilityType = type;
         property.AbilityValue = num;
         general.Attribute.Add(property);
     }
 }
Example #19
0
 /// <summary>
 /// 佣兵升级加升级属性
 /// </summary>
 /// <param name="general"></param>
 public static void GeneralUpgradeproperty(UserGeneral general)
 {
     GeneralInfo generalInfo = new ShareCacheStruct<GeneralInfo>().FindKey(general.GeneralID);
     if (generalInfo != null && generalInfo.Mature.Count > 0)
     {
         foreach (var mature in generalInfo.Mature)
         {
             UpdateGeneralPro(general, mature.AbilityType, mature.AbilityValue);
         }
     }
 }
Example #20
0
        public override bool TakeAction()
        {
            var cacheSet = new GameDataCacheSet<UserGeneral>();
            if (recruitType == RecruitType.SoulRecruit)
            {
                general = new ConfigCacheSet<GeneralInfo>().FindKey(soulID);
                if (general == null)
                {
                    ErrorCode = LanguageManager.GetLang().ErrorCode;
                    return false;
                }
                UserGeneral userGeneral = cacheSet.FindKey(ContextUser.UserID, soulID);
                if (soulID == 0 || userGeneral != null)
                {
                    UserItemHelper.AddUserItem(ContextUser.UserID, general.ItemID, 1);
                }
                else
                {
                    userGeneral = new UserGeneral();
                    userGeneral.UserID = ContextUser.UserID;
                    cacheSet.Add(userGeneral, GameEnvironment.CacheUserPeriod);
                    userGeneral.GeneralID = general.GeneralID;
                    userGeneral.GeneralName = general.GeneralName;
                    userGeneral.HeadID = general.HeadID;
                    userGeneral.PicturesID = general.PicturesID;
                    userGeneral.GeneralLv = (short)general.GeneralLv;
                    userGeneral.LifeNum = general.LifeNum;
                    userGeneral.GeneralType = GeneralType.YongBing;
                    userGeneral.CareerID = general.CareerID;
                    userGeneral.PowerNum = general.PowerNum;
                    userGeneral.SoulNum = general.SoulNum;
                    userGeneral.IntellectNum = general.IntellectNum;
                    userGeneral.TrainingPower = 0;
                    userGeneral.TrainingSoul = 0;
                    userGeneral.TrainingIntellect = 0;
                    userGeneral.HitProbability = ConfigEnvSet.GetDecimal("Combat.HitiNum");
                    userGeneral.AbilityID = general.AbilityID;
                    userGeneral.Momentum = 0;
                    userGeneral.Description = general.Description;
                    userGeneral.GeneralStatus = GeneralStatus.DuiWuZhong;
                    userGeneral.CurrExperience = 0;
                    userGeneral.Experience1 = 0;
                    userGeneral.Experience2 = 0;
                }
            }
            else
            {
                RecruitRule recruitRule = new ConfigCacheSet<RecruitRule>().FindKey(recruitType);
                if (recruitRule == null)
                {
                    ErrorCode = LanguageManager.GetLang().ErrorCode;
                    return false;
                }
                int surplusNum = GeneralHelper.SurplusNum(ContextUser.UserID, recruitRule.FreeNum,
                                                          recruitRule.RecruitType.ToEnum<RecruitType>());
                if (surplusNum > 0 && !GeneralHelper.GeneralRecruitColdTime(ContextUser.UserID, recruitType))
                {
                    GeneralHelper.UpdateDailyRecruitNum(ContextUser.UserID, recruitType);
                    GeneralHelper.UpdateRecruitColdTime(ContextUser.UserID, recruitRule);
                }
                else
                {
                    if (ContextUser.GoldNum < recruitRule.GoldNum)
                    {
                        ErrorCode = LanguageManager.GetLang().ErrorCode;
                        ErrorInfo = LanguageManager.GetLang().St_GoldNotEnough;
                        return false;
                    }
                    ContextUser.UseGold = MathUtils.Addition(ContextUser.UseGold, recruitRule.GoldNum);
                }

                CacheList<RecruitInfo> recruitInfos = recruitRule.GeneralQuality;
                double[] probability = new double[recruitInfos.Count];
                for (int i = 0; i < recruitInfos.Count; i++)
                {
                    probability[i] = (double)recruitInfos[i].Probability;
                }
                int index2 = RandomUtils.GetHitIndex(probability);
                GeneralQuality quality = recruitInfos[index2].Quality;
                var generalList = new ConfigCacheSet<GeneralInfo>().FindAll(s => s.GeneralQuality == quality);
                if (generalList.Count > 0)
                {
                    int indexradom = RandomUtils.GetRandom(0, generalList.Count);
                    if (indexradom < 0 || indexradom >= generalList.Count)
                    {
                        return false;
                    }
                    general = generalList[indexradom];

                    UserGeneral userGeneral = cacheSet.FindKey(ContextUser.UserID, general.GeneralID);

                    if (userGeneral != null && userGeneral.GeneralStatus != GeneralStatus.YinCang)
                    {
                        currSoulID = general.SoulID;
                        gainNum = general.DemandNum;
                        userGeneral = cacheSet.FindKey(ContextUser.UserID, currSoulID);
                        if (userGeneral != null)
                        {
                            userGeneral.AtmanNum = MathUtils.Addition(userGeneral.AtmanNum, gainNum);
                            generalType = GeneralType.Soul;
                        }
                        else
                        {
                            userGeneral = new UserGeneral();
                            userGeneral.UserID = ContextUser.UserID;
                            userGeneral.GeneralID = currSoulID;
                            generalType = GeneralType.Soul;
                            cacheSet.Add(userGeneral, GameEnvironment.CacheUserPeriod);
                            UserAbilityHelper.AddUserAbility(general.AbilityID, ContextUser.UserID.ToInt(), general.GeneralID,1);
                        }
                    }
                    else if (userGeneral == null)
                    {
                        userGeneral = new UserGeneral();
                        userGeneral.UserID = ContextUser.UserID;
                        userGeneral.GeneralID = general.GeneralID;
                        generalType = GeneralType.YongBing;
                        cacheSet.Add(userGeneral, GameEnvironment.CacheUserPeriod);
                        UserAbilityHelper.AddUserAbility(general.AbilityID, ContextUser.UserID.ToInt(), general.GeneralID,1);
                    }
                    userGeneral.GeneralName = general.GeneralName;
                    userGeneral.HeadID = general.HeadID;
                    userGeneral.PicturesID = general.PicturesID;
                    userGeneral.GeneralLv = (short)general.GeneralLv;
                    userGeneral.LifeNum = general.LifeNum;
                    userGeneral.GeneralType = generalType;
                    userGeneral.CareerID = general.CareerID;
                    userGeneral.PowerNum = general.PowerNum;
                    userGeneral.SoulNum = general.SoulNum;
                    userGeneral.IntellectNum = general.IntellectNum;
                    userGeneral.TrainingPower = 0;
                    userGeneral.TrainingSoul = 0;
                    userGeneral.TrainingIntellect = 0;
                    userGeneral.HitProbability = ConfigEnvSet.GetDecimal("Combat.HitiNum");
                    userGeneral.AbilityID = general.AbilityID;
                    userGeneral.Momentum = 0;
                    userGeneral.Description = general.Description;
                    userGeneral.GeneralStatus = GeneralStatus.DuiWuZhong;
                    userGeneral.CurrExperience = 0;
                    userGeneral.Experience1 = 0;
                    userGeneral.Experience2 = 0;

                    //玩家抽取到蓝色和紫色佣兵时,给予系统频道提示
                    //if (recruitType != RecruitType.SoulRecruit)
                    //{
                    //    if (general.GeneralQuality.ToEnum<GeneralQuality>() == GeneralQuality.Blue || general.GeneralQuality.ToEnum<GeneralQuality>() == GeneralQuality.Purple)
                    //    {
                    //        string content = string.Empty;
                    //        content = string.Format(LanguageManager.GetLang().St_UserGetGeneralQuality, ContextUser.NickName,recruitType,
                    //                            general.GeneralQuality.ToEnum<GeneralQuality>(), general.GeneralName);
                    //        new TjxChatService().SystemSend(ChatType.System, content);
                    //    }
                    //}
                }
            }
            return true;
        }
Example #21
0
 public override bool TakeAction()
 {
     string publicUserID = string.Empty;
     if (string.IsNullOrEmpty(toUserID))
     {
         publicUserID = ContextUser.UserID;
     }
     else
     {
         publicUserID = toUserID;
     }
     var package = UserCrystalPackage.Get(publicUserID);
     userCrystalArray = package.CrystalPackage.FindAll(m => m.GeneralID.Equals(_generalID));
     userGeneral = new GameDataCacheSet<UserGeneral>().FindKey(ContextUser.UserID, _generalID);
     var generalInfo = new ConfigCacheSet<GeneralInfo>().FindKey(userGeneral != null ? userGeneral.GeneralID : 0);
     _maxHeadID = generalInfo != null ? generalInfo.PicturesID : string.Empty;
     return true;
 }
Example #22
0
        /// <summary>
        /// 佣兵属性集合
        /// </summary>
        /// <param name="userID"></param>
        /// <param name="generalID"></param>
        /// <returns></returns>
        public static List<GeneralProperty> GetAbility(string userID, int generalID,UserGeneral userGeneral)
        {
           
            List<GeneralProperty> gPropertyList = new List<GeneralProperty>();
            var cacheSetUserEmbattle = new GameDataCacheSet<UserEmbattle>();
            GeneralProperty generalProperty = new GeneralProperty();
            var userMagic = new GameDataCacheSet<UserMagic>().Find(userID, s => s.IsEnabled);
            CombatGeneral combatGeneral = new CombatGeneral()
            {
                UserID = userID,
                GeneralID = generalID,
                ExtraAttack = new CombatProperty(),
                ExtraDefense = new CombatProperty(),
                LifeNum = userGeneral.LifeNum,
                LifeMaxNum = userGeneral.LifeMaxNum
            };
            
            
            var userEmbattleList = cacheSetUserEmbattle.FindAll(userID,
                                                                s =>
                                                                s.MagicID == (userMagic != null ? userMagic.MagicID : 0));
            UserEmbattleQueue.embattleList = userEmbattleList;
            UserEmbattleQueue.KarmaAddition(userID, combatGeneral);
            userGeneral.TLifeNum = combatGeneral.LifeNum;
            userGeneral.TLifeMaxNun = combatGeneral.LifeMaxNum;
            //int LifeReply = 0; // 生命回复
            //物理攻击
            generalProperty = GetAbilityProperty(userID, generalID, AbilityType.WuLiGongJi);
            generalProperty.AbilityValue = MathUtils.Addition(generalProperty.AbilityValue, generalProperty.AbilityValue*combatGeneral.ExtraAttack.AdditionWuliNum);
            gPropertyList.Add(generalProperty);
            //物理防御
            generalProperty = GetAbilityProperty(userID, generalID, AbilityType.WuLiFangYu);
            generalProperty.AbilityValue = MathUtils.Addition(generalProperty.AbilityValue, generalProperty.AbilityValue * combatGeneral.ExtraDefense.AdditionWuliNum);
            gPropertyList.Add(generalProperty);
            //魂技攻击
            generalProperty = GetAbilityProperty(userID, generalID, AbilityType.HunJiGongJi);
            generalProperty.AbilityValue = MathUtils.Addition(generalProperty.AbilityValue, generalProperty.AbilityValue * combatGeneral.ExtraAttack.AdditionHunjiNum);
            gPropertyList.Add(generalProperty);
            //魂技防御   
            generalProperty = GetAbilityProperty(userID, generalID, AbilityType.HunJiFangYu);
            generalProperty.AbilityValue = MathUtils.Addition(generalProperty.AbilityValue, generalProperty.AbilityValue * combatGeneral.ExtraDefense.AdditionHunjiNum);
            gPropertyList.Add(generalProperty);
            //魔法攻击
            generalProperty = GetAbilityProperty(userID, generalID, AbilityType.MoFaGongJi);
            generalProperty.AbilityValue = MathUtils.Addition(generalProperty.AbilityValue, generalProperty.AbilityValue * combatGeneral.ExtraAttack.AdditionMofaNum);
            gPropertyList.Add(generalProperty);
            //魔法防御
            generalProperty = GetAbilityProperty(userID, generalID, AbilityType.MoFaFangYu);
            generalProperty.AbilityValue = MathUtils.Addition(generalProperty.AbilityValue, generalProperty.AbilityValue * combatGeneral.ExtraDefense.AdditionMofaNum);
            gPropertyList.Add(generalProperty);

            //暴击
            gPropertyList.Add(GetAbilityProperty(userID, generalID, AbilityType.BaoJi));
            //命中
            gPropertyList.Add(GetAbilityProperty(userID, generalID, AbilityType.MingZhong));
            //破击 
            gPropertyList.Add(GetAbilityProperty(userID, generalID, AbilityType.PoJi));
            //韧性
            gPropertyList.Add(GetAbilityProperty(userID, generalID, AbilityType.RenXing));
            //闪避
            gPropertyList.Add(GetAbilityProperty(userID, generalID, AbilityType.ShanBi));
            //格挡
            gPropertyList.Add(GetAbilityProperty(userID, generalID, AbilityType.GeDang));
            //必杀
            gPropertyList.Add(GetAbilityProperty(userID, generalID, AbilityType.BiSha));

            //先攻
            gPropertyList.Add(new GeneralProperty() { AbilityType = AbilityType.FirstStrike, AbilityValue = (decimal)TotalPriorityNum(userID, generalID) });

            return gPropertyList;
        }
Example #23
0
 /// 获得灵魂
 /// </summary>
 /// <param name="userId"></param>
 /// <param name="itemId"></param>
 /// <param name="num"></param>
 public static void AddGeneralSoul(string userId, int itemId, int num)
 {
     var cacheSetGeneral = new GameDataCacheSet<UserGeneral>();
     var cacheSetGeneralInfo = new ConfigCacheSet<GeneralInfo>();
     var generalInfo = cacheSetGeneralInfo.Find(s => s.SoulID == itemId);
     var userGeneral = cacheSetGeneral.FindKey(userId, itemId);
     if (userGeneral != null && generalInfo != null)
     {
         userGeneral.AtmanNum = MathUtils.Addition(userGeneral.AtmanNum, num).ToShort();
     }
     else
     {
         if (generalInfo != null)
         {
             userGeneral = new UserGeneral();
             userGeneral.UserID = userId;
             userGeneral.GeneralID = itemId;
             userGeneral.AtmanNum = num;
             userGeneral.GeneralName = generalInfo.GeneralName;
             userGeneral.HeadID = generalInfo.HeadID;
             userGeneral.PicturesID = generalInfo.PicturesID;
             userGeneral.GeneralLv = generalInfo.GeneralLv;
             userGeneral.LifeNum = generalInfo.LifeNum;
             userGeneral.GeneralType = generalInfo.GeneralType;
             userGeneral.CareerID = generalInfo.CareerID;
             userGeneral.PowerNum = generalInfo.PowerNum;
             userGeneral.SoulNum = generalInfo.SoulNum;
             userGeneral.IntellectNum = generalInfo.IntellectNum;
             userGeneral.TrainingPower = 0;
             userGeneral.TrainingSoul = 0;
             userGeneral.TrainingIntellect = 0;
             userGeneral.HitProbability = ConfigEnvSet.GetDecimal("Combat.HitiNum");
             userGeneral.AbilityID = generalInfo.AbilityID;
             userGeneral.Momentum = 0;
             userGeneral.Description = generalInfo.Description;
             userGeneral.AddGeneralStatus(2);
             userGeneral.CurrExperience = 0;
             userGeneral.Experience1 = 0;
             userGeneral.Experience2 = 0;
             userGeneral.AbilityNum = 3;
             cacheSetGeneral.Add(userGeneral);
         }
     }
 }