public override bool TakeAction() { string queID = string.Empty; int maxEquNum = ConfigEnvSet.GetInt("UserQueue.EquStrengMaxNum"); _userGeneralArray = new GameDataCacheSet <UserGeneral>().FindAll(ContextUser.UserID, u => u.GeneralStatus == GeneralStatus.DuiWuZhong); List <UserQueue> userQueueArray = new GameDataCacheSet <UserQueue>().FindAll(ContextUser.UserID, m => m.QueueType == QueueType.EquipmentStrong); if (userQueueArray.Count > 0 && userQueueArray.Count == ContextUser.QueueNum) { int minEquNum = userQueueArray[0].StrengNum; int totalcoldTime = userQueueArray[0].DoRefresh(); queID = userQueueArray[0].QueueID; foreach (UserQueue queue in userQueueArray) { if (totalcoldTime > queue.DoRefresh()) { queID = queue.QueueID; totalcoldTime = queue.DoRefresh(); } if (totalcoldTime > 0 && !queue.IsSuspend && minEquNum >= queue.StrengNum && userQueueArray.Count >= ContextUser.QueueNum) { minEquNum = queue.StrengNum; if (minEquNum == maxEquNum) { _coldTime = totalcoldTime; if (_coldTime == 0) { break; } } else { _coldTime = 0; } } else { _coldTime = 0; } } } queueID = queID; return(true); }
public static int GetOpenGoldNum(int gNum, int crystalNum) { int latticeSpar = 0; //开启每个格子的价格 int Sum = 0; int Sub = 0; int minCrystalNum = ConfigEnvSet.GetInt("UserCrystal.CrystalMinNum"); int subCrystalNum = MathUtils.Subtraction(gNum, minCrystalNum, 0); int minusNum = MathUtils.Subtraction(crystalNum, minCrystalNum, 0); for (int i = 1; i <= subCrystalNum; i++) { if (i == 0) { latticeSpar = 0; } if (i == 1) { latticeSpar = 10; } if (i >= 2) { latticeSpar = i * 10; } Sum += latticeSpar; } for (int j = 0; j <= minusNum; j++) { if (j == 0) { latticeSpar = 0; } if (j == 1) { latticeSpar = 10; } if (j >= 2) { latticeSpar = j * 10; } Sub += latticeSpar; } return(MathUtils.Subtraction(Sum, Sub, 0)); }
public static int GetOpenGoldNum(int gNum, int userGridNum) { int latticeSpar = 0; //开启每个格子的价格 int sum = 0; int sub = 0; int minGridNum = ConfigEnvSet.GetInt("User.GridMinNum"); //物品背包初始开启格子数值 int subGridNum = MathUtils.Subtraction(gNum, minGridNum); int minusNum = MathUtils.Subtraction(userGridNum, minGridNum); for (int i = 1; i <= subGridNum; i++) { if (i == 0) { latticeSpar = 0; } if (i == 1) { latticeSpar = 2; } if (i >= 2) { latticeSpar = i * 2; } sum += latticeSpar; } for (int j = 0; j <= minusNum; j++) { if (j == 0) { latticeSpar = 0; } if (j == 1) { latticeSpar = 2; } if (j >= 2) { latticeSpar = j * 2; } sub += latticeSpar; } return(MathUtils.Subtraction(sum, sub)); }
/// <summary> /// 检查赠送金豆 /// </summary> /// <param name="user"></param> /// <param name="roomInfo"></param> public bool CheckDailyGiffCoin(GameUser user, RoomInfo roomInfo) { UserDailyRestrain restrain = new GameDataCacheSet <UserDailyRestrain>().FindKey(user.PersonalId); if (restrain != null) { RefreshRestrain(restrain); int dailyGiffCoinTime = ConfigEnvSet.GetInt("User.DailyGiffCoinTime", 1); if (restrain.RestrainProperty.DailyGiffCoinTime < dailyGiffCoinTime) { user.GameCoin = MathUtils.Addition(user.GameCoin, roomInfo.GiffCion); restrain.RestrainProperty.DailyGiffCoinTime = MathUtils.Addition(restrain.RestrainProperty.DailyGiffCoinTime, 1); return(true); } } return(false); }
private void EnableFunction() { string[] funList = ConfigEnvSet.GetString("User.DefaultFunction").Split(new[] { ',' }); var cacheSet = new GameDataCacheSet <UserFunction>(); foreach (string fun in funList) { if (fun.TrimEnd().Length > 0) { UserFunction userFun = new UserFunction(); userFun.UserID = Uid; userFun.FunEnum = fun.ToEnum <FunctionEnum>(); userFun.CreateDate = DateTime.Now; cacheSet.Add(userFun); cacheSet.Update(); } } }
public override bool TakeAction() { if (latticeNum > ContextUser.WarehouseNum) { int maxWarehouseNum = ConfigEnvSet.GetInt("User.WarehouseMaxNum"); int openGold = GetOpenGoldNum(latticeNum, ContextUser.WarehouseNum); int UserGridNum = ContextUser.WarehouseNum; int OpenGridNum = MathUtils.Addition(UserGridNum, latticeNum, maxWarehouseNum);//开启的格子数 int subGridNum = MathUtils.Subtraction(latticeNum, UserGridNum, 0); if (ops == 1) { //开启第n个格子所需的晶石 this.ErrorCode = 1; this.ErrorInfo = string.Format(LanguageManager.GetLang().St1108_WarehouseNumUseGold, subGridNum, openGold); return(false); } else if (ops == 2) { if (ContextUser.GoldNum >= openGold) { this.ErrorCode = 2; ContextUser.UseGold = MathUtils.Addition(ContextUser.UseGold, openGold, int.MaxValue); ContextUser.WarehouseNum = latticeNum; //ContextUser.Update(); UserLogHelper.AppenUseGoldLog(ContextUser.UserID, 5, latticeNum, OpenGridNum, openGold, ContextUser.GoldNum, MathUtils.Addition(ContextUser.GoldNum, openGold, int.MaxValue)); } else { this.ErrorCode = LanguageManager.GetLang().ErrorCode; this.ErrorInfo = LanguageManager.GetLang().St_GoldNotEnough; return(false); } } else { this.ErrorCode = LanguageManager.GetLang().ErrorCode; return(false); } } return(true); }
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); }
public override bool TakeAction() { UserDailyRestrain dailyRestrain = new PersonalCacheStruct <UserDailyRestrain>().FindKey(ContextUser.UserID); int baseNum = ConfigEnvSet.GetInt("FengLu"); int useGold = (ContextUser.UserLv * baseNum); if (dailyRestrain != null && dailyRestrain.RefreshDate.Date == DateTime.Now.Date && dailyRestrain.Funtion8 == 0) { if (dailyRestrain.Funtion8 == 0) { dailyRestrain.Funtion8 = MathUtils.Addition(dailyRestrain.Funtion8, 1, int.MaxValue); //dailyRestrain.Update(); ContextUser.GameCoin = MathUtils.Addition(ContextUser.GameCoin, useGold, int.MaxValue); //ContextUser.Update(); ErrorInfo = string.Format(LanguageManager.GetLang().St1020_FengLu, useGold); } } return(true); }
/// <summary> /// 被克制属相 /// </summary> /// <param name="zodiacType">玩家属相</param> /// <param name="typeID">类型 1.克制 2 被克制 3.全部属相</param> /// <returns></returns> public static TDictionary <short, decimal> ZodiacRestraint(ZodiacType zodiacType, int typeID) { TDictionary <short, decimal> zodiacTDList = new TDictionary <short, decimal>(); string[] zodiacArray = ConfigEnvSet.GetString("Trump.ZodiacRestraint").Split(','); foreach (string s in zodiacArray) { string[] zodiacStr = s.Split('='); if (typeID == 1) { if (zodiacStr.Length > 2 && zodiacType == zodiacStr[0].ToEnum <ZodiacType>()) { string[] zodiacList = zodiacStr[1].Split('|'); foreach (string s1 in zodiacList) { zodiacTDList.Add(s1.ToShort(), zodiacStr[2].ToDecimal()); } } } if (typeID == 2) { if (zodiacStr.Length > 2) { string[] zodiacList = zodiacStr[1].Split('|'); foreach (string s1 in zodiacList) { if (s1 != ZodiacType.NoZodiac.ToString() && s1.ToEnum <ZodiacType>() == zodiacType) { zodiacTDList.Add(s1.ToShort(), zodiacStr[0].ToDecimal()); } } } } if (typeID == 3) { if (zodiacStr.Length > 2 && zodiacStr[0].ToEnum <ZodiacType>() != zodiacType) { zodiacTDList.Add(s.ToShort(), zodiacStr[2].ToDecimal()); } } } return(zodiacTDList); }
/// <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); }
public override bool TakeAction() { receipt = new CombatMachEndReceipt(); int addv = 0; if (result == EventStatus.Good) { addv = ConfigEnvSet.GetInt("Combat.MatchWinAwardCombatCoin"); } else { addv = ConfigEnvSet.GetInt("Combat.MatchFailedAwardCombatCoin"); GetCombat.LastMatchFightFailedDate = DateTime.Now; } //GetCombat.CombatCoin = MathUtils.Addition(GetCombat.CombatCoin, addv, int.MaxValue); UserHelper.RewardsCombatCoin(Current.UserId, addv); receipt.AwardCombatCoin = addv; BigInteger gold = ConfigEnvSet.GetInt("Combat.MatchWinAwardGold"); BigInteger awardValue = Math.Ceiling(GetBasis.UserLv / 50.0).ToInt() * gold; if (result == EventStatus.Good) { receipt.AwardGold = awardValue.ToString(); UserHelper.RewardsGold(Current.UserId, awardValue, UpdateCoinOperate.NormalReward, true); } else { awardValue /= 4; receipt.AwardGold = awardValue.ToString(); UserHelper.RewardsGold(Current.UserId, awardValue, UpdateCoinOperate.NormalReward, true); } // 每日 UserHelper.EveryDayTaskProcess(Current.UserId, TaskType.CombatMatch, 1); // 成就 UserHelper.AchievementProcess(Current.UserId, AchievementType.CombatMatch, "1"); return(true); }
public override bool TakeAction() { int needDiamond = ConfigEnvSet.GetInt("System.ChangeNicknameNeedDiamond"); if (GetBasis.DiamondNum < needDiamond) { return(true); } var nickNameCheck = new NickNameCheck(); var KeyWordCheck = new KeyWordCheck(); string msg; if (nickNameCheck.VerifyRange(newName, out msg) || KeyWordCheck.VerifyKeyword(newName, out msg) || nickNameCheck.IsExistNickName(newName, out msg)) { ErrorCode = Language.Instance.ErrorCode; ErrorInfo = msg; return(false); } UserHelper.ConsumeDiamond(Current.UserId, needDiamond); GetBasis.NickName = newName; // 这里刷新排行榜数据 var combat = UserHelper.FindRankUser(Current.UserId, RankType.Combat); combat.NickName = newName; var level = UserHelper.FindRankUser(Current.UserId, RankType.Level); level.NickName = newName; var fightvalue = UserHelper.FindRankUser(Current.UserId, RankType.FightValue); fightvalue.NickName = newName; var combo = UserHelper.FindRankUser(Current.UserId, RankType.Combo); combo.NickName = newName; receipt = true; return(true); }
public override bool TakeAction() { receipt = new LotteryReceipt(); var timespan = DateTime.Now.Subtract(GetLottery.StartRestoreLotteryTimesDate); int sec = (int)Math.Floor(timespan.TotalSeconds); int canAddTimes = ConfigEnvSet.GetInt("User.LotteryTimesMax") - GetLottery.LotteryTimes; int addtimes = Math.Min(sec / RestoreLotteryTimesSec * 4, canAddTimes);// 一次恢复4次 GetLottery.LotteryTimes += addtimes; GetLottery.RemainTimeSec = RestoreLotteryTimesSec - sec % RestoreLotteryTimesSec; GetLottery.StartRestoreLotteryTimesDate = GetLottery.StartRestoreLotteryTimesDate.AddSeconds( Math.Min(sec / RestoreLotteryTimesSec, canAddTimes) * RestoreLotteryTimesSec ); UserHelper.RandomStealTarget(Current.UserId); UserHelper.RandomRobTarget(Current.UserId); receipt.Lottery = GetLottery; foreach (var v in GetLottery.StealList) { UserBasisCache basis = UserHelper.FindUserBasis(v.RivalUid); UserAttributeCache attribute = UserHelper.FindUserAttribute(v.RivalUid); UserEquipsCache equips = UserHelper.FindUserEquips(v.RivalUid); CombatMatchUserData data = new CombatMatchUserData() { UserId = basis.UserID, NickName = basis.NickName, Profession = basis.Profession, AvatarUrl = basis.AvatarUrl, RankId = basis.LevelRankID, UserLv = basis.UserLv, VipLv = basis.VipLv, FightingValue = attribute.FightValue, Equips = equips, // SkillCarryList = user.SkillCarryList }; receipt.StealList.Add(data); } return(true); }
/// <summary> /// 替换佣兵功能开启相关数值 /// </summary> /// <param name="user"></param> public static void OpenReplaceGeneral(GameUser user) { var cachePrize = new ShareCacheStruct <UserTakePrize>(); string generalPrize = ConfigEnvSet.GetString("General.ReplaceGeneralPrize"); string content = LanguageManager.GetLang().St1901_OpenGeneralReplace; List <PrizeInfo> prizeList = new List <PrizeInfo>(); if (!string.IsNullOrEmpty(generalPrize)) { prizeList = JsonUtils.Deserialize <List <PrizeInfo> >(generalPrize); } foreach (PrizeInfo info in prizeList) { var takePrize = GetUserTake(info, user.UserID); cachePrize.Add(takePrize, GameEnvironment.CacheGlobalPeriod); } var chatService = new TjxChatService(user); chatService.SystemSendWhisper(user, content); }
/// <summary> /// 新手玩家达到等级获得奖励 /// </summary> /// <param name="user"></param> public static void ActivationNewCard(GameUser user) { if (user.UserExtend != null && !string.IsNullOrEmpty(user.CardID)) { string[] handLv = ConfigEnvSet.GetString("UserCard.GetPackageLv").Split(','); for (int i = 0; i < handLv.Length; i++) { short newHandLv = Convert.ToInt16(handLv[i]); if (IsReward(user.UserID, user.UserLv, newHandLv)) { int cardUserID = user.CardID.Substring(1).ToInt(); AddCardReward(user.UserID, strUserID, newHandLv); AddCardReward(cardUserID.ToString(), user.UserID, newHandLv); string item = "5030=1=1"; string content = string.Format(LanguageManager.GetLang().NewHandPackage, newHandLv); GainNewCardPackage(user.UserID, 0, item, content); GainNewCardPackage(cardUserID.ToString(), 0, item, content); } } } }
/// <summary> /// 克制属相 /// </summary> /// <param name="zodiacType1">玩家属相1</param> /// <param name="zodiacType2">玩家属相2</param> /// <returns></returns> public static decimal ZodiacRestraint(ZodiacType zodiacType1, ZodiacType zodiacType2) { string[] zodiacArray = ConfigEnvSet.GetString("Trump.ZodiacRestraint").Split(','); foreach (string s in zodiacArray) { string[] zodiacStr = s.Split('='); if (zodiacStr.Length > 2 && zodiacType1 == zodiacStr[0].ToEnum <ZodiacType>()) { string[] zodiacList = zodiacStr[1].Split('|'); foreach (string s1 in zodiacList) { if (s1.ToEnum <ZodiacType>() == zodiacType2) { return(zodiacStr[2].ToDecimal()); } } } } return(0); }
/// <summary> /// 下一级属性数值 /// </summary> /// <param name="userID"></param> /// <param name="generalID"></param> /// <param name="abilityType"></param> /// <returns></returns> public static int FeelUpPropertyNum(string userID, int generalID, AbilityType abilityType) { int upPropertyNum = 0; UserGeneral userGeneral = new PersonalCacheStruct <UserGeneral>().FindKey(userID, generalID); if (userGeneral != null) { short maxFeelLv = ConfigEnvSet.GetInt("Gift.MaxFeelLv").ToShort(); short feelLv = MathUtils.Addition(userGeneral.FeelLv, (short)1, maxFeelLv); FeelLvInfo upfeelLvInfo = new ShareCacheStruct <FeelLvInfo>().FindKey(feelLv); if (upfeelLvInfo != null && upfeelLvInfo.Property.Count > 0) { GeneralProperty property = upfeelLvInfo.Property.Find(m => m.AbilityType == abilityType); if (property != null) { upPropertyNum = property.AbilityValue.ToInt(); } } } return(upPropertyNum); }
/// <summary> /// 附魔符培养列表 /// </summary> /// <returns></returns> public static List <EnchantCulTure> EnchantCultureList() { List <EnchantCulTure> enchantList = new List <EnchantCulTure>(); string[] cultureArray = ConfigEnvSet.GetString("Enchant.EnchantCulture").Split(','); foreach (var str in cultureArray) { EnchantCulTure enchantCulTure = new EnchantCulTure(); string[] strCulture = str.Split('='); if (strCulture.Length > 4) { enchantCulTure.CultureType = strCulture[0].ToEnum <EnchantCultureType>(); enchantCulTure.GoldNum = strCulture[1].ToInt(); enchantCulTure.MoJingNum = strCulture[2].ToInt(); enchantCulTure.UpMature = strCulture[3].ToShort(); enchantCulTure.SuccessNum = strCulture[4].ToDecimal(); enchantList.Add(enchantCulTure); } } return(enchantList); }
public override bool TakeAction() { ErrorCode = _ops; int goldNum = ConfigEnvSet.GetInt("SparePart.PropertyGoldNum"); if (_ops == 1) { ErrorInfo = string.Format(LanguageManager.GetLang().St1216_EnableSpartProperty, goldNum, _position); } else if (_ops == 2) { if (ContextUser.GoldNum < goldNum) { ErrorCode = LanguageManager.GetLang().ErrorCode; ErrorInfo = LanguageManager.GetLang().St_GoldNotEnough; return(false); } if (ContextUser.EnableSpareProperty(_sparepartID, out _sparePart)) { ContextUser.UseGold = MathUtils.Addition(ContextUser.UseGold, goldNum); //ContextUser.Update(); var itempackage = UserItemPackage.Get(ContextUser.UserID); UserItemInfo userItem = itempackage.ItemPackage.Find(m => !m.IsRemove && m.UserItemID.Equals(_sparePart.UserItemID)); if (userItem != null && userItem.ItemStatus.Equals(ItemStatus.YongBing)) { var userGeneral = new GameDataCacheSet <UserGeneral>().FindKey(ContextUser.UserID, userItem.GeneralID); if (userGeneral != null) { userGeneral.RefreshMaxLife(); } } } else { ErrorCode = LanguageManager.GetLang().ErrorCode; return(false); } } return(true); }
/// <summary> /// 计算伤害公式 /// 攻击伤害 = 攻击力 - 物理防御力 /// </summary> /// <param name="tagetGeneral">加血等辅助技能时可能为空值</param> /// <returns></returns> protected int GetPhysicalDamageNum(CombatGeneral tagetGeneral) { AbilityProperty property = General.AbilityProperty; ProcessLog.AbilityProperty = property; int damageNum; int attackNum; int defenseNum = 0; decimal harmNum = 0; //法宝属相克制伤害 --技能攻击 attackNum = General.GetAttackNum(property); if (tagetGeneral != null) { harmNum = TrumpAbilityAttack.TrumpZodiacHarm(General, tagetGeneral.UserID); defenseNum = tagetGeneral.GetDefenseNum(property, tagetGeneral); //普通攻击破防 decimal normalAttackPoFang = TrumpAbilityAttack.GetEffect(General, AbilityType.NormalAttackPoFang); if (normalAttackPoFang > 0) { ProcessLog.TrumpStatusList.Add(TrumpAbilityAttack.GetSkillprocess(AbilityType.NormalAttackPoFang, 0)); } defenseNum = (int)Math.Floor(MathUtils.Subtraction(defenseNum, defenseNum * normalAttackPoFang)); } General.MinDamageNum = (int)Math.Ceiling(attackNum * ConfigEnvSet.GetDouble("Combat.MinDamagePencent")); damageNum = MathUtils.Subtraction(attackNum, defenseNum, General.MinDamageNum); //加固定伤害 damageNum = MathUtils.Addition(damageNum, General.FixedDamageNum, int.MaxValue); //法宝属相克制伤害 --技能攻击 if (harmNum > 0 && !isPyharm) { damageNum = (int)(damageNum * MathUtils.Addition(1, (harmNum + General.EffectValue))); isPyharm = true; } return(damageNum); }
/// <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 ShareCacheStruct <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 ShareCacheStruct <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; } } } }
/// <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() { int maxDonateGold = ConfigEnvSet.GetInt("UserGuild.MaxDonateGold"); if (string.IsNullOrEmpty(ContextUser.MercenariesID)) { ErrorCode = LanguageManager.GetLang().ErrorCode; ErrorInfo = LanguageManager.GetLang().St6203_GuildMemberNotEnough; return(false); } UserGuild guild = new ShareCacheStruct <UserGuild>().FindKey(ContextUser.MercenariesID); if (guild == null) { ErrorCode = LanguageManager.GetLang().ErrorCode; return(false); } if (guild.AbilityInfo.Count == 0) { UserHelper.UserGuildAbilityList(ContextUser.MercenariesID); } CombatHelper.RepairGuildAbility(ContextUser.MercenariesID); currExperience = guild.CurrDonateNum; if (guild.AbilityInfo.Count > 0) { List <GuildAbility> abilitiesList = guild.AbilityInfo.ToList(); abilityArray = abilitiesList.GetPaging(pageIndex, pageSize, out pageCount); } GuildMember member = new ShareCacheStruct <GuildMember>().FindKey(ContextUser.MercenariesID, ContextUser.UserID); if (member != null) { donateCoin = MathUtils.Subtraction(UserHelper.MaxDonateGameCoin(ContextUser.UserLv.ToInt()), member.DonateCoin); donateGold = MathUtils.Subtraction(maxDonateGold, member.DonateGold); } return(true); }
public override bool TakeAction() { int totalNum = 0; UserHelper.ChechDailyRestrain(ContextUser.UserID); totalNum = PlotHelper.HeroSurplusNum(ContextUser.UserID, cityID, ContextUser.VipLv); if (totalNum <= 0 || PlotHelper.HeroRefreshNum(ContextUser.UserID, cityID) > totalNum) { ErrorCode = LanguageManager.GetLang().ErrorCode; ErrorInfo = LanguageManager.GetLang().St4014_HeroRefreshPlotFull; return(false); } int useGold = ConfigEnvSet.GetInt("UserPlot.HeroRefreshGoldNum"); if (ops == 1) { ErrorCode = ops; ErrorInfo = string.Format(LanguageManager.GetLang().St4014_HeroRefreshPlot, useGold); return(false); } else if (ops == 2) { if (ContextUser.GoldNum < useGold) { ErrorCode = LanguageManager.GetLang().ErrorCode; ErrorInfo = LanguageManager.GetLang().St_GoldNotEnough; return(false); } UserDailyRestrain dailyRestrain = new GameDataCacheSet <UserDailyRestrain>().FindKey(ContextUser.UserID); if (dailyRestrain != null) { //z增加刷新次数 (未完成) HeroRefreshNum(ContextUser.UserID, cityID); } ContextUser.UseGold = MathUtils.Addition(ContextUser.UseGold, useGold, int.MaxValue); //ContextUser.Update(); } return(true); }
private bool IsGotoNextLayer(int nextLayerNum) { string[] tempList = ConfigEnvSet.GetString("Plot.LayerNumLv").ToNotNullString().Split(','); foreach (var temp in tempList) { if (temp == null) { continue; } string[] lvList = temp.Split('='); if (lvList.Length == 2) { int layerNum = lvList[0].ToInt(); if (layerNum != nextLayerNum) { continue; } return(ContextUser.UserLv >= lvList[1].ToShort()); } } return(false); }
public override bool TakeAction() { if (DateTime.Now < GetCombat.LastFailedDate) { return(false); } TimeSpan timeSpan = DateTime.Now.Subtract(GetCombat.LastFailedDate); float mins = timeSpan.TotalMinutes.ToFloat(); float surplus = MathUtils.Subtraction(ConfigEnvSet.GetInt("User.CombatFailedCD").ToFloat(), mins, 1.0f); int needDiamond = Math.Ceiling(surplus).ToInt(); if (GetBasis.DiamondNum < needDiamond) { return(false); } GetCombat.LastFailedDate = DateTime.MinValue; receipt = EventStatus.Good; UserHelper.ConsumeDiamond(Current.UserId, needDiamond); return(true); }
public override bool TakeAction() { int intervalDate = ConfigEnvSet.GetInt("UserItemSold.IntervalDate"); int totalIntervalDate = (intervalDate * 60 * 60); var package = UserItemPackage.Get(Uid); var sellItem = package.ItemPackage.FindAll(m => !m.IsRemove && m.ItemStatus == ItemStatus.Sell); foreach (var item in sellItem) { if ((DateTime.Now - item.SoldDate).TotalSeconds > totalIntervalDate) { UserItemHelper.AddItemLog(ContextUser.UserID, item.ItemID, item.Num, item.ItemLv, 4, item.UserItemID); package.RemoveItem(item); } } var tempList = package.ItemPackage.FindAll(m => !m.IsRemove && m.ItemStatus == ItemStatus.Sell); userItemArray = tempList.GetPaging(pageIndex, pageSize, out pageCount); return(true); }
public override bool TakeAction() { if (ops == 1) { short onlineEnergy; if (NoviceHelper.OnlinePrize(ContextUser, out _takeNum, out _coldTime, out onlineEnergy)) { ErrorInfo = string.Format(LanguageManager.GetLang().St1013_JingliPrize, onlineEnergy); } } else if (ops == 2) { if (NoviceHelper.DailyEnergy(ContextUser.UserID)) { UserDailyRestrain dailyRestrain = new PersonalCacheStruct <UserDailyRestrain>().FindKey(ContextUser.UserID); if (dailyRestrain != null) { short dailyEnergyNum = (short)ConfigEnvSet.GetInt("DailyEnergyNum"); if (dailyRestrain.Funtion15.Date != DateTime.Now) { dailyRestrain.Funtion15 = DateTime.Now; //dailyRestrain.Update(); ContextUser.SurplusEnergy = dailyEnergyNum; //ContextUser.Update(); ErrorInfo = string.Format(LanguageManager.GetLang().St1013_DailyJingliPrize, dailyEnergyNum); } } } } else if (ops == 3) { int festivalEnergy = NoviceHelper.AugustSecondWeekEnergy(ContextUser); ErrorInfo = string.Format(LanguageManager.GetLang().st_FestivalInfoReward, LanguageManager.GetLang().St_AugustSecondWeek, string.Format(LanguageManager.GetLang().St_EnergyNum, festivalEnergy)); } return(true); }
/// <summary> /// 竞技场奖励下次领取时间 /// </summary> /// <returns></returns> public static DateTime GetNextReceiveDate() { DateTime nextReceiveDate = new DateTime(); //下次领取时间 DateTime initialDate = ConfigEnvSet.GetString("Sports.ReceiveBonusTime").ToDateTime(); int intervalDate = ConfigEnvSet.GetInt("Sports.IntervalDate"); //间隔时间 (小时) int intervalHours = (int)((DateTime.Now - initialDate).TotalHours); int dividedNum = intervalHours / intervalDate; int totalHuors = (MathUtils.Addition(dividedNum, 1, int.MaxValue) * intervalDate); nextReceiveDate = initialDate.AddHours(totalHuors); DateTime nowDate = initialDate.AddHours((dividedNum * intervalDate)); var date = ServerEnvSet.Get(ServerEnvKey.JingJiChangReward, ""); if (nowDate != date.ToDateTime().Date) { ServerEnvSet.Set(ServerEnvKey.JingJiChangReward, nowDate.ToString()); } else { ServerEnvSet.Set(ServerEnvKey.JingJiChangReward, nextReceiveDate.AddDays(-3).ToString()); } return(nextReceiveDate.Date); }
/// <summary> /// 获得拉新卡 /// </summary> /// <param name="user"></param> public static void NewHandCardFestival(GameUser user) { short userLv = (short)ConfigEnvSet.GetInt("UserCard.ActivationCardLv"); //获得新手卡等级 if (user.UserLv >= userLv && (user.UserExtend == null || string.IsNullOrEmpty(user.UserExtend.CardUserID))) { GameUserExtend userExtend = new GameUserExtend(); if (user.UserExtend != null) { userExtend = user.UserExtend; } userExtend.CardUserID = NewHandCardID(user.UserID); user.UserExtend = userExtend; int gamecoin = ConfigEnvSet.GetInt("UserCard.GainGameCoin"); int handNum = 0; DailyRestrainSet restrainSet = new ShareCacheStruct <DailyRestrainSet>().FindKey(RestrainType.NewHand); if (restrainSet != null) { handNum = restrainSet.MaxNum; } string content = string.Format(LanguageManager.GetLang().GainNewCard, userLv, gamecoin, user.UserExtend.CardUserID, handNum); GainNewCardPackage(user.UserID, gamecoin, string.Empty, content); } }