Beispiel #1
0
        /// <summary>
        /// 初始化背包
        /// </summary>
        /// <param name="userID"></param>
        /// <returns></returns>
        public static void AddBack(GameUser user)
        {
            var cacheSet = new GameDataCacheSet<UserPack>();
            var cacheSetBackPack = new ConfigCacheSet<BackpackConfigInfo>();
            var userPack = cacheSet.FindKey(user.UserID);

            if (userPack == null)
            {
                userPack = new UserPack();

                userPack.UserID = user.UserID.ToInt();
                userPack.CreateDate = DateTime.Now;
                var backpackConfig = cacheSetBackPack.FindKey(BackpackType.ZhuangBei);
                if (backpackConfig != null)
                {
                    var packType = new PackType();
                    packType.BackpackType = BackpackType.ZhuangBei;
                    packType.OpenNum = 0;
                    packType.Position = backpackConfig.DefaultNum;
                }

                backpackConfig = cacheSetBackPack.FindKey(BackpackType.YongBing);
                if (backpackConfig != null)
                {
                    var packType = new PackType();
                    packType.BackpackType = BackpackType.YongBing;
                    packType.OpenNum = 0;
                    packType.Position = backpackConfig.DefaultNum;
                }

                backpackConfig = cacheSetBackPack.FindKey(BackpackType.HunJi);
                if (backpackConfig != null)
                {
                    var packType = new PackType();
                    packType.BackpackType = BackpackType.HunJi;
                    packType.OpenNum = 0;
                    packType.Position = backpackConfig.DefaultNum;
                }

                backpackConfig = cacheSetBackPack.FindKey(BackpackType.BeiBao);
                if (backpackConfig != null)
                {
                    var packType = new PackType();
                    packType.BackpackType = BackpackType.BeiBao;
                    packType.OpenNum = 0;
                    packType.Position = backpackConfig.DefaultNum;
                    user.GridNum = MathUtils.Addition(user.GridNum, backpackConfig.DefaultNum);
                }
            }

        }
Beispiel #2
0
        /// <summary>
        /// 初始化背包
        /// </summary>
        /// <param name="userID"></param>
        /// <returns></returns>
        public static void AddBack(GameUser user)
        {
            var cacheSet         = new GameDataCacheSet <UserPack>();
            var cacheSetBackPack = new ConfigCacheSet <BackpackConfigInfo>();
            var userPack         = cacheSet.FindKey(user.UserID);

            if (userPack == null)
            {
                userPack = new UserPack();

                userPack.UserID     = user.UserID.ToInt();
                userPack.CreateDate = DateTime.Now;
                var backpackConfig = cacheSetBackPack.FindKey(BackpackType.ZhuangBei);
                if (backpackConfig != null)
                {
                    var packType = new PackType();
                    packType.BackpackType = BackpackType.ZhuangBei;
                    packType.OpenNum      = 0;
                    packType.Position     = backpackConfig.DefaultNum;
                }

                backpackConfig = cacheSetBackPack.FindKey(BackpackType.YongBing);
                if (backpackConfig != null)
                {
                    var packType = new PackType();
                    packType.BackpackType = BackpackType.YongBing;
                    packType.OpenNum      = 0;
                    packType.Position     = backpackConfig.DefaultNum;
                }

                backpackConfig = cacheSetBackPack.FindKey(BackpackType.HunJi);
                if (backpackConfig != null)
                {
                    var packType = new PackType();
                    packType.BackpackType = BackpackType.HunJi;
                    packType.OpenNum      = 0;
                    packType.Position     = backpackConfig.DefaultNum;
                }

                backpackConfig = cacheSetBackPack.FindKey(BackpackType.BeiBao);
                if (backpackConfig != null)
                {
                    var packType = new PackType();
                    packType.BackpackType = BackpackType.BeiBao;
                    packType.OpenNum      = 0;
                    packType.Position     = backpackConfig.DefaultNum;
                    user.GridNum          = MathUtils.Addition(user.GridNum, backpackConfig.DefaultNum);
                }
            }
        }
Beispiel #3
0
        public static TList <SkillLvInfo> CreateSkillLvInfo(CombatGeneral general)
        {
            TList <SkillLvInfo> _skillLvList = new TList <SkillLvInfo>();

            if (general.GeneralID == LanguageManager.GetLang().GameUserGeneralID)
            {
                var       abilityCacheSet = new ConfigCacheSet <AbilityInfo>();
                var       skillLvSet      = new ConfigCacheSet <SkillLvInfo>();
                UserTrump userTrump       = new GameDataCacheSet <UserTrump>().FindKey(general.UserID, TrumpInfo.CurrTrumpID) ?? new UserTrump();
                if (userTrump.LiftNum > 0)
                {
                    userTrump.SkillInfo.Foreach(obj =>
                    {
                        var abilityInfo = abilityCacheSet.FindKey(obj.AbilityID) ?? new AbilityInfo();
                        if (abilityInfo.AttackType == AttackType.Trigger)
                        {
                            var temp = skillLvSet.FindKey(obj.AbilityID, obj.AbilityLv);
                            if (temp != null)
                            {
                                _skillLvList.Add(temp);
                            }
                        }
                        return(true);
                    });
                }
            }
            return(_skillLvList);
        }
Beispiel #4
0
        /// <summary>
        /// ����ճ�������Ʒ����
        /// </summary>
        /// <param name="userLv"></param>
        /// <returns></returns>
        public UserItemInfo GetDailyItem(short userLv)
        {
            UserItemInfo  userItem  = null;
            int           index     = (int)TaskStar - 1;
            var           cacheSet  = new ConfigCacheSet <DailyTaskInfo>();
            DailyTaskInfo dtaskInfo = cacheSet.FindKey(TaskID);

            string[] NumRank = dtaskInfo.QishiNumRank.ToNotNullString().Split(new char[] { ',' });
            int      num     = NumRank.Length > index && index >= 0 ? NumRank[index].ToInt() : 0;

            if (num <= 0)
            {
                return(userItem);
            }

            string[] QishiRank  = dtaskInfo.QishiRank.ToNotNullString().Split(new char[] { ',' });
            string[] UserLvRank = dtaskInfo.UserLvRank.ToNotNullString().Split(new char[] { ',' });
            if (QishiRank.Length > 0 && QishiRank.Length == UserLvRank.Length)
            {
                int          itemIndex = GetItemIndex(UserLvRank, userLv);
                int          itemID    = QishiRank.Length > itemIndex ? QishiRank[itemIndex].ToInt() : 0;
                ItemBaseInfo itemInfo  = new ConfigCacheSet <ItemBaseInfo>().FindKey(itemID);
                if (itemInfo != null)
                {
                    userItem        = new UserItemInfo();
                    userItem.ItemID = itemInfo.ItemID;
                    userItem.Num    = num;
                }
            }
            return(userItem);
        }
Beispiel #5
0
        /// <summary>
        ///  获取自身魂技
        /// </summary>
        /// <param name="userId"></param>
        /// <param name="gentralId"></param>
        /// <param name="abilityId"></param>
        /// <returns></returns>
        public static List <AbilityInfo> GetSelfAbilityList(string userId, int gentralId, int abilityId, out decimal SelfEffectValue)
        {
            SelfEffectValue = 0;
            decimal            effectNum       = 0;
            List <AbilityInfo> abilityInfoList = new List <AbilityInfo>();
            var userAbility = _cacheSetUserAbility.FindKey(userId);

            if (userAbility != null && userAbility.AbilityList != null)
            {
                var abilityList = userAbility.AbilityList.FindAll(s => s.GeneralID == gentralId && s.AbilityID != abilityId);
                abilityList.ForEach(ability =>
                {
                    var abilityInfo = _cacheSetAbility.FindKey(ability.AbilityID);
                    var abilityLv   = _cacheSetAbilityLv.FindKey(ability.AbilityID, ability.AbilityLv);
                    if (abilityInfo != null && abilityInfo.IsActive == 1)
                    {
                        abilityInfoList.Add(abilityInfo);
                        effectNum = MathUtils.Addition(effectNum, abilityInfo.RatioNum);
                    }
                    if (abilityLv != null)
                    {
                        effectNum = MathUtils.Addition(effectNum, abilityLv.EffectValue);
                    }
                });
            }
            SelfEffectValue = effectNum;
            return(abilityInfoList);
        }
Beispiel #6
0
 public static List<SkillLvInfo> CreateSkillLvInfo(CombatGeneral general)
 {
     List<SkillLvInfo> _skillLvList = new List<SkillLvInfo>();
     if (general.GeneralID == LanguageManager.GetLang().GameUserGeneralID)
     {
         var abilityCacheSet = new ConfigCacheSet<AbilityInfo>();
         var skillLvSet = new ConfigCacheSet<SkillLvInfo>();
         UserTrump userTrump = new GameDataCacheSet<UserTrump>().FindKey(general.UserID, TrumpInfo.CurrTrumpID) ?? new UserTrump();
         if (userTrump.LiftNum > 0)
         {
             userTrump.SkillInfo.Foreach(obj =>
             {
                 var abilityInfo = abilityCacheSet.FindKey(obj.AbilityID) ?? new AbilityInfo();
                 if (abilityInfo.AttackType == AttackType.Trigger)
                 {
                     var temp = skillLvSet.FindKey(obj.AbilityID, obj.AbilityLv);
                     if (temp != null)
                     {
                         _skillLvList.Add(temp);
                     }
                 }
                 return true;
             });
         }
     }
     return _skillLvList;
 }
Beispiel #7
0
        /// <summary>
        /// ����ճ�������������
        /// ��ʽ���Ǽ� * ��ɫ�ȼ� * ϵ��
        /// </summary>
        /// <returns></returns>
        public int GetDailyExpNum(short userLv)
        {
            var cacheSet = new ConfigCacheSet <DailyTaskInfo>();
            int num      = (int)Math.Floor((short)TaskStar * userLv * cacheSet.FindKey(TaskID).ExpRatioNum);

            return(num.IsValid(0, int.MaxValue) ? num : 0);
        }
Beispiel #8
0
        /// <summary>
        /// 获取攻击魂技
        /// </summary>
        /// <param name="userId"></param>
        /// <param name="gentralId"></param>
        /// <param name="abilityId"></param>
        /// <returns></returns>
        public static List <AbilityInfo> GetTriggerAbilityList(string userId, int gentralId, int abilityId)
        {
            var userAbility = _cacheSetUserAbility.FindKey(userId);
            List <AbilityInfo> abilityInfoList = new List <AbilityInfo>();

            if (userAbility != null && userAbility.AbilityList != null)
            {
                var abilityList =
                    userAbility.AbilityList.FindAll(s => s.GeneralID == gentralId && s.AbilityID != abilityId);
                abilityList.ForEach(ability =>
                {
                    var abilityInfo = _cacheSetAbility.FindKey(ability.AbilityID);
                    if (abilityInfo != null && abilityInfo.IsActive == 0)
                    {
                        abilityInfoList.Add(abilityInfo);
                    }
                });
            }
            return(abilityInfoList);
        }
Beispiel #9
0
        public override void BuildPacket()
        {
            var cacheSetItem = new ConfigCacheSet <ItemBaseInfo>();

            PushIntoStack(_cityInfoList.Count);
            foreach (var city in _cityInfoList)
            {
                List <PlotInfo> plotList = _cacheSetPlot.FindAll(s => s.CityID == city.CityID && s.PlotType == plotType);

                DataStruct dsItem = new DataStruct();
                dsItem.PushIntoStack(plotList.Count);
                foreach (PlotInfo item in plotList)
                {
                    UserPlotInfo userPlot   = UserPlotHelper.GetUserPlotInfo(ContextUser.UserID, item.PlotID);
                    int          isKill     = PlotHelper.IsKill(ContextUser.UserID, item.PlotID, cityID) ? 1 : 0;
                    DataStruct   dsItemPlot = new DataStruct();
                    dsItemPlot.PushIntoStack(item.PlotID);
                    dsItemPlot.PushIntoStack(item.PlotSeqNo.ToShort());
                    dsItemPlot.PushIntoStack(item.PlotName.ToNotNullString());
                    dsItemPlot.PushIntoStack(item.BossHeadID.ToNotNullString());
                    dsItemPlot.PushIntoStack(GetPlotStatus(userPlot, plotType));
                    dsItemPlot.PushIntoStack(userPlot == null ? 1 : (int)userPlot.StarScore);
                    dsItemPlot.PushIntoStack(isKill);
                    dsItemPlot.PushIntoStack(item.HonourNum);
                    dsItemPlot.PushIntoStack(item.GameCoin);
                    dsItemPlot.PushIntoStack(item.PlotDesc);
                    dsItemPlot.PushIntoStack(item.PlotLv);
                    dsItemPlot.PushIntoStack(ConfigEnvSet.GetInt("Plot.BattleEnergyNum"));
                    dsItemPlot.PushIntoStack(PlotHelper.GetPlotChallengeNum(UserId.ToString(), item.PlotID));
                    dsItemPlot.PushIntoStack(item.ChallengeNum);
                    dsItemPlot.PushIntoStack(userPlot == null ? 0 : userPlot.PlotNum);
                    dsItem.PushIntoStack(dsItemPlot);
                    var itemArray = item.ItemRank.Split(',');
                    dsItemPlot.PushIntoStack(itemArray.Length);
                    foreach (var s in itemArray)
                    {
                        var        sArray     = s.Split('=');
                        var        itemInfo   = cacheSetItem.FindKey(sArray.Length > 0 ? sArray[0].ToInt() : 0);
                        DataStruct dsItemInfo = new DataStruct();
                        dsItemInfo.PushIntoStack(itemInfo != null ? itemInfo.ItemName : string.Empty);
                        dsItemInfo.PushIntoStack(sArray.Length > 1 ? sArray[1].ToInt() : 0);
                        dsItemPlot.PushIntoStack(dsItemInfo);
                    }
                }

                dsItem.PushIntoStack(city.CityID);
                dsItem.PushIntoStack(city.CityName.ToNotNullString());

                PushIntoStack(dsItem);
            }
            PushIntoStack(resetNum);
            PushIntoStack(_backpackType);
        }
Beispiel #10
0
        /// <summary>
        /// ˢ����ȴʱ��
        /// </summary>
        /// <returns>����ʣ����ȴʱ��</returns>
        public int DoRefresh()
        {
            int          coldTime = 0;
            var          cache    = new ConfigCacheSet <ItemBaseInfo>();
            ItemBaseInfo itemInfo = cache.FindKey(ItemID);

            if (itemInfo != null && (itemInfo.PropType == 3 || itemInfo.PropType == 9))
            {
                TimeSpan ts = DateTime.Now - ChangeTime;

                coldTime = MathUtils.Subtraction(itemInfo.EffectNum, (int)Math.Floor(ts.TotalSeconds), 0);
                coldTime = MathUtils.Addition(coldTime, 0, itemInfo.EffectNum);
            }
            return(coldTime);
        }
Beispiel #11
0
        public static ItemBaseInfo ShowLairReward(LairTreasure lairTreasure, GameUser gameUser, LairTreasureType lairTreasureType)    //��ʾ��õ���Ʒ
        {
            var cacheSetItem = new ConfigCacheSet<ItemBaseInfo>();
            ItemBaseInfo itemBaseInfo = null;
            var lairRewardList = new ConfigCacheSet<LairRewardInfo>().FindAll(s => s.LairPosition == lairTreasure.LairPosition && s.LairTreasureType == lairTreasureType.ToInt());
            if (lairRewardList.Count >0)
            {
                var lairRewardInfo = lairRewardList[RandomUtils.GetRandom(0, lairRewardList.Count)];
                itemBaseInfo = cacheSetItem.FindKey(lairRewardInfo.ItemID);
                if (itemBaseInfo != null)
                {
                    UserItemHelper.AddUserItem(gameUser.UserID, lairRewardInfo.ItemID, lairTreasure.Num);
                }
            }

            return itemBaseInfo;
        }
        public static ItemBaseInfo ShowLairReward(LairTreasure lairTreasure, GameUser gameUser, LairTreasureType lairTreasureType)    //��ʾ��õ���Ʒ
        {
            var          cacheSetItem   = new ConfigCacheSet <ItemBaseInfo>();
            ItemBaseInfo itemBaseInfo   = null;
            var          lairRewardList = new ConfigCacheSet <LairRewardInfo>().FindAll(s => s.LairPosition == lairTreasure.LairPosition && s.LairTreasureType == lairTreasureType.ToInt());

            if (lairRewardList.Count > 0)
            {
                var lairRewardInfo = lairRewardList[RandomUtils.GetRandom(0, lairRewardList.Count)];
                itemBaseInfo = cacheSetItem.FindKey(lairRewardInfo.ItemID);
                if (itemBaseInfo != null)
                {
                    UserItemHelper.AddUserItem(gameUser.UserID, lairRewardInfo.ItemID, lairTreasure.Num);
                }
            }

            return(itemBaseInfo);
        }
Beispiel #13
0
 /// <summary>
 /// 获取技能等级加成
 /// </summary>
 /// <param name="userId"></param>
 /// <param name="generalId"></param>
 /// <param name="abilityId"></param>
 /// <returns></returns>
 public static decimal GetAbilityEffect(string userId, int generalId, int abilityId)
 {
     var userAbility = _cacheSetUserAbility.FindKey(userId);
     decimal effectValue = 0;
     if (userAbility != null && userAbility.AbilityList != null)
     {
         var ability2 =
             userAbility.AbilityList.Find(
                 s => s.AbilityID == abilityId && s.GeneralID == generalId);
         if (ability2 != null)
         {
             var cacheSetAbilityLv = new ConfigCacheSet<AbilityLvInfo>();
             var abilityLv = cacheSetAbilityLv.FindKey(ability2.AbilityID, ability2.AbilityLv);
             if (abilityLv != null)
             {
                 effectValue = abilityLv.EffectValue;
             }
         }
     }
     return effectValue;
 }
Beispiel #14
0
        /// <summary>
        /// 获取技能等级加成
        /// </summary>
        /// <param name="userId"></param>
        /// <param name="generalId"></param>
        /// <param name="abilityId"></param>
        /// <returns></returns>
        public static decimal GetAbilityEffect(string userId, int generalId, int abilityId)
        {
            var     userAbility = _cacheSetUserAbility.FindKey(userId);
            decimal effectValue = 0;

            if (userAbility != null && userAbility.AbilityList != null)
            {
                var ability2 =
                    userAbility.AbilityList.Find(
                        s => s.AbilityID == abilityId && s.GeneralID == generalId);
                if (ability2 != null)
                {
                    var cacheSetAbilityLv = new ConfigCacheSet <AbilityLvInfo>();
                    var abilityLv         = cacheSetAbilityLv.FindKey(ability2.AbilityID, ability2.AbilityLv);
                    if (abilityLv != null)
                    {
                        effectValue = abilityLv.EffectValue;
                    }
                }
            }
            return(effectValue);
        }
        /// <summary>
        /// 被动魂技效果
        /// </summary>
        /// <param name="userId"></param>
        /// <returns></returns>
        public static List <SelfAbilityEffect> GetSelfAbilityEffectList(string userId, short role)
        {
            List <SelfAbilityEffect> selfAbilityEffectList = new List <SelfAbilityEffect>();
            var cacheSetUserAbility  = new GameDataCacheSet <UserAbility>();
            var cacheSetUserEmbattle = new GameDataCacheSet <UserEmbattle>();
            var cacheSetAbilityInfo  = new ConfigCacheSet <AbilityInfo>();
            var userAbility          = cacheSetUserAbility.FindKey(userId);
            var userMagic            = new GameDataCacheSet <UserMagic>().Find(userId, s => s.IsEnabled);

            if (userAbility != null && userAbility.AbilityList != null)
            {
                var userEmbattleList = cacheSetUserEmbattle.FindAll(userId, s => s.MagicID == userMagic.MagicID);
                userEmbattleList.ForEach(obj =>
                {
                    if (obj.GeneralID > 0)
                    {
                        var abilityList =
                            userAbility.AbilityList.FindAll(s => s.GeneralID == obj.GeneralID);
                        abilityList.ForEach(ability =>
                        {
                            var abilityInfo = cacheSetAbilityInfo.FindKey(ability.AbilityID);
                            if (abilityInfo != null && abilityInfo.IsActive == 1)
                            {
                                SelfAbilityEffect selfAbilityEffect = new SelfAbilityEffect();
                                selfAbilityEffect.GeneralID         = obj.GeneralID;
                                selfAbilityEffect.EffectID1         = abilityInfo.EffectID1;
                                selfAbilityEffect.FntHeadID         = abilityInfo.FntHeadID;
                                selfAbilityEffect.IsIncrease        = abilityInfo.IsIncrease;
                                selfAbilityEffect.Position          = obj.Position;
                                selfAbilityEffect.Role = role;
                                selfAbilityEffectList.Add(selfAbilityEffect);
                            }
                        });
                    }
                });
            }
            return(selfAbilityEffectList);
        }
Beispiel #16
0
        private int GetMaxLife()
        {
            int genLv = 0;
            int currMaxLv = 0;
            GameUser userinfo = new GameDataCacheSet<GameUser>().FindKey(UserID);
            if (userinfo != null)
            {
                currMaxLv = userinfo.UserLv;
            }
            if (currMaxLv > 0 && GeneralLv > currMaxLv)
            {
                genLv = userinfo.UserLv;
            }
            else
            {
                genLv = GeneralLv;
            }
            //��ʼ����+(�ȼ�-1)*ְҵ�ӳ� + װ������+����ˮ������+ħ����������+������+��ħ����
            int lifeNum = 0;
            CareerInfo careerInfo = new ConfigCacheSet<CareerInfo>().FindKey(CareerID);
            if (careerInfo == null)
            {
                return lifeNum;
            }
            var tempLv = MathUtils.Subtraction(genLv, 1, 0);
            if (IsUserGeneral)
            {
                lifeNum = MathUtils.Addition(careerInfo.LifeNum, careerInfo.LifeIncreaseNum * tempLv, int.MaxValue);
            }
            else
            {
                GeneralInfo generalInfo = new ConfigCacheSet<GeneralInfo>().FindKey(GeneralID);
                if (generalInfo != null)
                {
                    lifeNum = MathUtils.Addition(generalInfo.LifeNum, careerInfo.LifeIncreaseNum * tempLv, int.MaxValue);
                }
            }
            //����ˮ������
            var packageCrystal = UserCrystalPackage.Get(UserID);
            if (packageCrystal != null && packageCrystal.CrystalPackage != null)
            {
                UserCrystalInfo[] crystalList = packageCrystal.CrystalPackage.FindAll(m => m.GeneralID.Equals(GeneralID)).ToArray();
                foreach (UserCrystalInfo item in crystalList)
                {
                    short upLv = 0;
                    if (item.CrystalLv < 10)
                    {
                        upLv = item.CrystalLv; //item.CrystalLv.Addition(1, short.MaxValue);
                    }
                    else
                    {
                        upLv = 10;
                    }
                    //AbilityType abilityType = new ConfigCacheSet<CrystalInfo>().FindKey(item.CrystalID).AbilityID;
                    var cacheSetCrystal = new ConfigCacheSet<CrystalInfo>();
                    var crystalInfo = cacheSetCrystal.FindKey(item.CrystalID);
                    AbilityType abilityType = crystalInfo != null ? crystalInfo.AbilityID : AbilityType.AttackLife;
                    decimal effectNum = 0;
                    CrystalLvInfo lvInfo = new ConfigCacheSet<CrystalLvInfo>().FindKey(item.CrystalID, upLv);
                    if (lvInfo != null)
                    {
                        effectNum = lvInfo.AbilityNum;
                    }
                    if (abilityType == AbilityType.ShengMing)
                    {
                        lifeNum = MathUtils.Addition(lifeNum, effectNum.ToInt(), int.MaxValue);
                    }
                }
            }
            //װ������
            var package = UserItemPackage.Get(UserID);
            if (package != null && package.ItemPackage != null)
            {
                var equList = package.ItemPackage.FindAll(m => !m.IsRemove && m.GeneralID.Equals(GeneralID) && m.ItemStatus.Equals(ItemStatus.YongBing));
                foreach (var item in equList)
                {
                    ItemEquAttrInfo equAttr = new ConfigCacheSet<ItemEquAttrInfo>().FindKey(item.ItemID, AbilityType.ShengMing);
                    if (equAttr != null)
                    {
                        lifeNum = MathUtils.Addition(lifeNum, equAttr.GetEffectNum(item.ItemLv), int.MaxValue);
                    }
                    //���������
                    var user = new GameDataCacheSet<GameUser>().FindKey(UserID);
                    if (user != null && user.SparePartList != null && user.SparePartList.Count > 0)
                    {
                        var sparepartList = user.SparePartList.FindAll(m => string.Equals(m.UserItemID, item.UserItemID));
                        foreach (var sparepart in sparepartList)
                        {
                            foreach (var property in sparepart.Propertys)
                            {
                                if (property.AbilityType == AbilityType.ShengMing)
                                {
                                    lifeNum = MathUtils.Addition(lifeNum, property.Num.ToInt());
                                }
                            }
                        }
                    }
                }
            }
            //ħ������������������
            var userMagicList = new GameDataCacheSet<UserMagic>().FindAll(UserID, u => u.MagicID != 1);
            foreach (UserMagic item in userMagicList)
            {
                //�����󷨵ȼ�Ϊ10��
                int mlv = 0;
                if (item.MagicType == MagicType.MoFaZhen && item.MagicLv > 10)
                {
                    mlv = 10;
                }
                else if (item.MagicType == MagicType.JiNeng && item.MagicLv > currMaxLv)
                {
                    mlv = currMaxLv;
                }
                else
                {
                    mlv = item.MagicLv;
                }
                MagicLvInfo magicLvItem = new ConfigCacheSet<MagicLvInfo>().FindKey(item.MagicID, mlv);

                if (magicLvItem != null && magicLvItem.AbilityType == AbilityType.ShengMing)
                {
                    int errNum = magicLvItem.EffectNum.ToInt();
                    lifeNum = MathUtils.Addition(lifeNum, errNum, int.MaxValue);
                }
            }
            // Ӷ���øжȵȼ��ӳ�����
            FeelLvInfo fellLvInfo = new ConfigCacheSet<FeelLvInfo>().FindKey(FeelLv);
            if (fellLvInfo != null && fellLvInfo.Property != null)
            {
                GeneralProperty property = fellLvInfo.Property.Find(m => m.AbilityType.Equals(AbilityType.ShengMing));
                if (property != null)
                {
                    int effectNum = property.AbilityValue.ToInt();
                    lifeNum = MathUtils.Addition(lifeNum, effectNum, int.MaxValue);
                }
            }

            //���������ӳ�
            UserTrump userTrump = new GameDataCacheSet<UserTrump>().FindKey(UserID, TrumpInfo.CurrTrumpID);
            if (userTrump != null && userTrump.LiftNum > 0 && GeneralID == LanguageManager.GetLang().GameUserGeneralID)
            {
                TrumpInfo trumpInfo = new ConfigCacheSet<TrumpInfo>().FindKey(TrumpInfo.CurrTrumpID, userTrump.TrumpLv);
                if (trumpInfo != null && trumpInfo.Property != null && trumpInfo.Property.Count > 0)
                {
                    int maxMatureNum = ConfigEnvSet.GetInt("Trump.MaxMatrueNum");
                    decimal mature = (decimal)userTrump.MatureNum / maxMatureNum;
                    GeneralProperty property = trumpInfo.Property.Find(m => m.AbilityType == AbilityType.ShengMing);
                    if (property != null)
                    {
                        lifeNum = MathUtils.Addition(lifeNum, (int)Math.Floor(mature * property.AbilityValue));
                    }
                }

                if (userTrump.PropertyInfo.Count > 0)
                {
                    GeneralProperty property = userTrump.PropertyInfo.Find(m => m.AbilityType == AbilityType.ShengMing);
                    if (property != null)
                    {
                        lifeNum = MathUtils.Addition(lifeNum, (int)property.AbilityValue);
                    }
                }
            }

            //��ħ����
            var itempackage = UserItemPackage.Get(UserID);
            var enchantPackage = UserEnchant.Get(UserID);
            if (itempackage != null && itempackage.ItemPackage != null && enchantPackage != null && enchantPackage.EnchantPackage != null)
            {
                var useritem = itempackage.ItemPackage.Find(m => !m.IsRemove && m.GeneralID == GeneralID && m.Equparts == EquParts.WuQi);
                if (useritem != null)
                {
                    var enchantList = enchantPackage.EnchantPackage.FindAll(m => m.UserItemID == useritem.UserItemID && m.AbilityType == AbilityType.ShengMing);
                    foreach (var info in enchantList)
                    {
                        EnchantLvInfo enchantLvInfo = new ConfigCacheSet<EnchantLvInfo>().FindKey(info.EnchantID, info.EnchantLv);
                        if (enchantLvInfo != null)
                        {
                            int maxEnchantMature = ConfigEnvSet.GetInt("Enchant.MaxEnchantMature");
                            decimal growthrate = enchantLvInfo.Num * info.MaxMature / maxEnchantMature * info.EnchantLv;
                            lifeNum = MathUtils.Addition(lifeNum, (int)growthrate);
                        }
                    }
                }
            }
            //Ӷ����������
            if (Attribute.Count > 0)
            {
                var generalPro = Attribute.Find(s => s.AbilityType == AbilityType.ShengMing);
                if (generalPro != null)
                {
                    lifeNum = MathUtils.Addition(lifeNum, generalPro.AbilityValue.ToInt());
                }
            }

            return lifeNum;
        }
Beispiel #17
0
        public override bool TakeAction()
        {
            Int16 potenceNum          = 0;
            Int16 thoughtNum          = 0;
            Int16 intelligenceNum     = 0;
            var   cacheSetUserGeneral = new GameDataCacheSet <UserGeneral>();
            var   cacheSetUserItem    = new GameDataCacheSet <UserItemPackage>();
            var   cacheSetBringUp     = new ConfigCacheSet <BringUpInfo>();

            if (_ops == 1)
            {
                var   attributeSetArray = ConfigEnvSet.GetString("UserBringUp.Set").Split(',');
                short multiple          = attributeSetArray[_multipleType.ToShort() - 1].ToShort();
                var   bringUpInfo       = cacheSetBringUp.FindKey(_bringUpType.ToInt());
                var   userItem          = cacheSetUserItem.FindKey(UserId.ToString());
                var   item = userItem != null && userItem.ItemPackage != null
                               ? userItem.ItemPackage.Find(s => s.ItemID == ConfigEnvSet.GetInt("User.DrugItemID"))
                               : null;

                var userGeneral = cacheSetUserGeneral.FindKey(UserId.ToString(), _generalId);
                if (_bringUpType == BringUpType.BaiJinPeiYang && ContextUser.VipLv < 3)
                {
                    ErrorCode = LanguageManager.GetLang().ErrorCode;
                    ErrorInfo = LanguageManager.GetLang().St1217_NotBaiJin;
                    return(false);
                }
                if (_bringUpType == BringUpType.ZhiZunPeiYang && ContextUser.VipLv < 5)
                {
                    ErrorCode = LanguageManager.GetLang().ErrorCode;
                    ErrorInfo = LanguageManager.GetLang().St1217_NotZhiZhun;
                    return(false);
                }
                if (userGeneral == null || bringUpInfo == null)
                {
                    ErrorCode = LanguageManager.GetLang().ErrorCode;
                    ErrorInfo = LanguageManager.GetLang().LoadDataError;
                    return(false);
                }
                if (userGeneral.Potential <= 0)
                {
                    ErrorCode = LanguageManager.GetLang().ErrorCode;
                    ErrorInfo = LanguageManager.GetLang().St1217_NotPotential;
                    return(false);
                }

                if (bringUpInfo.UseUpType == 2 && ContextUser.GoldNum < (bringUpInfo.UseUpNum * multiple))
                {
                    ErrorCode = LanguageManager.GetLang().ErrorCode;
                    ErrorInfo = LanguageManager.GetLang().St_GoldNotEnough;
                    return(false);
                }
                if (bringUpInfo.UseUpType == 1 && (item == null || item.Num < (bringUpInfo.UseUpNum * multiple)))
                {
                    ErrorCode = LanguageManager.GetLang().ErrorCode;
                    ErrorInfo = LanguageManager.GetLang().St1217_NotItem;
                    return(false);
                }
                var attributeChancePren = new int[3];
                var attributeChance     = bringUpInfo.AttributeChance;
                attributeChancePren[0] = attributeChance.PotenceNum * 10;
                attributeChancePren[1] = attributeChance.ThoughtNum * 10;
                attributeChancePren[2] = attributeChance.IntelligenceNum * 10;
                GetGeneralAttribute(attributeChancePren);

                foreach (var attributeIndex in _attributeIndexD)
                {
                    switch (attributeIndex.Value)
                    {
                    //力量
                    case 0:
                        var potenceValueArray = bringUpInfo.AttributeValueChance.PotenceValue.Split(',');
                        var potenceNumArray   = bringUpInfo.AttributeValueChance.PotenceNum.Split(',');
                        potenceNum = GetAttributeValue(potenceValueArray, potenceNumArray);
                        potenceNum = (potenceNum * multiple).ToShort();

                        break;

                    //魂力
                    case 1:
                        var thoughtValueArray = bringUpInfo.AttributeValueChance.ThoughtValue.Split(',');
                        var thoughtNumArray   = bringUpInfo.AttributeValueChance.ThoughtNum.Split(',');
                        thoughtNum = GetAttributeValue(thoughtValueArray, thoughtNumArray);
                        thoughtNum = (thoughtNum * multiple).ToShort();
                        break;

                    //智力
                    case 2:
                        var intelligenceValueArray = bringUpInfo.AttributeValueChance.IntelligenceValue.Split(',');
                        var intelligenceNumArray   = bringUpInfo.AttributeValueChance.IntelligenceNum.Split(',');
                        intelligenceNum = GetAttributeValue(intelligenceValueArray, intelligenceNumArray);
                        intelligenceNum = (intelligenceNum * multiple).ToShort();
                        break;
                    }
                }
                userGeneral.PotenceNum      = potenceNum;
                userGeneral.ThoughtNum      = thoughtNum;
                userGeneral.IntelligenceNum = intelligenceNum;
                _potenceNum      = userGeneral.PowerNum + potenceNum;
                _thoughtNum      = userGeneral.SoulNum + thoughtNum;
                _intelligenceNum = userGeneral.IntellectNum + intelligenceNum;
                if (userGeneral.Potential <= 0 || userGeneral.Potential < (userGeneral.PotenceNum + userGeneral.ThoughtNum + userGeneral.IntelligenceNum))
                {
                    ErrorCode = LanguageManager.GetLang().ErrorCode;
                    ErrorInfo = LanguageManager.GetLang().St1217_NotPotential;
                    return(false);
                }
                switch (bringUpInfo.UseUpType)
                {
                case 1:
                    UserItemHelper.UseUserItem(ContextUser.UserID, item.ItemID, (bringUpInfo.UseUpNum * multiple));
                    break;

                case 2:
                    ContextUser.UseGold = MathUtils.Addition(ContextUser.UseGold, (bringUpInfo.UseUpNum * multiple));
                    break;
                }
                _potential = userGeneral.Potential;
            }
            else
            {
                if (_ops == 2)
                {
                    var userGeneral = cacheSetUserGeneral.FindKey(UserId.ToString(), _generalId);
                    if (userGeneral == null)
                    {
                        ErrorCode = LanguageManager.GetLang().ErrorCode;
                        ErrorInfo = LanguageManager.GetLang().LoadDataError;
                        return(false);
                    }
                    int attributeValue = userGeneral.PotenceNum + userGeneral.ThoughtNum + userGeneral.IntelligenceNum;
                    if (attributeValue > 0)
                    {
                        userGeneral.PowerNum     = MathUtils.Addition(userGeneral.PowerNum, userGeneral.PotenceNum);
                        userGeneral.SoulNum      = MathUtils.Addition(userGeneral.SoulNum, userGeneral.ThoughtNum);
                        userGeneral.IntellectNum = MathUtils.Addition(userGeneral.IntellectNum, userGeneral.IntelligenceNum);
                        userGeneral.Potential    = MathUtils.Subtraction(userGeneral.Potential, attributeValue);
                    }
                    else
                    {
                        userGeneral.Potential = MathUtils.Addition(userGeneral.Potential, -attributeValue);
                    }
                    userGeneral.PotenceNum      = 0;
                    userGeneral.ThoughtNum      = 0;
                    userGeneral.IntelligenceNum = 0;
                    _potential = userGeneral.Potential;
                }
            }

            return(true);
        }
Beispiel #18
0
        public override bool TakeAction()
        {
            var cacheEnvSet = new ConfigCacheSet<ConfigEnvSet>();
            var envset = cacheEnvSet.FindKey("CombatMaxBout");
            if (envset != null)
            {

            }
            PlotNPCInfo npcInfo = new ConfigCacheSet<PlotNPCInfo>().FindKey(PlotNpcID);
            if (npcInfo == null)
            {
                return false;
            }
            PlotInfo plotInfo = new ConfigCacheSet<PlotInfo>().FindKey(npcInfo.PlotID);
            if (plotInfo == null)
            {
                return false;
            }
            //判断是否有下一关
            int nextLayerNum = MathUtils.Addition(ContextUser.UserExtend.LayerNum, 1);
            int nextHurdleNum = MathUtils.Addition(ContextUser.UserExtend.HurdleNum, 1);
            if ((UserHelper.IsLastLayer(plotInfo) || !IsGotoNextLayer(nextLayerNum)))
            {
                if (UserHelper.IsKill(ContextUser, npcInfo.PlotID))
                {
                    ErrorCode = LanguageManager.GetLang().ErrorCode;
                    ErrorInfo = LanguageManager.GetLang().St4303_PlotNotEnableLayerNum;
                    return false;
                }
            }

            if (ops != 1 && UserHelper.IsPromptBlood(ContextUser.UserID))
            {
                ErrorCode = 1;
                ErrorInfo = LanguageManager.GetLang().St4002_PromptBlood;
                return false;
            }
            //原因:灵件背包满时未提示
            if (ops != 1 && UserHelper.IsSpareGridNum(ContextUser, 0))
            {
                ErrorCode = 1;
                ErrorInfo = LanguageManager.GetLang().St_User_SpareBeiBaoMsg;
                return false;
            }

            if (ops != 1 && !string.IsNullOrEmpty(plotInfo.EnchantID) && plotInfo.EnchantProbability > 0 && EnchantHelper.IsEnchantPackage(ContextUser.UserID))
            {
                ErrorCode = 1;
                ErrorInfo = LanguageManager.GetLang().St4002_EnchantPackageFull;
                return false;
            }

            if (ContextUser.UserStatus == UserStatus.SaoDang)
            {
                ErrorCode = LanguageManager.GetLang().ErrorCode;
                ErrorInfo = LanguageManager.GetLang().St4007_Saodanging;
                return false;
            }
            if (ContextUser.UseMagicID == 0)
            {
                ErrorCode = LanguageManager.GetLang().ErrorCode;
                ErrorInfo = LanguageManager.GetLang().St4004_NoUseMagic;
                return false;
            }
            if (new GameDataCacheSet<UserEmbattle>().FindAll(Uid, m => m.MagicID == ContextUser.UseMagicID).Count == 0)
            {
                ErrorCode = LanguageManager.GetLang().ErrorCode;
                ErrorInfo = LanguageManager.GetLang().St4004_EmbattleEmpty;
                return false;
            }
            //PlotNPCInfo npcInfo = new ConfigCacheSet<PlotNPCInfo>().FindKey(PlotNpcID);
            if (IsPlotOut(npcInfo))
            {
                ErrorCode = LanguageManager.GetLang().ErrorCode;
                ErrorInfo = LanguageManager.GetLang().St4303_PlotNotEnable;
                return false;
            }

            UserHelper.UserGeneralPromptBlood(ContextUser);//佣兵自动使用绷带补血

            //触发战斗
            ISingleCombat plotCombater = CombatFactory.TriggerPlot(ContextUser, PlotNpcID);
            if (plotCombater == null)
            {
                return false;
            }
            var cacheSet = new GameDataCacheSet<UserPlotCombat>();
            userPlotCombat = cacheSet.FindKey(ContextUser.UserID, PlotNpcID);
            if (userPlotCombat == null)
            {
                userPlotCombat = new UserPlotCombat()
                {
                    UserID = ContextUser.UserID,
                    PlotNpcID = PlotNpcID
                };
                cacheSet.Add(userPlotCombat);
                userPlotCombat = cacheSet.FindKey(ContextUser.UserID, PlotNpcID);
            }
            userPlotCombat.PlotID = npcInfo.PlotID;
            userPlotCombat.CombatDate = DateTime.Now;
            userPlotCombat.IsWin = plotCombater.Doing();
            if (!userPlotCombat.IsWin)
            {
                userPlotCombat.OverNum += 1;
            }
            combatProcessList = (CombatProcessContainer)plotCombater.GetProcessResult();
            userPlotCombat.GeneralNum = combatProcessList.AttackList.Count;
            userPlotCombat.GeneralOverNum = GetOverGeneralNum(combatProcessList.AttackList.ToList());

            if (userPlotCombat.IsWin)
            {
                int honourNum = 0;
                PlotHelper.DoPlotPrize(Uid, npcInfo, userPlotCombat, 0, out honourNum);
                prizeItems = PlotHelper.GetKalpaPlotMonsterItems(Uid, npcInfo.PlotID, npcInfo.PlotNpcID);
                universalArray = GetUniversalList().ToArray();
                if (plotInfo.PlotType == PlotType.Kalpa)
                {

                    KalpaDailyRestrain(npcInfo);
                    if (ContextUser.UserExtend == null)
                    {
                        ContextUser.UserExtend = new GameUserExtend();
                    }

                    PlotInfo[] plotInfoList = new ConfigCacheSet<PlotInfo>().FindAll(m => m.LayerNum == ContextUser.UserExtend.LayerNum && m.PlotSeqNo == nextHurdleNum && m.PlotType == PlotType.Kalpa).ToArray();
                    if (plotInfoList.Length > 0)
                    {
                        int layerNum = ContextUser.UserExtend.LayerNum;
                        int hurdleNum = ContextUser.UserExtend.HurdleNum;

                        if (CheckHurdleNum(ContextUser.UserID, layerNum, hurdleNum))
                        {
                            ContextUser.UserExtend.UpdateNotify(obj =>
                                {
                                    ContextUser.UserExtend.HurdleNum = nextHurdleNum;
                                    return true;
                                });
                            //ContextUser.Update();
                            PlotHelper.EnablePlot(ContextUser.UserID, plotInfo.AftPlotID);
                        }
                    }
                    else if (IsGotoNextLayer(nextLayerNum))
                    {
                        //判断是否能到下一层
                        plotInfoList = new ConfigCacheSet<PlotInfo>().FindAll(m => m.LayerNum == nextLayerNum && m.PlotType == PlotType.Kalpa).ToArray();
                        if (plotInfoList.Length > 0)
                        {
                            ContextUser.UserExtend.UpdateNotify(obj =>
                            {
                                ContextUser.UserExtend.LayerNum = nextLayerNum;
                                ContextUser.UserExtend.HurdleNum = 1;
                                return true;
                            });
                            //ContextUser.Update();
                            PlotHelper.EnablePlot(ContextUser.UserID, plotInfo.AftPlotID);
                        }
                    }
                }
            }

            //日志
            UserCombatLog log = new UserCombatLog();
            log.CombatLogID = Guid.NewGuid().ToString();
            log.UserID = userPlotCombat.UserID;
            log.CityID = ContextUser.CityID;
            log.PlotID = userPlotCombat.PlotID;
            log.NpcID = userPlotCombat.PlotNpcID;
            log.CombatType = CombatType.Kalpa;
            log.HostileUser = string.Empty;
            log.IsWin = userPlotCombat.IsWin;
            log.CombatProcess = JsonUtils.Serialize(combatProcessList);
            log.PrizeItem = prizeItems;
            log.CreateDate = DateTime.Now;
            var sender = DataSyncManager.GetDataSender();
            sender.Send(log);

            UserHelper.GetGeneralLife(ContextUser.UserID);

            return true;
        }
Beispiel #19
0
 /// <summary>
 /// 被动魂技效果
 /// </summary>
 /// <param name="userId"></param>
 /// <returns></returns>
 public static List<SelfAbilityEffect> GetSelfAbilityEffectList(string userId, short role)
 {
     List<SelfAbilityEffect> selfAbilityEffectList = new List<SelfAbilityEffect>();
     var cacheSetUserAbility = new GameDataCacheSet<UserAbility>();
     var cacheSetUserEmbattle = new GameDataCacheSet<UserEmbattle>();
     var cacheSetAbilityInfo = new ConfigCacheSet<AbilityInfo>();
     var userAbility = cacheSetUserAbility.FindKey(userId);
     var userMagic = new GameDataCacheSet<UserMagic>().Find(userId, s => s.IsEnabled);
     if (userAbility != null && userAbility.AbilityList != null)
     {
         var userEmbattleList = cacheSetUserEmbattle.FindAll(userId, s => s.MagicID == userMagic.MagicID);
         userEmbattleList.ForEach(obj =>
         {
             if (obj.GeneralID > 0)
             {
                 var abilityList =
                     userAbility.AbilityList.FindAll(s => s.GeneralID == obj.GeneralID);
                 abilityList.ForEach(ability =>
                 {
                     var abilityInfo = cacheSetAbilityInfo.FindKey(ability.AbilityID);
                     if (abilityInfo != null && abilityInfo.IsActive == 1)
                     {
                         SelfAbilityEffect selfAbilityEffect = new SelfAbilityEffect();
                         selfAbilityEffect.GeneralID = obj.GeneralID;
                         selfAbilityEffect.EffectID1 = abilityInfo.EffectID1;
                         selfAbilityEffect.FntHeadID = abilityInfo.FntHeadID;
                         selfAbilityEffect.IsIncrease = abilityInfo.IsIncrease;
                         selfAbilityEffect.Position = obj.Position;
                         selfAbilityEffect.Role = role;
                         selfAbilityEffectList.Add(selfAbilityEffect);
                     }
                 });
             }
         });
     }
     return selfAbilityEffectList;
 }
Beispiel #20
0
        /// <summary>
        /// 是否答题正确
        /// </summary>
        /// <param name="questionId"></param>
        /// <param name="answer"></param>
        /// <returns></returns>
        protected override bool CheckAnswer(int questionId, string answer)
        {
            var question = CacheSet.FindKey(questionId);

            return(question != null && question.Answer == answer);
        }
Beispiel #21
0
        /// <summary>
        /// 缘分加成
        /// </summary>
        /// <param name="userId"></param>
        /// <param name="general"></param>
        public static void KarmaAddition(string userId, CombatGeneral general)
        {
            var cacheSetKarma = new ConfigCacheSet<KarmaInfo>();
            var karmaInfo = cacheSetKarma.FindKey(general.GeneralID);
            if (karmaInfo != null && karmaInfo.KarmaList != null && karmaInfo.KarmaList.Count > 0)
            {
                var karmaList = karmaInfo.KarmaList;
                foreach (var karma in karmaList)
                {
                    bool isKarma = true;
                    string[] valueIDArray = karma.ValueID.Split(',');
                    switch (karma.KarmaType)
                    {
                        case KarmaType.YongBing:
                            foreach (var id in valueIDArray)
                            {
                                if (embattleList.Find(s => s.GeneralID == id.ToInt()) == null)
                                {
                                    isKarma = false;
                                    break;
                                }
                            }
                            if (isKarma)
                            {
                                KarmaAdditionValue(karma, general);
                            }


                            break;
                        case KarmaType.ZhuangBei:
                            var cacheSetItem = new GameDataCacheSet<UserItemPackage>();
                            var userItem = cacheSetItem.FindKey(userId);
                            if (userItem != null && userItem.ItemPackage != null)
                            {

                                foreach (var id in valueIDArray)
                                {
                                    if (userItem.ItemPackage.Find(s => s.ItemID == id.ToInt() && s.GeneralID == general.GeneralID) == null)
                                    {
                                        isKarma = false;
                                        break;
                                    }
                                }
                                if (isKarma)
                                {
                                    KarmaAdditionValue(karma, general);
                                }

                            }
                            break;
                        case KarmaType.JiNen:
                            var cacheSetAbility = new GameDataCacheSet<UserAbility>();
                            var ability = cacheSetAbility.FindKey(userId);
                            if (ability != null && ability.AbilityList != null)
                            {

                                var abilityList = ability.AbilityList;

                                foreach (var id in valueIDArray)
                                {
                                    if (abilityList.Find(s => s.AbilityID == id.ToInt() && s.GeneralID == general.GeneralID) == null)
                                    {
                                        isKarma = false;
                                        break;
                                    }
                                }
                                if (isKarma)
                                {
                                    KarmaAdditionValue(karma, general);
                                }
                            }
                            break;
                        case KarmaType.ShuiJing:
                            var cacheSetCrystal = new GameDataCacheSet<UserCrystalPackage>();
                            var userCrystal = cacheSetCrystal.FindKey(userId);

                            if (userCrystal != null && userCrystal.CrystalPackage != null)
                            {

                                var crystalList = userCrystal.CrystalPackage;

                                foreach (var id in valueIDArray)
                                {
                                    if (crystalList.Find(s => s.CrystalID == id.ToInt() && s.GeneralID == general.GeneralID) == null)
                                    {
                                        isKarma = false;
                                        break;
                                    }
                                }
                                if (isKarma)
                                {
                                    KarmaAdditionValue(karma, general);
                                }
                            }
                            break;
                    }
                }
            }
        }
Beispiel #22
0
 /// <summary>
 /// ����ճ�������������
 /// ��ʽ���Ǽ� * ��ɫ�ȼ� * ϵ��
 /// </summary>
 /// <returns></returns>
 public int GetDailyExpNum(short userLv)
 {
     var cacheSet = new ConfigCacheSet<DailyTaskInfo>();
     int num = (int)Math.Floor((short)TaskStar * userLv * cacheSet.FindKey(TaskID).ExpRatioNum);
     return num.IsValid(0, int.MaxValue) ? num : 0;
 }
Beispiel #23
0
        private int GetMaxLife()
        {
            int      genLv     = 0;
            int      currMaxLv = 0;
            GameUser userinfo  = new GameDataCacheSet <GameUser>().FindKey(UserID);

            if (userinfo != null)
            {
                currMaxLv = userinfo.UserLv;
            }
            if (currMaxLv > 0 && GeneralLv > currMaxLv)
            {
                genLv = userinfo.UserLv;
            }
            else
            {
                genLv = GeneralLv;
            }
            //��ʼ����+(�ȼ�-1)*ְҵ�ӳ� + װ������+����ˮ������+ħ����������+������+��ħ����
            int        lifeNum    = 0;
            CareerInfo careerInfo = new ConfigCacheSet <CareerInfo>().FindKey(CareerID);

            if (careerInfo == null)
            {
                return(lifeNum);
            }
            var tempLv = MathUtils.Subtraction(genLv, 1, 0);

            if (IsUserGeneral)
            {
                lifeNum = MathUtils.Addition(careerInfo.LifeNum, careerInfo.LifeIncreaseNum * tempLv, int.MaxValue);
            }
            else
            {
                GeneralInfo generalInfo = new ConfigCacheSet <GeneralInfo>().FindKey(GeneralID);
                if (generalInfo != null)
                {
                    lifeNum = MathUtils.Addition(generalInfo.LifeNum, careerInfo.LifeIncreaseNum * tempLv, int.MaxValue);
                }
            }
            //����ˮ������
            var packageCrystal = UserCrystalPackage.Get(UserID);

            if (packageCrystal != null && packageCrystal.CrystalPackage != null)
            {
                UserCrystalInfo[] crystalList = packageCrystal.CrystalPackage.FindAll(m => m.GeneralID.Equals(GeneralID)).ToArray();
                foreach (UserCrystalInfo item in crystalList)
                {
                    short upLv = 0;
                    if (item.CrystalLv < 10)
                    {
                        upLv = item.CrystalLv; //item.CrystalLv.Addition(1, short.MaxValue);
                    }
                    else
                    {
                        upLv = 10;
                    }
                    //AbilityType abilityType = new ConfigCacheSet<CrystalInfo>().FindKey(item.CrystalID).AbilityID;
                    var           cacheSetCrystal = new ConfigCacheSet <CrystalInfo>();
                    var           crystalInfo     = cacheSetCrystal.FindKey(item.CrystalID);
                    AbilityType   abilityType     = crystalInfo != null ? crystalInfo.AbilityID : AbilityType.AttackLife;
                    decimal       effectNum       = 0;
                    CrystalLvInfo lvInfo          = new ConfigCacheSet <CrystalLvInfo>().FindKey(item.CrystalID, upLv);
                    if (lvInfo != null)
                    {
                        effectNum = lvInfo.AbilityNum;
                    }
                    if (abilityType == AbilityType.ShengMing)
                    {
                        lifeNum = MathUtils.Addition(lifeNum, effectNum.ToInt(), int.MaxValue);
                    }
                }
            }
            //װ������
            var package = UserItemPackage.Get(UserID);

            if (package != null && package.ItemPackage != null)
            {
                var equList = package.ItemPackage.FindAll(m => !m.IsRemove && m.GeneralID.Equals(GeneralID) && m.ItemStatus.Equals(ItemStatus.YongBing));
                foreach (var item in equList)
                {
                    ItemEquAttrInfo equAttr = new ConfigCacheSet <ItemEquAttrInfo>().FindKey(item.ItemID, AbilityType.ShengMing);
                    if (equAttr != null)
                    {
                        lifeNum = MathUtils.Addition(lifeNum, equAttr.GetEffectNum(item.ItemLv), int.MaxValue);
                    }
                    //���������
                    var user = new GameDataCacheSet <GameUser>().FindKey(UserID);
                    if (user != null && user.SparePartList != null && user.SparePartList.Count > 0)
                    {
                        var sparepartList = user.SparePartList.FindAll(m => string.Equals(m.UserItemID, item.UserItemID));
                        foreach (var sparepart in sparepartList)
                        {
                            foreach (var property in sparepart.Propertys)
                            {
                                if (property.AbilityType == AbilityType.ShengMing)
                                {
                                    lifeNum = MathUtils.Addition(lifeNum, property.Num.ToInt());
                                }
                            }
                        }
                    }
                }
            }
            //ħ������������������
            var userMagicList = new GameDataCacheSet <UserMagic>().FindAll(UserID, u => u.MagicID != 1);

            foreach (UserMagic item in userMagicList)
            {
                //�����󷨵ȼ�Ϊ10��
                int mlv = 0;
                if (item.MagicType == MagicType.MoFaZhen && item.MagicLv > 10)
                {
                    mlv = 10;
                }
                else if (item.MagicType == MagicType.JiNeng && item.MagicLv > currMaxLv)
                {
                    mlv = currMaxLv;
                }
                else
                {
                    mlv = item.MagicLv;
                }
                MagicLvInfo magicLvItem = new ConfigCacheSet <MagicLvInfo>().FindKey(item.MagicID, mlv);

                if (magicLvItem != null && magicLvItem.AbilityType == AbilityType.ShengMing)
                {
                    int errNum = magicLvItem.EffectNum.ToInt();
                    lifeNum = MathUtils.Addition(lifeNum, errNum, int.MaxValue);
                }
            }
            // Ӷ���øжȵȼ��ӳ�����
            FeelLvInfo fellLvInfo = new ConfigCacheSet <FeelLvInfo>().FindKey(FeelLv);

            if (fellLvInfo != null && fellLvInfo.Property != null)
            {
                GeneralProperty property = fellLvInfo.Property.Find(m => m.AbilityType.Equals(AbilityType.ShengMing));
                if (property != null)
                {
                    int effectNum = property.AbilityValue.ToInt();
                    lifeNum = MathUtils.Addition(lifeNum, effectNum, int.MaxValue);
                }
            }

            //���������ӳ�
            UserTrump userTrump = new GameDataCacheSet <UserTrump>().FindKey(UserID, TrumpInfo.CurrTrumpID);

            if (userTrump != null && userTrump.LiftNum > 0 && GeneralID == LanguageManager.GetLang().GameUserGeneralID)
            {
                TrumpInfo trumpInfo = new ConfigCacheSet <TrumpInfo>().FindKey(TrumpInfo.CurrTrumpID, userTrump.TrumpLv);
                if (trumpInfo != null && trumpInfo.Property != null && trumpInfo.Property.Count > 0)
                {
                    int             maxMatureNum = ConfigEnvSet.GetInt("Trump.MaxMatrueNum");
                    decimal         mature       = (decimal)userTrump.MatureNum / maxMatureNum;
                    GeneralProperty property     = trumpInfo.Property.Find(m => m.AbilityType == AbilityType.ShengMing);
                    if (property != null)
                    {
                        lifeNum = MathUtils.Addition(lifeNum, (int)Math.Floor(mature * property.AbilityValue));
                    }
                }

                if (userTrump.PropertyInfo.Count > 0)
                {
                    GeneralProperty property = userTrump.PropertyInfo.Find(m => m.AbilityType == AbilityType.ShengMing);
                    if (property != null)
                    {
                        lifeNum = MathUtils.Addition(lifeNum, (int)property.AbilityValue);
                    }
                }
            }

            //��ħ����
            var itempackage    = UserItemPackage.Get(UserID);
            var enchantPackage = UserEnchant.Get(UserID);

            if (itempackage != null && itempackage.ItemPackage != null && enchantPackage != null && enchantPackage.EnchantPackage != null)
            {
                var useritem = itempackage.ItemPackage.Find(m => !m.IsRemove && m.GeneralID == GeneralID && m.Equparts == EquParts.WuQi);
                if (useritem != null)
                {
                    var enchantList = enchantPackage.EnchantPackage.FindAll(m => m.UserItemID == useritem.UserItemID && m.AbilityType == AbilityType.ShengMing);
                    foreach (var info in enchantList)
                    {
                        EnchantLvInfo enchantLvInfo = new ConfigCacheSet <EnchantLvInfo>().FindKey(info.EnchantID, info.EnchantLv);
                        if (enchantLvInfo != null)
                        {
                            int     maxEnchantMature = ConfigEnvSet.GetInt("Enchant.MaxEnchantMature");
                            decimal growthrate       = enchantLvInfo.Num * info.MaxMature / maxEnchantMature * info.EnchantLv;
                            lifeNum = MathUtils.Addition(lifeNum, (int)growthrate);
                        }
                    }
                }
            }
            //Ӷ����������
            if (Attribute.Count > 0)
            {
                var generalPro = Attribute.Find(s => s.AbilityType == AbilityType.ShengMing);
                if (generalPro != null)
                {
                    lifeNum = MathUtils.Addition(lifeNum, generalPro.AbilityValue.ToInt());
                }
            }

            return(lifeNum);
        }
Beispiel #24
0
        public override void BuildPacket()
        {
            var cacheSetItem = new ConfigCacheSet<ItemBaseInfo>();
            PushIntoStack(_cityInfoList.Count);
            foreach (var city in _cityInfoList)
            {

                List<PlotInfo> plotList = _cacheSetPlot.FindAll(s => s.CityID == city.CityID && s.PlotType == plotType);

                DataStruct dsItem = new DataStruct();
                dsItem.PushIntoStack(plotList.Count);
                foreach (PlotInfo item in plotList)
                {
                    UserPlotInfo userPlot = UserPlotHelper.GetUserPlotInfo(ContextUser.UserID, item.PlotID);
                    int isKill = PlotHelper.IsKill(ContextUser.UserID, item.PlotID, cityID) ? 1 : 0;
                    DataStruct dsItemPlot = new DataStruct();
                    dsItemPlot.PushIntoStack(item.PlotID);
                    dsItemPlot.PushIntoStack(item.PlotSeqNo.ToShort());
                    dsItemPlot.PushIntoStack(item.PlotName.ToNotNullString());
                    dsItemPlot.PushIntoStack(item.BossHeadID.ToNotNullString());
                    dsItemPlot.PushIntoStack(GetPlotStatus(userPlot, plotType));
                    dsItemPlot.PushIntoStack(userPlot == null ? 1 : (int)userPlot.StarScore);
                    dsItemPlot.PushIntoStack(isKill);
                    dsItemPlot.PushIntoStack(item.HonourNum);
                    dsItemPlot.PushIntoStack(item.GameCoin);
                    dsItemPlot.PushIntoStack(item.PlotDesc);
                    dsItemPlot.PushIntoStack(item.PlotLv);
                    dsItemPlot.PushIntoStack(ConfigEnvSet.GetInt("Plot.BattleEnergyNum"));
                    dsItemPlot.PushIntoStack(PlotHelper.GetPlotChallengeNum(UserId.ToString(), item.PlotID));
                    dsItemPlot.PushIntoStack(item.ChallengeNum);
                    dsItemPlot.PushIntoStack(userPlot == null ? 0 : userPlot.PlotNum);
                    dsItem.PushIntoStack(dsItemPlot);
                    var itemArray = item.ItemRank.Split(',');
                    dsItemPlot.PushIntoStack(itemArray.Length);
                    foreach (var s in itemArray)
                    {
                        var sArray = s.Split('=');
                        var itemInfo = cacheSetItem.FindKey(sArray.Length > 0 ? sArray[0].ToInt() : 0);
                        DataStruct dsItemInfo = new DataStruct();
                        dsItemInfo.PushIntoStack(itemInfo != null ? itemInfo.ItemName : string.Empty);
                        dsItemInfo.PushIntoStack(sArray.Length > 1 ? sArray[1].ToInt() : 0);
                        dsItemPlot.PushIntoStack(dsItemInfo);
                    }
                }

                dsItem.PushIntoStack(city.CityID);
                dsItem.PushIntoStack(city.CityName.ToNotNullString());

                PushIntoStack(dsItem);
            }
            PushIntoStack(resetNum);
            PushIntoStack(_backpackType);
        }
Beispiel #25
0
        public override bool TakeAction()
        {
            var cacheSetUserPack   = new GameDataCacheSet <UserPack>();
            var cacheSetBackPack   = new ConfigCacheSet <BackpackConfigInfo>();
            var backpackConfigInfo = cacheSetBackPack.FindKey(1);


            var userPack = cacheSetUserPack.FindKey(UserId.ToString());
            var packType = userPack != null && userPack.PackTypeList != null?userPack.PackTypeList.Find(s => s.BackpackType.ToInt() == 1) : null;

            if (backpackConfigInfo == null)
            {
                ErrorCode = LanguageManager.GetLang().ErrorCode;
                ErrorInfo = LanguageManager.GetLang().LoadDataError;
                return(false);
            }
            if (ContextUser.GoldNum < backpackConfigInfo.RequiredGoldNum)
            {
                ErrorCode = LanguageManager.GetLang().ErrorCode;
                ErrorInfo = LanguageManager.GetLang().St_GoldNotEnough;
                return(false);
            }
            if (packType != null && packType.OpenNum >= backpackConfigInfo.MaxOpenNum)
            {
                ErrorCode = LanguageManager.GetLang().ErrorCode;
                ErrorInfo = LanguageManager.GetLang().St1110_OverExpansion;
                return(false);
            }
            if (userPack == null)
            {
                userPack              = new UserPack(UserId);
                packType              = new PackType();
                userPack.CreateDate   = DateTime.Now;
                packType.OpenNum      = 1;
                packType.BackpackType = BackpackType.HunJi;
                packType.OpenNum      = MathUtils.Addition(backpackConfigInfo.DefaultNum, backpackConfigInfo.EveryAddNum);
                userPack.PackTypeList.AddChildrenListener(packType);
                cacheSetUserPack.Add(userPack, UserId);
            }
            else
            {
                if (packType == null)
                {
                    packType              = new PackType();
                    userPack.CreateDate   = DateTime.Now;
                    packType.OpenNum      = 1;
                    packType.BackpackType = BackpackType.HunJi;
                    packType.OpenNum      = MathUtils.Addition(backpackConfigInfo.DefaultNum, backpackConfigInfo.EveryAddNum); cacheSetUserPack.Add(userPack, UserId);
                }
                else
                {
                    userPack.UpdateNotify(obj =>
                    {
                        packType.OpenNum = MathUtils.Subtraction(packType.OpenNum, 1);
                        packType.OpenNum = MathUtils.Addition(packType.OpenNum, backpackConfigInfo.EveryAddNum);
                        return(true);
                    });
                }
            }
            MathUtils.DiffDate(DateTime.Now.Date).TotalDays.ToInt();
            return(true);
        }
Beispiel #26
0
 public override bool TakeAction()
 {
     var cacheSetUserPack = new GameDataCacheSet<UserPack>();
     var cacheSetBackPack = new ConfigCacheSet<BackpackConfigInfo>();
     var backpackConfigInfo = cacheSetBackPack.FindKey(1);
  
     
     var userPack = cacheSetUserPack.FindKey(UserId.ToString());
     var packType = userPack != null && userPack.PackTypeList != null ? userPack.PackTypeList.Find(s => s.BackpackType.ToInt() == 1) : null;
     
     if (backpackConfigInfo == null)
     {
         ErrorCode = LanguageManager.GetLang().ErrorCode;
         ErrorInfo = LanguageManager.GetLang().LoadDataError;
         return false;
     }
     if (ContextUser.GoldNum < backpackConfigInfo.RequiredGoldNum)
     {
         ErrorCode = LanguageManager.GetLang().ErrorCode;
         ErrorInfo = LanguageManager.GetLang().St_GoldNotEnough;
         return false;
     }
     if (packType != null && packType.OpenNum >= backpackConfigInfo.MaxOpenNum)
     {
         ErrorCode = LanguageManager.GetLang().ErrorCode;
         ErrorInfo = LanguageManager.GetLang().St1110_OverExpansion;
         return false;
     }
     if (userPack == null)
     {
         userPack = new UserPack(UserId);
         packType = new PackType();
         userPack.CreateDate = DateTime.Now;
         packType.OpenNum = 1;
         packType.BackpackType = BackpackType.HunJi;
         packType.OpenNum = MathUtils.Addition(backpackConfigInfo.DefaultNum, backpackConfigInfo.EveryAddNum);
         userPack.PackTypeList.AddChildrenListener(packType);
         cacheSetUserPack.Add(userPack, UserId);
         
         
     }
     else
     {
         if (packType == null)
         {
             packType = new PackType();
             userPack.CreateDate = DateTime.Now;
             packType.OpenNum = 1;
             packType.BackpackType = BackpackType.HunJi;
             packType.OpenNum = MathUtils.Addition(backpackConfigInfo.DefaultNum, backpackConfigInfo.EveryAddNum); cacheSetUserPack.Add(userPack, UserId);
         }
         else
         {
             userPack.UpdateNotify(obj =>
             {
                 packType.OpenNum = MathUtils.Subtraction(packType.OpenNum, 1);
                 packType.OpenNum = MathUtils.Addition(packType.OpenNum, backpackConfigInfo.EveryAddNum);
                 return true;
             });
         }
     }
     MathUtils.DiffDate(DateTime.Now.Date).TotalDays.ToInt();
     return true;
 }
Beispiel #27
0
        public override bool TakeAction()
        {
            Int16 potenceNum = 0;
            Int16 thoughtNum = 0;
            Int16 intelligenceNum = 0;
            var cacheSetUserGeneral = new GameDataCacheSet<UserGeneral>();
            var cacheSetUserItem = new GameDataCacheSet<UserItemPackage>();
            var cacheSetBringUp = new ConfigCacheSet<BringUpInfo>();
            if (_ops == 1)
            {
                var attributeSetArray = ConfigEnvSet.GetString("UserBringUp.Set").Split(',');
                short multiple = attributeSetArray[_multipleType.ToShort() - 1].ToShort();
                var bringUpInfo = cacheSetBringUp.FindKey(_bringUpType.ToInt());
                var userItem = cacheSetUserItem.FindKey(UserId.ToString());
                var item = userItem != null && userItem.ItemPackage != null
                               ? userItem.ItemPackage.Find(s => s.ItemID == ConfigEnvSet.GetInt("User.DrugItemID"))
                               : null;
                var userGeneral = cacheSetUserGeneral.FindKey(UserId.ToString(), _generalId);
                if (_bringUpType == BringUpType.BaiJinPeiYang && ContextUser.VipLv < 3)
                {
                    ErrorCode = LanguageManager.GetLang().ErrorCode;
                    ErrorInfo = LanguageManager.GetLang().St1217_NotBaiJin;
                    return false;
                }
                if (_bringUpType == BringUpType.ZhiZunPeiYang && ContextUser.VipLv < 5)
                {
                    ErrorCode = LanguageManager.GetLang().ErrorCode;
                    ErrorInfo = LanguageManager.GetLang().St1217_NotZhiZhun;
                    return false;
                }
                if (userGeneral == null || bringUpInfo == null)
                {
                    ErrorCode = LanguageManager.GetLang().ErrorCode;
                    ErrorInfo = LanguageManager.GetLang().LoadDataError;
                    return false;
                }
                if (userGeneral.Potential <= 0)
                {
                    ErrorCode = LanguageManager.GetLang().ErrorCode;
                    ErrorInfo = LanguageManager.GetLang().St1217_NotPotential;
                    return false;
                }

                if (bringUpInfo.UseUpType == 2 && ContextUser.GoldNum < (bringUpInfo.UseUpNum * multiple))
                {
                    ErrorCode = LanguageManager.GetLang().ErrorCode;
                    ErrorInfo = LanguageManager.GetLang().St_GoldNotEnough;
                    return false;
                }
                if (bringUpInfo.UseUpType == 1 && (item == null || item.Num < (bringUpInfo.UseUpNum * multiple)))
                {
                    ErrorCode = LanguageManager.GetLang().ErrorCode;
                    ErrorInfo = LanguageManager.GetLang().St1217_NotItem;
                    return false;
                }
                var attributeChancePren = new int[3];
                var attributeChance = bringUpInfo.AttributeChance;
                attributeChancePren[0] = attributeChance.PotenceNum * 10;
                attributeChancePren[1] = attributeChance.ThoughtNum * 10;
                attributeChancePren[2] = attributeChance.IntelligenceNum * 10;
                GetGeneralAttribute(attributeChancePren);

                foreach (var attributeIndex in _attributeIndexD)
                {
                    switch (attributeIndex.Value)
                    {
                        //力量
                        case 0:
                            var potenceValueArray = bringUpInfo.AttributeValueChance.PotenceValue.Split(',');
                            var potenceNumArray = bringUpInfo.AttributeValueChance.PotenceNum.Split(',');
                            potenceNum = GetAttributeValue(potenceValueArray, potenceNumArray);
                            potenceNum = (potenceNum * multiple).ToShort();

                            break;
                        //魂力
                        case 1:
                            var thoughtValueArray = bringUpInfo.AttributeValueChance.ThoughtValue.Split(',');
                            var thoughtNumArray = bringUpInfo.AttributeValueChance.ThoughtNum.Split(',');
                            thoughtNum = GetAttributeValue(thoughtValueArray, thoughtNumArray);
                            thoughtNum = (thoughtNum * multiple).ToShort();
                            break;
                        //智力
                        case 2:
                            var intelligenceValueArray = bringUpInfo.AttributeValueChance.IntelligenceValue.Split(',');
                            var intelligenceNumArray = bringUpInfo.AttributeValueChance.IntelligenceNum.Split(',');
                            intelligenceNum = GetAttributeValue(intelligenceValueArray, intelligenceNumArray);
                            intelligenceNum = (intelligenceNum * multiple).ToShort();
                            break;
                    }
                }
                userGeneral.PotenceNum = potenceNum;
                userGeneral.ThoughtNum = thoughtNum;
                userGeneral.IntelligenceNum = intelligenceNum;
                _potenceNum = userGeneral.PowerNum + potenceNum;
                _thoughtNum = userGeneral.SoulNum + thoughtNum;
                _intelligenceNum = userGeneral.IntellectNum + intelligenceNum;
                if (userGeneral.Potential <= 0 || userGeneral.Potential < (userGeneral.PotenceNum + userGeneral.ThoughtNum + userGeneral.IntelligenceNum))
                {
                    ErrorCode = LanguageManager.GetLang().ErrorCode;
                    ErrorInfo = LanguageManager.GetLang().St1217_NotPotential;
                    return false;
                }
                switch (bringUpInfo.UseUpType)
                {
                    case 1:
                        UserItemHelper.UseUserItem(ContextUser.UserID, item.ItemID, (bringUpInfo.UseUpNum * multiple));
                        break;
                    case 2:
                        ContextUser.UseGold = MathUtils.Addition(ContextUser.UseGold, (bringUpInfo.UseUpNum * multiple));
                        break;
                }
                _potential = userGeneral.Potential;
            }
            else
            {
                if (_ops == 2)
                {
                    var userGeneral = cacheSetUserGeneral.FindKey(UserId.ToString(), _generalId);
                    if (userGeneral == null)
                    {
                        ErrorCode = LanguageManager.GetLang().ErrorCode;
                        ErrorInfo = LanguageManager.GetLang().LoadDataError;
                        return false;
                    }
                    int attributeValue = userGeneral.PotenceNum + userGeneral.ThoughtNum + userGeneral.IntelligenceNum;
                    if (attributeValue > 0)
                    {
                        userGeneral.PowerNum = MathUtils.Addition(userGeneral.PowerNum, userGeneral.PotenceNum);
                        userGeneral.SoulNum = MathUtils.Addition(userGeneral.SoulNum, userGeneral.ThoughtNum);
                        userGeneral.IntellectNum = MathUtils.Addition(userGeneral.IntellectNum, userGeneral.IntelligenceNum);
                        userGeneral.Potential = MathUtils.Subtraction(userGeneral.Potential, attributeValue);
                    }
                    else
                    {
                        userGeneral.Potential = MathUtils.Addition(userGeneral.Potential, -attributeValue);
                    }
                    userGeneral.PotenceNum = 0;
                    userGeneral.ThoughtNum = 0;
                    userGeneral.IntelligenceNum = 0;
                    _potential = userGeneral.Potential;
                }

            }

            return true;
        }
Beispiel #28
0
        /// <summary>
        /// ˢ����ȴʱ��
        /// </summary>
        /// <returns>����ʣ����ȴʱ��</returns>
        public int DoRefresh()
        {
            int coldTime = 0;
            var cache = new ConfigCacheSet<ItemBaseInfo>();
            ItemBaseInfo itemInfo = cache.FindKey(ItemID);
            if (itemInfo != null && (itemInfo.PropType == 3 || itemInfo.PropType == 9))
            {
                TimeSpan ts = DateTime.Now - ChangeTime;

                coldTime = MathUtils.Subtraction(itemInfo.EffectNum, (int)Math.Floor(ts.TotalSeconds), 0);
                coldTime = MathUtils.Addition(coldTime, 0, itemInfo.EffectNum);
            }
            return coldTime;
        }
Beispiel #29
0
        /// <summary>
        /// ����ճ�������Ʒ����
        /// </summary>
        /// <param name="userLv"></param>
        /// <returns></returns>
        public UserItemInfo GetDailyItem(short userLv)
        {
            UserItemInfo userItem = null;
            int index = (int)TaskStar - 1;
            var cacheSet = new ConfigCacheSet<DailyTaskInfo>();
            DailyTaskInfo dtaskInfo = cacheSet.FindKey(TaskID);
            string[] NumRank = dtaskInfo.QishiNumRank.ToNotNullString().Split(new char[] { ',' });
            int num = NumRank.Length > index && index >= 0 ? NumRank[index].ToInt() : 0;
            if (num <= 0)
            {
                return userItem;
            }

            string[] QishiRank = dtaskInfo.QishiRank.ToNotNullString().Split(new char[] { ',' });
            string[] UserLvRank = dtaskInfo.UserLvRank.ToNotNullString().Split(new char[] { ',' });
            if (QishiRank.Length > 0 && QishiRank.Length == UserLvRank.Length)
            {
                int itemIndex = GetItemIndex(UserLvRank, userLv);
                int itemID = QishiRank.Length > itemIndex ? QishiRank[itemIndex].ToInt() : 0;
                ItemBaseInfo itemInfo = new ConfigCacheSet<ItemBaseInfo>().FindKey(itemID);
                if (itemInfo != null)
                {
                    userItem = new UserItemInfo();
                    userItem.ItemID = itemInfo.ItemID;
                    userItem.Num = num;
                }
            }
            return userItem;
        }
Beispiel #30
0
        public override bool TakeAction()
        {
            var cacheEnvSet = new ConfigCacheSet <ConfigEnvSet>();
            var envset      = cacheEnvSet.FindKey("CombatMaxBout");

            if (envset != null)
            {
            }
            PlotNPCInfo npcInfo = new ConfigCacheSet <PlotNPCInfo>().FindKey(PlotNpcID);

            if (npcInfo == null)
            {
                return(false);
            }
            PlotInfo plotInfo = new ConfigCacheSet <PlotInfo>().FindKey(npcInfo.PlotID);

            if (plotInfo == null)
            {
                return(false);
            }
            //判断是否有下一关
            int nextLayerNum  = MathUtils.Addition(ContextUser.UserExtend.LayerNum, 1);
            int nextHurdleNum = MathUtils.Addition(ContextUser.UserExtend.HurdleNum, 1);

            if ((UserHelper.IsLastLayer(plotInfo) || !IsGotoNextLayer(nextLayerNum)))
            {
                if (UserHelper.IsKill(ContextUser, npcInfo.PlotID))
                {
                    ErrorCode = LanguageManager.GetLang().ErrorCode;
                    ErrorInfo = LanguageManager.GetLang().St4303_PlotNotEnableLayerNum;
                    return(false);
                }
            }

            if (ops != 1 && UserHelper.IsPromptBlood(ContextUser.UserID))
            {
                ErrorCode = 1;
                ErrorInfo = LanguageManager.GetLang().St4002_PromptBlood;
                return(false);
            }
            //原因:灵件背包满时未提示
            if (ops != 1 && UserHelper.IsSpareGridNum(ContextUser, 0))
            {
                ErrorCode = 1;
                ErrorInfo = LanguageManager.GetLang().St_User_SpareBeiBaoMsg;
                return(false);
            }

            if (ops != 1 && !string.IsNullOrEmpty(plotInfo.EnchantID) && plotInfo.EnchantProbability > 0 && EnchantHelper.IsEnchantPackage(ContextUser.UserID))
            {
                ErrorCode = 1;
                ErrorInfo = LanguageManager.GetLang().St4002_EnchantPackageFull;
                return(false);
            }

            if (ContextUser.UserStatus == UserStatus.SaoDang)
            {
                ErrorCode = LanguageManager.GetLang().ErrorCode;
                ErrorInfo = LanguageManager.GetLang().St4007_Saodanging;
                return(false);
            }
            if (ContextUser.UseMagicID == 0)
            {
                ErrorCode = LanguageManager.GetLang().ErrorCode;
                ErrorInfo = LanguageManager.GetLang().St4004_NoUseMagic;
                return(false);
            }
            if (new GameDataCacheSet <UserEmbattle>().FindAll(Uid, m => m.MagicID == ContextUser.UseMagicID).Count == 0)
            {
                ErrorCode = LanguageManager.GetLang().ErrorCode;
                ErrorInfo = LanguageManager.GetLang().St4004_EmbattleEmpty;
                return(false);
            }
            //PlotNPCInfo npcInfo = new ConfigCacheSet<PlotNPCInfo>().FindKey(PlotNpcID);
            if (IsPlotOut(npcInfo))
            {
                ErrorCode = LanguageManager.GetLang().ErrorCode;
                ErrorInfo = LanguageManager.GetLang().St4303_PlotNotEnable;
                return(false);
            }

            UserHelper.UserGeneralPromptBlood(ContextUser);//佣兵自动使用绷带补血

            //触发战斗
            ISingleCombat plotCombater = CombatFactory.TriggerPlot(ContextUser, PlotNpcID);

            if (plotCombater == null)
            {
                return(false);
            }
            var cacheSet = new GameDataCacheSet <UserPlotCombat>();

            userPlotCombat = cacheSet.FindKey(ContextUser.UserID, PlotNpcID);
            if (userPlotCombat == null)
            {
                userPlotCombat = new UserPlotCombat()
                {
                    UserID    = ContextUser.UserID,
                    PlotNpcID = PlotNpcID
                };
                cacheSet.Add(userPlotCombat, GameEnvironment.CacheUserPeriod);
                userPlotCombat = cacheSet.FindKey(ContextUser.UserID, PlotNpcID);
            }
            userPlotCombat.PlotID     = npcInfo.PlotID;
            userPlotCombat.CombatDate = DateTime.Now;
            userPlotCombat.IsWin      = plotCombater.Doing();
            if (!userPlotCombat.IsWin)
            {
                userPlotCombat.OverNum += 1;
            }
            combatProcessList             = (CombatProcessContainer)plotCombater.GetProcessResult();
            userPlotCombat.GeneralNum     = combatProcessList.AttackList.Count;
            userPlotCombat.GeneralOverNum = GetOverGeneralNum(combatProcessList.AttackList.ToList());

            if (userPlotCombat.IsWin)
            {
                int honourNum = 0;
                PlotHelper.DoPlotPrize(Uid, npcInfo, userPlotCombat, 0, out honourNum);
                prizeItems     = PlotHelper.GetKalpaPlotMonsterItems(Uid, npcInfo.PlotID, npcInfo.PlotNpcID);
                universalArray = GetUniversalList().ToArray();
                if (plotInfo.PlotType == PlotType.Kalpa)
                {
                    KalpaDailyRestrain(npcInfo);
                    if (ContextUser.UserExtend == null)
                    {
                        ContextUser.UserExtend = new GameUserExtend();
                    }

                    PlotInfo[] plotInfoList = new ConfigCacheSet <PlotInfo>().FindAll(m => m.LayerNum == ContextUser.UserExtend.LayerNum && m.PlotSeqNo == nextHurdleNum && m.PlotType == PlotType.Kalpa).ToArray();
                    if (plotInfoList.Length > 0)
                    {
                        int layerNum  = ContextUser.UserExtend.LayerNum;
                        int hurdleNum = ContextUser.UserExtend.HurdleNum;

                        if (CheckHurdleNum(ContextUser.UserID, layerNum, hurdleNum))
                        {
                            ContextUser.UserExtend.UpdateNotify(obj =>
                            {
                                ContextUser.UserExtend.HurdleNum = nextHurdleNum;
                                return(true);
                            });
                            //ContextUser.Update();
                            PlotHelper.EnablePlot(ContextUser.UserID, plotInfo.AftPlotID);
                        }
                    }
                    else if (IsGotoNextLayer(nextLayerNum))
                    {
                        //判断是否能到下一层
                        plotInfoList = new ConfigCacheSet <PlotInfo>().FindAll(m => m.LayerNum == nextLayerNum && m.PlotType == PlotType.Kalpa).ToArray();
                        if (plotInfoList.Length > 0)
                        {
                            ContextUser.UserExtend.UpdateNotify(obj =>
                            {
                                ContextUser.UserExtend.LayerNum  = nextLayerNum;
                                ContextUser.UserExtend.HurdleNum = 1;
                                return(true);
                            });
                            //ContextUser.Update();
                            PlotHelper.EnablePlot(ContextUser.UserID, plotInfo.AftPlotID);
                        }
                    }
                }
            }


            //日志
            UserCombatLog log = new UserCombatLog();

            log.CombatLogID   = Guid.NewGuid().ToString();
            log.UserID        = userPlotCombat.UserID;
            log.CityID        = ContextUser.CityID;
            log.PlotID        = userPlotCombat.PlotID;
            log.NpcID         = userPlotCombat.PlotNpcID;
            log.CombatType    = CombatType.Kalpa;
            log.HostileUser   = string.Empty;
            log.IsWin         = userPlotCombat.IsWin;
            log.CombatProcess = JsonUtils.Serialize(combatProcessList);
            log.PrizeItem     = prizeItems;
            log.CreateDate    = DateTime.Now;
            var sender = DataSyncManager.GetDataSender();

            sender.Send(log);

            UserHelper.GetGeneralLife(ContextUser.UserID);

            return(true);
        }
Beispiel #31
0
        public override void BuildPacket()
        {
            this.PushIntoStack(userPlotCombat.IsWin.ToShort());
            this.PushIntoStack(userPlotCombat.Experience);
            this.PushIntoStack(prizeItems.Count);
            foreach (PrizeItemInfo prizeItem in prizeItems)
            {
                ItemBaseInfo item   = new ConfigCacheSet <ItemBaseInfo>().FindKey(prizeItem.ItemID);
                DataStruct   dsItem = new DataStruct();
                dsItem.PushIntoStack(item.ItemName.ToNotNullString());
                dsItem.PushIntoStack(item.HeadID.ToNotNullString());
                dsItem.PushIntoStack(item.QualityType.ToShort());
                dsItem.PushIntoStack(prizeItem.Num);

                PushIntoStack(dsItem);
            }
            //攻方阵形
            PushIntoStack(combatProcessList.AttackList.Count);
            foreach (CombatEmbattle combatEmbattle in combatProcessList.AttackList)
            {
                int        isAttWait = combatEmbattle.IsWait ? 1 : 0;
                var        general   = _cacheSetGeneral.FindKey(combatEmbattle.GeneralID);
                DataStruct dsItem    = new DataStruct();
                dsItem.PushIntoStack(combatEmbattle.GeneralID);
                dsItem.PushIntoStack(combatEmbattle.GeneralName.ToNotNullString());
                //dsItem.PushIntoStack(combatEmbattle.HeadID.ToNotNullString());
                dsItem.PushIntoStack(general == null ? string.Empty : general.BattleHeadID.ToNotNullString());
                dsItem.PushIntoStack(combatEmbattle.Position.ToShort());
                dsItem.PushIntoStack(combatEmbattle.LiveNum);
                dsItem.PushIntoStack(combatEmbattle.LiveMaxNum);
                dsItem.PushIntoStack(combatEmbattle.MomentumNum);
                dsItem.PushIntoStack(combatEmbattle.MaxMomentumNum);
                dsItem.PushIntoStack(combatEmbattle.AbilityID);
                dsItem.PushIntoStack(combatEmbattle.GeneralLv);
                dsItem.PushIntoStack((short)isAttWait);
                // 增加佣兵品质
                dsItem.PushShortIntoStack(general == null ? 0 : general.GeneralQuality.ToShort());


                PushIntoStack(dsItem);
            }
            //防方阵形
            PushIntoStack(combatProcessList.DefenseList.Count);
            foreach (CombatEmbattle combatEmbattle in combatProcessList.DefenseList)
            {
                int        isDefWait = combatEmbattle.IsWait ? 1 : 0;
                DataStruct dsItem    = new DataStruct();
                dsItem.PushIntoStack(combatEmbattle.GeneralID);
                dsItem.PushIntoStack(combatEmbattle.GeneralName.ToNotNullString());
                dsItem.PushIntoStack(combatEmbattle.HeadID.ToNotNullString());
                dsItem.PushIntoStack(combatEmbattle.Position.ToShort());
                dsItem.PushIntoStack(combatEmbattle.LiveNum);
                dsItem.PushIntoStack(combatEmbattle.LiveMaxNum);
                dsItem.PushIntoStack(combatEmbattle.MomentumNum);
                dsItem.PushIntoStack(combatEmbattle.MaxMomentumNum);
                dsItem.PushIntoStack(combatEmbattle.AbilityID);
                dsItem.PushIntoStack(combatEmbattle.GeneralLv);
                dsItem.PushIntoStack((short)isDefWait);
                // 增加佣兵品质
                var general = _cacheSetGeneral.FindKey(combatEmbattle.GeneralID);
                dsItem.PushShortIntoStack(general == null ? 0 : general.GeneralQuality.ToShort());

                PushIntoStack(dsItem);
            }
            //战斗过程
            PushIntoStack(combatProcessList.ProcessList.Count);
            foreach (CombatProcess combatProcess in combatProcessList.ProcessList)
            {
                DataStruct dsItem = new DataStruct();
                dsItem.PushIntoStack(combatProcess.GeneralID);
                dsItem.PushIntoStack(combatProcess.LiveNum);
                dsItem.PushIntoStack(combatProcess.Momentum);
                dsItem.PushIntoStack(combatProcess.AttackTaget.ToShort());
                dsItem.PushIntoStack(combatProcess.AttackUnit.ToShort());
                dsItem.PushIntoStack(combatProcess.AbilityProperty.ToShort());
                dsItem.PushIntoStack(combatProcess.AttStatus.ToShort());
                dsItem.PushIntoStack(combatProcess.DamageNum);
                dsItem.PushIntoStack(combatProcess.AttEffectID.ToNotNullString());
                dsItem.PushIntoStack(combatProcess.TargetEffectID.ToNotNullString());
                dsItem.PushIntoStack(combatProcess.IsMove.ToShort());
                dsItem.PushIntoStack(combatProcess.Position.ToShort());
                dsItem.PushIntoStack(combatProcess.Role.ToShort());


                dsItem.PushIntoStack(combatProcess.DamageStatusList.Count);
                foreach (AbilityEffectStatus effectStatus in combatProcess.DamageStatusList)
                {
                    DataStruct dsItem1 = new DataStruct();
                    dsItem1.PushIntoStack(effectStatus.AbilityType.ToShort());
                    dsItem1.PushIntoStack(effectStatus.DamageNum);
                    dsItem1.PushIntoStack(effectStatus.IsIncrease ? 1 : 0);

                    dsItem.PushIntoStack(dsItem1);
                }

                dsItem.PushIntoStack(combatProcess.TargetList.Count);
                foreach (TargetProcess targetProcess in combatProcess.TargetList)
                {
                    DataStruct dsItem1 = new DataStruct();
                    dsItem1.PushIntoStack(targetProcess.GeneralID);
                    dsItem1.PushIntoStack(targetProcess.LiveNum);
                    dsItem1.PushIntoStack(targetProcess.Momentum);
                    dsItem1.PushIntoStack(targetProcess.DamageNum);
                    dsItem1.PushIntoStack(targetProcess.IsShanBi.ToShort());
                    dsItem1.PushIntoStack(targetProcess.IsGeDang.ToShort());
                    dsItem1.PushIntoStack(targetProcess.IsBack.ToShort());
                    dsItem1.PushIntoStack(targetProcess.IsMove.ToShort());
                    dsItem1.PushIntoStack(targetProcess.BackDamageNum);
                    dsItem1.PushIntoStack(targetProcess.TargetStatus.ToShort());
                    dsItem1.PushIntoStack(targetProcess.Position.ToShort());
                    dsItem1.PushIntoStack(targetProcess.Role.ToShort());
                    //目标中招效果
                    dsItem1.PushIntoStack(targetProcess.DamageStatusList.Count);
                    foreach (AbilityEffectStatus effectStatus in targetProcess.DamageStatusList)
                    {
                        DataStruct dsItem12 = new DataStruct();
                        dsItem12.PushIntoStack(effectStatus.AbilityType.ToShort());
                        dsItem12.PushIntoStack(effectStatus.IsIncrease ? 1 : 0);

                        dsItem1.PushIntoStack(dsItem12);
                    }

                    dsItem1.PushIntoStack(targetProcess.IsBaoji.ToShort());
                    dsItem1.PushIntoStack(targetProcess.TrumpStatusList.Count);
                    foreach (var item in targetProcess.TrumpStatusList)
                    {
                        DataStruct dsItem13 = new DataStruct();
                        dsItem13.PushIntoStack((short)item.AbilityID);
                        dsItem13.PushIntoStack(item.Num);
                        dsItem1.PushIntoStack(dsItem13);
                    }

                    dsItem.PushIntoStack(dsItem1);
                }
                dsItem.PushIntoStack(combatProcess.TrumpStatusList.Count);
                foreach (var item in combatProcess.TrumpStatusList)
                {
                    DataStruct dsItem14 = new DataStruct();
                    dsItem14.PushIntoStack((short)item.AbilityID);
                    dsItem14.PushIntoStack(item.Num);
                    dsItem.PushIntoStack(dsItem14);
                }
                dsItem.PushIntoStack(combatProcess.FntHeadID.ToNotNullString());
                dsItem.PushIntoStack(combatProcess.AbilityID);
                PushIntoStack(dsItem);
            }

            PushIntoStack(userPlotCombat.BlessExperience);
            PushIntoStack(GotoNum);
            PushIntoStack(selfAbilityEffectList.Count);
            foreach (var selfAbilityEffect in selfAbilityEffectList)
            {
                DataStruct dsItem = new DataStruct();
                dsItem.PushIntoStack(selfAbilityEffect.GeneralID);
                dsItem.PushIntoStack(selfAbilityEffect.EffectID1.ToNotNullString());
                dsItem.PushIntoStack(selfAbilityEffect.FntHeadID.ToNotNullString());
                dsItem.PushIntoStack(selfAbilityEffect.IsIncrease ? 1.ToShort() : 0.ToShort());
                dsItem.PushIntoStack(selfAbilityEffect.Position);
                dsItem.PushIntoStack(selfAbilityEffect.Role.ToInt());
                PushIntoStack(dsItem);
            }
            PushIntoStack(_userTalPriority);
            PushIntoStack(_npcTalPriority);
        }
Beispiel #32
0
        public override void BuildPacket()
        {
            this.PushIntoStack(IsWin.ToShort());
            this.PushIntoStack(bossProcess.DamageNum);
            this.PushIntoStack(bossProcess.ObtainNum);
            this.PushIntoStack(bossProcess.GameCoin);
            this.PushIntoStack(bossProcess.KillGameCoin);

            //攻方阵形
            this.PushIntoStack(bossProcess.ProcessContainer.AttackList.Count);
            foreach (CombatEmbattle combatEmbattle in bossProcess.ProcessContainer.AttackList)
            {
                var        general = _cacheSetGeneral.FindKey(combatEmbattle.GeneralID);
                DataStruct dsItem  = new DataStruct();
                dsItem.PushIntoStack(combatEmbattle.GeneralID);
                dsItem.PushIntoStack(combatEmbattle.GeneralName.ToNotNullString());
                dsItem.PushIntoStack(general == null ? string.Empty : general.BattleHeadID.ToNotNullString());
                //dsItem.PushIntoStack(combatEmbattle.BattleHead.ToNotNullString());
                dsItem.PushIntoStack(combatEmbattle.Position.ToShort());
                dsItem.PushIntoStack(combatEmbattle.LiveNum);
                dsItem.PushIntoStack(combatEmbattle.LiveMaxNum);
                dsItem.PushIntoStack(combatEmbattle.MomentumNum);
                dsItem.PushIntoStack(combatEmbattle.MaxMomentumNum);
                dsItem.PushIntoStack(combatEmbattle.AbilityID);
                dsItem.PushIntoStack(combatEmbattle.GeneralLv);
                dsItem.PushIntoStack(combatEmbattle.IsWait ? (short)1 : (short)0);
                // 增加佣兵品质
                dsItem.PushShortIntoStack(general == null ? 0 : general.GeneralQuality.ToShort());
                this.PushIntoStack(dsItem);
            }
            //防方阵形
            this.PushIntoStack(bossProcess.ProcessContainer.DefenseList.Count);
            foreach (CombatEmbattle combatEmbattle in bossProcess.ProcessContainer.DefenseList)
            {
                DataStruct dsItem = new DataStruct();
                dsItem.PushIntoStack(combatEmbattle.GeneralID);
                dsItem.PushIntoStack(combatEmbattle.GeneralName.ToNotNullString());
                dsItem.PushIntoStack(combatEmbattle.HeadID.ToNotNullString());
                dsItem.PushIntoStack(combatEmbattle.Position.ToShort());
                dsItem.PushIntoStack(combatEmbattle.LiveNum);
                dsItem.PushIntoStack(combatEmbattle.LiveMaxNum);
                dsItem.PushIntoStack(combatEmbattle.MomentumNum);
                dsItem.PushIntoStack(combatEmbattle.MaxMomentumNum);
                dsItem.PushIntoStack(combatEmbattle.AbilityID);
                dsItem.PushIntoStack(combatEmbattle.GeneralLv);
                dsItem.PushIntoStack(combatEmbattle.IsWait ? (short)1 : (short)0);
                // 增加佣兵品质
                var general = _cacheSetGeneral.FindKey(combatEmbattle.GeneralID);
                dsItem.PushShortIntoStack(general == null ? 0 : general.GeneralQuality.ToShort());
                this.PushIntoStack(dsItem);
            }
            //战斗过程
            this.PushIntoStack(bossProcess.ProcessContainer.ProcessList.Count);
            foreach (CombatProcess combatProcess in bossProcess.ProcessContainer.ProcessList)
            {
                DataStruct dsItem = new DataStruct();
                dsItem.PushIntoStack(combatProcess.GeneralID);
                dsItem.PushIntoStack(combatProcess.LiveNum);
                dsItem.PushIntoStack(combatProcess.Momentum);
                dsItem.PushIntoStack(combatProcess.AttackTaget.ToShort());
                dsItem.PushIntoStack(combatProcess.AttackUnit.ToShort());
                dsItem.PushIntoStack(combatProcess.AbilityProperty.ToShort());
                dsItem.PushIntoStack(combatProcess.AttStatus.ToShort());
                dsItem.PushIntoStack(combatProcess.DamageNum);
                dsItem.PushIntoStack(combatProcess.AttEffectID.ToNotNullString());
                dsItem.PushIntoStack(combatProcess.TargetEffectID.ToNotNullString());
                dsItem.PushIntoStack(combatProcess.IsMove.ToShort());
                dsItem.PushIntoStack(combatProcess.Position.ToShort());
                dsItem.PushIntoStack(combatProcess.Role.ToShort());

                dsItem.PushIntoStack(combatProcess.DamageStatusList.Count);
                foreach (AbilityEffectStatus effectStatus in combatProcess.DamageStatusList)
                {
                    DataStruct dsItem1 = new DataStruct();
                    dsItem1.PushIntoStack(effectStatus.AbilityType.ToShort());
                    dsItem1.PushIntoStack(effectStatus.DamageNum);
                    dsItem1.PushIntoStack(effectStatus.IsIncrease ? 1 : 0);

                    dsItem.PushIntoStack(dsItem1);
                }

                dsItem.PushIntoStack(combatProcess.TargetList.Count);
                foreach (TargetProcess targetProcess in combatProcess.TargetList)
                {
                    DataStruct dsItem1 = new DataStruct();
                    dsItem1.PushIntoStack(targetProcess.GeneralID);
                    dsItem1.PushIntoStack(targetProcess.LiveNum);
                    dsItem1.PushIntoStack(targetProcess.Momentum);
                    dsItem1.PushIntoStack(targetProcess.DamageNum);
                    dsItem1.PushIntoStack(targetProcess.IsShanBi.ToShort());
                    dsItem1.PushIntoStack(targetProcess.IsGeDang.ToShort());
                    dsItem1.PushIntoStack(targetProcess.IsBack.ToShort());
                    dsItem1.PushIntoStack(targetProcess.IsMove.ToShort());
                    dsItem1.PushIntoStack(targetProcess.BackDamageNum);
                    dsItem1.PushIntoStack(targetProcess.TargetStatus.ToShort());
                    dsItem1.PushIntoStack(targetProcess.Position.ToShort());
                    dsItem1.PushIntoStack(targetProcess.Role.ToShort());
                    //目标中招效果
                    dsItem1.PushIntoStack(targetProcess.DamageStatusList.Count);
                    foreach (AbilityEffectStatus effectStatus in targetProcess.DamageStatusList)
                    {
                        DataStruct dsItem12 = new DataStruct();
                        dsItem12.PushIntoStack(effectStatus.AbilityType.ToShort());
                        dsItem12.PushIntoStack(effectStatus.IsIncrease ? 1 : 0);

                        dsItem1.PushIntoStack(dsItem12);
                    }
                    dsItem1.PushIntoStack(targetProcess.IsBaoji.ToShort());
                    dsItem1.PushIntoStack(targetProcess.TrumpStatusList.Count);
                    foreach (var item in targetProcess.TrumpStatusList)
                    {
                        DataStruct dsItem13 = new DataStruct();
                        dsItem13.PushIntoStack((short)item.AbilityID);
                        dsItem13.PushIntoStack(item.Num);
                        dsItem1.PushIntoStack(dsItem13);
                    }
                    dsItem.PushIntoStack(dsItem1);
                }
                dsItem.PushIntoStack(combatProcess.TrumpStatusList.Count);
                foreach (var item in combatProcess.TrumpStatusList)
                {
                    DataStruct dsItem14 = new DataStruct();
                    dsItem14.PushIntoStack((short)item.AbilityID);
                    dsItem14.PushIntoStack(item.Num);
                    dsItem.PushIntoStack(dsItem14);
                }
                dsItem.PushIntoStack(combatProcess.FntHeadID.ToNotNullString());
                this.PushIntoStack(dsItem);
            }
            PushIntoStack(selfAbilityEffectList.Count);
            foreach (var selfAbilityEffect in selfAbilityEffectList)
            {
                DataStruct dsItem = new DataStruct();
                dsItem.PushIntoStack(selfAbilityEffect.GeneralID);
                dsItem.PushIntoStack(selfAbilityEffect.EffectID1.ToNotNullString());
                dsItem.PushIntoStack(selfAbilityEffect.FntHeadID.ToNotNullString());
                dsItem.PushIntoStack(selfAbilityEffect.IsIncrease ? 1.ToShort() : 0.ToShort());
                dsItem.PushIntoStack(selfAbilityEffect.Position);
                dsItem.PushIntoStack(selfAbilityEffect.Role.ToInt());
                PushIntoStack(dsItem);
            }
            PushIntoStack(_userTalPriority);
            PushIntoStack(_npcTalPriority);
        }