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 }); } }