コード例 #1
0
 public static int GetUnionPalaceZG(GameClient client, int upCount = 0)
 {
     if (upCount <= 0)
     {
         int today = Global.GetOffsetDayNow();
         upCount = UnionPalaceManager.GetUpCount(client, today);
     }
     int[] zhanGongList = GameManager.systemParamsList.GetParamValueIntArrayByName("ZhanMengShenDian", ',');
     if (upCount >= zhanGongList.Length)
     {
         upCount = zhanGongList.Length - 1;
     }
     return(zhanGongList[upCount]);
 }
コード例 #2
0
        public static UnionPalaceData UnionPalaceUp(GameClient client)
        {
            UnionPalaceData result;

            lock (client.ClientData.LockUnionPalace)
            {
                UnionPalaceData myUPData = UnionPalaceManager.UnionPalaceGetData(client, false);
                if (myUPData.ResultType < 0)
                {
                    result = myUPData;
                }
                else if (myUPData.ResultType == 3 || myUPData.ResultType == -4)
                {
                    myUPData.ResultType = -4;
                    result = myUPData;
                }
                else if (!UnionPalaceManager.IsGongNengOpened(client))
                {
                    myUPData.ResultType = -1;
                    result = myUPData;
                }
                else
                {
                    UnionPalaceBasicInfo basicInfo = UnionPalaceManager.GetUPBasicInfoByID(myUPData.StatueID);
                    if (basicInfo.UnionLevel < 0)
                    {
                        myUPData.ResultType = -4;
                        result = myUPData;
                    }
                    else
                    {
                        int bhLevel = Global.GetBangHuiLevel(client);
                        if (basicInfo.UnionLevel > bhLevel)
                        {
                            myUPData.ResultType = -8;
                            result = myUPData;
                        }
                        else if (bhLevel < myUPData.StatueLevel)
                        {
                            myUPData.ResultType = -7;
                            result = myUPData;
                        }
                        else
                        {
                            int zhanGongNeed = UnionPalaceManager.GetUnionPalaceZG(client, 0);
                            if (!GameManager.ClientMgr.SubUserBangGong(Global._TCPManager.MySocketListener, Global._TCPManager.tcpClientPool, Global._TCPManager.TcpOutPacketPool, client, zhanGongNeed))
                            {
                                myUPData.ResultType = -3;
                                result = myUPData;
                            }
                            else
                            {
                                UnionPalaceRateInfo rateInfo = UnionPalaceManager.GetUPRateInfoByID(basicInfo.StatueLevel);
                                int[] addNums = null;
                                int   rate    = 0;
                                int   r       = Global.GetRandomNumber(0, 100);
                                for (int i = 0; i < rateInfo.RateList.Count; i++)
                                {
                                    rate += rateInfo.RateList[i];
                                    if (r <= rate)
                                    {
                                        addNums            = rateInfo.AddNumList[rateInfo.RateList[i]].ToArray();
                                        myUPData.BurstType = i;
                                        break;
                                    }
                                }
                                List <int> logList = new List <int>();
                                logList.Add(myUPData.StatueID);
                                logList.Add(myUPData.LifeAdd);
                                logList.Add(myUPData.AttackAdd);
                                logList.Add(myUPData.DefenseAdd);
                                logList.Add(myUPData.AttackInjureAdd);
                                myUPData.LifeAdd         += addNums[0] * UnionPalaceManager._gmRate;
                                myUPData.LifeAdd          = ((myUPData.LifeAdd > basicInfo.LifeMax) ? basicInfo.LifeMax : myUPData.LifeAdd);
                                myUPData.AttackAdd       += addNums[1] * UnionPalaceManager._gmRate;
                                myUPData.AttackAdd        = ((myUPData.AttackAdd > basicInfo.AttackMax) ? basicInfo.AttackMax : myUPData.AttackAdd);
                                myUPData.DefenseAdd      += addNums[2] * UnionPalaceManager._gmRate;
                                myUPData.DefenseAdd       = ((myUPData.DefenseAdd > basicInfo.DefenseMax) ? basicInfo.DefenseMax : myUPData.DefenseAdd);
                                myUPData.AttackInjureAdd += addNums[3] * UnionPalaceManager._gmRate;
                                myUPData.AttackInjureAdd  = ((myUPData.AttackInjureAdd > basicInfo.AttackInjureMax) ? basicInfo.AttackInjureMax : myUPData.AttackInjureAdd);
                                if (myUPData.LifeAdd < basicInfo.LifeMax || myUPData.DefenseAdd < basicInfo.DefenseMax || myUPData.AttackAdd < basicInfo.AttackMax || myUPData.AttackInjureAdd < basicInfo.AttackInjureMax)
                                {
                                    myUPData.ResultType = 1;
                                }
                                else
                                {
                                    myUPData.StatueID++;
                                    basicInfo                = UnionPalaceManager.GetUPBasicInfoByID(myUPData.StatueID);
                                    myUPData.StatueType      = basicInfo.StatueType;
                                    myUPData.StatueLevel     = basicInfo.StatueLevel;
                                    myUPData.LifeAdd         = 0;
                                    myUPData.AttackAdd       = 0;
                                    myUPData.DefenseAdd      = 0;
                                    myUPData.AttackInjureAdd = 0;
                                    myUPData.ResultType      = 2;
                                    if (myUPData.StatueID > UnionPalaceManager._unionPalaceBasicList.Count || basicInfo.UnionLevel < 0)
                                    {
                                        myUPData.ResultType = 3;
                                    }
                                    else if (bhLevel < basicInfo.UnionLevel)
                                    {
                                        myUPData.ResultType = 5;
                                    }
                                    else if (bhLevel < myUPData.StatueLevel)
                                    {
                                        myUPData.ResultType = 4;
                                    }
                                }
                                int today   = Global.GetOffsetDayNow();
                                int upCount = UnionPalaceManager.GetUpCount(client, today);
                                myUPData.ZhanGongNeed = UnionPalaceManager.GetUnionPalaceZG(client, upCount + 1);
                                UnionPalaceManager.ModifyUpCount(client, upCount + 1);
                                UnionPalaceManager.ModifyUnionPalaceData(client, myUPData);
                                client.ClientData.MyUnionPalaceData = myUPData;
                                UnionPalaceManager.SetUnionPalaceProps(client, myUPData);
                                GameManager.ClientMgr.NotifyUpdateEquipProps(Global._TCPManager.MySocketListener, Global._TCPManager.TcpOutPacketPool, client);
                                GameManager.ClientMgr.NotifyOthersLifeChanged(Global._TCPManager.MySocketListener, Global._TCPManager.TcpOutPacketPool, client, true, false, 7);
                                myUPData.ZhanGongLeft = client.ClientData.BangGong;
                                logList.Add(myUPData.StatueID);
                                logList.Add(myUPData.LifeAdd);
                                logList.Add(myUPData.AttackAdd);
                                logList.Add(myUPData.DefenseAdd);
                                logList.Add(myUPData.AttackInjureAdd);
                                logList.Add(upCount);
                                EventLogManager.AddUnionPalaceEvent(client, LogRecordType.UnionPalace, new object[]
                                {
                                    logList.ToArray()
                                });
                                result = myUPData;
                            }
                        }
                    }
                }
            }
            return(result);
        }