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