public bool initialize()
 {
     PetSkillManager.InitConfig();
     return(true);
 }
        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);
        }
        private static EPetSkillState PetSkillInherit(GameClient client, int srcPetID, int tarPetID, int userMoney, out string outProps)
        {
            outProps = "";
            EPetSkillState result;

            if (GameFuncControlManager.IsGameFuncDisabled(GameFuncType.System2Dot6))
            {
                result = EPetSkillState.EnoOpen;
            }
            else if (!PetSkillManager.IsGongNengOpened(client))
            {
                result = EPetSkillState.EnoOpen;
            }
            else
            {
                GoodsData srcGoodsData = DamonMgr.GetDamonGoodsDataByDbID(client, srcPetID);
                GoodsData tarGoodsData = DamonMgr.GetDamonGoodsDataByDbID(client, tarPetID);
                if (null == srcGoodsData)
                {
                    srcGoodsData = Global.GetGoodsByDbID(client, srcPetID);
                }
                else if (srcGoodsData.Site != 5000)
                {
                    return(EPetSkillState.EnoUsing);
                }
                if (null == tarGoodsData)
                {
                    tarGoodsData = Global.GetGoodsByDbID(client, tarPetID);
                }
                else if (tarGoodsData.Site != 5000)
                {
                    return(EPetSkillState.EnoUsing);
                }
                if (srcGoodsData == null || srcGoodsData.GCount <= 0 || tarGoodsData == null || tarGoodsData.GCount <= 0)
                {
                    result = EPetSkillState.EnoPet;
                }
                else
                {
                    if (1 == userMoney)
                    {
                        if (client.ClientData.UserMoney < PetSkillManager.JingLingChuanChengXiaoHaoZhuanShi && !HuanLeDaiBiManager.GetInstance().HuanledaibiEnough(client, PetSkillManager.JingLingChuanChengXiaoHaoZhuanShi))
                        {
                            return(EPetSkillState.EnoDiamond);
                        }
                    }
                    else if (Global.GetTotalBindTongQianAndTongQianVal(client) < PetSkillManager.JingLingChuanChengXiaoHaoJinBi)
                    {
                        return(EPetSkillState.EnoGold);
                    }
                    List <PetSkillInfo> srcSkillList = PetSkillManager.GetPetSkillInfo(srcGoodsData);
                    List <PetSkillInfo> tarSkillList = PetSkillManager.GetPetSkillInfo(tarGoodsData);
                    int pitLoop;
                    for (pitLoop = 1; pitLoop < 4; pitLoop++)
                    {
                        PetSkillInfo srcSkill = srcSkillList.Find((PetSkillInfo _g) => _g.Pit == pitLoop);
                        PetSkillInfo tarSkill = tarSkillList.Find((PetSkillInfo _g) => _g.Pit == pitLoop);
                        if (srcSkill == null || null == tarSkill)
                        {
                            return(EPetSkillState.EpitWrong);
                        }
                        if (srcSkill.PitIsOpen && !tarSkill.PitIsOpen)
                        {
                            return(EPetSkillState.EpitWrong);
                        }
                    }
                    if (1 == userMoney)
                    {
                        if (!GameManager.ClientMgr.SubUserMoney(Global._TCPManager.MySocketListener, Global._TCPManager.tcpClientPool, Global._TCPManager.TcpOutPacketPool, client, PetSkillManager.JingLingChuanChengXiaoHaoZhuanShi, "精灵技能传承", true, true, false, DaiBiSySType.JingLingJiNengChuanCheng))
                        {
                            return(EPetSkillState.EnoDiamond);
                        }
                    }
                    else if (!Global.SubBindTongQianAndTongQian(client, PetSkillManager.JingLingChuanChengXiaoHaoJinBi, "精灵技能传承"))
                    {
                        return(EPetSkillState.EnoGold);
                    }
                    int random = Global.GetRandomNumber(1, 101);
                    if (random > PetSkillManager.JingLingChuanChengGoodsRate)
                    {
                        result = EPetSkillState.EnoInheritFail;
                    }
                    else
                    {
                        long            returnMoHe   = PetSkillManager.DelGoodsReturnLingJing(tarGoodsData);
                        UpdateGoodsArgs tarGoodsArgs = new UpdateGoodsArgs
                        {
                            RoleID    = client.ClientData.RoleID,
                            DbID      = tarPetID,
                            WashProps = null
                        };
                        tarGoodsArgs.ElementhrtsProps = new List <int>();
                        for (int loop = 0; loop < tarSkillList.Count; loop++)
                        {
                            PetSkillInfo info = (loop < srcSkillList.Count) ? srcSkillList[loop] : tarSkillList[loop];
                            tarGoodsArgs.ElementhrtsProps.Add(info.PitIsOpen ? 1 : 0);
                            tarGoodsArgs.ElementhrtsProps.Add(info.Level);
                            tarGoodsArgs.ElementhrtsProps.Add((loop < srcSkillList.Count) ? info.SkillID : 0);
                        }
                        Global.UpdateGoodsProp(client, tarGoodsData, tarGoodsArgs, true);
                        UpdateGoodsArgs srcGoodsArgs = new UpdateGoodsArgs
                        {
                            RoleID    = client.ClientData.RoleID,
                            DbID      = srcPetID,
                            WashProps = null
                        };
                        srcGoodsArgs.ElementhrtsProps = new List <int>();
                        foreach (PetSkillInfo info in srcSkillList)
                        {
                            srcGoodsArgs.ElementhrtsProps.Add(info.PitIsOpen ? 1 : 0);
                            srcGoodsArgs.ElementhrtsProps.Add(1);
                            srcGoodsArgs.ElementhrtsProps.Add(0);
                        }
                        Global.UpdateGoodsProp(client, srcGoodsData, srcGoodsArgs, true);
                        GameManager.ClientMgr.ModifyMUMoHeValue(client, (int)returnMoHe, "精灵技能传承", true, true, false);
                        if (srcGoodsData.Using > 0 || tarGoodsData.Using > 0)
                        {
                            PetSkillManager.UpdateRolePetSkill(client);
                        }
                        outProps = string.Format("{0}:{1}", string.Join <int>(",", srcGoodsArgs.ElementhrtsProps.ToArray()), string.Join <int>(",", tarGoodsArgs.ElementhrtsProps.ToArray()));
                        result   = EPetSkillState.Success;
                    }
                }
            }
            return(result);
        }