private static EPetSkillState PetSkillUp(GameClient client, int petID, int pit)
        {
            EPetSkillState result;

            if (!PetSkillManager.IsGongNengOpened(client))
            {
                result = EPetSkillState.EnoOpen;
            }
            else
            {
                GoodsData goodsData = DamonMgr.GetDamonGoodsDataByDbID(client, petID);
                if (goodsData == null || goodsData.GCount <= 0)
                {
                    result = EPetSkillState.EnoPet;
                }
                else if (goodsData.Site != 5000)
                {
                    result = EPetSkillState.EnoUsing;
                }
                else if (pit < 1 || pit > 4)
                {
                    result = EPetSkillState.EpitWrong;
                }
                else
                {
                    List <PetSkillInfo> petSkillList = PetSkillManager.GetPetSkillInfo(goodsData);
                    PetSkillInfo        skillInfo    = petSkillList.Find((PetSkillInfo _g) => _g.Pit == pit);
                    if (!skillInfo.PitIsOpen)
                    {
                        result = EPetSkillState.EpitNoOpen;
                    }
                    else if (skillInfo.SkillID <= 0)
                    {
                        result = EPetSkillState.EpitSkillNull;
                    }
                    else
                    {
                        int maxLevel = PetSkillManager.GetPsUpMaxLevel();
                        if (skillInfo.Level >= maxLevel)
                        {
                            result = EPetSkillState.ElevelMax;
                        }
                        else
                        {
                            int  oldLevel     = skillInfo.Level;
                            int  nextLevel    = skillInfo.Level + 1;
                            int  lingJingNeed = (int)PetSkillManager.GetPsUpCost(nextLevel);
                            long lingjingHave = (long)GameManager.ClientMgr.GetMUMoHeValue(client);
                            if (lingjingHave < (long)lingJingNeed)
                            {
                                result = EPetSkillState.EnoLingJing;
                            }
                            else
                            {
                                GameManager.ClientMgr.ModifyMUMoHeValue(client, -lingJingNeed, "精灵技能升级", true, true, false);
                                skillInfo.Level = nextLevel;
                                UpdateGoodsArgs updateGoodsArgs = new UpdateGoodsArgs
                                {
                                    RoleID    = client.ClientData.RoleID,
                                    DbID      = petID,
                                    WashProps = null
                                };
                                updateGoodsArgs.ElementhrtsProps = new List <int>();
                                foreach (PetSkillInfo info in petSkillList)
                                {
                                    updateGoodsArgs.ElementhrtsProps.Add(info.PitIsOpen ? 1 : 0);
                                    updateGoodsArgs.ElementhrtsProps.Add(info.Level);
                                    updateGoodsArgs.ElementhrtsProps.Add(info.SkillID);
                                }
                                Global.UpdateGoodsProp(client, goodsData, updateGoodsArgs, true);
                                PetSkillManager.UpdateRolePetSkill(client);
                                EventLogManager.AddPetSkillEvent(client, LogRecordType.PetSkill, EPetSkillLog.Up, new object[]
                                {
                                    petID,
                                    goodsData.GoodsID,
                                    pit,
                                    oldLevel,
                                    nextLevel
                                });
                                result = EPetSkillState.Success;
                            }
                        }
                    }
                }
            }
            return(result);
        }