Esempio n. 1
0
        /*public override List<Entity> GetIdsFromZone(String zoneId, String zoneHtml)
         * {
         *  String pattern = @"new Listview\({template: 'npc', id: 'npcs', name: LANG\.tab_npcs, tabs: tabsRelated, parent: 'lkljbjkb574', note: \$WH\.sprintf\(LANG\.lvnote_filterresults, '\/npcs\?filter=cr=6;crs=" + zoneId + @";crv=0'\), data: (.+)}\);";
         *  String creatureJSon = Tools.ExtractJsonFromWithPattern(zoneHtml, pattern);
         *
         *  List<CreatureTemplateParsing> parsingArray = JsonConvert.DeserializeObject<List<CreatureTemplateParsing>>(creatureJSon);
         *  List<Entity> tempArray = new List<Entity>();
         *  foreach (CreatureTemplateParsing creatureTemplateStruct in parsingArray)
         *  {
         *      Creature creature = new Creature(creatureTemplateStruct.id);
         *      tempArray.Add(creature);
         *  }
         *
         *  return tempArray;
         * }*/

        public override bool ParseSingleJson(int id = 0)
        {
            if (m_zoneTemplateData.id == 0 && id == 0)
            {
                return(false);
            }
            else if (m_zoneTemplateData.id == 0 && id != 0)
            {
                m_zoneTemplateData.id = id;
            }

            String zoneHtml = Tools.GetHtmlFromWowhead(GetWowheadUrl());

            if (zoneHtml.Contains("inputbox-error"))
            {
                return(false);
            }

            String dataPattern             = @"\$\.extend\(g_npcs\[" + m_creatureTemplateData.id + @"\], (.+)\);";
            String modelPattern            = @"ModelViewer\.show\(\{ type: [0-9]+, typeId: " + m_creatureTemplateData.id + @", displayId: ([0-9]+)";
            String vendorPattern           = @"new Listview\({template: 'item', id: 'sells', name: LANG.tab_sells, tabs: tabsRelated, parent: 'lkljbjkb574', extraCols: \[Listview\.extraCols\.cost(?:, _)*\], note: \$WH\.sprintf\(LANG.lvnote_filterresults, '\/items\?filter=cr=129;crs=0;crv=" + m_creatureTemplateData.id + @"'\), data: (.+)}\);";
            String creatureLootPattern     = @"new Listview\({template: 'item', id: 'drops', name: LANG\.tab_drops, tabs: tabsRelated, parent: 'lkljbjkb574', extraCols: \[Listview\.extraCols\.count, Listview\.extraCols\.percent(?:, Listview.extraCols.mode)?\],  showLootSpecs: [0-9],sort:\['-percent', 'name'\], _totalCount: [0-9]+, computeDataFunc: Listview\.funcBox\.initLootTable, onAfterCreate: Listview\.funcBox\.addModeIndicator, data: (.+)}\);";
            String creatureSkinningPattern = @"new Listview\(\{template: 'item', id: 'skinning', name: LANG\.tab_skinning, tabs: tabsRelated, parent: 'lkljbjkb574', extraCols: \[Listview\.extraCols\.count, Listview\.extraCols\.percent\], sort:\['-percent', 'name'\], computeDataFunc: Listview\.funcBox\.initLootTable, note: \$WH\.sprintf\(LANG\.lvnote_npcskinning, [0-9]+\), _totalCount: ([0-9]+), data: (.+)}\);";

            String creatureTemplateDataJSon = Tools.ExtractJsonFromWithPattern(creatureHtml, dataPattern);
            CreatureTemplateParsing creatureTemplateData = JsonConvert.DeserializeObject <CreatureTemplateParsing>(creatureTemplateDataJSon);

            SetCreatureTemplateData(creatureTemplateData);

            String npcVendorJSon = Tools.ExtractJsonFromWithPattern(creatureHtml, vendorPattern);

            if (npcVendorJSon != null)
            {
                NpcVendorParsing[] npcVendorDatas = JsonConvert.DeserializeObject <NpcVendorParsing[]>(npcVendorJSon);
                SetNpcVendorData(npcVendorDatas);
            }

            String creatureLootJSon = Tools.ExtractJsonFromWithPattern(creatureHtml, creatureLootPattern);

            if (creatureLootJSon != null)
            {
                CreatureLootParsing[] creatureLootDatas = JsonConvert.DeserializeObject <CreatureLootParsing[]>(creatureLootJSon);
                SetCreatureLootData(creatureLootDatas);
            }

            String creatureSkinningCount = Tools.ExtractJsonFromWithPattern(creatureHtml, creatureSkinningPattern, 1);
            String creatureSkinningJSon  = Tools.ExtractJsonFromWithPattern(creatureHtml, creatureSkinningPattern, 2);

            if (creatureSkinningJSon != null)
            {
                CreatureLootParsing[] creatureLootDatas = JsonConvert.DeserializeObject <CreatureLootParsing[]>(creatureSkinningJSon);
                SetCreatureSkinningData(creatureLootDatas, Int32.Parse(creatureSkinningCount));
            }

            String modelId = Tools.ExtractJsonFromWithPattern(creatureHtml, modelPattern);

            m_modelid = modelId != null?Int32.Parse(modelId) : 0;

            return(true);
        }
Esempio n. 2
0
        public void SetCreatureTemplateData(CreatureTemplateParsing creatureData, String money, String creatureHealthDataJSon)
        {
            m_creatureTemplateData = creatureData;

            m_isBoss  = false;
            m_faction = GetFactionFromReact();

            if (m_creatureTemplateData.minlevel == 9999 || m_creatureTemplateData.maxlevel == 9999)
            {
                m_isBoss = true;
                m_creatureTemplateData.minlevel = 100;
                m_creatureTemplateData.maxlevel = 100;
            }

            m_subname = m_creatureTemplateData.tag ?? "";

            m_creatureTemplateData.minGold = "0";
            m_creatureTemplateData.maxGold = "0";

            decimal averageMoney = 0;

            if (Decimal.TryParse(money, out averageMoney))
            {
                int roundNumber = Math.Min((int)Math.Pow(10.0, (double)(money.Length - 1)), 10000);

                m_creatureTemplateData.minGold = (((int)Math.Floor(averageMoney / roundNumber)) * roundNumber).ToString();
                m_creatureTemplateData.maxGold = (((int)Math.Ceiling(averageMoney / roundNumber)) * roundNumber).ToString();
            }

            if (creatureHealthDataJSon != null)
            {
                m_creatureTemplateData.health = creatureHealthDataJSon.Replace(",", "");
            }
        }
Esempio n. 3
0
        public void SetCreatureTemplateData(CreatureTemplateParsing creatureData)
        {
            m_creatureTemplateData = creatureData;

            m_isBoss  = false;
            m_faction = GetFactionFromReact();

            if (m_creatureTemplateData.minlevel == 9999 || m_creatureTemplateData.maxlevel == 9999)
            {
                m_isBoss = true;
                m_creatureTemplateData.minlevel = 100;
                m_creatureTemplateData.maxlevel = 100;
            }

            m_subname = m_creatureTemplateData.tag ?? "";
        }
Esempio n. 4
0
        public override bool ParseSingleJson(int id = 0)
        {
            if (m_creatureTemplateData.id == 0 && id == 0)
            {
                return(false);
            }
            else if (m_creatureTemplateData.id == 0 && id != 0)
            {
                m_creatureTemplateData.id = id;
            }

            String creatureHtml = Tools.GetHtmlFromWowhead(GetWowheadUrl(), webClient);

            if (creatureHtml.Contains("inputbox-error"))
            {
                return(false);
            }

            String dataPattern                 = @"\$\.extend\(g_npcs\[" + m_creatureTemplateData.id + @"\], (.+)\);";
            String modelPattern                = @"ModelViewer\.show\(\{ type: [0-9]+, typeId: " + m_creatureTemplateData.id + @", displayId: ([0-9]+)";
            String vendorPattern               = @"new Listview\({template: 'item', id: 'sells', .+?, data: (.+)}\);";
            String creatureHealthPattern       = @"<div>(?:Health|Vie) : ((?:\d|,|\.)+)</div>";
            String creatureLootPattern         = @"new Listview\({template: 'item', id: 'drops', name: LANG\.tab_drops, tabs: tabsRelated, parent: 'lkljbjkb574', extraCols: \['count', 'percent'(?:, ""mode"")?\],  showLootSpecs: [0-9],sort:\['-percent', 'name'\], _totalCount: [0-9]+, computeDataFunc: Listview\.funcBox\.initLootTable, onAfterCreate: Listview\.funcBox\.addModeIndicator, data:(.+)}\);";
            String creatureCurrencyPattern     = @"new Listview\({template: 'currency', id: 'drop-currency', name: LANG\.tab_currencies, tabs: tabsRelated, parent: 'lkljbjkb574', extraCols: \[Listview\.extraCols\.count, Listview\.extraCols\.percent\], sort:\['-percent', 'name'], _totalCount: [0-9]*, computeDataFunc: Listview\.funcBox\.initLootTable, onAfterCreate: Listview\.funcBox\.addModeIndicator, data: (.+)}\);";
            String creatureSkinningPattern     = @"new Listview\(\{template: 'item', id: 'skinning', name: LANG\.tab_skinning, tabs: tabsRelated, parent: 'lkljbjkb574', extraCols: \[Listview\.extraCols\.count, Listview\.extraCols\.percent\], sort:\['-percent', 'name'\], computeDataFunc: Listview\.funcBox\.initLootTable, note: WH\.sprintf\(LANG\.lvnote_npcskinning, [0-9]+\), _totalCount: ([0-9]+), data: (.+)}\);";
            String creatureTrainerPattern      = @"new Listview\(\{template: 'spell', id: 'teaches-recipe', name: LANG\.tab_teaches, tabs: tabsRelated, parent: 'lkljbjkb574', visibleCols: \['source'\], data: (.+)\}\);";
            String creatureQuestStarterPattern = @"new Listview\(\{template: 'quest', id: 'starts', name: LANG\.tab_starts, tabs: tabsRelated, parent: 'lkljbjkb574', data: (.+)\}\);";
            String creatureQuestEnderPattern   = @"new Listview\(\{template: 'quest', id: 'ends', name: LANG\.tab_ends, tabs: tabsRelated, parent: 'lkljbjkb574', data: (.+)\}\);";
            String creatureMoneyPattern        = @"money\\x3D([0-9]+)\\x5D";

            String creatureTemplateDataJSon = Tools.ExtractJsonFromWithPattern(creatureHtml, dataPattern);
            String creatureHealthDataJSon   = Tools.ExtractJsonFromWithPattern(creatureHtml, creatureHealthPattern);
            String creatureMoneyData        = Tools.ExtractJsonFromWithPattern(creatureHtml, creatureMoneyPattern);
            CreatureTemplateParsing creatureTemplateData = JsonConvert.DeserializeObject <CreatureTemplateParsing>(creatureTemplateDataJSon);

            SetCreatureTemplateData(creatureTemplateData, creatureMoneyData, creatureHealthDataJSon);

            String npcVendorJSon = Tools.ExtractJsonFromWithPattern(creatureHtml, vendorPattern);

            if (npcVendorJSon != null)
            {
                NpcVendorParsing[] npcVendorDatas = JsonConvert.DeserializeObject <NpcVendorParsing[]>(npcVendorJSon);
                SetNpcVendorData(npcVendorDatas);
            }

            String creatureLootJSon         = Tools.ExtractJsonFromWithPattern(creatureHtml, creatureLootPattern);
            String creatureLootCurrencyJSon = Tools.ExtractJsonFromWithPattern(creatureHtml, creatureCurrencyPattern);

            if (creatureLootJSon != null || creatureLootCurrencyJSon != null)
            {
                CreatureLootItemParsing[] creatureLootDatas = creatureLootJSon != null?JsonConvert.DeserializeObject <CreatureLootItemParsing[]>(creatureLootJSon) : new CreatureLootItemParsing[0];

                CreatureLootCurrencyParsing[] creatureLootCurrencyDatas = creatureLootCurrencyJSon != null?JsonConvert.DeserializeObject <CreatureLootCurrencyParsing[]>(creatureLootCurrencyJSon) : new CreatureLootCurrencyParsing[0];

                SetCreatureLootData(creatureLootDatas, creatureLootCurrencyDatas);
            }

            String creatureSkinningCount = Tools.ExtractJsonFromWithPattern(creatureHtml, creatureSkinningPattern, 0);
            String creatureSkinningJSon  = Tools.ExtractJsonFromWithPattern(creatureHtml, creatureSkinningPattern, 1);

            if (creatureSkinningJSon != null)
            {
                CreatureLootItemParsing[] creatureLootDatas = JsonConvert.DeserializeObject <CreatureLootItemParsing[]>(creatureSkinningJSon);
                SetCreatureSkinningData(creatureLootDatas, Int32.Parse(creatureSkinningCount));
            }

            String creatureTrainerJSon = Tools.ExtractJsonFromWithPattern(creatureHtml, creatureTrainerPattern);

            if (creatureTrainerJSon != null)
            {
                CreatureTrainerParsing[] creatureTrainerDatas = JsonConvert.DeserializeObject <CreatureTrainerParsing[]>(creatureTrainerJSon);
                m_creatureTrainerDatas = creatureTrainerDatas;
            }

            String creatureQuestStarterJSon = Tools.ExtractJsonFromWithPattern(creatureHtml, creatureQuestStarterPattern);

            if (creatureQuestStarterJSon != null)
            {
                QuestStarterEnderParsing[] creatureQuestStarterDatas = JsonConvert.DeserializeObject <QuestStarterEnderParsing[]>(creatureQuestStarterJSon);
                m_creatureQuestStarterDatas = creatureQuestStarterDatas;
            }

            String creatureQuestEnderJSon = Tools.ExtractJsonFromWithPattern(creatureHtml, creatureQuestEnderPattern);

            if (creatureQuestEnderJSon != null)
            {
                QuestStarterEnderParsing[] creatureQuestEnderDatas = JsonConvert.DeserializeObject <QuestStarterEnderParsing[]>(creatureQuestEnderJSon);
                m_creatureQuestEnderDatas = creatureQuestEnderDatas;
            }

            String modelId = Tools.ExtractJsonFromWithPattern(creatureHtml, modelPattern);

            m_modelid = modelId != null?Int32.Parse(modelId) : 0;

            return(true);
        }
Esempio n. 5
0
 public Creature(int id)
 {
     m_creatureTemplateData    = new CreatureTemplateParsing();
     m_creatureTemplateData.id = id;
 }
Esempio n. 6
0
 public Creature()
 {
     m_creatureTemplateData    = new CreatureTemplateParsing();
     m_creatureTemplateData.id = 0;
 }
Esempio n. 7
0
        public override bool ParseSingleJson(int id = 0)
        {
            if (m_creatureTemplateData.id == 0 && id == 0)
            {
                return(false);
            }
            else if (m_creatureTemplateData.id == 0 && id != 0)
            {
                m_creatureTemplateData.id = id;
            }

            bool   optionSelected = false;
            String creatureHtml   = Tools.GetHtmlFromWowhead(GetWowheadUrl(), webClient);

            if (creatureHtml.Contains("inputbox-error") || creatureHtml.Contains("database-detail-page-not-found-message"))
            {
                return(false);
            }

            String dataPattern           = @"\$\.extend\(g_npcs\[" + m_creatureTemplateData.id + @"\], (.+)\);";
            String creatureHealthPattern = @"<div>(?:Health|Vie): ((?:\d|,|\.)+)</div>";
            String creatureMoneyPattern  = @"\[money=([0-9]+)\]";

            String creatureTemplateDataJSon = Tools.ExtractJsonFromWithPattern(creatureHtml, dataPattern);

            if (creatureTemplateDataJSon != null)
            {
                CreatureTemplateParsing creatureTemplateData = JsonConvert.DeserializeObject <CreatureTemplateParsing>(creatureTemplateDataJSon);

                String creatureHealthDataJSon = Tools.ExtractJsonFromWithPattern(creatureHtml, creatureHealthPattern);
                String creatureMoneyData      = Tools.ExtractJsonFromWithPattern(creatureHtml, creatureMoneyPattern);
                SetCreatureTemplateData(creatureTemplateData, creatureMoneyData, creatureHealthDataJSon);

                // Without m_creatureTemplateData we can't really do anything, so return false
                if (m_creatureTemplateData == null)
                {
                    return(false);
                }
            }

            if (IsCheckboxChecked("locale"))
            {
                optionSelected = true;
            }

            if (IsCheckboxChecked("template"))
            {
                String modelPattern = @"WH.Wow.ModelViewer.showLightbox\(\{\&quot;type\&quot;:1,&quot;typeId\&quot;:" + m_creatureTemplateData.id + @",\&quot;displayId\&quot;:([0-9]+)\}\)";

                String modelId = Tools.ExtractJsonFromWithPattern(creatureHtml, modelPattern);
                m_modelid = modelId != null?Int32.Parse(modelId) : 0;

                optionSelected = true;
            }

            if (IsCheckboxChecked("vendor"))
            {
                String vendorPattern = @"new Listview\(\{template: 'item', id: 'sells', name: WH.TERMS.sells,(.*), data: (.+)\}\);";
                String npcVendorJSon = Tools.ExtractJsonFromWithPattern(creatureHtml, vendorPattern, 1);
                if (npcVendorJSon != null)
                {
                    NpcVendorParsing[] npcVendorDatas = JsonConvert.DeserializeObject <NpcVendorParsing[]>(npcVendorJSon);
                    SetNpcVendorData(npcVendorDatas);
                    optionSelected = true;
                }
            }

            if (IsCheckboxChecked("loot"))
            {
                String creatureLootPattern     = @"new Listview\(\{template: 'item', id: 'drops', name: WH.TERMS.drops,(.*), data:(.+)\}\);";
                String creatureCurrencyPattern = @"new Listview\({template: 'currency', id: 'drop-currency', name: WH.TERMS.currencies,(.*), data:(.+)\}\);";

                String creatureLootJSon         = Tools.ExtractJsonFromWithPattern(creatureHtml, creatureLootPattern, 1);
                String creatureLootCurrencyJSon = Tools.ExtractJsonFromWithPattern(creatureHtml, creatureCurrencyPattern, 1);
                if (creatureLootJSon != null || creatureLootCurrencyJSon != null)
                {
                    CreatureLootItemParsing[] creatureLootDatas = creatureLootJSon != null?JsonConvert.DeserializeObject <CreatureLootItemParsing[]>(creatureLootJSon) : new CreatureLootItemParsing[0];

                    CreatureLootCurrencyParsing[] creatureLootCurrencyDatas = creatureLootCurrencyJSon != null?JsonConvert.DeserializeObject <CreatureLootCurrencyParsing[]>(creatureLootCurrencyJSon) : new CreatureLootCurrencyParsing[0];

                    SetCreatureLootData(creatureLootDatas, creatureLootCurrencyDatas);
                    optionSelected = true;
                }
            }

            if (IsCheckboxChecked("skinning"))
            {
                String creatureSkinningPattern = @"new Listview\(\{template: 'item', id: 'skinning',.*_totalCount: ([0-9]+),.*data:(.+)\}\);";

                String creatureSkinningCount = Tools.ExtractJsonFromWithPattern(creatureHtml, creatureSkinningPattern, 0);
                String creatureSkinningJSon  = Tools.ExtractJsonFromWithPattern(creatureHtml, creatureSkinningPattern, 1);
                if (creatureSkinningJSon != null)
                {
                    CreatureLootItemParsing[] creatureLootDatas = JsonConvert.DeserializeObject <CreatureLootItemParsing[]>(creatureSkinningJSon);
                    SetCreatureSkinningData(creatureLootDatas, Int32.Parse(creatureSkinningCount));
                    optionSelected = true;
                }
            }

            if (IsCheckboxChecked("trainer"))
            {
                String creatureTrainerPattern = @"new Listview\(\{template: 'spell', id: 'teaches-recipe', name: WH.TERMS.teaches, tabs: tabsRelated, parent: 'lkljbjkb574', visibleCols: \['source'\], data: (.+)\}\);";

                String creatureTrainerJSon = Tools.ExtractJsonFromWithPattern(creatureHtml, creatureTrainerPattern);
                if (creatureTrainerJSon != null)
                {
                    CreatureTrainerParsing[] creatureTrainerDatas = JsonConvert.DeserializeObject <CreatureTrainerParsing[]>(creatureTrainerJSon);
                    m_creatureTrainerDatas = creatureTrainerDatas;
                    optionSelected         = true;
                }
            }

            if (IsCheckboxChecked("quest starter"))
            {
                String creatureQuestStarterPattern = @"new Listview\(\{template: 'quest', id: 'starts', name: WH.TERMS.starts, tabs: tabsRelated, parent: 'lkljbjkb574', data: (.+)\}\);";

                String creatureQuestStarterJSon = Tools.ExtractJsonFromWithPattern(creatureHtml, creatureQuestStarterPattern);
                if (creatureQuestStarterJSon != null)
                {
                    QuestStarterEnderParsing[] creatureQuestStarterDatas = JsonConvert.DeserializeObject <QuestStarterEnderParsing[]>(creatureQuestStarterJSon);
                    m_creatureQuestStarterDatas = creatureQuestStarterDatas;
                    optionSelected = true;
                }
            }

            if (IsCheckboxChecked("quest ender"))
            {
                String creatureQuestEnderPattern = @"new Listview\(\{template: 'quest', id: 'ends', name: WH.TERMS.ends, tabs: tabsRelated, parent: 'lkljbjkb574', data: (.+)\}\);";

                String creatureQuestEnderJSon = Tools.ExtractJsonFromWithPattern(creatureHtml, creatureQuestEnderPattern);
                if (creatureQuestEnderJSon != null)
                {
                    QuestStarterEnderParsing[] creatureQuestEnderDatas = JsonConvert.DeserializeObject <QuestStarterEnderParsing[]>(creatureQuestEnderJSon);
                    m_creatureQuestEnderDatas = creatureQuestEnderDatas;
                    optionSelected            = true;
                }
            }

            if (optionSelected)
            {
                return(true);
            }
            else
            {
                return(false);
            }
        }
Esempio n. 8
0
        public override bool ParseSingleJson(int id = 0)
        {
            if (m_creatureTemplateData.id == 0 && id == 0)
            {
                return(false);
            }
            else if (m_creatureTemplateData.id == 0 && id != 0)
            {
                m_creatureTemplateData.id = id;
            }

            String creatureHtml = Tools.GetHtmlFromWowhead(GetWowheadUrl(), webClient);

            if (creatureHtml.Contains("inputbox-error") || creatureHtml.Contains("database-detail-page-not-found-message"))
            {
                return(false);
            }
            else
            {
                String dataPattern            = @"\$\.extend\(g_npcs\[" + m_creatureTemplateData.id + @"\], (.+)\);";
                String creatureHealthPattern  = @"<div>(?:Health|Vie) : ((?:\d|,|\.)+)</div>";
                String creatureMoneyPattern   = @"\[money=([0-9]+)\]";
                String creatureModelIdPattern = @"WH\.ModelViewer\.showLightbox\({&quot;type&quot;:[0-9]+,&quot;typeId&quot;:" + m_creatureTemplateData.id + @",&quot;displayId&quot;:([0-9]+)}\)";

                String creatureTemplateDataJSon = Tools.ExtractJsonFromWithPattern(creatureHtml, dataPattern);
                if (creatureTemplateDataJSon != null)
                {
                    CreatureTemplateParsing creatureTemplateData = JsonConvert.DeserializeObject <CreatureTemplateParsing>(creatureTemplateDataJSon);

                    String creatureHealthDataJSon = Tools.ExtractJsonFromWithPattern(creatureHtml, creatureHealthPattern);
                    String creatureMoneyData      = Tools.ExtractJsonFromWithPattern(creatureHtml, creatureMoneyPattern);
                    String creatureModelIdData    = Tools.ExtractJsonFromWithPattern(creatureHtml, creatureModelIdPattern);
                    SetCreatureTemplateData(creatureTemplateData, creatureModelIdData, creatureMoneyData, creatureHealthDataJSon);

                    // Without m_creatureTemplateData we can't really do anything, so return false
                    if (m_creatureTemplateData == null)
                    {
                        return(false);
                    }
                }

                if (IsCheckboxChecked("vendor"))
                {
                    String vendorPattern = @"new Listview\({template: 'item', id: 'sells', .+?, data: (.+)}\);";
                    String npcVendorJSon = Tools.ExtractJsonFromWithPattern(creatureHtml, vendorPattern);
                    if (npcVendorJSon != null)
                    {
                        NpcVendorParsing[] npcVendorDatas = JsonConvert.DeserializeObject <NpcVendorParsing[]>(npcVendorJSon);
                        SetNpcVendorData(npcVendorDatas);
                    }
                }

                if (IsCheckboxChecked("loot"))
                {
                    String creatureLootPattern     = @"new Listview\({template: 'item', id: 'drops', name: LANG\.tab_drops, tabs: tabsRelated, parent: 'lkljbjkb574', extraCols: \['count', 'percent'\],  showLootSpecs: [0-9],sort:\['noteworthy', '-percent', 'name'\], _totalCount: [0-9]+, computeDataFunc: Listview\.funcBox\.initLootTable, onAfterCreate: Listview\.funcBox\.addModeIndicator, data:(.+)}\);";
                    String creatureCurrencyPattern = @"new Listview\({template: 'currency', id: 'drop-currency', name: LANG\.tab_currencies, tabs: tabsRelated, parent: 'lkljbjkb574', extraCols: \[Listview\.extraCols\.count, Listview\.extraCols\.percent\], sort:\['-percent', 'name'], _totalCount: [0-9]*, computeDataFunc: Listview\.funcBox\.initLootTable, onAfterCreate: Listview\.funcBox\.addModeIndicator, data: (.+)}\);";

                    String creatureLootJSon         = Tools.ExtractJsonFromWithPattern(creatureHtml, creatureLootPattern);
                    String creatureLootCurrencyJSon = Tools.ExtractJsonFromWithPattern(creatureHtml, creatureCurrencyPattern);
                    if (creatureLootJSon != null || creatureLootCurrencyJSon != null)
                    {
                        CreatureLootItemParsing[] creatureLootDatas = creatureLootJSon != null?JsonConvert.DeserializeObject <CreatureLootItemParsing[]>(creatureLootJSon) : new CreatureLootItemParsing[0];

                        CreatureLootCurrencyParsing[] creatureLootCurrencyDatas = creatureLootCurrencyJSon != null?JsonConvert.DeserializeObject <CreatureLootCurrencyParsing[]>(creatureLootCurrencyJSon) : new CreatureLootCurrencyParsing[0];

                        SetCreatureLootData(creatureLootDatas, creatureLootCurrencyDatas);
                    }
                }

                if (IsCheckboxChecked("skinning"))
                {
                    String creatureSkinningPattern = @"new Listview\(\{template: 'item', id: 'skinning', name: LANG\.tab_skinning, tabs: tabsRelated, parent: 'lkljbjkb574', extraCols: \[Listview\.extraCols\.count, Listview\.extraCols\.percent\], sort:\['-percent', 'name'\], computeDataFunc: Listview\.funcBox\.initLootTable, note: WH\.sprintf\(LANG\.lvnote_npcskinning, [0-9]+\), _totalCount: ([0-9]+), data: (.+)}\);";

                    String creatureSkinningCount = Tools.ExtractJsonFromWithPattern(creatureHtml, creatureSkinningPattern, 0);
                    String creatureSkinningJSon  = Tools.ExtractJsonFromWithPattern(creatureHtml, creatureSkinningPattern, 1);
                    if (creatureSkinningJSon != null)
                    {
                        CreatureLootItemParsing[] creatureLootDatas = JsonConvert.DeserializeObject <CreatureLootItemParsing[]>(creatureSkinningJSon);
                        SetCreatureSkinningData(creatureLootDatas, Int32.Parse(creatureSkinningCount));
                    }
                }

                if (IsCheckboxChecked("pickpocketing"))
                {
                    String creaturePickpocketingPattern = @"new Listview\(\{template: 'item', id: 'pickpocketing', name: LANG\.tab_pickpocketing, tabs: tabsRelated, parent: 'lkljbjkb574', extraCols: \[Listview\.extraCols\.count, Listview\.extraCols\.percent\], sort:\['-percent', 'name'\], computeDataFunc: Listview\.funcBox\.initLootTable, note: WH\.sprintf\(LANG\.lvnote_npcpickpocketing, [0-9]+\), _totalCount: ([0-9]+), data:(.+)}\);";

                    String creaturePickpocketingCount = Tools.ExtractJsonFromWithPattern(creatureHtml, creaturePickpocketingPattern, 0);
                    String creaturePickpocketingJSon  = Tools.ExtractJsonFromWithPattern(creatureHtml, creaturePickpocketingPattern, 1);
                    if (creaturePickpocketingJSon != null)
                    {
                        CreatureLootItemParsing[] creatureLootDatas = JsonConvert.DeserializeObject <CreatureLootItemParsing[]>(creaturePickpocketingJSon);
                        SetCreaturePickpocketingData(creatureLootDatas, Int32.Parse(creaturePickpocketingCount));
                    }
                }

                if (IsCheckboxChecked("trainer"))
                {
                    String creatureTrainerPattern = @"new Listview\(\{template: 'spell', id: 'teaches-recipe', name: LANG\.tab_teaches, tabs: tabsRelated, parent: 'lkljbjkb574', visibleCols: \['source'\], data: (.+)\}\);";

                    String creatureTrainerJSon = Tools.ExtractJsonFromWithPattern(creatureHtml, creatureTrainerPattern);
                    if (creatureTrainerJSon != null)
                    {
                        CreatureTrainerParsing[] creatureTrainerDatas = JsonConvert.DeserializeObject <CreatureTrainerParsing[]>(creatureTrainerJSon);
                        m_creatureTrainerDatas = creatureTrainerDatas;
                    }
                }

                if (IsCheckboxChecked("quest starter"))
                {
                    String creatureQuestStarterPattern = @"new Listview\(\{template: 'quest', id: 'starts', name: LANG\.tab_starts, tabs: tabsRelated, parent: 'lkljbjkb574', data: (.+)\}\);";

                    String creatureQuestStarterJSon = Tools.ExtractJsonFromWithPattern(creatureHtml, creatureQuestStarterPattern);
                    if (creatureQuestStarterJSon != null)
                    {
                        QuestStarterEnderParsing[] creatureQuestStarterDatas = JsonConvert.DeserializeObject <QuestStarterEnderParsing[]>(creatureQuestStarterJSon);
                        m_creatureQuestStarterDatas = creatureQuestStarterDatas;
                    }
                }

                if (IsCheckboxChecked("quest ender"))
                {
                    String creatureQuestEnderPattern = @"new Listview\(\{template: 'quest', id: 'ends', name: LANG\.tab_ends, tabs: tabsRelated, parent: 'lkljbjkb574', data: (.+)\}\);";

                    String creatureQuestEnderJSon = Tools.ExtractJsonFromWithPattern(creatureHtml, creatureQuestEnderPattern);
                    if (creatureQuestEnderJSon != null)
                    {
                        QuestStarterEnderParsing[] creatureQuestEnderDatas = JsonConvert.DeserializeObject <QuestStarterEnderParsing[]>(creatureQuestEnderJSon);
                        m_creatureQuestEnderDatas = creatureQuestEnderDatas;
                    }
                }

                return(true);
            }
        }