예제 #1
0
        public static void LoadUnionPalaceSpecialInfo()
        {
            string   fileName = Global.GameResPath("Config/ShenDianExtra.xml");
            XElement xml      = CheckHelper.LoadXml(fileName, true);

            if (null != xml)
            {
                try
                {
                    UnionPalaceManager._unionPalaceSpecialList.Clear();
                    IEnumerable <XElement> xmlItems = xml.Elements();
                    foreach (XElement xmlItem in xmlItems)
                    {
                        if (xmlItem != null)
                        {
                            UnionPalaceSpecialInfo config = new UnionPalaceSpecialInfo();
                            config.StatueLevel    = Convert.ToInt32(Global.GetDefAttributeStr(xmlItem, "StatueLevel", "0"));
                            config.UnionLevel     = Convert.ToInt32(Global.GetDefAttributeStr(xmlItem, "ZhanMengLevel", "0"));
                            config.MaxLifePercent = Convert.ToDouble(Global.GetDefAttributeStr(xmlItem, "MaxLifePercent", "0"));
                            UnionPalaceManager._unionPalaceSpecialList.Add(config.StatueLevel, config);
                        }
                    }
                }
                catch (Exception ex)
                {
                    LogManager.WriteLog(LogTypes.Fatal, string.Format("加载[{0}]时出错!!!", fileName), null, true);
                }
            }
        }
예제 #2
0
 public static void SetUnionPalaceProps(GameClient client, UnionPalaceData myData)
 {
     lock (client.ClientData.LockUnionPalace)
     {
         int life    = 0;
         int attack  = 0;
         int defense = 0;
         int injure  = 0;
         UnionPalaceBasicInfo basicInfo = UnionPalaceManager.GetUPBasicInfoByID(myData.StatueID);
         int bangHuiLevel = Global.GetBangHuiLevel(client);
         if (basicInfo != null && basicInfo.UnionLevel <= bangHuiLevel && myData.StatueLevel <= bangHuiLevel)
         {
             life    = myData.LifeAdd;
             attack  = myData.AttackAdd;
             defense = myData.DefenseAdd;
             injure  = myData.AttackInjureAdd;
         }
         foreach (UnionPalaceBasicInfo d in UnionPalaceManager._unionPalaceBasicList.Values)
         {
             if (d.StatueID < myData.StatueID && d.UnionLevel <= bangHuiLevel && d.StatueLevel <= bangHuiLevel)
             {
                 life    += d.LifeMax;
                 attack  += d.AttackMax;
                 defense += d.DefenseMax;
                 injure  += d.AttackInjureMax;
             }
         }
         double lifePercent = 0.0;
         int    step        = (myData.StatueID - 1) / 8;
         if (step > 0)
         {
             if (myData.ResultType == 4 || myData.ResultType == -7)
             {
                 int maxID = 0;
                 IOrderedEnumerable <UnionPalaceBasicInfo> temp = from info in UnionPalaceManager._unionPalaceBasicList.Values
                                                                  where info.StatueID <= myData.StatueID && info.StatueLevel <= myData.StatueLevel && info.UnionLevel <= myData.UnionLevel && info.UnionLevel > 0
                                                                  orderby info.StatueID descending
                                                                  select info;
                 if (temp.Any <UnionPalaceBasicInfo>())
                 {
                     maxID = temp.First <UnionPalaceBasicInfo>().StatueID;
                 }
                 step = maxID / 8;
             }
             UnionPalaceSpecialInfo s = UnionPalaceManager.GetUPSpecialInfoByID(step);
             if (s != null && s.UnionLevel <= bangHuiLevel)
             {
                 lifePercent = s.MaxLifePercent;
             }
         }
         EquipPropItem propItem = new EquipPropItem();
         propItem.ExtProps[13] = (double)life;
         propItem.ExtProps[45] = (double)attack;
         propItem.ExtProps[46] = (double)defense;
         propItem.ExtProps[27] = (double)injure;
         propItem.ExtProps[14] = lifePercent;
         client.ClientData.PropsCacheManager.SetExtProps(new object[]
         {
             19,
             propItem.ExtProps
         });
     }
 }
예제 #3
0
        public static void SetUnionPalaceProps(GameClient client, UnionPalaceData myData)
        {
            lock (client.ClientData.LockUnionPalace)
            {
                //加成
                int life    = 0;
                int attack  = 0;
                int defense = 0;
                int injure  = 0;

                UnionPalaceBasicInfo basicInfo = GetUPBasicInfoByID(myData.StatueID);
                int bangHuiLevel = Global.GetBangHuiLevel(client);
                if (basicInfo != null && basicInfo.UnionLevel <= bangHuiLevel && myData.StatueLevel <= bangHuiLevel)
                {
                    life    = myData.LifeAdd;
                    attack  = myData.AttackAdd;
                    defense = myData.DefenseAdd;
                    injure  = myData.AttackInjureAdd;
                }

                foreach (UnionPalaceBasicInfo d in _unionPalaceBasicList.Values)
                {
                    if (d.StatueID < myData.StatueID && d.UnionLevel <= bangHuiLevel && d.StatueLevel <= bangHuiLevel)
                    {
                        life    += d.LifeMax;
                        attack  += d.AttackMax;
                        defense += d.DefenseMax;
                        injure  += d.AttackInjureMax;
                    }
                }

                //额外加成
                double lifePercent = 0;
                int    step        = (myData.StatueID - 1) / STATUE_COUNT;
                if (step > 0)
                {
                    if (myData.ResultType == (int)EUnionPalaceState.PalaceMore || myData.ResultType == (int)EUnionPalaceState.EPalaceMore)
                    {
                        int maxID = 0;
                        var temp  = from info in _unionPalaceBasicList.Values
                                    where info.StatueID <= myData.StatueID && info.StatueLevel <= myData.StatueLevel && info.UnionLevel <= myData.UnionLevel && info.UnionLevel > 0
                                    orderby info.StatueID descending
                                    select info;

                        if (temp.Any())
                        {
                            maxID = temp.First <UnionPalaceBasicInfo>().StatueID;
                        }
                        step = maxID / STATUE_COUNT;
                    }

                    UnionPalaceSpecialInfo s = GetUPSpecialInfoByID(step);
                    if (s != null && s.UnionLevel <= bangHuiLevel)
                    {
                        lifePercent = s.MaxLifePercent;
                    }
                }

                EquipPropItem propItem = new EquipPropItem();
                propItem.ExtProps[(int)ExtPropIndexes.MaxLifeV]        = life;
                propItem.ExtProps[(int)ExtPropIndexes.AddAttack]       = attack;
                propItem.ExtProps[(int)ExtPropIndexes.AddDefense]      = defense;
                propItem.ExtProps[(int)ExtPropIndexes.AddAttackInjure] = injure;
                propItem.ExtProps[(int)ExtPropIndexes.MaxLifePercent]  = lifePercent;
                client.ClientData.PropsCacheManager.SetExtProps((int)PropsSystemTypes.UnionPalace, propItem.ExtProps);
            }
        }