/// <summary> /// 获取攻击力(物,魂,魔)+ 触发的技能加成 /// </summary> /// <returns></returns> public int GetAttackNum(AbilityProperty property) { //释放魂技加成 decimal AttackRatio = ConfigEnvSet.GetDecimal("Combat.AttackRatio"); int attackNum = 0; switch (property) { case AbilityProperty.Physical: attackNum = IsMonster ? PhyAttackNum : (int)Math.Floor(this.PowerNum * this.Lv * AttackRatio); attackNum = MathUtils.Addition(attackNum, ExtraAttack.WuliNum, int.MaxValue); attackNum = (int)Math.Floor(TriggerAbilityEffectNum(AbilityType.WuLiGongJi, attackNum)); attackNum = MathUtils.Addition(attackNum, ExtraAttack.AdditionWuliNum * attackNum).ToInt(); break; case AbilityProperty.Ability: attackNum = IsMonster ? AbiAttackNum : (int)Math.Floor(this.SoulNum * this.Lv * AttackRatio); attackNum = MathUtils.Addition(attackNum, ExtraAttack.HunjiNum, int.MaxValue); attackNum = (int)Math.Floor(TriggerAbilityEffectNum(AbilityType.HunJiGongJi, attackNum)); attackNum = MathUtils.Addition(attackNum, ExtraAttack.AdditionHunjiNum * attackNum).ToInt(); break; case AbilityProperty.Magic: attackNum = IsMonster ? MagAttackNum : (int)Math.Floor(this.IntellectNum * this.Lv * AttackRatio); attackNum = MathUtils.Addition(attackNum, ExtraAttack.MofaNum, int.MaxValue); attackNum = (int)Math.Floor(TriggerAbilityEffectNum(AbilityType.MoFaGongJi, attackNum)); attackNum = MathUtils.Addition(attackNum, ExtraAttack.AdditionMofaNum * attackNum).ToInt(); break; default: break; } return(attackNum); }
public override bool TakeAction() { int maxGeneralNum = ContextUser.GeneralMaxNum; var userGeneralsList = new GameDataCacheSet <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 ConfigCacheSet <GeneralInfo>().FindKey(generalID); if (generalInfo == null) { ErrorCode = LanguageManager.GetLang().ErrorCode; return(false); } var userGeneral = new GameDataCacheSet <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 GameDataCacheSet <UserGeneral>(); cacheSet.Add(userGeneral, GameEnvironment.CacheUserPeriod); } ErrorCode = 0; ErrorInfo = LanguageManager.GetLang().St1434_RecruitmentErfolg; return(true); }
/// <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); } }
/// <summary> /// 获取防御力(物,魂,魔)+ 触发的技能加成 /// </summary> /// <returns></returns> public int GetDefenseNum(AbilityProperty property, CombatGeneral tagetGeneral) { var DefenseRatio = ConfigEnvSet.GetDecimal("Combat.DefenseRatio"); int defenseNum = 0; switch (property) { case AbilityProperty.Physical: bool tType = false; decimal tpLvPercent = GetLvPercent(tagetGeneral, out tType); defenseNum = IsMonster ? PhyDefenseNum : (int)Math.Floor(this.PowerNum * this.Lv * DefenseRatio); defenseNum = MathUtils.Addition(defenseNum, ExtraDefense.WuliNum, int.MaxValue); defenseNum = (int)Math.Floor(TriggerAbilityEffectNum(AbilityType.WuLiFangYu, defenseNum)); if (!tType) { defenseNum = MathUtils.Subtraction(defenseNum, (tpLvPercent * defenseNum).ToInt()); } else { defenseNum = MathUtils.Addition(defenseNum, (tpLvPercent * defenseNum).ToInt()); } defenseNum = MathUtils.Addition(defenseNum, ExtraDefense.AdditionWuliNum * defenseNum).ToInt(); break; case AbilityProperty.Ability: defenseNum = IsMonster ? AbiDefenseNum : (int)Math.Floor(this.SoulNum * this.Lv * DefenseRatio); defenseNum = MathUtils.Addition(defenseNum, ExtraDefense.HunjiNum, int.MaxValue); defenseNum = (int)Math.Floor(TriggerAbilityEffectNum(AbilityType.HunJiFangYu, defenseNum)); defenseNum = MathUtils.Addition(defenseNum, ExtraDefense.AdditionHunjiNum * defenseNum).ToInt(); break; case AbilityProperty.Magic: defenseNum = IsMonster ? MagDefenseNum : (int)Math.Floor(this.IntellectNum * this.Lv * DefenseRatio); defenseNum = MathUtils.Addition(defenseNum, ExtraDefense.MofaNum, int.MaxValue); defenseNum = (int)Math.Floor(TriggerAbilityEffectNum(AbilityType.MoFaFangYu, defenseNum)); defenseNum = MathUtils.Addition(defenseNum, ExtraDefense.AdditionMofaNum * defenseNum).ToInt(); break; default: break; } if (!defenseNum.IsValid()) { defenseNum = 0; } return(defenseNum); }
private void CreateGeneral(CareerInfo careerInfo) { GeneralInfo general = new ConfigCacheSet <GeneralInfo>().FindKey(generalID); List <UserGeneral> userGeneralArray = new GameDataCacheSet <UserGeneral>().FindAll(Uid); if (userGeneralArray.Count > 0 || general == null) { return; } UserGeneral userGeneral = new UserGeneral(); userGeneral.UserID = Uid; 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 GameDataCacheSet <UserGeneral>(); cacheSet.Add(userGeneral); cacheSet.Update(); UserAbilityHelper.AddUserAbility(general.AbilityID, Uid.ToInt(), generalID, 1); }
/// <summary> /// 等级差压制 /// </summary> /// <param name="tagetGeneral"></param> /// <param name="tType">False:攻击方等级高,True:被攻击方等级高</param> /// <returns></returns> private decimal GetLvPercent(CombatGeneral tagetGeneral, out bool tType) { tType = false; var lvrate = ConfigEnvSet.GetDecimal("Combat.LvPercentRate"); var subLv = 0; if (tagetGeneral.Lv > this.Lv) { tType = true; subLv = MathUtils.Subtraction(tagetGeneral.Lv, this.Lv, (short)0); } else { subLv = MathUtils.Subtraction(this.Lv, tagetGeneral.Lv, (short)0); } var val = subLv * lvrate; return(val); }
/// <summary> /// 触发命中概率 /// </summary> /// <param name="general"></param> /// <param name="tpLvPercent"></param> /// <param name="percent"></param> /// <returns></returns> public bool TriggerHitPercent(CombatGeneral tagetGeneral, out decimal hitPercent) { //int tType = 0; //decimal tpLvPercent = GetLvPercent(tagetGeneral, out tType); hitPercent = HitNum + TriggerAbilityEffectNum(AbilityType.MingZhong, 1); decimal shanbiPercent = tagetGeneral.ShanbiNum + tagetGeneral.TriggerAbilityEffectNum(AbilityType.ShanBi, 1); hitPercent = MathUtils.Subtraction(hitPercent, shanbiPercent, 0); //原因:增加最小概率 decimal minHitNum = ConfigEnvSet.GetDecimal("Combat.MinHitPercent"); if (minHitNum == 0) { minHitNum = (decimal)0.4; } if (hitPercent < minHitNum) { hitPercent = minHitNum; } return(RandomUtils.IsHit(hitPercent)); }
public override bool TakeAction() { var cacheSet = new PersonalCacheStruct <UserGeneral>(); if (recruitType == RecruitType.SoulRecruit) { general = new ShareCacheStruct <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); 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 ShareCacheStruct <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 ShareCacheStruct <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); 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); 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); }
public static IGeneral Create(SJTPlotEmbattleInfo embattle) { var monster = new ConfigCacheSet <SJTMonsterInfo>().FindKey(embattle.MonsterID); if (monster == null) { throw new Exception("Plot monster:" + embattle.MonsterID + " is not exist"); } CareerInfo career = new ConfigCacheSet <CareerInfo>().FindKey(monster.CareerID); AbilityInfo ability = new ConfigCacheSet <AbilityInfo>().FindKey(monster.AbilityID); var abilityLv = new ConfigCacheSet <AbilityLvInfo>().FindKey(monster.AbilityLv); if (career == null || ability == null || abilityLv == null) { throw new Exception("career or ability or AbilityLv is null."); } CombatGeneral general = new CombatGeneral() { UserID = null, Position = embattle.GridSeqNo, GeneralID = embattle.MonsterID, GeneralName = monster.GeneralName, HeadID = monster.HeadID, CareerID = monster.CareerID, CareerType = career.CareerType, IsMove = career.IsMove, LifeNum = monster.LifeNum, LifeMaxNum = monster.LifeNum, Lv = monster.GeneralLv, Momentum = (short)monster.MomentumNum, Ability = ability, IsAttrMove = ability.IsMove, BaojiNum = monster.BaojiNum, BishaNum = monster.BishaNum, RenxingNum = monster.RenxingNum, HitNum = monster.HitNum == 0 ? ConfigEnvSet.GetDecimal("Combat.HitiNum") : monster.HitNum, ShanbiNum = monster.ShanbiNum, GedangNum = monster.GedangNum, PojiNum = monster.PojiNum, BattleStatus = BattleStatus.Normal, PowerNum = monster.PowerNum, SoulNum = monster.SoulNum, IntellectNum = monster.IntellectNum, FixedDamageNum = 0, //怪物没有附加属性 ExtraAttack = new CombatProperty(), ExtraDefense = new CombatProperty(), IsMonster = true, IsWait = false, PhyAttackNum = monster.PhyAttackNum, PhyDefenseNum = monster.PhyDefenseNum, MagAttackNum = monster.MagAttackNum, MagDefenseNum = monster.MagDefenseNum, AbiAttackNum = monster.AbiAttackNum, AbiDefenseNum = monster.AbiDefenseNum }; general.PhyAttackNum = MathUtils.Addition(general.PhyAttackNum, (general.PhyAttackNum * abilityLv.EffectValue)).ToInt(); general.PhyDefenseNum = MathUtils.Addition(general.PhyDefenseNum, (general.PhyDefenseNum * abilityLv.EffectValue)).ToInt(); general.MagAttackNum = MathUtils.Addition(general.MagAttackNum, (general.MagAttackNum * abilityLv.EffectValue)).ToInt(); general.MagDefenseNum = MathUtils.Addition(general.MagDefenseNum, (general.MagDefenseNum * abilityLv.EffectValue)).ToInt(); general.AbiAttackNum = MathUtils.Addition(general.AbiAttackNum, (general.AbiAttackNum * abilityLv.EffectValue)).ToInt(); general.AbiDefenseNum = MathUtils.Addition(general.AbiDefenseNum, (general.AbiDefenseNum * abilityLv.EffectValue)).ToInt(); return(general); }
public override bool TakeAction() { UserHelper.ChechDailyRestrain(ContextUser.UserID); UserGeneral general = new GameDataCacheSet <UserGeneral>().FindKey(ContextUser.UserID, generalID); if (general == null) { return(false); } if (general.FeelLv >= GiftHelper.maxFeelLv) { ErrorCode = LanguageManager.GetLang().ErrorCode; ErrorInfo = LanguageManager.GetLang().St1422_MaxFeelFull; return(false); } int useGold = ConfigEnvSet.GetInt("User.PresentationGold"); int feelNum = ConfigEnvSet.GetInt("User.PresentationFeelNum"); int maxSatiationNum = ConfigEnvSet.GetInt("User.FeelMaxSatiationNum"); decimal generalEffect = ConfigEnvSet.GetDecimal("Gift.GeneralEffectNum"); if (ops == 1) { var package = UserItemPackage.Get(ContextUser.UserID); var useritem = package.ItemPackage.Find(m => m.UserItemID.Equals(userItemID)); if (useritem == null) { return(false); } ItemBaseInfo itemInfo = new ConfigCacheSet <ItemBaseInfo>().FindKey(useritem.ItemID); if (itemInfo != null) { if (general.SaturationNum >= maxSatiationNum) { ErrorCode = LanguageManager.GetLang().ErrorCode; ErrorInfo = LanguageManager.GetLang().St1422_FeelMaxSatiationNum; return(false); } int giftEffect = itemInfo.EffectNum; //佣兵喜欢类型的礼物,好感度加成 GeneralInfo generalInfo = new ConfigCacheSet <GeneralInfo>().FindKey(generalID); if (generalInfo != null && itemInfo.GiftType == generalInfo.GiftType) { decimal sumGeneralEffect = MathUtils.Addition(generalEffect, 1, decimal.MaxValue); giftEffect = MathUtils.RoundCustom(giftEffect * sumGeneralEffect).ToShort(); } GiftHelper.GeneralFeelUpgrade(general, giftEffect, itemInfo.SatiationNum); UserItemHelper.UseUserItem(ContextUser.UserID, itemInfo.ItemID, 1); ErrorCode = ops; ErrorInfo = string.Format(LanguageManager.GetLang().St1422_PresentationFeelNum, giftEffect); } } else if (ops == 2) { int addNum = UseGoldZengSong(ContextUser.UserID); useGold = MathUtils.Addition(useGold, addNum); ErrorCode = ops; ErrorInfo = string.Format(LanguageManager.GetLang().St1422_PresentationUseGold, useGold, feelNum); return(false); } else if (ops == 3) { if (GiftHelper.SurplusGoldNum(ContextUser.UserID) <= 0) { ErrorCode = LanguageManager.GetLang().ErrorCode; ErrorInfo = LanguageManager.GetLang().St1422_PresentationGoldNum; return(false); } UserDailyRestrain userDaily = new GameDataCacheSet <UserDailyRestrain>().FindKey(ContextUser.UserID); int addNum = UseGoldZengSong(ContextUser.UserID); useGold = MathUtils.Addition(useGold, addNum); if (ContextUser.GoldNum < useGold) { ErrorCode = LanguageManager.GetLang().ErrorCode; ErrorInfo = LanguageManager.GetLang().St_GoldNotEnough; return(false); } if (userDaily != null) { if (userDaily.UserExtend == null) { userDaily.UserExtend = new DailyUserExtend(); } userDaily.UserExtend.UpdateNotify(obj => { userDaily.UserExtend.GoldNum = MathUtils.Addition(userDaily.UserExtend.GoldNum, (short)1); return(true); }); } int feelExp = general.FeelExperience; int upExp = MathUtils.Addition(feelExp, feelNum); ContextUser.UseGold = MathUtils.Addition(ContextUser.UseGold, useGold); GiftHelper.GeneralFeelUpgrade(general, feelNum, 0); //TraceLog.ReleaseWrite(string.Format("玩家{0}(通行证ID)的佣兵{1}(ID){2}使用晶石赠送增加好感度{3}。好感度从{4}上升到{5}。", // ContextUser.Pid, // ContextUser.UserID, // ContextUser.NickName, feelNum, // feelExp, upExp)); ErrorCode = ops; ErrorInfo = string.Format(LanguageManager.GetLang().St1422_PresentationFeelNum, feelNum); } return(true); }
/// <summary> /// 等级差压制 /// </summary> /// <param name="tagetGeneral"></param> /// <returns></returns> private decimal GetLvPercent(CombatGeneral tagetGeneral) { return(tagetGeneral.Lv.Subtraction(this.Lv, 0) * ConfigEnvSet.GetDecimal("Combat.LvPercentRate")); }
public static IGeneral Create(SJTPlotEmbattleInfo embattle, double difficultNum) { SJTMonsterInfo monster = new ShareCacheStruct <SJTMonsterInfo>().FindKey(embattle.MonsterID); if (monster == null) { throw new Exception("Plot monster:" + embattle.MonsterID + " is not exist"); } CareerInfo career = new ShareCacheStruct <CareerInfo>().FindKey(monster.CareerID); AbilityInfo ability = new ShareCacheStruct <AbilityInfo>().FindKey(monster.AbilityID); if (career == null || ability == null) { throw new Exception("career or ability is null."); } CombatGeneral general = new CombatGeneral() { UserID = null, Position = embattle.GridSeqNo, GeneralID = embattle.MonsterID, GeneralName = monster.GeneralName, HeadID = monster.HeadID, CareerID = monster.CareerID, CareerType = career.CareerType, IsMove = career.IsMove, LifeNum = monster.LifeNum, LifeMaxNum = monster.LifeNum, Lv = monster.GeneralLv, Momentum = (short)monster.MomentumNum, Ability = ability, IsAttrMove = ability.IsMove, BaojiNum = monster.BaojiNum, BishaNum = monster.BishaNum, RenxingNum = monster.RenxingNum, HitNum = monster.HitNum == 0 ? ConfigEnvSet.GetDecimal("Combat.HitiNum") : monster.HitNum, ShanbiNum = monster.ShanbiNum, GedangNum = monster.GedangNum, PojiNum = monster.PojiNum, BattleStatus = BattleStatus.Normal, PowerNum = monster.PowerNum, SoulNum = monster.SoulNum, IntellectNum = monster.IntellectNum, //todo 圣吉塔怪物表未配置固定伤害值 FixedDamageNum = 1, //monster.DamageNum, //怪物没有附加属性 ExtraAttack = new CombatProperty(), ExtraDefense = new CombatProperty(), IsMonster = true, IsWait = false, PhyAttackNum = (monster.PhyAttackNum * difficultNum).ToInt(), PhyDefenseNum = (monster.PhyDefenseNum * difficultNum).ToInt(), MagAttackNum = (monster.MagAttackNum * difficultNum).ToInt(), MagDefenseNum = (monster.MagDefenseNum * difficultNum).ToInt(), AbiAttackNum = (monster.AbiAttackNum * difficultNum).ToInt(), AbiDefenseNum = (monster.AbiDefenseNum * difficultNum).ToInt() }; return(general); }