/// <summary>
        /// 按照宠物元素类型获得可学习的技能书
        /// </summary>
        /// <param name="elementType"></param>
        /// <returns></returns>
        public List <Tab_CabalFellowElementSkillBook> GetSkillLearnBooksByElementType(int elementType)
        {
            List <Tab_CabalFellowElementSkillBook> ret = new List <Tab_CabalFellowElementSkillBook>();
            List <GameItem> source = ItemTool.ItemFilter(this, (int)ItemClass.STRENGTHEN, (int)StrengthenSubClass.FELLOW_SKILL);

            foreach (GameItem gi in source)
            {
                Tab_CabalFellowElementSkillBook book = TableManager.GetCabalFellowElementSkillBookByID(gi.DataID, 0);
                if (book.ElementAttr == elementType)
                {
                    ret.Add(book);
                }
            }
            return(ret);
        }
        static public string GetGemAttr(int GemId)
        {
            Tab_GemAttr lineGemAttr = TableManager.GetGemAttrByID(GemId, 0);

            if (lineGemAttr != null)
            {
                if (lineGemAttr.MaxHP > 0)
                {
                    return(string.Format("{0} + {1}", ItemTool.ConvertAttrToString(COMBATATTE.MAXHP), lineGemAttr.MaxHP));
                }
                if (lineGemAttr.MaxMP > 0)
                {
                    return(string.Format("{0} + {1}", ItemTool.ConvertAttrToString(COMBATATTE.MAXMP), lineGemAttr.MaxMP));
                }
                if (lineGemAttr.PysAttack > 0)
                {
                    return(string.Format("{0} + {1}", ItemTool.ConvertAttrToString(COMBATATTE.PYSATTACK), lineGemAttr.PysAttack));
                }
                if (lineGemAttr.MagAttack > 0)
                {
                    return(string.Format("{0} + {1}", ItemTool.ConvertAttrToString(COMBATATTE.MAGATTACK), lineGemAttr.MagAttack));
                }
                if (lineGemAttr.PysDef > 0)
                {
                    return(string.Format("{0} + {1}", ItemTool.ConvertAttrToString(COMBATATTE.PYSDEF), lineGemAttr.PysDef));
                }
                if (lineGemAttr.MagDef > 0)
                {
                    return(string.Format("{0} + {1}", ItemTool.ConvertAttrToString(COMBATATTE.MAGDEF), lineGemAttr.MagDef));
                }
                if (lineGemAttr.Hit > 0)
                {
                    return(string.Format("{0} + {1}", ItemTool.ConvertAttrToString(COMBATATTE.HIT), lineGemAttr.Hit));
                }
                if (lineGemAttr.Dodge > 0)
                {
                    return(string.Format("{0} + {1}", ItemTool.ConvertAttrToString(COMBATATTE.DODGE), lineGemAttr.Dodge));
                }
                if (lineGemAttr.Critical > 0)
                {
                    return(string.Format("{0} + {1}", ItemTool.ConvertAttrToString(COMBATATTE.CRITICAL), lineGemAttr.Critical));
                }
                if (lineGemAttr.Decritical > 0)
                {
                    return(string.Format("{0} + {1}", ItemTool.ConvertAttrToString(COMBATATTE.DECRITICAL), lineGemAttr.Decritical));
                }
                if (lineGemAttr.Strike > 0)
                {
                    return(string.Format("{0} + {1}", ItemTool.ConvertAttrToString(COMBATATTE.STRIKE), lineGemAttr.Strike));
                }
                if (lineGemAttr.Ductical > 0)
                {
                    return(string.Format("{0} + {1}", ItemTool.ConvertAttrToString(COMBATATTE.DUCTICAL), lineGemAttr.Ductical));
                }
                if (lineGemAttr.CritiAdd > 0)
                {
                    return(string.Format("{0} + {1}", ItemTool.ConvertAttrToString(COMBATATTE.CRITIADD), lineGemAttr.CritiAdd));
                }
                if (lineGemAttr.CritiMis > 0)
                {
                    return(string.Format("{0} + {1}", ItemTool.ConvertAttrToString(COMBATATTE.CRITIMIS), lineGemAttr.CritiMis));
                }
            }
            return("");
        }