Ejemplo n.º 1
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
         });
     }
 }