├── README.md
├── WowHeadParser.VC.VC.opendb
├── .nuget
├── NuGet.exe
├── NuGet.Config
└── NuGet.targets
├── WowHeadParser.VC.db
├── WowHeadParser
├── Newtonsoft.Json.dll
├── packages.config
├── Classes
│ ├── WowheadWebclient.cs
│ ├── Range.cs
│ └── Zone.cs
├── Program.cs
├── SqlBuilder
│ ├── SqlItem.cs
│ ├── SqlBuilderException.cs
│ └── SqlBuilder.cs
├── Properties
│ ├── Settings.settings
│ ├── AssemblyInfo.cs
│ ├── Settings.Designer.cs
│ ├── Resources.Designer.cs
│ └── Resources.resx
├── App.config
├── Entities
│ ├── Entity.cs
│ ├── BlackMarket.cs
│ ├── ZoneEntity.cs
│ ├── Quest.cs
│ ├── Item.cs
│ ├── Zone.cs
│ └── Gameobject.cs
├── WowHeadParser.csproj
├── MainWindow.resx
├── Ressources
│ ├── NpcTotalHp.txt
│ ├── NpcTotalHpExp1.txt
│ ├── NpcTotalHpExp3.txt
│ ├── NpcTotalHpExp4.txt
│ ├── NpcTotalHpExp6.txt
│ ├── NpcTotalHpExp2.txt
│ ├── NpcTotalHpExp5.txt
│ └── CurrencyTypes.db2.csv
├── MainWindow.Designer.cs
└── MainWindow.cs
├── WowHeadParser.sln
└── .gitignore
/README.md:
--------------------------------------------------------------------------------
1 | # WowpacketParser for AshamaneProject
2 |
--------------------------------------------------------------------------------
/WowHeadParser.VC.VC.opendb:
--------------------------------------------------------------------------------
1 | T h e l t T H E L T - P C
--------------------------------------------------------------------------------
/.nuget/NuGet.exe:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AshamaneProject/WowheadParser/HEAD/.nuget/NuGet.exe
--------------------------------------------------------------------------------
/WowHeadParser.VC.db:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AshamaneProject/WowheadParser/HEAD/WowHeadParser.VC.db
--------------------------------------------------------------------------------
/WowHeadParser/Newtonsoft.Json.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AshamaneProject/WowheadParser/HEAD/WowHeadParser/Newtonsoft.Json.dll
--------------------------------------------------------------------------------
/WowHeadParser/packages.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/.nuget/NuGet.Config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/WowHeadParser/Classes/WowheadWebclient.cs:
--------------------------------------------------------------------------------
1 | /*
2 | * * Created by Traesh for AshamaneProject (https://github.com/AshamaneProject)
3 | */
4 | using System.Net;
5 | using System.Text;
6 |
7 | namespace WowHeadParser
8 | {
9 | [System.ComponentModel.DesignerCategory("Code")]
10 | class WowheadWebclient : WebClient
11 | {
12 | public WowheadWebclient() : base()
13 | {
14 | this.Headers.Add("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.0.3705;)");
15 | this.Encoding = Encoding.UTF8;
16 | }
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/WowHeadParser/Program.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Threading.Tasks;
5 | using System.Windows.Forms;
6 |
7 | namespace WowHeadParser
8 | {
9 | static class Program
10 | {
11 | ///
12 | /// Point d'entrée principal de l'application.
13 | ///
14 | [STAThread]
15 | static void Main(string[] args)
16 | {
17 | Application.EnableVisualStyles();
18 | Application.SetCompatibleTextRenderingDefault(false);
19 | Application.Run(new MainWindow());
20 | }
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/WowHeadParser/SqlBuilder/SqlItem.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 |
4 | namespace Sql
5 | {
6 | public class SqlItem
7 | {
8 | private List _values = new List(64);
9 |
10 | public object Key { get; set; }
11 |
12 | ///
13 | /// Gets the number of elements actually contained in the list
14 | ///
15 | public int Count { get { return _values.Count; } }
16 |
17 | public SqlItem(object key, List values)
18 | {
19 | Key = key;
20 | _values = values;
21 | }
22 |
23 | public string this[int x]
24 | {
25 | get
26 | {
27 | if (x >= Count)
28 | throw new IndexOutOfRangeException();
29 |
30 | return _values[x];
31 | }
32 | }
33 | }
34 | }
--------------------------------------------------------------------------------
/WowHeadParser/Properties/Settings.settings:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | fr
7 |
8 |
9 | 2
10 |
11 |
12 |
13 |
14 |
15 | 0
16 |
17 |
18 |
--------------------------------------------------------------------------------
/WowHeadParser/SqlBuilder/SqlBuilderException.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace Sql
4 | {
5 | [Serializable]
6 | internal class InvalidQueryTypeException : Exception
7 | {
8 | public InvalidQueryTypeException()
9 | {
10 | }
11 |
12 | public InvalidQueryTypeException(SqlQueryType type)
13 | : base(type.ToString())
14 | {
15 | }
16 |
17 | public InvalidQueryTypeException(string message)
18 | : base(message)
19 | {
20 | }
21 |
22 | public InvalidQueryTypeException(string message, params object[] args)
23 | : base(string.Format(message, args))
24 | {
25 | }
26 |
27 | public override string Message { get { return string.Format(@"{0}: Invalid SqlQueryType value! Query type value must be in the interval from SqlQueryType.None to SqlQueryType.Max", Source); } }
28 |
29 | public override string ToString()
30 | {
31 | return Message;
32 | }
33 | }
34 | }
--------------------------------------------------------------------------------
/WowHeadParser.sln:
--------------------------------------------------------------------------------
1 |
2 | Microsoft Visual Studio Solution File, Format Version 12.00
3 | # Visual Studio 2013
4 | VisualStudioVersion = 12.0.30723.0
5 | MinimumVisualStudioVersion = 10.0.40219.1
6 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WowHeadParser", "WowHeadParser\WowHeadParser.csproj", "{017A8055-0E2B-475C-A318-AD96BF782B19}"
7 | EndProject
8 | Global
9 | GlobalSection(SolutionConfigurationPlatforms) = preSolution
10 | Debug|Any CPU = Debug|Any CPU
11 | Release|Any CPU = Release|Any CPU
12 | EndGlobalSection
13 | GlobalSection(ProjectConfigurationPlatforms) = postSolution
14 | {017A8055-0E2B-475C-A318-AD96BF782B19}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
15 | {017A8055-0E2B-475C-A318-AD96BF782B19}.Debug|Any CPU.Build.0 = Debug|Any CPU
16 | {017A8055-0E2B-475C-A318-AD96BF782B19}.Release|Any CPU.ActiveCfg = Release|Any CPU
17 | {017A8055-0E2B-475C-A318-AD96BF782B19}.Release|Any CPU.Build.0 = Release|Any CPU
18 | EndGlobalSection
19 | GlobalSection(SolutionProperties) = preSolution
20 | HideSolutionNode = FALSE
21 | EndGlobalSection
22 | EndGlobal
23 |
--------------------------------------------------------------------------------
/WowHeadParser/App.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 | fr
15 |
16 |
17 | 2
18 |
19 |
20 | 0
21 |
22 |
23 |
24 |
--------------------------------------------------------------------------------
/WowHeadParser/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 | using System.Runtime.CompilerServices;
3 | using System.Runtime.InteropServices;
4 |
5 | // Les informations générales relatives à un assembly dépendent de
6 | // l'ensemble d'attributs suivant. Changez les valeurs de ces attributs pour modifier les informations
7 | // associées à un assembly.
8 | [assembly: AssemblyTitle("WowHeadParser")]
9 | [assembly: AssemblyDescription("")]
10 | [assembly: AssemblyConfiguration("")]
11 | [assembly: AssemblyCompany("Farahlon Server")]
12 | [assembly: AssemblyProduct("WowHeadParser")]
13 | [assembly: AssemblyCopyright("Copyright © 2015")]
14 | [assembly: AssemblyTrademark("")]
15 | [assembly: AssemblyCulture("")]
16 |
17 | // L'affectation de la valeur false à ComVisible rend les types invisibles dans cet assembly
18 | // aux composants COM. Si vous devez accéder à un type dans cet assembly à partir de
19 | // COM, affectez la valeur true à l'attribut ComVisible sur ce type.
20 | [assembly: ComVisible(false)]
21 |
22 | // Le GUID suivant est pour l'ID de la typelib si ce projet est exposé à COM
23 | [assembly: Guid("8ff557a9-d899-4710-912c-db141be67ec0")]
24 |
25 | // Les informations de version pour un assembly se composent des quatre valeurs suivantes :
26 | //
27 | // Version principale
28 | // Version secondaire
29 | // Numéro de build
30 | // Révision
31 | //
32 | // Vous pouvez spécifier toutes les valeurs ou indiquer les numéros de build et de révision par défaut
33 | // en utilisant '*', comme indiqué ci-dessous :
34 | // [assembly: AssemblyVersion("1.0.*")]
35 | [assembly: AssemblyVersion("1.0.0.0")]
36 | [assembly: AssemblyFileVersion("1.0.0.0")]
37 |
--------------------------------------------------------------------------------
/WowHeadParser/Entities/Entity.cs:
--------------------------------------------------------------------------------
1 | /*
2 | * * Created by Traesh for AshamaneProject (https://github.com/AshamaneProject)
3 | */
4 | using Sql;
5 | using System;
6 | using System.Collections.Generic;
7 | using System.Linq;
8 | using System.Net.Http;
9 | using System.Text;
10 | using System.Threading.Tasks;
11 |
12 | namespace WowHeadParser.Entities
13 | {
14 | public class Entity
15 | {
16 | public Entity()
17 | {
18 | m_hasZoneData = false;
19 | isError = false;
20 | webClient = null;
21 | }
22 |
23 | static public String GetWowheadBaseUrl()
24 | {
25 | if (m_baseWowheadUrl == "")
26 | ReloadWowheadBaseUrl();
27 |
28 | return m_baseWowheadUrl;
29 | }
30 |
31 | static public void ReloadWowheadBaseUrl()
32 | {
33 | m_baseWowheadUrl = "https://" + Properties.Settings.Default.wowheadLocale + ".wowhead.com";
34 | }
35 |
36 | public virtual String GetWowheadUrl() { return ""; }
37 |
38 | public virtual List GetIdsFromZone(String zoneId, String zoneHtml) { return new List(); }
39 |
40 | public virtual bool ParseSingleJson(int id = 0) { return false; }
41 |
42 | public virtual String GetSQLRequest() { return ""; }
43 |
44 | public void SetIsError() { isError = true; }
45 |
46 | public bool IsCheckboxChecked(String checkboxName)
47 | {
48 | for (int i = 0; i < Properties.Settings.Default.checkedList.Count; ++i)
49 | if (Properties.Settings.Default.checkedList[i] == checkboxName)
50 | return true;
51 |
52 | return false;
53 | }
54 |
55 | protected bool isError;
56 | protected bool m_hasZoneData;
57 |
58 | static private String m_baseWowheadUrl = "";
59 |
60 | public HttpClient webClient;
61 | }
62 | }
63 |
--------------------------------------------------------------------------------
/WowHeadParser/Entities/BlackMarket.cs:
--------------------------------------------------------------------------------
1 | /*
2 | * * Created by Traesh for AshamaneProject (https://github.com/AshamaneProject)
3 | */
4 | using Newtonsoft.Json;
5 | using Sql;
6 | using System;
7 | using System.Collections.Generic;
8 | using System.Linq;
9 | using System.Text;
10 | using System.Text.RegularExpressions;
11 | using System.Threading.Tasks;
12 | using Newtonsoft.Json.Linq;
13 | using System.IO;
14 |
15 | namespace WowHeadParser.Entities
16 | {
17 | class BlackMarket : Entity
18 | {
19 | struct BlackMarketItem
20 | {
21 | public int id;
22 | public int level;
23 | }
24 |
25 | private int m_id;
26 |
27 | public BlackMarket(int id = 0)
28 | {
29 | m_id = id;
30 | }
31 |
32 | public override List GetIdsFromZone(String zoneId, String zoneHtml)
33 | {
34 | String blackMarketHtml = Tools.GetHtmlFromWowhead("http://www.wowhead.com/items?filter=cr=181;crs=1;crv=0#700-2");
35 |
36 | String blackMarketItemsPattern = @"var listviewitems = (\[.+\]);";
37 | String allBlackMarketItemJson = Tools.ExtractJsonFromWithPattern(blackMarketHtml, blackMarketItemsPattern);
38 | BlackMarketItem[] allBlackMarketItemsParsing = JsonConvert.DeserializeObject(allBlackMarketItemJson);
39 |
40 | List tempArray = new List();
41 | foreach (BlackMarketItem blackMarketItemsParsing in allBlackMarketItemsParsing)
42 | {
43 | if (blackMarketItemsParsing.level > UInt32.Parse(zoneId))
44 | continue;
45 |
46 | BlackMarket bm = new BlackMarket(blackMarketItemsParsing.id);
47 | tempArray.Add(bm);
48 | }
49 |
50 | return tempArray;
51 | }
52 |
53 | public override bool ParseSingleJson(int id = 0)
54 | {
55 | if (id == 0 && m_id != 0)
56 | id = m_id;
57 | else
58 | return false;
59 |
60 | return true;
61 | }
62 |
63 | public override String GetSQLRequest()
64 | {
65 | String returnSql = "INSERT INTO blackmarket_template (id, itemEntry, itemCount, seller, startBid, duration, chance) VALUES (0, " + m_id + ", 1, 83867, 50000000, 43200, 10);\n";
66 | return returnSql;
67 | }
68 | }
69 | }
70 |
--------------------------------------------------------------------------------
/WowHeadParser/Properties/Settings.Designer.cs:
--------------------------------------------------------------------------------
1 | //------------------------------------------------------------------------------
2 | //
3 | // Ce code a été généré par un outil.
4 | // Version du runtime :4.0.30319.34209
5 | //
6 | // Les modifications apportées à ce fichier peuvent provoquer un comportement incorrect et seront perdues si
7 | // le code est régénéré.
8 | //
9 | //------------------------------------------------------------------------------
10 |
11 | namespace WowHeadParser.Properties {
12 |
13 |
14 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
15 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "12.0.0.0")]
16 | internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
17 |
18 | private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
19 |
20 | public static Settings Default {
21 | get {
22 | return defaultInstance;
23 | }
24 | }
25 |
26 | [global::System.Configuration.UserScopedSettingAttribute()]
27 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
28 | [global::System.Configuration.DefaultSettingValueAttribute("fr")]
29 | public string wowheadLocale {
30 | get {
31 | return ((string)(this["wowheadLocale"]));
32 | }
33 | set {
34 | this["wowheadLocale"] = value;
35 | }
36 | }
37 |
38 | [global::System.Configuration.UserScopedSettingAttribute()]
39 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
40 | [global::System.Configuration.DefaultSettingValueAttribute("2")]
41 | public int localIndex {
42 | get {
43 | return ((int)(this["localIndex"]));
44 | }
45 | set {
46 | this["localIndex"] = value;
47 | }
48 | }
49 |
50 | [global::System.Configuration.UserScopedSettingAttribute()]
51 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
52 | public global::System.Collections.Specialized.StringCollection checkedList {
53 | get {
54 | return ((global::System.Collections.Specialized.StringCollection)(this["checkedList"]));
55 | }
56 | set {
57 | this["checkedList"] = value;
58 | }
59 | }
60 |
61 | [global::System.Configuration.UserScopedSettingAttribute()]
62 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
63 | [global::System.Configuration.DefaultSettingValueAttribute("0")]
64 | public int selectedEntity {
65 | get {
66 | return ((int)(this["selectedEntity"]));
67 | }
68 | set {
69 | this["selectedEntity"] = value;
70 | }
71 | }
72 | }
73 | }
74 |
--------------------------------------------------------------------------------
/WowHeadParser/Properties/Resources.Designer.cs:
--------------------------------------------------------------------------------
1 | //------------------------------------------------------------------------------
2 | //
3 | // Ce code a été généré par un outil.
4 | // Version du runtime :4.0.30319.34209
5 | //
6 | // Les modifications apportées à ce fichier peuvent provoquer un comportement incorrect et seront perdues si
7 | // le code est régénéré.
8 | //
9 | //------------------------------------------------------------------------------
10 |
11 | namespace WowHeadParser.Properties
12 | {
13 |
14 |
15 | ///
16 | /// Une classe de ressource fortement typée destinée, entre autres, à la consultation des chaînes localisées.
17 | ///
18 | // Cette classe a été générée automatiquement par la classe StronglyTypedResourceBuilder
19 | // à l'aide d'un outil, tel que ResGen ou Visual Studio.
20 | // Pour ajouter ou supprimer un membre, modifiez votre fichier .ResX, puis réexécutez ResGen
21 | // avec l'option /str ou régénérez votre projet VS.
22 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
23 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
24 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
25 | internal class Resources
26 | {
27 |
28 | private static global::System.Resources.ResourceManager resourceMan;
29 |
30 | private static global::System.Globalization.CultureInfo resourceCulture;
31 |
32 | [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
33 | internal Resources()
34 | {
35 | }
36 |
37 | ///
38 | /// Retourne l'instance ResourceManager mise en cache utilisée par cette classe.
39 | ///
40 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
41 | internal static global::System.Resources.ResourceManager ResourceManager
42 | {
43 | get
44 | {
45 | if ((resourceMan == null))
46 | {
47 | global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("WowHeadParser.Properties.Resources", typeof(Resources).Assembly);
48 | resourceMan = temp;
49 | }
50 | return resourceMan;
51 | }
52 | }
53 |
54 | ///
55 | /// Remplace la propriété CurrentUICulture du thread actuel pour toutes
56 | /// les recherches de ressources à l'aide de cette classe de ressource fortement typée.
57 | ///
58 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
59 | internal static global::System.Globalization.CultureInfo Culture
60 | {
61 | get
62 | {
63 | return resourceCulture;
64 | }
65 | set
66 | {
67 | resourceCulture = value;
68 | }
69 | }
70 | }
71 | }
72 |
--------------------------------------------------------------------------------
/WowHeadParser/Entities/ZoneEntity.cs:
--------------------------------------------------------------------------------
1 | /*
2 | * * Created by Traesh for AshamaneProject (https://github.com/AshamaneProject)
3 | */
4 | using Newtonsoft.Json;
5 | using Sql;
6 | using System;
7 |
8 | namespace WowHeadParser.Entities
9 | {
10 | class ZoneEntity : Entity
11 | {
12 | public struct ZoneParsing
13 | {
14 | public int id;
15 | public string name;
16 | }
17 |
18 | public struct FishingParsing
19 | {
20 | public int id;
21 | public int count;
22 | }
23 |
24 | public ZoneEntity()
25 | {
26 | m_data.id = 0;
27 | m_itemMaxCount = 0;
28 | }
29 |
30 | public ZoneEntity(int id)
31 | {
32 | m_data.id = id;
33 | m_itemMaxCount = 0;
34 | }
35 |
36 | public override String GetWowheadUrl()
37 | {
38 | return GetWowheadBaseUrl() + "/zone=" + m_data.id;
39 | }
40 |
41 | public override bool ParseSingleJson(int id = 0)
42 | {
43 | if (m_data.id == 0 && id == 0)
44 | return false;
45 | else if (m_data.id == 0 && id != 0)
46 | m_data.id = id;
47 |
48 | String zoneHTML = Tools.GetHtmlFromWowhead(GetWowheadUrl());
49 |
50 | String fishingPattern = @"new Listview\(\{template: 'item', id: 'fishing', name: LANG\.tab_fishing, tabs: tabsRelated, parent: 'lkljbjkb574', extraCols: \[Listview\.extraCols\.count, Listview\.extraCols.percent\], sort:\['-percent', 'name'\], computeDataFunc: Listview\.funcBox\.initLootTable, note: \$WH\.sprintf\(LANG\.lvnote_zonefishing, [0-9]+\), _totalCount: ([0-9]+), data: (.+)\}\);";
51 |
52 | m_itemMaxCount = Int32.Parse(Tools.ExtractJsonFromWithPattern(zoneHTML, fishingPattern, 0));
53 | String fishingJSon = Tools.ExtractJsonFromWithPattern(zoneHTML, fishingPattern, 1);
54 | if (fishingJSon != null)
55 | {
56 | m_fishingDatas = JsonConvert.DeserializeObject(fishingJSon);
57 | }
58 |
59 | return true;
60 | }
61 |
62 | public override String GetSQLRequest()
63 | {
64 | String returnSql = "";
65 |
66 | if (m_data.id == 0 || isError)
67 | return returnSql;
68 |
69 | if (IsCheckboxChecked("Fishing") && m_fishingDatas != null)
70 | {
71 | m_FishingLootTemplateBuilder = new SqlBuilder("fishing_loot_template", "entry", SqlQueryType.InsertIgnore);
72 | m_FishingLootTemplateBuilder.SetFieldsNames("item", "ChanceOrQuestChance", "lootmode", "groupid", "mincountOrRef", "maxcount", "itemBonuses");
73 |
74 | foreach (FishingParsing fishingLootdata in m_fishingDatas)
75 | {
76 | String percent = ((float)fishingLootdata.count / (float)m_itemMaxCount * 100).ToString().Replace(",", ".");
77 | m_FishingLootTemplateBuilder.AppendFieldsValue(m_data.id, fishingLootdata.id, percent, 1, 0, "1", "1", "");
78 | }
79 |
80 | returnSql += m_FishingLootTemplateBuilder.ToString() + "\n";
81 | }
82 |
83 | return returnSql;
84 | }
85 |
86 | public ZoneParsing m_data;
87 |
88 | protected FishingParsing[] m_fishingDatas;
89 | protected int m_itemMaxCount;
90 |
91 | protected SqlBuilder m_spellLootTemplateBuilder;
92 | protected SqlBuilder m_FishingLootTemplateBuilder;
93 | }
94 | }
95 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | ## Ignore Visual Studio temporary files, build results, and
2 | ## files generated by popular Visual Studio add-ons.
3 |
4 | # User-specific files
5 | *.suo
6 | *.user
7 | *.userosscache
8 | *.sln.docstates
9 |
10 | # User-specific files (MonoDevelop/Xamarin Studio)
11 | *.userprefs
12 |
13 | # Build results
14 | [Dd]ebug/
15 | [Dd]ebugPublic/
16 | [Rr]elease/
17 | [Rr]eleases/
18 | x64/
19 | x86/
20 | build/
21 | bld/
22 | [Bb]in/
23 | [Oo]bj/
24 |
25 | # Visual Studo 2015 cache/options directory
26 | .vs/
27 |
28 | # MSTest test Results
29 | [Tt]est[Rr]esult*/
30 | [Bb]uild[Ll]og.*
31 |
32 | # NUNIT
33 | *.VisualState.xml
34 | TestResult.xml
35 |
36 | # Build Results of an ATL Project
37 | [Dd]ebugPS/
38 | [Rr]eleasePS/
39 | dlldata.c
40 |
41 | *_i.c
42 | *_p.c
43 | *_i.h
44 | *.ilk
45 | *.meta
46 | *.obj
47 | *.pch
48 | *.pdb
49 | *.pgc
50 | *.pgd
51 | *.rsp
52 | *.sbr
53 | *.tlb
54 | *.tli
55 | *.tlh
56 | *.tmp
57 | *.tmp_proj
58 | *.log
59 | *.vspscc
60 | *.vssscc
61 | .builds
62 | *.pidb
63 | *.svclog
64 | *.scc
65 |
66 | # Chutzpah Test files
67 | _Chutzpah*
68 |
69 | # Visual C++ cache files
70 | ipch/
71 | *.aps
72 | *.ncb
73 | *.opensdf
74 | *.sdf
75 | *.cachefile
76 |
77 | # Visual Studio profiler
78 | *.psess
79 | *.vsp
80 | *.vspx
81 |
82 | # TFS 2012 Local Workspace
83 | $tf/
84 |
85 | # Guidance Automation Toolkit
86 | *.gpState
87 |
88 | # ReSharper is a .NET coding add-in
89 | _ReSharper*/
90 | *.[Rr]e[Ss]harper
91 | *.DotSettings.user
92 |
93 | # JustCode is a .NET coding addin-in
94 | .JustCode
95 |
96 | # TeamCity is a build add-in
97 | _TeamCity*
98 |
99 | # DotCover is a Code Coverage Tool
100 | *.dotCover
101 |
102 | # NCrunch
103 | _NCrunch_*
104 | .*crunch*.local.xml
105 |
106 | # MightyMoose
107 | *.mm.*
108 | AutoTest.Net/
109 |
110 | # Web workbench (sass)
111 | .sass-cache/
112 |
113 | # Installshield output folder
114 | [Ee]xpress/
115 |
116 | # DocProject is a documentation generator add-in
117 | DocProject/buildhelp/
118 | DocProject/Help/*.HxT
119 | DocProject/Help/*.HxC
120 | DocProject/Help/*.hhc
121 | DocProject/Help/*.hhk
122 | DocProject/Help/*.hhp
123 | DocProject/Help/Html2
124 | DocProject/Help/html
125 |
126 | # Click-Once directory
127 | publish/
128 |
129 | # Publish Web Output
130 | *.[Pp]ublish.xml
131 | *.azurePubxml
132 | # TODO: Comment the next line if you want to checkin your web deploy settings
133 | # but database connection strings (with potential passwords) will be unencrypted
134 | *.pubxml
135 | *.publishproj
136 |
137 | # NuGet Packages
138 | *.nupkg
139 | # The packages folder can be ignored because of Package Restore
140 | **/packages/*
141 | # except build/, which is used as an MSBuild target.
142 | !**/packages/build/
143 | # Uncomment if necessary however generally it will be regenerated when needed
144 | #!**/packages/repositories.config
145 |
146 | # Windows Azure Build Output
147 | csx/
148 | *.build.csdef
149 |
150 | # Windows Store app package directory
151 | AppPackages/
152 |
153 | # Others
154 | *.[Cc]ache
155 | ClientBin/
156 | [Ss]tyle[Cc]op.*
157 | ~$*
158 | *~
159 | *.dbmdl
160 | *.dbproj.schemaview
161 | *.pfx
162 | *.publishsettings
163 | node_modules/
164 | bower_components/
165 |
166 | # RIA/Silverlight projects
167 | Generated_Code/
168 |
169 | # Backup & report files from converting an old project file
170 | # to a newer Visual Studio version. Backup files are not needed,
171 | # because we have git ;-)
172 | _UpgradeReport_Files/
173 | Backup*/
174 | UpgradeLog*.XML
175 | UpgradeLog*.htm
176 |
177 | # SQL Server files
178 | *.mdf
179 | *.ldf
180 |
181 | # Business Intelligence projects
182 | *.rdl.data
183 | *.bim.layout
184 | *.bim_*.settings
185 |
186 | # Microsoft Fakes
187 | FakesAssemblies/
188 |
189 | # Node.js Tools for Visual Studio
190 | .ntvs_analysis.dat
191 |
192 | # Visual Studio 6 build log
193 | *.plg
194 |
195 | # Visual Studio 6 workspace options file
196 | *.opt
--------------------------------------------------------------------------------
/WowHeadParser/Classes/Range.cs:
--------------------------------------------------------------------------------
1 | /*
2 | * * Created by Traesh for AshamaneProject (https://github.com/AshamaneProject)
3 | */
4 | using System;
5 | using System.ComponentModel;
6 | using System.IO;
7 | using System.Net.Http;
8 | using WowHeadParser.Entities;
9 |
10 | namespace WowHeadParser
11 | {
12 | class Range
13 | {
14 | const int MAX_WORKER = 20;
15 |
16 | public Range(MainWindow view, String fileName)
17 | {
18 | m_view = view;
19 | m_index = 0;
20 | m_parsedEntitiesCount = 0;
21 | m_getRangeListBackgroundWorker = new BackgroundWorker[MAX_WORKER];
22 | m_webClients = new HttpClient[MAX_WORKER];
23 |
24 | m_fileName = fileName;
25 | m_lastEstimateTime = 0;
26 | }
27 |
28 | public void StartParsing(int from, int to)
29 | {
30 | if (from > to)
31 | return;
32 |
33 | m_timestamp = Tools.GetUnixTimestamp();
34 |
35 | m_from = from;
36 | m_to = to;
37 | m_entityTodoCount = to - from + 1; // + 1 car le premier est compris
38 |
39 | StartSnifByEntity();
40 | }
41 |
42 | void StartSnifByEntity()
43 | {
44 | m_index = 0;
45 | m_parsedEntitiesCount = 0;
46 |
47 | int maxWorkers = (m_to - m_from + 1) > MAX_WORKER ? MAX_WORKER : m_to - m_from + 1;
48 |
49 | for (int i = 0; i < maxWorkers; ++i)
50 | {
51 | m_webClients[i] = Tools.InitHttpClient();
52 |
53 | m_getRangeListBackgroundWorker[i] = new BackgroundWorker();
54 | m_getRangeListBackgroundWorker[i].DoWork += new DoWorkEventHandler(BackgroundWorkerProcessEntitiesList);
55 | m_getRangeListBackgroundWorker[i].RunWorkerCompleted += new RunWorkerCompletedEventHandler(BackgroundWorkerProcessEntitiesCompleted);
56 | m_getRangeListBackgroundWorker[i].RunWorkerAsync(i);
57 | }
58 | }
59 |
60 | private void BackgroundWorkerProcessEntitiesList(object sender, DoWorkEventArgs e)
61 | {
62 | if (m_index >= m_entityTodoCount)
63 | return;
64 |
65 | int tempIndex = m_index++;
66 | try
67 | {
68 | e.Result = e.Argument;
69 | Entity entity = m_view.CreateNeededEntity(m_from + tempIndex);
70 | entity.webClient = m_webClients[(int)e.Result];
71 | entity.ParseSingleJson();
72 | String requestText = "\n\n" + entity.GetSQLRequest();
73 | requestText += requestText != "" ? "\n" : "";
74 | File.AppendAllText(m_fileName, entity.GetSQLRequest());
75 | }
76 | catch (Exception ex)
77 | {
78 | if (ex.Message.IndexOf("404") != -1)
79 | Console.WriteLine("Introuvable");
80 | else
81 | Console.WriteLine("Erreur");
82 | }
83 | ++m_parsedEntitiesCount;
84 | }
85 |
86 | private void BackgroundWorkerProcessEntitiesCompleted(object sender, RunWorkerCompletedEventArgs e)
87 | {
88 | if (m_parsedEntitiesCount > m_entityTodoCount)
89 | return;
90 |
91 | Console.WriteLine("Nombre effectué : " + m_parsedEntitiesCount);
92 |
93 | float percent = ((float)m_index / (float)m_entityTodoCount) * 100;
94 |
95 | if (m_view != null)
96 | {
97 | m_view.setProgressBar((int)percent);
98 | EstimateSecondsTimeLeft();
99 | }
100 |
101 | if (m_parsedEntitiesCount == m_entityTodoCount)
102 | {
103 | m_view.SetWorkDone();
104 | return;
105 | }
106 |
107 | if (m_index >= m_entityTodoCount)
108 | return;
109 |
110 | int workerIndex = (int)e.Result;
111 | m_getRangeListBackgroundWorker[workerIndex].RunWorkerAsync(workerIndex);
112 | }
113 |
114 | private void EstimateSecondsTimeLeft()
115 | {
116 | Int32 unixTimestamp = Tools.GetUnixTimestamp();
117 |
118 | if ((m_lastEstimateTime + 1) >= unixTimestamp)
119 | return;
120 |
121 | m_lastEstimateTime = unixTimestamp;
122 |
123 | float elapsedSeconds = unixTimestamp - m_timestamp;
124 |
125 | float entityCount = m_to - m_from;
126 | float timeByEntity = (float)elapsedSeconds / (float)m_parsedEntitiesCount;
127 |
128 | float estimatedSecondsLeft = timeByEntity * (entityCount - m_parsedEntitiesCount);
129 |
130 | m_view.SetTimeLeft((Int32)estimatedSecondsLeft);
131 | }
132 |
133 | private MainWindow m_view;
134 |
135 | private String m_fileName;
136 |
137 | private int m_from;
138 | private int m_to;
139 | private int m_entityTodoCount;
140 | private int m_index;
141 | private int m_parsedEntitiesCount;
142 |
143 | private BackgroundWorker[] m_getRangeListBackgroundWorker;
144 | private HttpClient[] m_webClients;
145 |
146 | // Test
147 | private int m_timestamp;
148 | private int m_lastEstimateTime;
149 | }
150 | }
151 |
--------------------------------------------------------------------------------
/WowHeadParser/Properties/Resources.resx:
--------------------------------------------------------------------------------
1 |
2 |
3 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 | text/microsoft-resx
107 |
108 |
109 | 2.0
110 |
111 |
112 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
113 |
114 |
115 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
116 |
117 |
--------------------------------------------------------------------------------
/WowHeadParser/WowHeadParser.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Debug
6 | AnyCPU
7 | {017A8055-0E2B-475C-A318-AD96BF782B19}
8 | WinExe
9 | Properties
10 | WowHeadParser
11 | WowHeadParser
12 | v4.5
13 | 512
14 |
15 |
16 | AnyCPU
17 | true
18 | full
19 | false
20 | bin\Debug\
21 | DEBUG;TRACE
22 | prompt
23 | 4
24 |
25 |
26 | AnyCPU
27 | pdbonly
28 | true
29 | bin\Release\
30 | TRACE
31 | prompt
32 | 4
33 |
34 |
35 |
36 | ..\packages\CsvHelper.2.13.2.0\lib\net40-client\CsvHelper.dll
37 |
38 |
39 | False
40 | .\Newtonsoft.Json.dll
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 | Form
71 |
72 |
73 | MainWindow.cs
74 |
75 |
76 |
77 |
78 | MainWindow.cs
79 |
80 |
81 | ResXFileCodeGenerator
82 | Resources.Designer.cs
83 | Designer
84 |
85 |
86 | True
87 | Resources.resx
88 |
89 |
90 |
91 | SettingsSingleFileGenerator
92 | Settings.Designer.cs
93 |
94 |
95 | True
96 | Settings.settings
97 | True
98 |
99 |
100 | PreserveNewest
101 |
102 |
103 | PreserveNewest
104 |
105 |
106 | PreserveNewest
107 |
108 |
109 |
110 |
111 | Designer
112 |
113 |
114 |
115 |
116 |
117 |
118 |
119 |
120 |
121 |
128 |
--------------------------------------------------------------------------------
/WowHeadParser/MainWindow.resx:
--------------------------------------------------------------------------------
1 |
2 |
3 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 |
108 |
109 | text/microsoft-resx
110 |
111 |
112 | 2.0
113 |
114 |
115 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
116 |
117 |
118 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
119 |
120 |
--------------------------------------------------------------------------------
/WowHeadParser/Classes/Zone.cs:
--------------------------------------------------------------------------------
1 | /*
2 | * * Created by Traesh for AshamaneProject (https://github.com/AshamaneProject)
3 | */
4 | using System;
5 | using System.Collections.Generic;
6 | using System.ComponentModel;
7 | using System.IO;
8 | using System.Linq;
9 | using WowHeadParser.Entities;
10 |
11 | namespace WowHeadParser
12 | {
13 | class Zone
14 | {
15 | const int MAX_WORKER = 50;
16 |
17 | public Zone(MainWindow view)
18 | {
19 | m_view = view;
20 | m_zoneId = "0";
21 | m_index = 0;
22 | m_parsedEntitiesCount = 0;
23 | m_getZoneListBackgroundWorker = new BackgroundWorker[MAX_WORKER];
24 |
25 | m_fileName = "";
26 | m_array = new List();
27 | }
28 |
29 | private void ResetZone()
30 | {
31 | if (m_view != null)
32 | m_view.setProgressBar(0);
33 |
34 | m_index = 0;
35 | m_array.Clear();
36 | m_parsedEntitiesCount = 0;
37 | m_timestamp = Tools.GetUnixTimestamp();
38 | m_fileName = Tools.GetFileNameForCurrentTime();
39 | m_timestamp = (Int32)(DateTime.UtcNow.Subtract(new DateTime(1970, 1, 1))).TotalSeconds;
40 | }
41 |
42 | public void StartParsing(String zone)
43 | {
44 | Entity askedEntity = m_view.CreateNeededEntity();
45 |
46 | if (askedEntity == null)
47 | return;
48 |
49 | ResetZone();
50 | m_zoneId = zone;
51 |
52 | if (askedEntity.GetType() != typeof(BlackMarket))
53 | m_zoneHtml = GetZoneHtmlFromWowhead(m_zoneId);
54 |
55 | ParseZoneJson();
56 | StartSnifByEntity();
57 | }
58 |
59 | public String GetZoneHtmlFromWowhead(String zone)
60 | {
61 | return Tools.GetHtmlFromWowhead(Tools.GetWowheadUrl("zone", zone));
62 | }
63 |
64 | public void ParseZoneJson()
65 | {
66 | Entity askedEntity = m_view.CreateNeededEntity();
67 |
68 | if (askedEntity == null)
69 | return;
70 |
71 | List entityList = m_view.CreateNeededEntity().GetIdsFromZone(m_zoneId, m_zoneHtml);
72 |
73 | if (entityList != null)
74 | m_array.AddRange(entityList);
75 | }
76 |
77 | void StartSnifByEntity()
78 | {
79 | m_index = 0;
80 | m_parsedEntitiesCount = 0;
81 |
82 | for (int i = 0; i < MAX_WORKER; ++i)
83 | {
84 | m_getZoneListBackgroundWorker[i] = new BackgroundWorker();
85 | m_getZoneListBackgroundWorker[i].DoWork += new DoWorkEventHandler(BackgroundWorkerProcessEntitiesList);
86 | m_getZoneListBackgroundWorker[i].RunWorkerCompleted += new RunWorkerCompletedEventHandler(BackgroundWorkerProcessEntitiesCompleted);
87 | m_getZoneListBackgroundWorker[i].WorkerReportsProgress = true;
88 | m_getZoneListBackgroundWorker[i].WorkerSupportsCancellation = true;
89 | m_getZoneListBackgroundWorker[i].RunWorkerAsync(i);
90 | }
91 | }
92 |
93 | private void BackgroundWorkerProcessEntitiesList(object sender, DoWorkEventArgs e)
94 | {
95 | if (m_index >= m_array.Count)
96 | return;
97 |
98 | int tempIndex = m_index++;
99 | try
100 | {
101 | e.Result = e.Argument;
102 | bool parseReturn = m_array[tempIndex].ParseSingleJson();
103 | }
104 | catch (Exception ex)
105 | {
106 | Console.WriteLine("Erreur");
107 | }
108 | ++m_parsedEntitiesCount;
109 | }
110 |
111 | private void BackgroundWorkerProcessEntitiesCompleted(object sender, RunWorkerCompletedEventArgs e)
112 | {
113 | if (m_parsedEntitiesCount > m_array.Count)
114 | return;
115 |
116 | Console.WriteLine("Nombre effectué : " + m_parsedEntitiesCount);
117 |
118 | float percent = ((float)m_index / (float)m_array.Count) * 100;
119 |
120 | if (m_view != null)
121 | {
122 | m_view.setProgressBar((int)percent);
123 | EstimateSecondsTimeLeft();
124 | }
125 |
126 | if (m_parsedEntitiesCount == m_array.Count)
127 | {
128 | AppendAllEntitiesToSql();
129 | m_view.SetWorkDone();
130 | return;
131 | }
132 |
133 | if (m_index >= m_array.Count)
134 | return;
135 |
136 | int workerIndex = (int)e.Result;
137 |
138 | if (!m_getZoneListBackgroundWorker[workerIndex].IsBusy)
139 | m_getZoneListBackgroundWorker[workerIndex].RunWorkerAsync(workerIndex);
140 | }
141 |
142 | void AppendAllEntitiesToSql()
143 | {
144 | int tempCount = 0;
145 | foreach (Entity entity in m_array)
146 | {
147 | Console.WriteLine("Doing entity n°" + tempCount++);
148 | String requestText = entity.GetSQLRequest();
149 | requestText += requestText != "" ? "\n" : "";
150 | File.AppendAllText(m_fileName, entity.GetSQLRequest());
151 | }
152 |
153 | Console.WriteLine("Elapsed Time : " + ((Int32)(DateTime.UtcNow.Subtract(new DateTime(1970, 1, 1))).TotalSeconds - m_timestamp));
154 | }
155 |
156 | private void EstimateSecondsTimeLeft()
157 | {
158 | Int32 unixTimestamp = Tools.GetUnixTimestamp();
159 |
160 | if ((m_lastEstimateTime + 1) >= unixTimestamp)
161 | return;
162 |
163 | m_lastEstimateTime = unixTimestamp;
164 |
165 | float elapsedSeconds = unixTimestamp - m_timestamp;
166 |
167 | float entityCount = m_array.Count();
168 | float timeByEntity = (float)elapsedSeconds / (float)m_parsedEntitiesCount;
169 |
170 | float estimatedSecondsLeft = timeByEntity * (entityCount - m_parsedEntitiesCount);
171 |
172 | m_view.SetTimeLeft((Int32)estimatedSecondsLeft);
173 | }
174 |
175 | private MainWindow m_view;
176 |
177 | private String m_zoneId;
178 | private String m_zoneHtml;
179 |
180 | private String m_fileName;
181 |
182 | private List m_array;
183 | private int m_index;
184 | private int m_parsedEntitiesCount;
185 |
186 | private BackgroundWorker[] m_getZoneListBackgroundWorker;
187 |
188 | private int m_timestamp;
189 | private int m_lastEstimateTime;
190 | }
191 | }
192 |
--------------------------------------------------------------------------------
/.nuget/NuGet.targets:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | $(MSBuildProjectDirectory)\..\
5 |
6 |
7 | false
8 |
9 |
10 | false
11 |
12 |
13 | true
14 |
15 |
16 | false
17 |
18 |
19 |
20 |
21 |
22 |
26 |
27 |
28 |
29 |
30 | $([System.IO.Path]::Combine($(SolutionDir), ".nuget"))
31 |
32 |
33 |
34 |
35 | $(SolutionDir).nuget
36 |
37 |
38 |
39 | $(MSBuildProjectDirectory)\packages.$(MSBuildProjectName.Replace(' ', '_')).config
40 | $(MSBuildProjectDirectory)\packages.$(MSBuildProjectName).config
41 |
42 |
43 |
44 | $(MSBuildProjectDirectory)\packages.config
45 | $(PackagesProjectConfig)
46 |
47 |
48 |
49 |
50 | $(NuGetToolsPath)\NuGet.exe
51 | @(PackageSource)
52 |
53 | "$(NuGetExePath)"
54 | mono --runtime=v4.0.30319 "$(NuGetExePath)"
55 |
56 | $(TargetDir.Trim('\\'))
57 |
58 | -RequireConsent
59 | -NonInteractive
60 |
61 | "$(SolutionDir) "
62 | "$(SolutionDir)"
63 |
64 |
65 | $(NuGetCommand) install "$(PackagesConfig)" -source "$(PackageSources)" $(NonInteractiveSwitch) $(RequireConsentSwitch) -solutionDir $(PaddedSolutionDir)
66 | $(NuGetCommand) pack "$(ProjectPath)" -Properties "Configuration=$(Configuration);Platform=$(Platform)" $(NonInteractiveSwitch) -OutputDirectory "$(PackageOutputDir)" -symbols
67 |
68 |
69 |
70 | RestorePackages;
71 | $(BuildDependsOn);
72 |
73 |
74 |
75 |
76 | $(BuildDependsOn);
77 | BuildPackage;
78 |
79 |
80 |
81 |
82 |
83 |
84 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
99 |
100 |
103 |
104 |
105 |
106 |
108 |
109 |
112 |
113 |
114 |
115 |
116 |
117 |
118 |
119 |
120 |
121 |
122 |
123 |
124 |
125 |
126 |
141 |
142 |
143 |
144 |
145 |
--------------------------------------------------------------------------------
/WowHeadParser/Ressources/NpcTotalHp.txt:
--------------------------------------------------------------------------------
1 | Level Rogue Druid Hunter Mage Paladin Priest Shaman Warlock Warrior Death Knight Monk Demon Hunter
2 | 1 87.36 1 1 69.888 87.36 1 1 1 87.36 1 1 1
3 | 2 110.5 1 1 88.4 110.5 1 1 1 110.5 1 1 1
4 | 3 144.495 1 1 115.596 144.495 1 1 1 144.495 1 1 1
5 | 4 161.2687831 1 1 129.0150265 161.2687831 1 1 1 161.2687831 1 1 1
6 | 5 187.7113333 1 1 150.1690667 187.7113333 1 1 1 187.7113333 1 1 1
7 | 6 207.2686984 1 1 165.8149587 207.2686984 1 1 1 207.2686984 1 1 1
8 | 7 237.5371693 1 1 190.0297354 237.5371693 1 1 1 237.5371693 1 1 1
9 | 8 260.0453968 1 1 208.0363175 260.0453968 1 1 1 260.0453968 1 1 1
10 | 9 283.8364286 1 1 227.0691429 283.8364286 1 1 1 283.8364286 1 1 1
11 | 10 338.2635004 1 1 270.6108003 338.2635004 1 1 1 338.2635004 1 1 1
12 | 11 392.6217835 1 1 314.0974268 392.6217835 1 1 1 392.6217835 1 1 1
13 | 12 441.8880869 1 1 353.5104695 441.8880869 1 1 1 441.8880869 1 1 1
14 | 13 517.2006263 1 1 413.760501 517.2006263 1 1 1 517.2006263 1 1 1
15 | 14 564.3336299 1 1 451.4669039 564.3336299 1 1 1 564.3336299 1 1 1
16 | 15 678.8665457 1 1 543.0932366 678.8665457 1 1 1 678.8665457 1 1 1
17 | 16 737.5240153 1 1 590.0192122 737.5240153 1 1 1 737.5240153 1 1 1
18 | 17 890.7807392 1 1 712.6245913 890.7807392 1 1 1 890.7807392 1 1 1
19 | 18 963.8497776 1 1 771.0798221 963.8497776 1 1 1 963.8497776 1 1 1
20 | 19 1140.014663 1 1 912.0117307 1140.014663 1 1 1 1140.014663 1 1 1
21 | 20 1227.015287 1 1 981.6122298 1227.015287 1 1 1 1227.015287 1 1 1
22 | 21 1371.556419 1 1 1097.245135 1371.556419 1 1 1 1371.556419 1 1 1
23 | 22 1428.596659 1 1 1142.877327 1428.596659 1 1 1 1428.596659 1 1 1
24 | 23 1629.820212 1 1 1303.856169 1629.820212 1 1 1 1629.820212 1 1 1
25 | 24 1726.965829 1 1 1381.572663 1726.965829 1 1 1 1726.965829 1 1 1
26 | 25 1929.441064 1 1 1543.552851 1929.441064 1 1 1 1929.441064 1 1 1
27 | 26 2018.858874 1 1 1615.087099 2018.858874 1 1 1 2018.858874 1 1 1
28 | 27 2264.711598 1 1 1811.769278 2264.711598 1 1 1 2264.711598 1 1 1
29 | 28 2382.709508 1 1 1906.167606 2382.709508 1 1 1 2382.709508 1 1 1
30 | 29 2583.193917 1 1 2066.555133 2583.193917 1 1 1 2583.193917 1 1 1
31 | 30 2690.167534 1 1 2152.134028 2690.167534 1 1 1 2690.167534 1 1 1
32 | 31 2966.067561 1 1 2372.854049 2966.067561 1 1 1 2966.067561 1 1 1
33 | 32 3062.562861 1 1 2450.050289 3062.562861 1 1 1 3062.562861 1 1 1
34 | 33 3321.591877 1 1 2657.273502 3321.591877 1 1 1 3321.591877 1 1 1
35 | 34 3465.096795 1 1 2772.077436 3465.096795 1 1 1 3465.096795 1 1 1
36 | 35 3783.899466 1 1 3027.119573 3783.899466 1 1 1 3783.899466 1 1 1
37 | 36 3894.060206 1 1 3115.248165 3894.060206 1 1 1 3894.060206 1 1 1
38 | 37 4127.776357 1 1 3302.221085 4127.776357 1 1 1 4127.776357 1 1 1
39 | 38 4242.130071 1 1 3393.704057 4242.130071 1 1 1 4242.130071 1 1 1
40 | 39 4605.247375 1 1 3684.1979 4605.247375 1 1 1 4605.247375 1 1 1
41 | 40 4751.795197 1 1 3801.436157 4751.795197 1 1 1 4751.795197 1 1 1
42 | 41 5117.909514 1 1 4094.327611 5117.909514 1 1 1 5117.909514 1 1 1
43 | 42 5224.492214 1 1 4179.593771 5224.492214 1 1 1 5224.492214 1 1 1
44 | 43 5543.764003 1 1 4435.011202 5543.764003 1 1 1 5543.764003 1 1 1
45 | 44 5655.823287 1 1 4524.658629 5655.823287 1 1 1 5655.823287 1 1 1
46 | 45 5999.566482 1 1 4799.653185 5999.566482 1 1 1 5999.566482 1 1 1
47 | 46 6140.34332 1 1 4912.274656 6140.34332 1 1 1 6140.34332 1 1 1
48 | 47 6486.280745 1 1 5189.024596 6486.280745 1 1 1 6486.280745 1 1 1
49 | 48 6607.30217 1 1 5285.841736 6607.30217 1 1 1 6607.30217 1 1 1
50 | 49 7035.673421 1 1 5628.538737 7035.673421 1 1 1 7035.673421 1 1 1
51 | 50 7520.380152 1 1 6016.304121 7520.380152 1 1 1 7520.380152 1 1 1
52 | 51 7895.18227 1 1 6316.145816 7895.18227 1 1 1 7895.18227 1 1 1
53 | 52 8041.762023 1 1 6433.409618 8041.762023 1 1 1 8041.762023 1 1 1
54 | 53 8394.553234 1 1 6715.642587 8394.553234 1 1 1 8394.553234 1 1 1
55 | 54 8514.832969 1 1 6811.866375 8514.832969 1 1 1 8514.832969 1 1 1
56 | 55 8988.593778 1 1 7190.875022 8988.593778 1 1 1 8988.593778 1 1 1
57 | 56 9142.471314 1 1 7313.977051 9142.471314 1 1 1 9142.471314 1 1 1
58 | 57 9555.210465 1 1 7644.168372 9555.210465 1 1 1 9555.210465 1 1 1
59 | 58 9684.658381 1 1 7747.726705 9684.658381 1 1 1 9684.658381 1 1 1
60 | 59 11045.08664 1 1 8836.069315 11045.08664 1 1 1 11045.08664 1 1 1
61 | 60 11215.82425 1 1 8972.659402 11215.82425 1 1 1 11215.82425 1 1 1
62 | 61 11602.77019 1 1 9282.216151 11602.77019 1 1 1 11602.77019 1 1 1
63 | 62 12003.06576 1 1 9602.452609 12003.06576 1 1 1 12003.06576 1 1 1
64 | 63 12417.17153 1 1 9933.737224 12417.17153 1 1 1 12417.17153 1 1 1
65 | 64 13666.90154 1 1 10933.52123 13666.90154 1 1 1 13666.90154 1 1 1
66 | 65 14410.60702 1 1 11528.48562 14410.60702 1 1 1 14410.60702 1 1 1
67 | 66 14514.43038 1 1 11611.5443 14514.43038 1 1 1 14514.43038 1 1 1
68 | 67 14955.02181 1 1 11964.01744 14955.02181 1 1 1 14955.02181 1 1 1
69 | 68 15060.13771 1 1 12048.11017 15060.13771 1 1 1 15060.13771 1 1 1
70 | 69 15602.51862 1 1 12482.01489 15602.51862 1 1 1 15602.51862 1 1 1
71 | 70 15940.13148 1 1 12752.10518 15940.13148 1 1 1 15940.13148 1 1 1
72 | 71 16492.81203 1 1 13194.24963 16492.81203 1 1 1 16492.81203 1 1 1
73 | 72 17129.78521 1 1 13703.82817 17129.78521 1 1 1 17129.78521 1 1 1
74 | 73 18290.22918 1 1 14632.18335 18290.22918 1 1 1 18290.22918 1 1 1
75 | 74 19070.22309 1 1 15256.17847 19070.22309 1 1 1 19070.22309 1 1 1
76 | 75 20027.75891 1 1 16022.20713 20027.75891 1 1 1 20027.75891 1 1 1
77 | 76 20140.7883 1 1 16112.63064 20140.7883 1 1 1 20140.7883 1 1 1
78 | 77 20775.00611 1 1 16620.00489 20775.00611 1 1 1 20775.00611 1 1 1
79 | 78 20889.33301 1 1 16711.46641 20889.33301 1 1 1 20889.33301 1 1 1
80 | 79 21328.75101 1 1 17063.00081 21328.75101 1 1 1 21328.75101 1 1 1
81 | 80 21597.37899 1 1 17277.90319 21597.37899 1 1 1 21597.37899 1 1 1
82 | 81 21896.83817 1 1 17517.47053 21896.83817 1 1 1 21896.83817 1 1 1
83 | 82 23194.43508 1 1 18555.54806 23194.43508 1 1 1 23194.43508 1 1 1
84 | 83 25479.5755 1 1 20383.6604 25479.5755 1 1 1 25479.5755 1 1 1
85 | 84 25760.63849 1 1 20608.51079 25760.63849 1 1 1 25760.63849 1 1 1
86 | 85 26268.0299 1 1 21014.42392 26268.0299 1 1 1 26268.0299 1 1 1
87 | 86 27515.82553 1 1 22012.66043 27515.82553 1 1 1 27515.82553 1 1 1
88 | 87 28369.93198 1 1 22695.94558 28369.93198 1 1 1 28369.93198 1 1 1
89 | 88 29874.00472 1 1 23899.20378 29874.00472 1 1 1 29874.00472 1 1 1
90 | 89 32863.08472 1 1 26290.46778 32863.08472 1 1 1 32863.08472 1 1 1
91 | 90 50735.29988 1 1 40588.2399 50735.29988 1 1 1 50735.29988 1 1 1
92 | 91 58800.97878 1 1 47040.78302 58800.97878 1 1 1 58800.97878 1 1 1
93 | 92 64731.11086 1 1 51784.88869 64731.11086 1 1 1 64731.11086 1 1 1
94 | 93 68872.29029 1 1 55097.83223 68872.29029 1 1 1 68872.29029 1 1 1
95 | 94 77238.51873 1 1 61790.81498 77238.51873 1 1 1 77238.51873 1 1 1
96 | 95 84582.89393 1 1 67666.31515 84582.89393 1 1 1 84582.89393 1 1 1
97 | 96 104272.4595 1 1 83417.96758 104272.4595 1 1 1 104272.4595 1 1 1
98 | 97 109325.7391 1 1 87460.5913 109325.7391 1 1 1 109325.7391 1 1 1
99 | 98 130624 1 1 104499 130624 1 1 1 130624 1 1 1
100 | 99 198753 1 1 159002 198753 1 1 1 198753 1 1 1
101 | 100 336523 1 1 269218 336523 1 1 1 299132 1 1 1
102 | 101 440250 1 1 352200 440250 1 1 1 401117 1 1 1
103 | 102 495234 1 1 396187 495234 1 1 1 462218 1 1 1
104 | 103 546544 1 1 437235 546544 1 1 1 522253 1 1 1
105 | 104 582866 1 1 466293 582866 1 1 1 569913 1 1 1
106 | 105 611763 1 1 489410 611763 1 1 1 611763 1 1 1
107 | 106 627057 1 1 501646 627057 1 1 1 627057 1 1 1
108 | 107 642733 1 1 514186 642733 1 1 1 642733 1 1 1
109 | 108 658801 1 1 527041 658801 1 1 1 658801 1 1 1
110 | 109 675271 1 1 540217 675271 1 1 1 675271 1 1 1
111 | 110 1039267.25 1 1 831414 1039267.25 1 1 1 1039267.25 1 1 1
112 | 111 1075123.209 1 1 860099 1075123.209 1 1 1 1075123.209 1 1 1
113 | 112 1112213.744 1 1 889771 1112213.744 1 1 1 1112213.744 1 1 1
114 | 113 1150587.269 1 1 920470 1150587.269 1 1 1 1150587.269 1 1 1
115 | 114 1150587.269 1 1 920470 1150587.269 1 1 1 1150587.269 1 1 1
116 | 115 1150587.269 1 1 920470 1150587.269 1 1 1 1150587.269 1 1 1
117 | 116 1150587.269 1 1 920470 1150587.269 1 1 1 1150587.269 1 1 1
118 | 117 1150587.269 1 1 920470 1150587.269 1 1 1 1150587.269 1 1 1
119 | 118 1150587.269 1 1 920470 1150587.269 1 1 1 1150587.269 1 1 1
120 | 119 1150587.269 1 1 920470 1150587.269 1 1 1 1150587.269 1 1 1
121 | 120 1150587.269 1 1 920470 1150587.269 1 1 1 1150587.269 1 1 1
122 | 121 1150587.269 1 1 920470 1150587.269 1 1 1 1150587.269 1 1 1
123 | 122 1150587.269 1 1 920470 1150587.269 1 1 1 1150587.269 1 1 1
124 | 123 1150587.269 1 1 920470 1150587.269 1 1 1 1150587.269 1 1 1
125 |
--------------------------------------------------------------------------------
/WowHeadParser/Ressources/NpcTotalHpExp1.txt:
--------------------------------------------------------------------------------
1 | Level Rogue Druid Hunter Mage Paladin Priest Shaman Warlock Warrior Death Knight Monk Demon Hunter
2 | 1 87.36 1 1 69.888 87.36 1 1 1 87.36 1 1 1
3 | 2 110.5 1 1 88.4 110.5 1 1 1 110.5 1 1 1
4 | 3 144.495 1 1 115.596 144.495 1 1 1 144.495 1 1 1
5 | 4 161.2687831 1 1 129.0150265 161.2687831 1 1 1 161.2687831 1 1 1
6 | 5 187.7113333 1 1 150.1690667 187.7113333 1 1 1 187.7113333 1 1 1
7 | 6 207.2686984 1 1 165.8149587 207.2686984 1 1 1 207.2686984 1 1 1
8 | 7 237.5371693 1 1 190.0297354 237.5371693 1 1 1 237.5371693 1 1 1
9 | 8 260.0453968 1 1 208.0363175 260.0453968 1 1 1 260.0453968 1 1 1
10 | 9 283.8364286 1 1 227.0691429 283.8364286 1 1 1 283.8364286 1 1 1
11 | 10 338.2635004 1 1 270.6108003 338.2635004 1 1 1 338.2635004 1 1 1
12 | 11 392.6217835 1 1 314.0974268 392.6217835 1 1 1 392.6217835 1 1 1
13 | 12 441.8880869 1 1 353.5104695 441.8880869 1 1 1 441.8880869 1 1 1
14 | 13 517.2006263 1 1 413.760501 517.2006263 1 1 1 517.2006263 1 1 1
15 | 14 564.3336299 1 1 451.4669039 564.3336299 1 1 1 564.3336299 1 1 1
16 | 15 678.8665457 1 1 543.0932366 678.8665457 1 1 1 678.8665457 1 1 1
17 | 16 737.5240153 1 1 590.0192122 737.5240153 1 1 1 737.5240153 1 1 1
18 | 17 890.7807392 1 1 712.6245913 890.7807392 1 1 1 890.7807392 1 1 1
19 | 18 963.8497776 1 1 771.0798221 963.8497776 1 1 1 963.8497776 1 1 1
20 | 19 1140.014663 1 1 912.0117307 1140.014663 1 1 1 1140.014663 1 1 1
21 | 20 1227.015287 1 1 981.6122298 1227.015287 1 1 1 1227.015287 1 1 1
22 | 21 1371.556419 1 1 1097.245135 1371.556419 1 1 1 1371.556419 1 1 1
23 | 22 1428.596659 1 1 1142.877327 1428.596659 1 1 1 1428.596659 1 1 1
24 | 23 1629.820212 1 1 1303.856169 1629.820212 1 1 1 1629.820212 1 1 1
25 | 24 1726.965829 1 1 1381.572663 1726.965829 1 1 1 1726.965829 1 1 1
26 | 25 1929.441064 1 1 1543.552851 1929.441064 1 1 1 1929.441064 1 1 1
27 | 26 2018.858874 1 1 1615.087099 2018.858874 1 1 1 2018.858874 1 1 1
28 | 27 2264.711598 1 1 1811.769278 2264.711598 1 1 1 2264.711598 1 1 1
29 | 28 2382.709508 1 1 1906.167606 2382.709508 1 1 1 2382.709508 1 1 1
30 | 29 2583.193917 1 1 2066.555133 2583.193917 1 1 1 2583.193917 1 1 1
31 | 30 2690.167534 1 1 2152.134028 2690.167534 1 1 1 2690.167534 1 1 1
32 | 31 2966.067561 1 1 2372.854049 2966.067561 1 1 1 2966.067561 1 1 1
33 | 32 3062.562861 1 1 2450.050289 3062.562861 1 1 1 3062.562861 1 1 1
34 | 33 3321.591877 1 1 2657.273502 3321.591877 1 1 1 3321.591877 1 1 1
35 | 34 3465.096795 1 1 2772.077436 3465.096795 1 1 1 3465.096795 1 1 1
36 | 35 3783.899466 1 1 3027.119573 3783.899466 1 1 1 3783.899466 1 1 1
37 | 36 3894.060206 1 1 3115.248165 3894.060206 1 1 1 3894.060206 1 1 1
38 | 37 4127.776357 1 1 3302.221085 4127.776357 1 1 1 4127.776357 1 1 1
39 | 38 4242.130071 1 1 3393.704057 4242.130071 1 1 1 4242.130071 1 1 1
40 | 39 4605.247375 1 1 3684.1979 4605.247375 1 1 1 4605.247375 1 1 1
41 | 40 4751.795197 1 1 3801.436157 4751.795197 1 1 1 4751.795197 1 1 1
42 | 41 5117.909514 1 1 4094.327611 5117.909514 1 1 1 5117.909514 1 1 1
43 | 42 5224.492214 1 1 4179.593771 5224.492214 1 1 1 5224.492214 1 1 1
44 | 43 5543.764003 1 1 4435.011202 5543.764003 1 1 1 5543.764003 1 1 1
45 | 44 5655.823287 1 1 4524.658629 5655.823287 1 1 1 5655.823287 1 1 1
46 | 45 5999.566482 1 1 4799.653185 5999.566482 1 1 1 5999.566482 1 1 1
47 | 46 6140.34332 1 1 4912.274656 6140.34332 1 1 1 6140.34332 1 1 1
48 | 47 6486.280745 1 1 5189.024596 6486.280745 1 1 1 6486.280745 1 1 1
49 | 48 6607.30217 1 1 5285.841736 6607.30217 1 1 1 6607.30217 1 1 1
50 | 49 7035.673421 1 1 5628.538737 7035.673421 1 1 1 7035.673421 1 1 1
51 | 50 7520.380152 1 1 6016.304121 7520.380152 1 1 1 7520.380152 1 1 1
52 | 51 7895.18227 1 1 6316.145816 7895.18227 1 1 1 7895.18227 1 1 1
53 | 52 8041.762023 1 1 6433.409618 8041.762023 1 1 1 8041.762023 1 1 1
54 | 53 8394.553234 1 1 6715.642587 8394.553234 1 1 1 8394.553234 1 1 1
55 | 54 8514.832969 1 1 6811.866375 8514.832969 1 1 1 8514.832969 1 1 1
56 | 55 8988.593778 1 1 7190.875022 8988.593778 1 1 1 8988.593778 1 1 1
57 | 56 9142.471314 1 1 7313.977051 9142.471314 1 1 1 9142.471314 1 1 1
58 | 57 9555.210465 1 1 7644.168372 9555.210465 1 1 1 9555.210465 1 1 1
59 | 58 9684.658381 1 1 7747.726705 9684.658381 1 1 1 9684.658381 1 1 1
60 | 59 11045.08664 1 1 8836.069315 11045.08664 1 1 1 11045.08664 1 1 1
61 | 60 11215.82425 1 1 8972.659402 11215.82425 1 1 1 11215.82425 1 1 1
62 | 61 11527.72395 1 1 9222.179161 11527.72395 1 1 1 11527.72395 1 1 1
63 | 62 11841.32842 1 1 9473.062734 11841.32842 1 1 1 11841.32842 1 1 1
64 | 63 12737.13941 1 1 10189.71152 12737.13941 1 1 1 12737.13941 1 1 1
65 | 64 13666.90154 1 1 10933.52123 13666.90154 1 1 1 13666.90154 1 1 1
66 | 65 14410.60702 1 1 11528.48562 14410.60702 1 1 1 14410.60702 1 1 1
67 | 66 14514.43038 1 1 11611.5443 14514.43038 1 1 1 14514.43038 1 1 1
68 | 67 14955.02181 1 1 11964.01744 14955.02181 1 1 1 14955.02181 1 1 1
69 | 68 15060.13771 1 1 12048.11017 15060.13771 1 1 1 15060.13771 1 1 1
70 | 69 15602.51862 1 1 12482.01489 15602.51862 1 1 1 15602.51862 1 1 1
71 | 70 15940.13148 1 1 12752.10518 15940.13148 1 1 1 15940.13148 1 1 1
72 | 71 16490.06601 1 1 13192.05281 16490.06601 1 1 1 16490.06601 1 1 1
73 | 72 17058.97329 1 1 13647.17863 17058.97329 1 1 1 17058.97329 1 1 1
74 | 73 17647.50787 1 1 14118.00629 17647.50787 1 1 1 17647.50787 1 1 1
75 | 74 19070.22309 1 1 15256.17847 19070.22309 1 1 1 19070.22309 1 1 1
76 | 75 20027.75891 1 1 16022.20713 20027.75891 1 1 1 20027.75891 1 1 1
77 | 76 20140.7883 1 1 16112.63064 20140.7883 1 1 1 20140.7883 1 1 1
78 | 77 20775.00611 1 1 16620.00489 20775.00611 1 1 1 20775.00611 1 1 1
79 | 78 20889.33301 1 1 16711.46641 20889.33301 1 1 1 20889.33301 1 1 1
80 | 79 21328.75101 1 1 17063.00081 21328.75101 1 1 1 21328.75101 1 1 1
81 | 80 21597.37899 1 1 17277.90319 21597.37899 1 1 1 21597.37899 1 1 1
82 | 81 21896.83817 1 1 17517.47053 21896.83817 1 1 1 21896.83817 1 1 1
83 | 82 23194.43508 1 1 18555.54806 23194.43508 1 1 1 23194.43508 1 1 1
84 | 83 25479.5755 1 1 20383.6604 25479.5755 1 1 1 25479.5755 1 1 1
85 | 84 25760.63849 1 1 20608.51079 25760.63849 1 1 1 25760.63849 1 1 1
86 | 85 26268.0299 1 1 21014.42392 26268.0299 1 1 1 26268.0299 1 1 1
87 | 86 27515.82553 1 1 22012.66043 27515.82553 1 1 1 27515.82553 1 1 1
88 | 87 28369.93198 1 1 22695.94558 28369.93198 1 1 1 28369.93198 1 1 1
89 | 88 29874.00472 1 1 23899.20378 29874.00472 1 1 1 29874.00472 1 1 1
90 | 89 32863.08472 1 1 26290.46778 32863.08472 1 1 1 32863.08472 1 1 1
91 | 90 50735.29988 1 1 40588.2399 50735.29988 1 1 1 50735.29988 1 1 1
92 | 91 58800.97878 1 1 47040.78302 58800.97878 1 1 1 58800.97878 1 1 1
93 | 92 64731.11086 1 1 51784.88869 64731.11086 1 1 1 64731.11086 1 1 1
94 | 93 68872.29029 1 1 55097.83223 68872.29029 1 1 1 68872.29029 1 1 1
95 | 94 77238.51873 1 1 61790.81498 77238.51873 1 1 1 77238.51873 1 1 1
96 | 95 84582.89393 1 1 67666.31515 84582.89393 1 1 1 84582.89393 1 1 1
97 | 96 104272.4595 1 1 83417.96758 104272.4595 1 1 1 104272.4595 1 1 1
98 | 97 109325.7391 1 1 87460.5913 109325.7391 1 1 1 109325.7391 1 1 1
99 | 98 130624 1 1 104499 130624 1 1 1 130624 1 1 1
100 | 99 198753 1 1 159002 198753 1 1 1 198753 1 1 1
101 | 100 336523 1 1 269218 336523 1 1 1 299132 1 1 1
102 | 101 440250 1 1 352200 440250 1 1 1 401117 1 1 1
103 | 102 495234 1 1 396187 495234 1 1 1 462218 1 1 1
104 | 103 546544 1 1 437235 546544 1 1 1 522253 1 1 1
105 | 104 582866 1 1 466293 582866 1 1 1 569913 1 1 1
106 | 105 611763 1 1 489410 611763 1 1 1 611763 1 1 1
107 | 106 627057 1 1 501646 627057 1 1 1 627057 1 1 1
108 | 107 642733 1 1 514186 642733 1 1 1 642733 1 1 1
109 | 108 658801 1 1 527041 658801 1 1 1 658801 1 1 1
110 | 109 675271 1 1 540217 675271 1 1 1 675271 1 1 1
111 | 110 1039267.25 1 1 831414 1039267.25 1 1 1 1039267.25 1 1 1
112 | 111 1075123.209 1 1 860099 1075123.209 1 1 1 1075123.209 1 1 1
113 | 112 1112213.744 1 1 889771 1112213.744 1 1 1 1112213.744 1 1 1
114 | 113 1150587.269 1 1 920470 1150587.269 1 1 1 1150587.269 1 1 1
115 | 114 1150587.269 1 1 920470 1150587.269 1 1 1 1150587.269 1 1 1
116 | 115 1150587.269 1 1 920470 1150587.269 1 1 1 1150587.269 1 1 1
117 | 116 1150587.269 1 1 920470 1150587.269 1 1 1 1150587.269 1 1 1
118 | 117 1150587.269 1 1 920470 1150587.269 1 1 1 1150587.269 1 1 1
119 | 118 1150587.269 1 1 920470 1150587.269 1 1 1 1150587.269 1 1 1
120 | 119 1150587.269 1 1 920470 1150587.269 1 1 1 1150587.269 1 1 1
121 | 120 1150587.269 1 1 920470 1150587.269 1 1 1 1150587.269 1 1 1
122 | 121 1150587.269 1 1 920470 1150587.269 1 1 1 1150587.269 1 1 1
123 | 122 1150587.269 1 1 920470 1150587.269 1 1 1 1150587.269 1 1 1
124 | 123 1150587.269 1 1 920470 1150587.269 1 1 1 1150587.269 1 1 1
125 |
--------------------------------------------------------------------------------
/WowHeadParser/Ressources/NpcTotalHpExp3.txt:
--------------------------------------------------------------------------------
1 | Level Rogue Druid Hunter Mage Paladin Priest Shaman Warlock Warrior Death Knight Monk Demon Hunter
2 | 1 87.36 1 1 69.888 87.36 1 1 1 87.36 1 1 1
3 | 2 110.5 1 1 88.4 110.5 1 1 1 110.5 1 1 1
4 | 3 144.495 1 1 115.596 144.495 1 1 1 144.495 1 1 1
5 | 4 161.2687831 1 1 129.0150265 161.2687831 1 1 1 161.2687831 1 1 1
6 | 5 187.7113333 1 1 150.1690667 187.7113333 1 1 1 187.7113333 1 1 1
7 | 6 207.2686984 1 1 165.8149587 207.2686984 1 1 1 207.2686984 1 1 1
8 | 7 237.5371693 1 1 190.0297354 237.5371693 1 1 1 237.5371693 1 1 1
9 | 8 260.0453968 1 1 208.0363175 260.0453968 1 1 1 260.0453968 1 1 1
10 | 9 283.8364286 1 1 227.0691429 283.8364286 1 1 1 283.8364286 1 1 1
11 | 10 338.2635004 1 1 270.6108003 338.2635004 1 1 1 338.2635004 1 1 1
12 | 11 392.6217835 1 1 314.0974268 392.6217835 1 1 1 392.6217835 1 1 1
13 | 12 441.8880869 1 1 353.5104695 441.8880869 1 1 1 441.8880869 1 1 1
14 | 13 517.2006263 1 1 413.760501 517.2006263 1 1 1 517.2006263 1 1 1
15 | 14 564.3336299 1 1 451.4669039 564.3336299 1 1 1 564.3336299 1 1 1
16 | 15 678.8665457 1 1 543.0932366 678.8665457 1 1 1 678.8665457 1 1 1
17 | 16 737.5240153 1 1 590.0192122 737.5240153 1 1 1 737.5240153 1 1 1
18 | 17 890.7807392 1 1 712.6245913 890.7807392 1 1 1 890.7807392 1 1 1
19 | 18 963.8497776 1 1 771.0798221 963.8497776 1 1 1 963.8497776 1 1 1
20 | 19 1140.014663 1 1 912.0117307 1140.014663 1 1 1 1140.014663 1 1 1
21 | 20 1227.015287 1 1 981.6122298 1227.015287 1 1 1 1227.015287 1 1 1
22 | 21 1371.556419 1 1 1097.245135 1371.556419 1 1 1 1371.556419 1 1 1
23 | 22 1428.596659 1 1 1142.877327 1428.596659 1 1 1 1428.596659 1 1 1
24 | 23 1629.820212 1 1 1303.856169 1629.820212 1 1 1 1629.820212 1 1 1
25 | 24 1726.965829 1 1 1381.572663 1726.965829 1 1 1 1726.965829 1 1 1
26 | 25 1929.441064 1 1 1543.552851 1929.441064 1 1 1 1929.441064 1 1 1
27 | 26 2018.858874 1 1 1615.087099 2018.858874 1 1 1 2018.858874 1 1 1
28 | 27 2264.711598 1 1 1811.769278 2264.711598 1 1 1 2264.711598 1 1 1
29 | 28 2382.709508 1 1 1906.167606 2382.709508 1 1 1 2382.709508 1 1 1
30 | 29 2583.193917 1 1 2066.555133 2583.193917 1 1 1 2583.193917 1 1 1
31 | 30 2690.167534 1 1 2152.134028 2690.167534 1 1 1 2690.167534 1 1 1
32 | 31 2966.067561 1 1 2372.854049 2966.067561 1 1 1 2966.067561 1 1 1
33 | 32 3062.562861 1 1 2450.050289 3062.562861 1 1 1 3062.562861 1 1 1
34 | 33 3321.591877 1 1 2657.273502 3321.591877 1 1 1 3321.591877 1 1 1
35 | 34 3465.096795 1 1 2772.077436 3465.096795 1 1 1 3465.096795 1 1 1
36 | 35 3783.899466 1 1 3027.119573 3783.899466 1 1 1 3783.899466 1 1 1
37 | 36 3894.060206 1 1 3115.248165 3894.060206 1 1 1 3894.060206 1 1 1
38 | 37 4127.776357 1 1 3302.221085 4127.776357 1 1 1 4127.776357 1 1 1
39 | 38 4242.130071 1 1 3393.704057 4242.130071 1 1 1 4242.130071 1 1 1
40 | 39 4605.247375 1 1 3684.1979 4605.247375 1 1 1 4605.247375 1 1 1
41 | 40 4751.795197 1 1 3801.436157 4751.795197 1 1 1 4751.795197 1 1 1
42 | 41 5117.909514 1 1 4094.327611 5117.909514 1 1 1 5117.909514 1 1 1
43 | 42 5224.492214 1 1 4179.593771 5224.492214 1 1 1 5224.492214 1 1 1
44 | 43 5543.764003 1 1 4435.011202 5543.764003 1 1 1 5543.764003 1 1 1
45 | 44 5655.823287 1 1 4524.658629 5655.823287 1 1 1 5655.823287 1 1 1
46 | 45 5999.566482 1 1 4799.653185 5999.566482 1 1 1 5999.566482 1 1 1
47 | 46 6140.34332 1 1 4912.274656 6140.34332 1 1 1 6140.34332 1 1 1
48 | 47 6486.280745 1 1 5189.024596 6486.280745 1 1 1 6486.280745 1 1 1
49 | 48 6607.30217 1 1 5285.841736 6607.30217 1 1 1 6607.30217 1 1 1
50 | 49 7035.673421 1 1 5628.538737 7035.673421 1 1 1 7035.673421 1 1 1
51 | 50 7520.380152 1 1 6016.304121 7520.380152 1 1 1 7520.380152 1 1 1
52 | 51 7895.18227 1 1 6316.145816 7895.18227 1 1 1 7895.18227 1 1 1
53 | 52 8041.762023 1 1 6433.409618 8041.762023 1 1 1 8041.762023 1 1 1
54 | 53 8394.553234 1 1 6715.642587 8394.553234 1 1 1 8394.553234 1 1 1
55 | 54 8514.832969 1 1 6811.866375 8514.832969 1 1 1 8514.832969 1 1 1
56 | 55 8988.593778 1 1 7190.875022 8988.593778 1 1 1 8988.593778 1 1 1
57 | 56 9142.471314 1 1 7313.977051 9142.471314 1 1 1 9142.471314 1 1 1
58 | 57 9555.210465 1 1 7644.168372 9555.210465 1 1 1 9555.210465 1 1 1
59 | 58 9684.658381 1 1 7747.726705 9684.658381 1 1 1 9684.658381 1 1 1
60 | 59 11045.08664 1 1 8836.069315 11045.08664 1 1 1 11045.08664 1 1 1
61 | 60 11215.82425 1 1 8972.659402 11215.82425 1 1 1 11215.82425 1 1 1
62 | 61 11527.72395 1 1 9222.179161 11527.72395 1 1 1 11527.72395 1 1 1
63 | 62 11841.32842 1 1 9473.062734 11841.32842 1 1 1 11841.32842 1 1 1
64 | 63 12737.13941 1 1 10189.71152 12737.13941 1 1 1 12737.13941 1 1 1
65 | 64 13666.90154 1 1 10933.52123 13666.90154 1 1 1 13666.90154 1 1 1
66 | 65 14410.60702 1 1 11528.48562 14410.60702 1 1 1 14410.60702 1 1 1
67 | 66 14514.43038 1 1 11611.5443 14514.43038 1 1 1 14514.43038 1 1 1
68 | 67 14955.02181 1 1 11964.01744 14955.02181 1 1 1 14955.02181 1 1 1
69 | 68 15060.13771 1 1 12048.11017 15060.13771 1 1 1 15060.13771 1 1 1
70 | 69 15602.51862 1 1 12482.01489 15602.51862 1 1 1 15602.51862 1 1 1
71 | 70 15940.13148 1 1 12752.10518 15940.13148 1 1 1 15940.13148 1 1 1
72 | 71 16492.81203 1 1 13194.24963 16492.81203 1 1 1 16492.81203 1 1 1
73 | 72 17129.78521 1 1 13703.82817 17129.78521 1 1 1 17129.78521 1 1 1
74 | 73 18290.22918 1 1 14632.18335 18290.22918 1 1 1 18290.22918 1 1 1
75 | 74 19070.22309 1 1 15256.17847 19070.22309 1 1 1 19070.22309 1 1 1
76 | 75 20027.75891 1 1 16022.20713 20027.75891 1 1 1 20027.75891 1 1 1
77 | 76 20140.7883 1 1 16112.63064 20140.7883 1 1 1 20140.7883 1 1 1
78 | 77 20775.00611 1 1 16620.00489 20775.00611 1 1 1 20775.00611 1 1 1
79 | 78 20889.33301 1 1 16711.46641 20889.33301 1 1 1 20889.33301 1 1 1
80 | 79 21328.75101 1 1 17063.00081 21328.75101 1 1 1 21328.75101 1 1 1
81 | 80 21597.37899 1 1 17277.90319 21597.37899 1 1 1 21597.37899 1 1 1
82 | 81 21896.83817 1 1 17517.47053 21896.83817 1 1 1 21896.83817 1 1 1
83 | 82 23194.43508 1 1 18555.54806 23194.43508 1 1 1 23194.43508 1 1 1
84 | 83 25479.5755 1 1 20383.6604 25479.5755 1 1 1 25479.5755 1 1 1
85 | 84 25760.63849 1 1 20608.51079 25760.63849 1 1 1 25760.63849 1 1 1
86 | 85 26268.0299 1 1 21014.42392 26268.0299 1 1 1 26268.0299 1 1 1
87 | 86 27174.27693 1 1 21739.42154 27174.27693 1 1 1 27174.27693 1 1 1
88 | 87 28111.78949 1 1 22489.43159 28111.78949 1 1 1 28111.78949 1 1 1
89 | 88 29081.64622 1 1 23265.31698 29081.64622 1 1 1 29081.64622 1 1 1
90 | 89 32863.08472 1 1 26290.46778 32863.08472 1 1 1 32863.08472 1 1 1
91 | 90 50735.29988 1 1 40588.2399 50735.29988 1 1 1 50735.29988 1 1 1
92 | 91 58800.97878 1 1 47040.78302 58800.97878 1 1 1 58800.97878 1 1 1
93 | 92 64731.11086 1 1 51784.88869 64731.11086 1 1 1 64731.11086 1 1 1
94 | 93 68872.29029 1 1 55097.83223 68872.29029 1 1 1 68872.29029 1 1 1
95 | 94 77238.51873 1 1 61790.81498 77238.51873 1 1 1 77238.51873 1 1 1
96 | 95 84582.89393 1 1 67666.31515 84582.89393 1 1 1 84582.89393 1 1 1
97 | 96 104272.4595 1 1 83417.96758 104272.4595 1 1 1 104272.4595 1 1 1
98 | 97 109325.7391 1 1 87460.5913 109325.7391 1 1 1 109325.7391 1 1 1
99 | 98 130624 1 1 104499 130624 1 1 1 130624 1 1 1
100 | 99 198753 1 1 159002 198753 1 1 1 198753 1 1 1
101 | 100 336523 1 1 269218 336523 1 1 1 299132 1 1 1
102 | 101 440250 1 1 352200 440250 1 1 1 401117 1 1 1
103 | 102 495234 1 1 396187 495234 1 1 1 462218 1 1 1
104 | 103 546544 1 1 437235 546544 1 1 1 522253 1 1 1
105 | 104 582866 1 1 466293 582866 1 1 1 569913 1 1 1
106 | 105 611763 1 1 489410 611763 1 1 1 611763 1 1 1
107 | 106 627057 1 1 501646 627057 1 1 1 627057 1 1 1
108 | 107 642733 1 1 514186 642733 1 1 1 642733 1 1 1
109 | 108 658801 1 1 527041 658801 1 1 1 658801 1 1 1
110 | 109 675271 1 1 540217 675271 1 1 1 675271 1 1 1
111 | 110 1039267.25 1 1 831414 1039267.25 1 1 1 1039267.25 1 1 1
112 | 111 1075123.209 1 1 860099 1075123.209 1 1 1 1075123.209 1 1 1
113 | 112 1112213.744 1 1 889771 1112213.744 1 1 1 1112213.744 1 1 1
114 | 113 1150587.269 1 1 920470 1150587.269 1 1 1 1150587.269 1 1 1
115 | 114 1150587.269 1 1 920470 1150587.269 1 1 1 1150587.269 1 1 1
116 | 115 1150587.269 1 1 920470 1150587.269 1 1 1 1150587.269 1 1 1
117 | 116 1150587.269 1 1 920470 1150587.269 1 1 1 1150587.269 1 1 1
118 | 117 1150587.269 1 1 920470 1150587.269 1 1 1 1150587.269 1 1 1
119 | 118 1150587.269 1 1 920470 1150587.269 1 1 1 1150587.269 1 1 1
120 | 119 1150587.269 1 1 920470 1150587.269 1 1 1 1150587.269 1 1 1
121 | 120 1150587.269 1 1 920470 1150587.269 1 1 1 1150587.269 1 1 1
122 | 121 1150587.269 1 1 920470 1150587.269 1 1 1 1150587.269 1 1 1
123 | 122 1150587.269 1 1 920470 1150587.269 1 1 1 1150587.269 1 1 1
124 | 123 1150587.269 1 1 920470 1150587.269 1 1 1 1150587.269 1 1 1
125 |
--------------------------------------------------------------------------------
/WowHeadParser/Ressources/NpcTotalHpExp4.txt:
--------------------------------------------------------------------------------
1 | Level Rogue Druid Hunter Mage Paladin Priest Shaman Warlock Warrior Death Knight Monk Demon Hunter
2 | 1 87.36 1 1 69.888 87.36 1 1 1 87.36 1 1 1
3 | 2 110.5 1 1 88.4 110.5 1 1 1 110.5 1 1 1
4 | 3 144.495 1 1 115.596 144.495 1 1 1 144.495 1 1 1
5 | 4 161.2687831 1 1 129.0150265 161.2687831 1 1 1 161.2687831 1 1 1
6 | 5 187.7113333 1 1 150.1690667 187.7113333 1 1 1 187.7113333 1 1 1
7 | 6 207.2686984 1 1 165.8149587 207.2686984 1 1 1 207.2686984 1 1 1
8 | 7 237.5371693 1 1 190.0297354 237.5371693 1 1 1 237.5371693 1 1 1
9 | 8 260.0453968 1 1 208.0363175 260.0453968 1 1 1 260.0453968 1 1 1
10 | 9 283.8364286 1 1 227.0691429 283.8364286 1 1 1 283.8364286 1 1 1
11 | 10 338.2635004 1 1 270.6108003 338.2635004 1 1 1 338.2635004 1 1 1
12 | 11 392.6217835 1 1 314.0974268 392.6217835 1 1 1 392.6217835 1 1 1
13 | 12 441.8880869 1 1 353.5104695 441.8880869 1 1 1 441.8880869 1 1 1
14 | 13 517.2006263 1 1 413.760501 517.2006263 1 1 1 517.2006263 1 1 1
15 | 14 564.3336299 1 1 451.4669039 564.3336299 1 1 1 564.3336299 1 1 1
16 | 15 678.8665457 1 1 543.0932366 678.8665457 1 1 1 678.8665457 1 1 1
17 | 16 737.5240153 1 1 590.0192122 737.5240153 1 1 1 737.5240153 1 1 1
18 | 17 890.7807392 1 1 712.6245913 890.7807392 1 1 1 890.7807392 1 1 1
19 | 18 963.8497776 1 1 771.0798221 963.8497776 1 1 1 963.8497776 1 1 1
20 | 19 1140.014663 1 1 912.0117307 1140.014663 1 1 1 1140.014663 1 1 1
21 | 20 1227.015287 1 1 981.6122298 1227.015287 1 1 1 1227.015287 1 1 1
22 | 21 1371.556419 1 1 1097.245135 1371.556419 1 1 1 1371.556419 1 1 1
23 | 22 1428.596659 1 1 1142.877327 1428.596659 1 1 1 1428.596659 1 1 1
24 | 23 1629.820212 1 1 1303.856169 1629.820212 1 1 1 1629.820212 1 1 1
25 | 24 1726.965829 1 1 1381.572663 1726.965829 1 1 1 1726.965829 1 1 1
26 | 25 1929.441064 1 1 1543.552851 1929.441064 1 1 1 1929.441064 1 1 1
27 | 26 2018.858874 1 1 1615.087099 2018.858874 1 1 1 2018.858874 1 1 1
28 | 27 2264.711598 1 1 1811.769278 2264.711598 1 1 1 2264.711598 1 1 1
29 | 28 2382.709508 1 1 1906.167606 2382.709508 1 1 1 2382.709508 1 1 1
30 | 29 2583.193917 1 1 2066.555133 2583.193917 1 1 1 2583.193917 1 1 1
31 | 30 2690.167534 1 1 2152.134028 2690.167534 1 1 1 2690.167534 1 1 1
32 | 31 2966.067561 1 1 2372.854049 2966.067561 1 1 1 2966.067561 1 1 1
33 | 32 3062.562861 1 1 2450.050289 3062.562861 1 1 1 3062.562861 1 1 1
34 | 33 3321.591877 1 1 2657.273502 3321.591877 1 1 1 3321.591877 1 1 1
35 | 34 3465.096795 1 1 2772.077436 3465.096795 1 1 1 3465.096795 1 1 1
36 | 35 3783.899466 1 1 3027.119573 3783.899466 1 1 1 3783.899466 1 1 1
37 | 36 3894.060206 1 1 3115.248165 3894.060206 1 1 1 3894.060206 1 1 1
38 | 37 4127.776357 1 1 3302.221085 4127.776357 1 1 1 4127.776357 1 1 1
39 | 38 4242.130071 1 1 3393.704057 4242.130071 1 1 1 4242.130071 1 1 1
40 | 39 4605.247375 1 1 3684.1979 4605.247375 1 1 1 4605.247375 1 1 1
41 | 40 4751.795197 1 1 3801.436157 4751.795197 1 1 1 4751.795197 1 1 1
42 | 41 5117.909514 1 1 4094.327611 5117.909514 1 1 1 5117.909514 1 1 1
43 | 42 5224.492214 1 1 4179.593771 5224.492214 1 1 1 5224.492214 1 1 1
44 | 43 5543.764003 1 1 4435.011202 5543.764003 1 1 1 5543.764003 1 1 1
45 | 44 5655.823287 1 1 4524.658629 5655.823287 1 1 1 5655.823287 1 1 1
46 | 45 5999.566482 1 1 4799.653185 5999.566482 1 1 1 5999.566482 1 1 1
47 | 46 6140.34332 1 1 4912.274656 6140.34332 1 1 1 6140.34332 1 1 1
48 | 47 6486.280745 1 1 5189.024596 6486.280745 1 1 1 6486.280745 1 1 1
49 | 48 6607.30217 1 1 5285.841736 6607.30217 1 1 1 6607.30217 1 1 1
50 | 49 7035.673421 1 1 5628.538737 7035.673421 1 1 1 7035.673421 1 1 1
51 | 50 7520.380152 1 1 6016.304121 7520.380152 1 1 1 7520.380152 1 1 1
52 | 51 7895.18227 1 1 6316.145816 7895.18227 1 1 1 7895.18227 1 1 1
53 | 52 8041.762023 1 1 6433.409618 8041.762023 1 1 1 8041.762023 1 1 1
54 | 53 8394.553234 1 1 6715.642587 8394.553234 1 1 1 8394.553234 1 1 1
55 | 54 8514.832969 1 1 6811.866375 8514.832969 1 1 1 8514.832969 1 1 1
56 | 55 8988.593778 1 1 7190.875022 8988.593778 1 1 1 8988.593778 1 1 1
57 | 56 9142.471314 1 1 7313.977051 9142.471314 1 1 1 9142.471314 1 1 1
58 | 57 9555.210465 1 1 7644.168372 9555.210465 1 1 1 9555.210465 1 1 1
59 | 58 9684.658381 1 1 7747.726705 9684.658381 1 1 1 9684.658381 1 1 1
60 | 59 11045.08664 1 1 8836.069315 11045.08664 1 1 1 11045.08664 1 1 1
61 | 60 11215.82425 1 1 8972.659402 11215.82425 1 1 1 11215.82425 1 1 1
62 | 61 11527.72395 1 1 9222.179161 11527.72395 1 1 1 11527.72395 1 1 1
63 | 62 11841.32842 1 1 9473.062734 11841.32842 1 1 1 11841.32842 1 1 1
64 | 63 12737.13941 1 1 10189.71152 12737.13941 1 1 1 12737.13941 1 1 1
65 | 64 13666.90154 1 1 10933.52123 13666.90154 1 1 1 13666.90154 1 1 1
66 | 65 14410.60702 1 1 11528.48562 14410.60702 1 1 1 14410.60702 1 1 1
67 | 66 14514.43038 1 1 11611.5443 14514.43038 1 1 1 14514.43038 1 1 1
68 | 67 14955.02181 1 1 11964.01744 14955.02181 1 1 1 14955.02181 1 1 1
69 | 68 15060.13771 1 1 12048.11017 15060.13771 1 1 1 15060.13771 1 1 1
70 | 69 15602.51862 1 1 12482.01489 15602.51862 1 1 1 15602.51862 1 1 1
71 | 70 15940.13148 1 1 12752.10518 15940.13148 1 1 1 15940.13148 1 1 1
72 | 71 16492.81203 1 1 13194.24963 16492.81203 1 1 1 16492.81203 1 1 1
73 | 72 17129.78521 1 1 13703.82817 17129.78521 1 1 1 17129.78521 1 1 1
74 | 73 18290.22918 1 1 14632.18335 18290.22918 1 1 1 18290.22918 1 1 1
75 | 74 19070.22309 1 1 15256.17847 19070.22309 1 1 1 19070.22309 1 1 1
76 | 75 20027.75891 1 1 16022.20713 20027.75891 1 1 1 20027.75891 1 1 1
77 | 76 20140.7883 1 1 16112.63064 20140.7883 1 1 1 20140.7883 1 1 1
78 | 77 20775.00611 1 1 16620.00489 20775.00611 1 1 1 20775.00611 1 1 1
79 | 78 20889.33301 1 1 16711.46641 20889.33301 1 1 1 20889.33301 1 1 1
80 | 79 21328.75101 1 1 17063.00081 21328.75101 1 1 1 21328.75101 1 1 1
81 | 80 21597.37899 1 1 17277.90319 21597.37899 1 1 1 21597.37899 1 1 1
82 | 81 21896.83817 1 1 17517.47053 21896.83817 1 1 1 21896.83817 1 1 1
83 | 82 23194.43508 1 1 18555.54806 23194.43508 1 1 1 23194.43508 1 1 1
84 | 83 25479.5755 1 1 20383.6604 25479.5755 1 1 1 25479.5755 1 1 1
85 | 84 25760.63849 1 1 20608.51079 25760.63849 1 1 1 25760.63849 1 1 1
86 | 85 26268.0299 1 1 21014.42392 26268.0299 1 1 1 26268.0299 1 1 1
87 | 86 27515.82553 1 1 22012.66043 27515.82553 1 1 1 27515.82553 1 1 1
88 | 87 28369.93198 1 1 22695.94558 28369.93198 1 1 1 28369.93198 1 1 1
89 | 88 29874.00472 1 1 23899.20378 29874.00472 1 1 1 29874.00472 1 1 1
90 | 89 32863.08472 1 1 26290.46778 32863.08472 1 1 1 32863.08472 1 1 1
91 | 90 34506.23896 1 1 27604.99116 34506.23896 1 1 1 34506.23896 1 1 1
92 | 91 35696.7042 1 1 28557.36336 35696.7042 1 1 1 35696.7042 1 1 1
93 | 92 36928.24049 1 1 29542.5924 36928.24049 1 1 1 36928.24049 1 1 1
94 | 93 38202.26479 1 1 30561.81183 38202.26479 1 1 1 38202.26479 1 1 1
95 | 94 77238.51873 1 1 61790.81498 77238.51873 1 1 1 77238.51873 1 1 1
96 | 95 84582.89393 1 1 67666.31515 84582.89393 1 1 1 84582.89393 1 1 1
97 | 96 104272.4595 1 1 83417.96758 104272.4595 1 1 1 104272.4595 1 1 1
98 | 97 109325.7391 1 1 87460.5913 109325.7391 1 1 1 109325.7391 1 1 1
99 | 98 130624 1 1 104499 130624 1 1 1 130624 1 1 1
100 | 99 198753 1 1 159002 198753 1 1 1 198753 1 1 1
101 | 100 336523 1 1 269218 336523 1 1 1 299132 1 1 1
102 | 101 440250 1 1 352200 440250 1 1 1 401117 1 1 1
103 | 102 495234 1 1 396187 495234 1 1 1 462218 1 1 1
104 | 103 546544 1 1 437235 546544 1 1 1 522253 1 1 1
105 | 104 582866 1 1 466293 582866 1 1 1 569913 1 1 1
106 | 105 611763 1 1 489410 611763 1 1 1 611763 1 1 1
107 | 106 627057 1 1 501646 627057 1 1 1 627057 1 1 1
108 | 107 642733 1 1 514186 642733 1 1 1 642733 1 1 1
109 | 108 658801 1 1 527041 658801 1 1 1 658801 1 1 1
110 | 109 675271 1 1 540217 675271 1 1 1 675271 1 1 1
111 | 110 1039267.25 1 1 831414 1039267.25 1 1 1 1039267.25 1 1 1
112 | 111 1075123.209 1 1 860099 1075123.209 1 1 1 1075123.209 1 1 1
113 | 112 1112213.744 1 1 889771 1112213.744 1 1 1 1112213.744 1 1 1
114 | 113 1150587.269 1 1 920470 1150587.269 1 1 1 1150587.269 1 1 1
115 | 114 1150587.269 1 1 920470 1150587.269 1 1 1 1150587.269 1 1 1
116 | 115 1150587.269 1 1 920470 1150587.269 1 1 1 1150587.269 1 1 1
117 | 116 1150587.269 1 1 920470 1150587.269 1 1 1 1150587.269 1 1 1
118 | 117 1150587.269 1 1 920470 1150587.269 1 1 1 1150587.269 1 1 1
119 | 118 1150587.269 1 1 920470 1150587.269 1 1 1 1150587.269 1 1 1
120 | 119 1150587.269 1 1 920470 1150587.269 1 1 1 1150587.269 1 1 1
121 | 120 1150587.269 1 1 920470 1150587.269 1 1 1 1150587.269 1 1 1
122 | 121 1150587.269 1 1 920470 1150587.269 1 1 1 1150587.269 1 1 1
123 | 122 1150587.269 1 1 920470 1150587.269 1 1 1 1150587.269 1 1 1
124 | 123 1150587.269 1 1 920470 1150587.269 1 1 1 1150587.269 1 1 1
125 |
--------------------------------------------------------------------------------
/WowHeadParser/Ressources/NpcTotalHpExp6.txt:
--------------------------------------------------------------------------------
1 | Level Rogue Druid Hunter Mage Paladin Priest Shaman Warlock Warrior Death Knight Monk Demon Hunter
2 | 1 87.36 1 1 69.888 87.36 1 1 1 87.36 1 1 1
3 | 2 110.5 1 1 88.4 110.5 1 1 1 110.5 1 1 1
4 | 3 144.495 1 1 115.596 144.495 1 1 1 144.495 1 1 1
5 | 4 161.2687831 1 1 129.0150265 161.2687831 1 1 1 161.2687831 1 1 1
6 | 5 187.7113333 1 1 150.1690667 187.7113333 1 1 1 187.7113333 1 1 1
7 | 6 207.2686984 1 1 165.8149587 207.2686984 1 1 1 207.2686984 1 1 1
8 | 7 237.5371693 1 1 190.0297354 237.5371693 1 1 1 237.5371693 1 1 1
9 | 8 260.0453968 1 1 208.0363175 260.0453968 1 1 1 260.0453968 1 1 1
10 | 9 283.8364286 1 1 227.0691429 283.8364286 1 1 1 283.8364286 1 1 1
11 | 10 338.2635004 1 1 270.6108003 338.2635004 1 1 1 338.2635004 1 1 1
12 | 11 392.6217835 1 1 314.0974268 392.6217835 1 1 1 392.6217835 1 1 1
13 | 12 441.8880869 1 1 353.5104695 441.8880869 1 1 1 441.8880869 1 1 1
14 | 13 517.2006263 1 1 413.760501 517.2006263 1 1 1 517.2006263 1 1 1
15 | 14 564.3336299 1 1 451.4669039 564.3336299 1 1 1 564.3336299 1 1 1
16 | 15 678.8665457 1 1 543.0932366 678.8665457 1 1 1 678.8665457 1 1 1
17 | 16 737.5240153 1 1 590.0192122 737.5240153 1 1 1 737.5240153 1 1 1
18 | 17 890.7807392 1 1 712.6245913 890.7807392 1 1 1 890.7807392 1 1 1
19 | 18 963.8497776 1 1 771.0798221 963.8497776 1 1 1 963.8497776 1 1 1
20 | 19 1140.014663 1 1 912.0117307 1140.014663 1 1 1 1140.014663 1 1 1
21 | 20 1227.015287 1 1 981.6122298 1227.015287 1 1 1 1227.015287 1 1 1
22 | 21 1371.556419 1 1 1097.245135 1371.556419 1 1 1 1371.556419 1 1 1
23 | 22 1428.596659 1 1 1142.877327 1428.596659 1 1 1 1428.596659 1 1 1
24 | 23 1629.820212 1 1 1303.856169 1629.820212 1 1 1 1629.820212 1 1 1
25 | 24 1726.965829 1 1 1381.572663 1726.965829 1 1 1 1726.965829 1 1 1
26 | 25 1929.441064 1 1 1543.552851 1929.441064 1 1 1 1929.441064 1 1 1
27 | 26 2018.858874 1 1 1615.087099 2018.858874 1 1 1 2018.858874 1 1 1
28 | 27 2264.711598 1 1 1811.769278 2264.711598 1 1 1 2264.711598 1 1 1
29 | 28 2382.709508 1 1 1906.167606 2382.709508 1 1 1 2382.709508 1 1 1
30 | 29 2583.193917 1 1 2066.555133 2583.193917 1 1 1 2583.193917 1 1 1
31 | 30 2690.167534 1 1 2152.134028 2690.167534 1 1 1 2690.167534 1 1 1
32 | 31 2966.067561 1 1 2372.854049 2966.067561 1 1 1 2966.067561 1 1 1
33 | 32 3062.562861 1 1 2450.050289 3062.562861 1 1 1 3062.562861 1 1 1
34 | 33 3321.591877 1 1 2657.273502 3321.591877 1 1 1 3321.591877 1 1 1
35 | 34 3465.096795 1 1 2772.077436 3465.096795 1 1 1 3465.096795 1 1 1
36 | 35 3783.899466 1 1 3027.119573 3783.899466 1 1 1 3783.899466 1 1 1
37 | 36 3894.060206 1 1 3115.248165 3894.060206 1 1 1 3894.060206 1 1 1
38 | 37 4127.776357 1 1 3302.221085 4127.776357 1 1 1 4127.776357 1 1 1
39 | 38 4242.130071 1 1 3393.704057 4242.130071 1 1 1 4242.130071 1 1 1
40 | 39 4605.247375 1 1 3684.1979 4605.247375 1 1 1 4605.247375 1 1 1
41 | 40 4751.795197 1 1 3801.436157 4751.795197 1 1 1 4751.795197 1 1 1
42 | 41 5117.909514 1 1 4094.327611 5117.909514 1 1 1 5117.909514 1 1 1
43 | 42 5224.492214 1 1 4179.593771 5224.492214 1 1 1 5224.492214 1 1 1
44 | 43 5543.764003 1 1 4435.011202 5543.764003 1 1 1 5543.764003 1 1 1
45 | 44 5655.823287 1 1 4524.658629 5655.823287 1 1 1 5655.823287 1 1 1
46 | 45 5999.566482 1 1 4799.653185 5999.566482 1 1 1 5999.566482 1 1 1
47 | 46 6140.34332 1 1 4912.274656 6140.34332 1 1 1 6140.34332 1 1 1
48 | 47 6486.280745 1 1 5189.024596 6486.280745 1 1 1 6486.280745 1 1 1
49 | 48 6607.30217 1 1 5285.841736 6607.30217 1 1 1 6607.30217 1 1 1
50 | 49 7035.673421 1 1 5628.538737 7035.673421 1 1 1 7035.673421 1 1 1
51 | 50 7520.380152 1 1 6016.304121 7520.380152 1 1 1 7520.380152 1 1 1
52 | 51 7895.18227 1 1 6316.145816 7895.18227 1 1 1 7895.18227 1 1 1
53 | 52 8041.762023 1 1 6433.409618 8041.762023 1 1 1 8041.762023 1 1 1
54 | 53 8394.553234 1 1 6715.642587 8394.553234 1 1 1 8394.553234 1 1 1
55 | 54 8514.832969 1 1 6811.866375 8514.832969 1 1 1 8514.832969 1 1 1
56 | 55 8988.593778 1 1 7190.875022 8988.593778 1 1 1 8988.593778 1 1 1
57 | 56 9142.471314 1 1 7313.977051 9142.471314 1 1 1 9142.471314 1 1 1
58 | 57 9555.210465 1 1 7644.168372 9555.210465 1 1 1 9555.210465 1 1 1
59 | 58 9684.658381 1 1 7747.726705 9684.658381 1 1 1 9684.658381 1 1 1
60 | 59 11045.08664 1 1 8836.069315 11045.08664 1 1 1 11045.08664 1 1 1
61 | 60 11215.82425 1 1 8972.659402 11215.82425 1 1 1 11215.82425 1 1 1
62 | 61 11527.72395 1 1 9222.179161 11527.72395 1 1 1 11527.72395 1 1 1
63 | 62 11841.32842 1 1 9473.062734 11841.32842 1 1 1 11841.32842 1 1 1
64 | 63 12737.13941 1 1 10189.71152 12737.13941 1 1 1 12737.13941 1 1 1
65 | 64 13666.90154 1 1 10933.52123 13666.90154 1 1 1 13666.90154 1 1 1
66 | 65 14410.60702 1 1 11528.48562 14410.60702 1 1 1 14410.60702 1 1 1
67 | 66 14514.43038 1 1 11611.5443 14514.43038 1 1 1 14514.43038 1 1 1
68 | 67 14955.02181 1 1 11964.01744 14955.02181 1 1 1 14955.02181 1 1 1
69 | 68 15060.13771 1 1 12048.11017 15060.13771 1 1 1 15060.13771 1 1 1
70 | 69 15602.51862 1 1 12482.01489 15602.51862 1 1 1 15602.51862 1 1 1
71 | 70 15940.13148 1 1 12752.10518 15940.13148 1 1 1 15940.13148 1 1 1
72 | 71 16492.81203 1 1 13194.24963 16492.81203 1 1 1 16492.81203 1 1 1
73 | 72 17129.78521 1 1 13703.82817 17129.78521 1 1 1 17129.78521 1 1 1
74 | 73 18290.22918 1 1 14632.18335 18290.22918 1 1 1 18290.22918 1 1 1
75 | 74 19070.22309 1 1 15256.17847 19070.22309 1 1 1 19070.22309 1 1 1
76 | 75 20027.75891 1 1 16022.20713 20027.75891 1 1 1 20027.75891 1 1 1
77 | 76 20140.7883 1 1 16112.63064 20140.7883 1 1 1 20140.7883 1 1 1
78 | 77 20775.00611 1 1 16620.00489 20775.00611 1 1 1 20775.00611 1 1 1
79 | 78 20889.33301 1 1 16711.46641 20889.33301 1 1 1 20889.33301 1 1 1
80 | 79 21328.75101 1 1 17063.00081 21328.75101 1 1 1 21328.75101 1 1 1
81 | 80 21597.37899 1 1 17277.90319 21597.37899 1 1 1 21597.37899 1 1 1
82 | 81 21896.83817 1 1 17517.47053 21896.83817 1 1 1 21896.83817 1 1 1
83 | 82 23194.43508 1 1 18555.54806 23194.43508 1 1 1 23194.43508 1 1 1
84 | 83 25479.5755 1 1 20383.6604 25479.5755 1 1 1 25479.5755 1 1 1
85 | 84 25760.63849 1 1 20608.51079 25760.63849 1 1 1 25760.63849 1 1 1
86 | 85 26268.0299 1 1 21014.42392 26268.0299 1 1 1 26268.0299 1 1 1
87 | 86 27515.82553 1 1 22012.66043 27515.82553 1 1 1 27515.82553 1 1 1
88 | 87 28369.93198 1 1 22695.94558 28369.93198 1 1 1 28369.93198 1 1 1
89 | 88 29874.00472 1 1 23899.20378 29874.00472 1 1 1 29874.00472 1 1 1
90 | 89 32863.08472 1 1 26290.46778 32863.08472 1 1 1 32863.08472 1 1 1
91 | 90 50735.29988 1 1 40588.2399 50735.29988 1 1 1 50735.29988 1 1 1
92 | 91 58800.97878 1 1 47040.78302 58800.97878 1 1 1 58800.97878 1 1 1
93 | 92 64731.11086 1 1 51784.88869 64731.11086 1 1 1 64731.11086 1 1 1
94 | 93 68872.29029 1 1 55097.83223 68872.29029 1 1 1 68872.29029 1 1 1
95 | 94 77238.51873 1 1 61790.81498 77238.51873 1 1 1 77238.51873 1 1 1
96 | 95 84582.89393 1 1 67666.31515 84582.89393 1 1 1 84582.89393 1 1 1
97 | 96 104272.4595 1 1 83417.96758 104272.4595 1 1 1 104272.4595 1 1 1
98 | 97 109325.7391 1 1 87460.5913 109325.7391 1 1 1 109325.7391 1 1 1
99 | 98 130624 1 1 104499 130624 1 1 1 130624 1 1 1
100 | 99 198753 1 1 159002 198753 1 1 1 198753 1 1 1
101 | 100 336523 1 1 269218 336523 1 1 1 299132 1 1 1
102 | 101 440250 1 1 352200 440250 1 1 1 401117 1 1 1
103 | 102 495234 1 1 396187 495234 1 1 1 462218 1 1 1
104 | 103 546544 1 1 437235 546544 1 1 1 522253 1 1 1
105 | 104 582866 1 1 466293 582866 1 1 1 569913 1 1 1
106 | 105 611763 1 1 489410 611763 1 1 1 611763 1 1 1
107 | 106 627057 1 1 501646 627057 1 1 1 627057 1 1 1
108 | 107 642733 1 1 514186 642733 1 1 1 642733 1 1 1
109 | 108 658801 1 1 527041 658801 1 1 1 658801 1 1 1
110 | 109 675271 1 1 540217 675271 1 1 1 675271 1 1 1
111 | 110 1039267.25 1 1 831414 1039267.25 1 1 1 1039267.25 1 1 1
112 | 111 1075123.209 1 1 860099 1075123.209 1 1 1 1075123.209 1 1 1
113 | 112 1112213.744 1 1 889771 1112213.744 1 1 1 1112213.744 1 1 1
114 | 113 1150587.269 1 1 920470 1150587.269 1 1 1 1150587.269 1 1 1
115 | 114 1150587.269 1 1 920470 1150587.269 1 1 1 1150587.269 1 1 1
116 | 115 1150587.269 1 1 920470 1150587.269 1 1 1 1150587.269 1 1 1
117 | 116 1150587.269 1 1 920470 1150587.269 1 1 1 1150587.269 1 1 1
118 | 117 1150587.269 1 1 920470 1150587.269 1 1 1 1150587.269 1 1 1
119 | 118 1150587.269 1 1 920470 1150587.269 1 1 1 1150587.269 1 1 1
120 | 119 1150587.269 1 1 920470 1150587.269 1 1 1 1150587.269 1 1 1
121 | 120 1150587.269 1 1 920470 1150587.269 1 1 1 1150587.269 1 1 1
122 | 121 1150587.269 1 1 920470 1150587.269 1 1 1 1150587.269 1 1 1
123 | 122 1150587.269 1 1 920470 1150587.269 1 1 1 1150587.269 1 1 1
124 | 123 1150587.269 1 1 920470 1150587.269 1 1 1 1150587.269 1 1 1
125 |
--------------------------------------------------------------------------------
/WowHeadParser/Ressources/NpcTotalHpExp2.txt:
--------------------------------------------------------------------------------
1 | Level Rogue Druid Hunter Mage Paladin Priest Shaman Warlock Warrior Death Knight Monk Demon Hunter
2 | 1 87.36 1 1 69.888 87.36 1 1 1 87.36 1 1 1
3 | 2 110.5 1 1 88.4 110.5 1 1 1 110.5 1 1 1
4 | 3 144.495 1 1 115.596 144.495 1 1 1 144.495 1 1 1
5 | 4 161.2687831 1 1 129.0150265 161.2687831 1 1 1 161.2687831 1 1 1
6 | 5 187.7113333 1 1 150.1690667 187.7113333 1 1 1 187.7113333 1 1 1
7 | 6 207.2686984 1 1 165.8149587 207.2686984 1 1 1 207.2686984 1 1 1
8 | 7 237.5371693 1 1 190.0297354 237.5371693 1 1 1 237.5371693 1 1 1
9 | 8 260.0453968 1 1 208.0363175 260.0453968 1 1 1 260.0453968 1 1 1
10 | 9 283.8364286 1 1 227.0691429 283.8364286 1 1 1 283.8364286 1 1 1
11 | 10 338.2635004 1 1 270.6108003 338.2635004 1 1 1 338.2635004 1 1 1
12 | 11 392.6217835 1 1 314.0974268 392.6217835 1 1 1 392.6217835 1 1 1
13 | 12 441.8880869 1 1 353.5104695 441.8880869 1 1 1 441.8880869 1 1 1
14 | 13 517.2006263 1 1 413.760501 517.2006263 1 1 1 517.2006263 1 1 1
15 | 14 564.3336299 1 1 451.4669039 564.3336299 1 1 1 564.3336299 1 1 1
16 | 15 678.8665457 1 1 543.0932366 678.8665457 1 1 1 678.8665457 1 1 1
17 | 16 737.5240153 1 1 590.0192122 737.5240153 1 1 1 737.5240153 1 1 1
18 | 17 890.7807392 1 1 712.6245913 890.7807392 1 1 1 890.7807392 1 1 1
19 | 18 963.8497776 1 1 771.0798221 963.8497776 1 1 1 963.8497776 1 1 1
20 | 19 1140.014663 1 1 912.0117307 1140.014663 1 1 1 1140.014663 1 1 1
21 | 20 1227.015287 1 1 981.6122298 1227.015287 1 1 1 1227.015287 1 1 1
22 | 21 1371.556419 1 1 1097.245135 1371.556419 1 1 1 1371.556419 1 1 1
23 | 22 1428.596659 1 1 1142.877327 1428.596659 1 1 1 1428.596659 1 1 1
24 | 23 1629.820212 1 1 1303.856169 1629.820212 1 1 1 1629.820212 1 1 1
25 | 24 1726.965829 1 1 1381.572663 1726.965829 1 1 1 1726.965829 1 1 1
26 | 25 1929.441064 1 1 1543.552851 1929.441064 1 1 1 1929.441064 1 1 1
27 | 26 2018.858874 1 1 1615.087099 2018.858874 1 1 1 2018.858874 1 1 1
28 | 27 2264.711598 1 1 1811.769278 2264.711598 1 1 1 2264.711598 1 1 1
29 | 28 2382.709508 1 1 1906.167606 2382.709508 1 1 1 2382.709508 1 1 1
30 | 29 2583.193917 1 1 2066.555133 2583.193917 1 1 1 2583.193917 1 1 1
31 | 30 2690.167534 1 1 2152.134028 2690.167534 1 1 1 2690.167534 1 1 1
32 | 31 2966.067561 1 1 2372.854049 2966.067561 1 1 1 2966.067561 1 1 1
33 | 32 3062.562861 1 1 2450.050289 3062.562861 1 1 1 3062.562861 1 1 1
34 | 33 3321.591877 1 1 2657.273502 3321.591877 1 1 1 3321.591877 1 1 1
35 | 34 3465.096795 1 1 2772.077436 3465.096795 1 1 1 3465.096795 1 1 1
36 | 35 3783.899466 1 1 3027.119573 3783.899466 1 1 1 3783.899466 1 1 1
37 | 36 3894.060206 1 1 3115.248165 3894.060206 1 1 1 3894.060206 1 1 1
38 | 37 4127.776357 1 1 3302.221085 4127.776357 1 1 1 4127.776357 1 1 1
39 | 38 4242.130071 1 1 3393.704057 4242.130071 1 1 1 4242.130071 1 1 1
40 | 39 4605.247375 1 1 3684.1979 4605.247375 1 1 1 4605.247375 1 1 1
41 | 40 4751.795197 1 1 3801.436157 4751.795197 1 1 1 4751.795197 1 1 1
42 | 41 5117.909514 1 1 4094.327611 5117.909514 1 1 1 5117.909514 1 1 1
43 | 42 5224.492214 1 1 4179.593771 5224.492214 1 1 1 5224.492214 1 1 1
44 | 43 5543.764003 1 1 4435.011202 5543.764003 1 1 1 5543.764003 1 1 1
45 | 44 5655.823287 1 1 4524.658629 5655.823287 1 1 1 5655.823287 1 1 1
46 | 45 5999.566482 1 1 4799.653185 5999.566482 1 1 1 5999.566482 1 1 1
47 | 46 6140.34332 1 1 4912.274656 6140.34332 1 1 1 6140.34332 1 1 1
48 | 47 6486.280745 1 1 5189.024596 6486.280745 1 1 1 6486.280745 1 1 1
49 | 48 6607.30217 1 1 5285.841736 6607.30217 1 1 1 6607.30217 1 1 1
50 | 49 7035.673421 1 1 5628.538737 7035.673421 1 1 1 7035.673421 1 1 1
51 | 50 7520.380152 1 1 6016.304121 7520.380152 1 1 1 7520.380152 1 1 1
52 | 51 7895.18227 1 1 6316.145816 7895.18227 1 1 1 7895.18227 1 1 1
53 | 52 8041.762023 1 1 6433.409618 8041.762023 1 1 1 8041.762023 1 1 1
54 | 53 8394.553234 1 1 6715.642587 8394.553234 1 1 1 8394.553234 1 1 1
55 | 54 8514.832969 1 1 6811.866375 8514.832969 1 1 1 8514.832969 1 1 1
56 | 55 8988.593778 1 1 7190.875022 8988.593778 1 1 1 8988.593778 1 1 1
57 | 56 9142.471314 1 1 7313.977051 9142.471314 1 1 1 9142.471314 1 1 1
58 | 57 9555.210465 1 1 7644.168372 9555.210465 1 1 1 9555.210465 1 1 1
59 | 58 9684.658381 1 1 7747.726705 9684.658381 1 1 1 9684.658381 1 1 1
60 | 59 11045.08664 1 1 8836.069315 11045.08664 1 1 1 11045.08664 1 1 1
61 | 60 11215.82425 1 1 8972.659402 11215.82425 1 1 1 11215.82425 1 1 1
62 | 61 11527.72395 1 1 9222.179161 11527.72395 1 1 1 11527.72395 1 1 1
63 | 62 11841.32842 1 1 9473.062734 11841.32842 1 1 1 11841.32842 1 1 1
64 | 63 12737.13941 1 1 10189.71152 12737.13941 1 1 1 12737.13941 1 1 1
65 | 64 13666.90154 1 1 10933.52123 13666.90154 1 1 1 13666.90154 1 1 1
66 | 65 14410.60702 1 1 11528.48562 14410.60702 1 1 1 14410.60702 1 1 1
67 | 66 14514.43038 1 1 11611.5443 14514.43038 1 1 1 14514.43038 1 1 1
68 | 67 14955.02181 1 1 11964.01744 14955.02181 1 1 1 14955.02181 1 1 1
69 | 68 15060.13771 1 1 12048.11017 15060.13771 1 1 1 15060.13771 1 1 1
70 | 69 15602.51862 1 1 12482.01489 15602.51862 1 1 1 15602.51862 1 1 1
71 | 70 15940.13148 1 1 12752.10518 15940.13148 1 1 1 15940.13148 1 1 1
72 | 71 16492.81203 1 1 13194.24963 16492.81203 1 1 1 16492.81203 1 1 1
73 | 72 17129.78521 1 1 13703.82817 17129.78521 1 1 1 17129.78521 1 1 1
74 | 73 18290.22918 1 1 14632.18335 18290.22918 1 1 1 18290.22918 1 1 1
75 | 74 19070.22309 1 1 15256.17847 19070.22309 1 1 1 19070.22309 1 1 1
76 | 75 20027.75891 1 1 16022.20713 20027.75891 1 1 1 20027.75891 1 1 1
77 | 76 20140.7883 1 1 16112.63064 20140.7883 1 1 1 20140.7883 1 1 1
78 | 77 20775.00611 1 1 16620.00489 20775.00611 1 1 1 20775.00611 1 1 1
79 | 78 20889.33301 1 1 16711.46641 20889.33301 1 1 1 20889.33301 1 1 1
80 | 79 21328.75101 1 1 17063.00081 21328.75101 1 1 1 21328.75101 1 1 1
81 | 80 21597.37899 1 1 17277.90319 21597.37899 1 1 1 21597.37899 1 1 1
82 | 81 22342.48856 1 1 17873.99085 22342.48856 1 1 1 22342.48856 1 1 1
83 | 82 23113.30442 1 1 18490.64354 23113.30442 1 1 1 23113.30442 1 1 1
84 | 83 23910.71342 1 1 19128.57074 23910.71342 1 1 1 23910.71342 1 1 1
85 | 84 25760.63849 1 1 20608.51079 25760.63849 1 1 1 25760.63849 1 1 1
86 | 85 26268.0299 1 1 21014.42392 26268.0299 1 1 1 26268.0299 1 1 1
87 | 86 27515.82553 1 1 22012.66043 27515.82553 1 1 1 27515.82553 1 1 1
88 | 87 28369.93198 1 1 22695.94558 28369.93198 1 1 1 28369.93198 1 1 1
89 | 88 29874.00472 1 1 23899.20378 29874.00472 1 1 1 29874.00472 1 1 1
90 | 89 32863.08472 1 1 26290.46778 32863.08472 1 1 1 32863.08472 1 1 1
91 | 90 50735.29988 1 1 40588.2399 50735.29988 1 1 1 50735.29988 1 1 1
92 | 91 58800.97878 1 1 47040.78302 58800.97878 1 1 1 58800.97878 1 1 1
93 | 92 64731.11086 1 1 51784.88869 64731.11086 1 1 1 64731.11086 1 1 1
94 | 93 68872.29029 1 1 55097.83223 68872.29029 1 1 1 68872.29029 1 1 1
95 | 94 77238.51873 1 1 61790.81498 77238.51873 1 1 1 77238.51873 1 1 1
96 | 95 84582.89393 1 1 67666.31515 84582.89393 1 1 1 84582.89393 1 1 1
97 | 96 104272.4595 1 1 83417.96758 104272.4595 1 1 1 104272.4595 1 1 1
98 | 97 109325.7391 1 1 87460.5913 109325.7391 1 1 1 109325.7391 1 1 1
99 | 98 130624 1 1 104499 130624 1 1 1 130624 1 1 1
100 | 99 198753 1 1 159002 198753 1 1 1 198753 1 1 1
101 | 100 336523 1 1 269218 336523 1 1 1 299132 1 1 1
102 | 101 440250 1 1 352200 440250 1 1 1 401117 1 1 1
103 | 102 495234 1 1 396187 495234 1 1 1 462218 1 1 1
104 | 103 546544 1 1 437235 546544 1 1 1 522253 1 1 1
105 | 104 582866 1 1 466293 582866 1 1 1 569913 1 1 1
106 | 105 611763 1 1 489410 611763 1 1 1 611763 1 1 1
107 | 106 627057 1 1 501646 627057 1 1 1 627057 1 1 1
108 | 107 642733 1 1 514186 642733 1 1 1 642733 1 1 1
109 | 108 658801 1 1 527041 658801 1 1 1 658801 1 1 1
110 | 109 675271 1 1 540217 675271 1 1 1 675271 1 1 1
111 | 110 1039267.25 1 1 831414 1039267.25 1 1 1 1039267.25 1 1 1
112 | 111 1075123.209 1 1 860099 1075123.209 1 1 1 1075123.209 1 1 1
113 | 112 1112213.744 1 1 889771 1112213.744 1 1 1 1112213.744 1 1 1
114 | 113 1150587.269 1 1 920470 1150587.269 1 1 1 1150587.269 1 1 1
115 | 114 1150587.269 1 1 920470 1150587.269 1 1 1 1150587.269 1 1 1
116 | 115 1150587.269 1 1 920470 1150587.269 1 1 1 1150587.269 1 1 1
117 | 116 1150587.269 1 1 920470 1150587.269 1 1 1 1150587.269 1 1 1
118 | 117 1150587.269 1 1 920470 1150587.269 1 1 1 1150587.269 1 1 1
119 | 118 1150587.269 1 1 920470 1150587.269 1 1 1 1150587.269 1 1 1
120 | 119 1150587.269 1 1 920470 1150587.269 1 1 1 1150587.269 1 1 1
121 | 120 1150587.269 1 1 920470 1150587.269 1 1 1 1150587.269 1 1 1
122 | 121 1150587.269 1 1 920470 1150587.269 1 1 1 1150587.269 1 1 1
123 | 122 1150587.269 1 1 920470 1150587.269 1 1 1 1150587.269 1 1 1
124 | 123 1150587.269 1 1 920470 1150587.269 1 1 1 1150587.269 1 1 1
125 |
--------------------------------------------------------------------------------
/WowHeadParser/Ressources/NpcTotalHpExp5.txt:
--------------------------------------------------------------------------------
1 | Level Rogue Druid Hunter Mage Paladin Priest Shaman Warlock Warrior Death Knight Monk Demon Hunter
2 | 1 87.36 1 1 69.888 87.36 1 1 1 87.36 1 1 1
3 | 2 110.5 1 1 88.4 110.5 1 1 1 110.5 1 1 1
4 | 3 144.495 1 1 115.596 144.495 1 1 1 144.495 1 1 1
5 | 4 161.2687831 1 1 129.0150265 161.2687831 1 1 1 161.2687831 1 1 1
6 | 5 187.7113333 1 1 150.1690666 187.7113333 1 1 1 187.7113333 1 1 1
7 | 6 207.2686984 1 1 165.8149587 207.2686984 1 1 1 207.2686984 1 1 1
8 | 7 237.5371693 1 1 190.0297354 237.5371693 1 1 1 237.5371693 1 1 1
9 | 8 260.0453968 1 1 208.0363174 260.0453968 1 1 1 260.0453968 1 1 1
10 | 9 283.8364286 1 1 227.0691429 283.8364286 1 1 1 283.8364286 1 1 1
11 | 10 338.2635004 1 1 270.6108003 338.2635004 1 1 1 338.2635004 1 1 1
12 | 11 392.6217835 1 1 314.0974268 392.6217835 1 1 1 392.6217835 1 1 1
13 | 12 441.8880869 1 1 353.5104695 441.8880869 1 1 1 441.8880869 1 1 1
14 | 13 517.2006263 1 1 413.760501 517.2006263 1 1 1 517.2006263 1 1 1
15 | 14 564.3336299 1 1 451.4669039 564.3336299 1 1 1 564.3336299 1 1 1
16 | 15 678.8665457 1 1 543.0932366 678.8665457 1 1 1 678.8665457 1 1 1
17 | 16 737.5240153 1 1 590.0192122 737.5240153 1 1 1 737.5240153 1 1 1
18 | 17 890.7807392 1 1 712.6245914 890.7807392 1 1 1 890.7807392 1 1 1
19 | 18 963.8497776 1 1 771.0798221 963.8497776 1 1 1 963.8497776 1 1 1
20 | 19 1140.014663 1 1 912.0117304 1140.014663 1 1 1 1140.014663 1 1 1
21 | 20 1227.015287 1 1 981.6122296 1227.015287 1 1 1 1227.015287 1 1 1
22 | 21 1371.556419 1 1 1097.245135 1371.556419 1 1 1 1371.556419 1 1 1
23 | 22 1428.596659 1 1 1142.877327 1428.596659 1 1 1 1428.596659 1 1 1
24 | 23 1629.820212 1 1 1303.85617 1629.820212 1 1 1 1629.820212 1 1 1
25 | 24 1726.965829 1 1 1381.572663 1726.965829 1 1 1 1726.965829 1 1 1
26 | 25 1929.441064 1 1 1543.552851 1929.441064 1 1 1 1929.441064 1 1 1
27 | 26 2018.858874 1 1 1615.087099 2018.858874 1 1 1 2018.858874 1 1 1
28 | 27 2264.711598 1 1 1811.769278 2264.711598 1 1 1 2264.711598 1 1 1
29 | 28 2382.709508 1 1 1906.167606 2382.709508 1 1 1 2382.709508 1 1 1
30 | 29 2583.193917 1 1 2066.555134 2583.193917 1 1 1 2583.193917 1 1 1
31 | 30 2690.167534 1 1 2152.134027 2690.167534 1 1 1 2690.167534 1 1 1
32 | 31 2966.067561 1 1 2372.854049 2966.067561 1 1 1 2966.067561 1 1 1
33 | 32 3062.562861 1 1 2450.050289 3062.562861 1 1 1 3062.562861 1 1 1
34 | 33 3321.591877 1 1 2657.273502 3321.591877 1 1 1 3321.591877 1 1 1
35 | 34 3465.096795 1 1 2772.077436 3465.096795 1 1 1 3465.096795 1 1 1
36 | 35 3783.899466 1 1 3027.119573 3783.899466 1 1 1 3783.899466 1 1 1
37 | 36 3894.060206 1 1 3115.248165 3894.060206 1 1 1 3894.060206 1 1 1
38 | 37 4127.776357 1 1 3302.221086 4127.776357 1 1 1 4127.776357 1 1 1
39 | 38 4242.130071 1 1 3393.704057 4242.130071 1 1 1 4242.130071 1 1 1
40 | 39 4605.247375 1 1 3684.1979 4605.247375 1 1 1 4605.247375 1 1 1
41 | 40 4751.795197 1 1 3801.436158 4751.795197 1 1 1 4751.795197 1 1 1
42 | 41 5117.909514 1 1 4094.327611 5117.909514 1 1 1 5117.909514 1 1 1
43 | 42 5224.492214 1 1 4179.593771 5224.492214 1 1 1 5224.492214 1 1 1
44 | 43 5543.764003 1 1 4435.011202 5543.764003 1 1 1 5543.764003 1 1 1
45 | 44 5655.823287 1 1 4524.65863 5655.823287 1 1 1 5655.823287 1 1 1
46 | 45 5999.566482 1 1 4799.653186 5999.566482 1 1 1 5999.566482 1 1 1
47 | 46 6140.34332 1 1 4912.274656 6140.34332 1 1 1 6140.34332 1 1 1
48 | 47 6486.280745 1 1 5189.024596 6486.280745 1 1 1 6486.280745 1 1 1
49 | 48 6607.30217 1 1 5285.841736 6607.30217 1 1 1 6607.30217 1 1 1
50 | 49 7035.673421 1 1 5628.538737 7035.673421 1 1 1 7035.673421 1 1 1
51 | 50 7520.380152 1 1 6016.304122 7520.380152 1 1 1 7520.380152 1 1 1
52 | 51 7895.18227 1 1 6316.145816 7895.18227 1 1 1 7895.18227 1 1 1
53 | 52 8041.762023 1 1 6433.409618 8041.762023 1 1 1 8041.762023 1 1 1
54 | 53 8394.553234 1 1 6715.642587 8394.553234 1 1 1 8394.553234 1 1 1
55 | 54 8514.832969 1 1 6811.866375 8514.832969 1 1 1 8514.832969 1 1 1
56 | 55 8988.593778 1 1 7190.875022 8988.593778 1 1 1 8988.593778 1 1 1
57 | 56 9142.471314 1 1 7313.977051 9142.471314 1 1 1 9142.471314 1 1 1
58 | 57 9555.210465 1 1 7644.168372 9555.210465 1 1 1 9555.210465 1 1 1
59 | 58 9684.658381 1 1 7747.726705 9684.658381 1 1 1 9684.658381 1 1 1
60 | 59 11045.08664 1 1 8836.069312 11045.08664 1 1 1 11045.08664 1 1 1
61 | 60 11215.82425 1 1 8972.6594 11215.82425 1 1 1 11215.82425 1 1 1
62 | 61 11527.72395 1 1 9222.17916 11527.72395 1 1 1 11527.72395 1 1 1
63 | 62 11841.32842 1 1 9473.062736 11841.32842 1 1 1 11841.32842 1 1 1
64 | 63 12737.13941 1 1 10189.71153 12737.13941 1 1 1 12737.13941 1 1 1
65 | 64 13666.90154 1 1 10933.52123 13666.90154 1 1 1 13666.90154 1 1 1
66 | 65 14410.60702 1 1 11528.48562 14410.60702 1 1 1 14410.60702 1 1 1
67 | 66 14514.43038 1 1 11611.5443 14514.43038 1 1 1 14514.43038 1 1 1
68 | 67 14955.02181 1 1 11964.01745 14955.02181 1 1 1 14955.02181 1 1 1
69 | 68 15060.13771 1 1 12048.11017 15060.13771 1 1 1 15060.13771 1 1 1
70 | 69 15602.51862 1 1 12482.0149 15602.51862 1 1 1 15602.51862 1 1 1
71 | 70 15940.13148 1 1 12752.10518 15940.13148 1 1 1 15940.13148 1 1 1
72 | 71 16492.81203 1 1 13194.24962 16492.81203 1 1 1 16492.81203 1 1 1
73 | 72 17129.78521 1 1 13703.82817 17129.78521 1 1 1 17129.78521 1 1 1
74 | 73 18290.22918 1 1 14632.18334 18290.22918 1 1 1 18290.22918 1 1 1
75 | 74 19070.22309 1 1 15256.17847 19070.22309 1 1 1 19070.22309 1 1 1
76 | 75 20027.75891 1 1 16022.20713 20027.75891 1 1 1 20027.75891 1 1 1
77 | 76 20140.7883 1 1 16112.63064 20140.7883 1 1 1 20140.7883 1 1 1
78 | 77 20775.00611 1 1 16620.00489 20775.00611 1 1 1 20775.00611 1 1 1
79 | 78 20889.33301 1 1 16711.46641 20889.33301 1 1 1 20889.33301 1 1 1
80 | 79 21328.75101 1 1 17063.00081 21328.75101 1 1 1 21328.75101 1 1 1
81 | 80 21597.37899 1 1 17277.90319 21597.37899 1 1 1 21597.37899 1 1 1
82 | 81 21896.83817 1 1 17517.47054 21896.83817 1 1 1 21896.83817 1 1 1
83 | 82 23194.43508 1 1 18555.54806 23194.43508 1 1 1 23194.43508 1 1 1
84 | 83 25479.5755 1 1 20383.6604 25479.5755 1 1 1 25479.5755 1 1 1
85 | 84 25760.63849 1 1 20608.51079 25760.63849 1 1 1 25760.63849 1 1 1
86 | 85 26268.0299 1 1 21014.42392 26268.0299 1 1 1 26268.0299 1 1 1
87 | 86 27515.82553 1 1 22012.66042 27515.82553 1 1 1 27515.82553 1 1 1
88 | 87 28369.93198 1 1 22695.94558 28369.93198 1 1 1 28369.93198 1 1 1
89 | 88 29874.00472 1 1 23899.20378 29874.00472 1 1 1 29874.00472 1 1 1
90 | 89 32863.08472 1 1 26290.46778 32863.08472 1 1 1 32863.08472 1 1 1
91 | 90 46975.36677 1 1 37580.29342 46975.36677 1 1 1 46975.36677 1 1 1
92 | 91 54305.20642 1 1 43444.16514 54305.20642 1 1 1 54305.20642 1 1 1
93 | 92 59632.09954 1 1 47705.67963 59632.09954 1 1 1 59632.09954 1 1 1
94 | 93 63289.93006 1 1 50631.94405 63289.93006 1 1 1 63289.93006 1 1 1
95 | 94 70804.32204 1 1 56643.45763 70804.32204 1 1 1 70804.32204 1 1 1
96 | 95 77349.33422 1 1 61879.46738 77349.33422 1 1 1 77349.33422 1 1 1
97 | 96 95127.06763 1 1 76101.6541 95127.06763 1 1 1 95127.06763 1 1 1
98 | 97 99501.44684 1 1 79601.15747 99501.44684 1 1 1 99501.44684 1 1 1
99 | 98 102486.4902 1 1 81989.1922 102486.4902 1 1 1 102486.4902 1 1 1
100 | 99 105561.085 1 1 84448.86797 105561.085 1 1 1 105561.085 1 1 1
101 | 100 108727.9175 1 1 86982.334 108727.9175 1 1 1 108727.9175 1 1 1
102 | 101 112479.0307 1 1 89983.22453 112479.0307 1 1 1 112479.0307 1 1 1
103 | 102 116359.5572 1 1 93087.64577 116359.5572 1 1 1 116359.5572 1 1 1
104 | 103 120373.9619 1 1 96299.16955 120373.9619 1 1 1 120373.9619 1 1 1
105 | 104 582866 1 1 466293 582866 1 1 1 582866 1 1 1
106 | 105 611763 1 1 489410 611763 1 1 1 611763 1 1 1
107 | 106 627057 1 1 501646 627057 1 1 1 627057 1 1 1
108 | 107 642733 1 1 514186 642733 1 1 1 642733 1 1 1
109 | 108 658801 1 1 527041 658801 1 1 1 658801 1 1 1
110 | 109 675271 1 1 540217 675271 1 1 1 675271 1 1 1
111 | 110 1039267.25 1 1 831414 1039267.25 1 1 1 1039267.25 1 1 1
112 | 111 1075123.209 1 1 860099 1075123.209 1 1 1 1075123.209 1 1 1
113 | 112 1112213.744 1 1 889771 1112213.744 1 1 1 1112213.744 1 1 1
114 | 113 1150587.269 1 1 920470 1150587.269 1 1 1 1150587.269 1 1 1
115 | 114 1150587.269 1 1 920470 1150587.269 1 1 1 1150587.269 1 1 1
116 | 115 1150587.269 1 1 920470 1150587.269 1 1 1 1150587.269 1 1 1
117 | 116 1150587.269 1 1 920470 1150587.269 1 1 1 1150587.269 1 1 1
118 | 117 1150587.269 1 1 920470 1150587.269 1 1 1 1150587.269 1 1 1
119 | 118 1150587.269 1 1 920470 1150587.269 1 1 1 1150587.269 1 1 1
120 | 119 1150587.269 1 1 920470 1150587.269 1 1 1 1150587.269 1 1 1
121 | 120 1150587.269 1 1 920470 1150587.269 1 1 1 1150587.269 1 1 1
122 | 121 1150587.269 1 1 920470 1150587.269 1 1 1 1150587.269 1 1 1
123 | 122 1150587.269 1 1 920470 1150587.269 1 1 1 1150587.269 1 1 1
124 | 123 1150587.269 1 1 920470 1150587.269 1 1 1 1150587.269 1 1 1
125 |
--------------------------------------------------------------------------------
/WowHeadParser/MainWindow.Designer.cs:
--------------------------------------------------------------------------------
1 | namespace WowHeadParser
2 | {
3 | partial class MainWindow
4 | {
5 | ///
6 | /// Variable nécessaire au concepteur.
7 | ///
8 | private System.ComponentModel.IContainer components = null;
9 |
10 | ///
11 | /// Nettoyage des ressources utilisées.
12 | ///
13 | /// true si les ressources managées doivent être supprimées ; sinon, false.
14 | protected override void Dispose(bool disposing)
15 | {
16 | if (disposing && (components != null))
17 | {
18 | components.Dispose();
19 | }
20 | base.Dispose(disposing);
21 | }
22 |
23 | #region Code généré par le Concepteur Windows Form
24 |
25 | ///
26 | /// Méthode requise pour la prise en charge du concepteur - ne modifiez pas
27 | /// le contenu de cette méthode avec l'éditeur de code.
28 | ///
29 | private void InitializeComponent()
30 | {
31 | this.progressBar1 = new System.Windows.Forms.ProgressBar();
32 | this.textBoxA = new System.Windows.Forms.TextBox();
33 | this.comboBoxChoice = new System.Windows.Forms.ComboBox();
34 | this.textBoxDe = new System.Windows.Forms.TextBox();
35 | this.labelDe = new System.Windows.Forms.Label();
36 | this.labelA = new System.Windows.Forms.Label();
37 | this.button1 = new System.Windows.Forms.Button();
38 | this.comboBoxLocale = new System.Windows.Forms.ComboBox();
39 | this.ProgressBarValue = new System.Windows.Forms.Label();
40 | this.timeLeftLabel = new System.Windows.Forms.Label();
41 | this.comboBoxEntity = new System.Windows.Forms.ComboBox();
42 | this.selectList = new System.Windows.Forms.ListView();
43 | this.label1 = new System.Windows.Forms.Label();
44 | this.SuspendLayout();
45 | //
46 | // progressBar1
47 | //
48 | this.progressBar1.Location = new System.Drawing.Point(47, 37);
49 | this.progressBar1.Name = "progressBar1";
50 | this.progressBar1.Size = new System.Drawing.Size(400, 23);
51 | this.progressBar1.TabIndex = 1;
52 | //
53 | // textBoxA
54 | //
55 | this.textBoxA.Location = new System.Drawing.Point(356, 10);
56 | this.textBoxA.Name = "textBoxA";
57 | this.textBoxA.Size = new System.Drawing.Size(80, 20);
58 | this.textBoxA.TabIndex = 4;
59 | this.textBoxA.Text = "0";
60 | //
61 | // comboBoxChoice
62 | //
63 | this.comboBoxChoice.FormattingEnabled = true;
64 | this.comboBoxChoice.Location = new System.Drawing.Point(12, 10);
65 | this.comboBoxChoice.Name = "comboBoxChoice";
66 | this.comboBoxChoice.Size = new System.Drawing.Size(100, 21);
67 | this.comboBoxChoice.TabIndex = 1;
68 | this.comboBoxChoice.SelectedIndexChanged += new System.EventHandler(this.comboBoxChoice_SelectedIndexChanged);
69 | //
70 | // textBoxDe
71 | //
72 | this.textBoxDe.Location = new System.Drawing.Point(251, 10);
73 | this.textBoxDe.Name = "textBoxDe";
74 | this.textBoxDe.Size = new System.Drawing.Size(80, 20);
75 | this.textBoxDe.TabIndex = 3;
76 | this.textBoxDe.Text = "1";
77 | //
78 | // labelDe
79 | //
80 | this.labelDe.AutoSize = true;
81 | this.labelDe.Location = new System.Drawing.Point(224, 16);
82 | this.labelDe.Name = "labelDe";
83 | this.labelDe.Size = new System.Drawing.Size(21, 13);
84 | this.labelDe.TabIndex = 5;
85 | this.labelDe.Text = "De";
86 | //
87 | // labelA
88 | //
89 | this.labelA.AutoSize = true;
90 | this.labelA.Location = new System.Drawing.Point(337, 16);
91 | this.labelA.Name = "labelA";
92 | this.labelA.Size = new System.Drawing.Size(13, 13);
93 | this.labelA.TabIndex = 6;
94 | this.labelA.Text = "à";
95 | //
96 | // button1
97 | //
98 | this.button1.Location = new System.Drawing.Point(372, 171);
99 | this.button1.Name = "button1";
100 | this.button1.Size = new System.Drawing.Size(75, 23);
101 | this.button1.TabIndex = 7;
102 | this.button1.Text = "Démarrer";
103 | this.button1.UseVisualStyleBackColor = true;
104 | this.button1.Click += new System.EventHandler(this.button1_Click);
105 | //
106 | // comboBoxLocale
107 | //
108 | this.comboBoxLocale.FormattingEnabled = true;
109 | this.comboBoxLocale.Location = new System.Drawing.Point(12, 169);
110 | this.comboBoxLocale.Name = "comboBoxLocale";
111 | this.comboBoxLocale.Size = new System.Drawing.Size(80, 21);
112 | this.comboBoxLocale.TabIndex = 6;
113 | //
114 | // ProgressBarValue
115 | //
116 | this.ProgressBarValue.AutoSize = true;
117 | this.ProgressBarValue.Location = new System.Drawing.Point(9, 47);
118 | this.ProgressBarValue.Name = "ProgressBarValue";
119 | this.ProgressBarValue.Size = new System.Drawing.Size(21, 13);
120 | this.ProgressBarValue.TabIndex = 8;
121 | this.ProgressBarValue.Text = "0%";
122 | //
123 | // timeLeftLabel
124 | //
125 | this.timeLeftLabel.AutoSize = true;
126 | this.timeLeftLabel.Location = new System.Drawing.Point(185, 176);
127 | this.timeLeftLabel.Name = "timeLeftLabel";
128 | this.timeLeftLabel.Size = new System.Drawing.Size(62, 13);
129 | this.timeLeftLabel.TabIndex = 9;
130 | this.timeLeftLabel.Text = "00h00m00s";
131 | //
132 | // comboBoxEntity
133 | //
134 | this.comboBoxEntity.FormattingEnabled = true;
135 | this.comboBoxEntity.Location = new System.Drawing.Point(118, 10);
136 | this.comboBoxEntity.Name = "comboBoxEntity";
137 | this.comboBoxEntity.Size = new System.Drawing.Size(100, 21);
138 | this.comboBoxEntity.TabIndex = 2;
139 | this.comboBoxEntity.SelectedIndexChanged += new System.EventHandler(this.comboBoxEntity_SelectedIndexChanged);
140 | //
141 | // selectList
142 | //
143 | this.selectList.CheckBoxes = true;
144 | this.selectList.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.None;
145 | this.selectList.Location = new System.Drawing.Point(12, 66);
146 | this.selectList.Name = "selectList";
147 | this.selectList.Size = new System.Drawing.Size(435, 97);
148 | this.selectList.TabIndex = 5;
149 | this.selectList.UseCompatibleStateImageBehavior = false;
150 | this.selectList.View = System.Windows.Forms.View.List;
151 | //
152 | // label1
153 | //
154 | this.label1.AutoSize = true;
155 | this.label1.Location = new System.Drawing.Point(99, 176);
156 | this.label1.Name = "label1";
157 | this.label1.Size = new System.Drawing.Size(80, 13);
158 | this.label1.TabIndex = 12;
159 | this.label1.Text = "Temps restant :";
160 | //
161 | // MainWindow
162 | //
163 | this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
164 | this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
165 | this.ClientSize = new System.Drawing.Size(459, 198);
166 | this.Controls.Add(this.label1);
167 | this.Controls.Add(this.selectList);
168 | this.Controls.Add(this.comboBoxEntity);
169 | this.Controls.Add(this.timeLeftLabel);
170 | this.Controls.Add(this.ProgressBarValue);
171 | this.Controls.Add(this.comboBoxLocale);
172 | this.Controls.Add(this.labelA);
173 | this.Controls.Add(this.labelDe);
174 | this.Controls.Add(this.textBoxDe);
175 | this.Controls.Add(this.comboBoxChoice);
176 | this.Controls.Add(this.textBoxA);
177 | this.Controls.Add(this.progressBar1);
178 | this.Controls.Add(this.button1);
179 | this.Name = "MainWindow";
180 | this.Text = "Wowhead Parser";
181 | this.Load += new System.EventHandler(this.MainWindow_Load);
182 | this.ResumeLayout(false);
183 | this.PerformLayout();
184 |
185 | }
186 |
187 | #endregion
188 |
189 | private System.Windows.Forms.ProgressBar progressBar1;
190 | private System.Windows.Forms.TextBox textBoxA;
191 | private System.Windows.Forms.ComboBox comboBoxChoice;
192 | private System.Windows.Forms.TextBox textBoxDe;
193 | private System.Windows.Forms.Label labelDe;
194 | private System.Windows.Forms.Label labelA;
195 | private System.Windows.Forms.Button button1;
196 | private System.Windows.Forms.ComboBox comboBoxLocale;
197 | private System.Windows.Forms.Label ProgressBarValue;
198 | private System.Windows.Forms.Label timeLeftLabel;
199 | private System.Windows.Forms.ComboBox comboBoxEntity;
200 | private System.Windows.Forms.ListView selectList;
201 | private System.Windows.Forms.Label label1;
202 | }
203 | }
204 |
205 |
--------------------------------------------------------------------------------
/WowHeadParser/Entities/Quest.cs:
--------------------------------------------------------------------------------
1 | /*
2 | * * Created by Traesh for AshamaneProject (https://github.com/AshamaneProject)
3 | */
4 | using Newtonsoft.Json;
5 | using Sql;
6 | using System;
7 | using System.Collections.Generic;
8 | using System.Xml;
9 |
10 | namespace WowHeadParser.Entities
11 | {
12 | class Quest : Entity
13 | {
14 | struct QuestTemplateParsing
15 | {
16 | public int id;
17 | public int category;
18 | public int category2;
19 | public int[] currencyrewards;
20 | public int money;
21 | public string name;
22 | public int reqlevel;
23 | public int side;
24 | public int type;
25 | }
26 |
27 | public Quest() : base()
28 | {
29 | m_builderStarter = new SqlBuilder("creature_queststarter", "id");
30 | m_builderStarter.SetFieldsNames("quest");
31 |
32 | m_builderEnder = new SqlBuilder("creature_questender", "id");
33 | m_builderEnder.SetFieldsNames("quest");
34 |
35 | m_builderSerieWithPrevious = new SqlBuilder("quest_template_addon", "id", SqlQueryType.Update);
36 | m_builderSerieWithPrevious.SetFieldsNames("PrevQuestID", "ExclusiveGroup");
37 |
38 | m_builderSerieWithoutPrevious = new SqlBuilder("quest_template_addon", "id", SqlQueryType.Update);
39 | m_builderSerieWithoutPrevious.SetFieldsNames("ExclusiveGroup");
40 |
41 | m_builderRequiredTeam = new SqlBuilder("quest_template", "id", SqlQueryType.Update);
42 | m_builderRequiredTeam.SetFieldsNames("requiredTeam");
43 |
44 | m_builderRequiredClass = new SqlBuilder("quest_template_addon", "id", SqlQueryType.Update);
45 | m_builderRequiredClass.SetFieldsNames("AllowableClasses");
46 | }
47 |
48 | public Quest(int id) : this()
49 | {
50 | m_data.id = id;
51 | }
52 |
53 | public override String GetWowheadUrl()
54 | {
55 | return GetWowheadBaseUrl() + "/quest=" + m_data.id;
56 | }
57 |
58 | public override List GetIdsFromZone(String zoneId, String zoneHtml)
59 | {
60 | String pattern = @"new Listview\({template: 'quest', id: 'quests', name: LANG\.tab_quests, tabs: tabsRelated, parent: 'lkljbjkb574', computeDataFunc: Listview\.funcBox\.initQuestFilter, onAfterCreate: Listview\.funcBox\.addQuestIndicator,(?: note: WH\.sprintf\(LANG\.lvnote_zonequests, [0-9]+, [0-9]+, '[a-zA-ZÉèéêîÎ’'\- ]+', [0-9]+\),)? data: (.+)}\);";
61 | String creatureJSon = Tools.ExtractJsonFromWithPattern(zoneHtml, pattern);
62 |
63 | List parsingArray = JsonConvert.DeserializeObject>(creatureJSon);
64 | List tempArray = new List();
65 | foreach (CreatureTemplateParsing creatureTemplateStruct in parsingArray)
66 | {
67 | Quest questTemplate = new Quest(creatureTemplateStruct.id);
68 | tempArray.Add(questTemplate);
69 | }
70 |
71 | return tempArray;
72 | }
73 |
74 | public override bool ParseSingleJson(int id = 0)
75 | {
76 | if (m_data.id == 0 && id == 0)
77 | return false;
78 | else if (m_data.id == 0 && id != 0)
79 | m_data.id = id;
80 |
81 | String questHtml = Tools.GetHtmlFromWowhead(GetWowheadUrl());
82 |
83 | if (questHtml.Contains("inputbox-error"))
84 | return false;
85 |
86 | String dataPattern = @"var myMapper = new Mapper\((.+)\)";
87 | String seriePattern = "()";
88 |
89 | String questDataJSon = Tools.ExtractJsonFromWithPattern(questHtml, dataPattern);
90 | String questSerieXml = Tools.ExtractJsonFromWithPattern(questHtml, seriePattern);
91 |
92 | bool isAlliance = questHtml.Contains(@"Faction\x20\x3A\x20\x5Bspan\x20class\x3Dicon\x2Dalliance\x5DAlliance");
93 | bool isHorde = questHtml.Contains(@"Faction\x20\x3A\x20\x5Bspan\x20class\x3Dicon\x2Dhorde\x5DHorde");
94 |
95 | if (questDataJSon != null)
96 | {
97 | dynamic data = JsonConvert.DeserializeObject(questDataJSon);
98 | SetData(data);
99 | }
100 |
101 | if (questSerieXml != null)
102 | {
103 | SetSerie(questSerieXml);
104 | }
105 |
106 | SetTeam(isAlliance, isHorde);
107 |
108 | List questClass = Tools.ExtractListJsonFromWithPattern(questHtml, @"\[class=(\d+)\]");
109 | SetClassRequired(questClass);
110 |
111 | return true;
112 | }
113 |
114 | public void SetData(dynamic questData)
115 | {
116 | foreach (dynamic objective in questData.objectives)
117 | {
118 | foreach (dynamic zone in objective)
119 | {
120 | foreach (dynamic test1 in zone.levels)
121 | {
122 | foreach (dynamic objectiveData in test1)
123 | {
124 | if (objectiveData.point == "start")
125 | m_builderStarter.AppendFieldsValue(objectiveData.id, m_data.id);
126 |
127 | if (objectiveData.point == "end")
128 | m_builderEnder.AppendFieldsValue(objectiveData.id, m_data.id);
129 | }
130 | }
131 | }
132 | }
133 | }
134 |
135 | public void SetSerie(String serieXml)
136 | {
137 | try
138 | {
139 | XmlDocument doc = new XmlDocument();
140 | doc.LoadXml(serieXml);
141 |
142 | XmlNodeList trs = doc.DocumentElement.SelectNodes("tr");
143 | Dictionary> questInSerieByStep = new Dictionary>();
144 | int step = 0;
145 |
146 | foreach (XmlNode tr in trs)
147 | {
148 | int currentStep = step++;
149 | questInSerieByStep.Add(currentStep, new List());
150 |
151 | XmlNode td = tr.SelectSingleNode("td");
152 |
153 | if (td == null)
154 | continue;
155 |
156 | XmlNode div = td.SelectSingleNode("div");
157 |
158 | if (div == null)
159 | continue;
160 |
161 | XmlNode b = div.SelectSingleNode("b");
162 | XmlNodeList aList = div.SelectNodes("a");
163 |
164 | // Current quest is writed with a simple "b" html tag
165 | if (div.SelectSingleNode("b") != null)
166 | questInSerieByStep[currentStep].Add(m_data.id.ToString());
167 |
168 | foreach (XmlNode a in aList)
169 | {
170 | XmlNode hrefAttr = a.Attributes.GetNamedItem("href");
171 |
172 | if (hrefAttr == null)
173 | continue;
174 |
175 | String href = hrefAttr.Value;
176 | String questId = href.Substring(7);
177 |
178 | questInSerieByStep[currentStep].Add(questId);
179 | }
180 | }
181 |
182 | if (questInSerieByStep.Count < 2)
183 | return;
184 |
185 | for (int i = questInSerieByStep.Count - 1; i >= 0; --i)
186 | {
187 | String previousQuest = i > 0 ? questInSerieByStep[i - 1][0]: "";
188 |
189 | String exclusiveGroup = "0";
190 | if (questInSerieByStep[i].Count > 1)
191 | exclusiveGroup = "-" + questInSerieByStep[i][0];
192 |
193 | foreach (String questId in questInSerieByStep[i])
194 | {
195 | if (previousQuest != "")
196 | m_builderSerieWithPrevious.AppendFieldsValue(questId, previousQuest, exclusiveGroup);
197 | else
198 | m_builderSerieWithoutPrevious.AppendFieldsValue(questId, exclusiveGroup);
199 | }
200 | }
201 | }
202 | catch (Exception ex)
203 | { }
204 | }
205 |
206 | public void SetTeam(bool isAlliance, bool isHorde)
207 | {
208 | Int32 team = isAlliance ? 0 : isHorde ? 1 : -1;
209 |
210 | m_builderRequiredTeam.AppendFieldsValue(m_data.id, team);
211 | }
212 |
213 | public void SetClassRequired(List classIds)
214 | {
215 | UInt32 classMask = 0;
216 | foreach (String classId in classIds)
217 | {
218 | classMask += Tools.GetClassMaskFromClassId(classId);
219 | }
220 |
221 | if (classMask != 0)
222 | m_builderRequiredClass.AppendFieldsValue(m_data.id, classMask);
223 | }
224 |
225 | public override String GetSQLRequest()
226 | {
227 | String sqlRequest = "";
228 |
229 | if (IsCheckboxChecked("starter/ender"))
230 | {
231 | sqlRequest += m_builderStarter.ToString() + m_builderEnder.ToString();
232 | }
233 |
234 | if (IsCheckboxChecked("serie"))
235 | {
236 | sqlRequest += m_builderSerieWithPrevious.ToString();
237 | sqlRequest += m_builderSerieWithoutPrevious.ToString();
238 | }
239 |
240 | if (IsCheckboxChecked("team"))
241 | {
242 | sqlRequest += m_builderRequiredTeam.ToString();
243 | }
244 |
245 | if (IsCheckboxChecked("class"))
246 | {
247 | sqlRequest += m_builderRequiredClass.ToString();
248 | }
249 |
250 | return sqlRequest;
251 | }
252 |
253 | private QuestTemplateParsing m_data;
254 |
255 | protected SqlBuilder m_builderStarter;
256 | protected SqlBuilder m_builderEnder;
257 | protected SqlBuilder m_builderSerieWithPrevious;
258 | protected SqlBuilder m_builderSerieWithoutPrevious;
259 | protected SqlBuilder m_builderRequiredTeam;
260 | protected SqlBuilder m_builderRequiredClass;
261 | }
262 | }
263 |
--------------------------------------------------------------------------------
/WowHeadParser/MainWindow.cs:
--------------------------------------------------------------------------------
1 | /*
2 | * * Created by Traesh for AshamaneProject (https://github.com/AshamaneProject)
3 | */
4 | using System;
5 | using System.Collections.Generic;
6 | using System.Windows.Forms;
7 | using WowHeadParser.Entities;
8 |
9 | namespace WowHeadParser
10 | {
11 | public partial class MainWindow : Form
12 | {
13 | public enum LocaleConstant
14 | {
15 | enUS = 0,
16 | koKR = 1,
17 | frFR = 2,
18 | deDE = 3,
19 | zhCN = 4,
20 | zhTW = 5,
21 | esES = 6,
22 | esMX = 7,
23 | ruRU = 8,
24 | ptPT = 9,
25 | itIT = 10,
26 | };
27 |
28 | public MainWindow()
29 | {
30 | InitializeComponent();
31 |
32 | comboBoxChoice.Items.Add("Single");
33 | comboBoxChoice.Items.Add("Zone");
34 | comboBoxChoice.Items.Add("Range");
35 |
36 | comboBoxEntity.Items.Add("Creature");
37 | comboBoxEntity.Items.Add("Gameobject");
38 | comboBoxEntity.Items.Add("Quest");
39 | comboBoxEntity.Items.Add("Item");
40 | comboBoxEntity.Items.Add("Zone");
41 | comboBoxEntity.Items.Add("BlackMarket");
42 |
43 | comboBoxLocale.Items.Add("www");
44 | comboBoxLocale.Items.Add("fr");
45 | comboBoxLocale.Items.Add("es");
46 | comboBoxLocale.Items.Add("de");
47 | comboBoxLocale.Items.Add("it");
48 | comboBoxLocale.Items.Add("pt");
49 | comboBoxLocale.Items.Add("ru");
50 |
51 | comboBoxChoice.SelectedIndex = 0;
52 |
53 | HideToTextbox(true);
54 |
55 | ids = new List();
56 | currentId = 0;
57 | }
58 |
59 | private void MainWindow_Load(object sender, EventArgs e)
60 | {
61 | for (int i = 0; i < comboBoxLocale.Items.Count; ++i)
62 | if (Properties.Settings.Default.wowheadLocale == (String)comboBoxLocale.Items[i])
63 | comboBoxLocale.SelectedIndex = i;
64 | }
65 |
66 | private void button1_Click(object sender, EventArgs e)
67 | {
68 | String selectedText = comboBoxLocale.Items[comboBoxLocale.SelectedIndex].ToString();
69 | Properties.Settings.Default.wowheadLocale = selectedText;
70 | Properties.Settings.Default.selectedEntity = comboBoxEntity.SelectedIndex;
71 | Entity.ReloadWowheadBaseUrl();
72 | UpdateCheckboxSettings(); // Must be done before Properties.Settings.Default.Save
73 |
74 | switch (selectedText)
75 | {
76 | case "www": Properties.Settings.Default.localIndex = (int)LocaleConstant.enUS; break;
77 | case "fr": Properties.Settings.Default.localIndex = (int)LocaleConstant.frFR; break;
78 | case "es": Properties.Settings.Default.localIndex = (int)LocaleConstant.esES; break;
79 | case "de": Properties.Settings.Default.localIndex = (int)LocaleConstant.deDE; break;
80 | case "it": Properties.Settings.Default.localIndex = (int)LocaleConstant.itIT; break;
81 | case "pt": Properties.Settings.Default.localIndex = (int)LocaleConstant.ptPT; break;
82 | case "ru": Properties.Settings.Default.localIndex = (int)LocaleConstant.ruRU; break;
83 | default: Properties.Settings.Default.localIndex = (int)LocaleConstant.frFR; break;
84 | }
85 |
86 | Properties.Settings.Default.Save();
87 |
88 | ids = new List(textBoxDe.Text.Split(' '));
89 | m_fileName = Tools.GetFileNameForCurrentTime();
90 | StartParsing();
91 |
92 | SetStartButtonEnableState(false);
93 | }
94 |
95 | public void StartParsing()
96 | {
97 | switch (comboBoxChoice.SelectedIndex)
98 | {
99 | case 0:
100 | {
101 | int firstId = Int32.Parse(ids[currentId]);
102 |
103 | Range range = new Range(this, m_fileName);
104 | range.StartParsing(firstId, firstId);
105 |
106 | break;
107 | }
108 | case 1:
109 | {
110 | Zone zone = new Zone(this);
111 | zone.StartParsing(ids[currentId]);
112 | break;
113 | }
114 | case 2:
115 | {
116 | int firstId = Int32.Parse(textBoxDe.Text);
117 | int lastId = Int32.Parse(textBoxA.Text);
118 |
119 | Range range = new Range(this, m_fileName);
120 | range.StartParsing(firstId, lastId);
121 |
122 | break;
123 | }
124 | }
125 | }
126 |
127 | public void SetStartButtonEnableState(bool state)
128 | {
129 | button1.Enabled = state;
130 | }
131 |
132 | public void setProgressBar(int progress)
133 | {
134 | this.progressBar1.Value = progress;
135 | this.ProgressBarValue.Text = progress + "%";
136 | }
137 |
138 | public void SetTimeLeft(int seconds)
139 | {
140 | int hours = seconds / 3600;
141 | seconds %= 3600;
142 |
143 | int minutes = seconds / 60;
144 | seconds %= 60;
145 |
146 | timeLeftLabel.Text = hours.ToString("00") + "h" + minutes.ToString("00") + "m" + seconds.ToString("00") + "s";
147 | }
148 |
149 | public void SetWorkDone()
150 | {
151 | if (ids.Count > ++currentId)
152 | {
153 | StartParsing();
154 |
155 | setProgressBar(100);
156 | timeLeftLabel.Text = "Terminé (" + (currentId + 1) + "/" + ids.Count + ")";
157 | }
158 | else
159 | {
160 | setProgressBar(100);
161 | timeLeftLabel.Text = "Terminé";
162 | SetStartButtonEnableState(true);
163 | currentId = 0;
164 | }
165 | }
166 |
167 | private void comboBoxChoice_SelectedIndexChanged(object sender, EventArgs e)
168 | {
169 | if (comboBoxChoice.SelectedIndex < 2)
170 | HideToTextbox(true);
171 | else
172 | HideToTextbox(false);
173 | }
174 |
175 | private void HideToTextbox(bool hide)
176 | {
177 | if (hide)
178 | {
179 | textBoxA.Hide();
180 | labelA.Hide();
181 | }
182 | else
183 | {
184 | textBoxA.Show();
185 | labelA.Show();
186 | }
187 | }
188 |
189 | private void comboBoxEntity_SelectedIndexChanged(object sender, EventArgs e)
190 | {
191 | selectList.Clear();
192 |
193 | switch (comboBoxEntity.SelectedIndex)
194 | {
195 | // Creature
196 | case 0:
197 | {
198 | selectList.Items.Add("Is Dungeon/Raid Boss");
199 | selectList.Items.Add("template");
200 | selectList.Items.Add("health modifier");
201 | selectList.Items.Add("locale");
202 | selectList.Items.Add("vendor");
203 | selectList.Items.Add("loot");
204 | selectList.Items.Add("skinning");
205 | selectList.Items.Add("trainer");
206 | selectList.Items.Add("quest starter");
207 | selectList.Items.Add("quest ender");
208 | selectList.Items.Add("simple faction");
209 | selectList.Items.Add("money");
210 | break;
211 | }
212 | // Gameobject
213 | case 1:
214 | {
215 | selectList.Items.Add("locale");
216 | selectList.Items.Add("loot");
217 | selectList.Items.Add("herbalism");
218 | selectList.Items.Add("mining");
219 | break;
220 | }
221 | // Quest
222 | case 2:
223 | {
224 | selectList.Items.Add("starter/ender");
225 | selectList.Items.Add("serie");
226 | selectList.Items.Add("team");
227 | selectList.Items.Add("class");
228 | break;
229 | }
230 | // Item
231 | case 3:
232 | {
233 | selectList.Items.Add("create item");
234 | selectList.Items.Add("loot");
235 | selectList.Items.Add("dropped by");
236 | selectList.Items.Add("export pvp");
237 | break;
238 | }
239 | // Zone
240 | case 4:
241 | {
242 | selectList.Items.Add("Fishing");
243 | break;
244 | }
245 | // Marché Noir
246 | case 5:
247 | {
248 | selectList.Items.Add("Débug");
249 | break;
250 | }
251 | }
252 | }
253 |
254 | public void UpdateCheckboxSettings()
255 | {
256 | if (Properties.Settings.Default.checkedList == null)
257 | Properties.Settings.Default.checkedList = new System.Collections.Specialized.StringCollection();
258 | else
259 | Properties.Settings.Default.checkedList.Clear();
260 |
261 | for (int i = 0; i < selectList.Items.Count; ++i)
262 | if (selectList.Items[i].Checked)
263 | Properties.Settings.Default.checkedList.Add(selectList.Items[i].Text);
264 | }
265 |
266 | public Entity CreateNeededEntity(int id = 0)
267 | {
268 | switch (Properties.Settings.Default.selectedEntity)
269 | {
270 | case 0: return new Creature(id);
271 | case 1: return new Gameobject(id);
272 | case 2: return new Quest(id);
273 | case 3: return new Item(id);
274 | case 4: return new ZoneEntity(id);
275 | case 5: return new BlackMarket(id);
276 | }
277 |
278 | return null;
279 | }
280 |
281 | private int currentId;
282 | private List ids;
283 | private String m_fileName;
284 | }
285 | }
286 |
--------------------------------------------------------------------------------
/WowHeadParser/SqlBuilder/SqlBuilder.cs:
--------------------------------------------------------------------------------
1 | /*
2 | * * Created by Traesh for AshamaneProject (https://github.com/AshamaneProject)
3 | */
4 | using System;
5 | using System.Collections.Generic;
6 | using System.Globalization;
7 | using System.Text;
8 |
9 | namespace Sql
10 | {
11 | public enum SqlQueryType : byte
12 | {
13 | None,
14 | Update,
15 | InsertOrUpdate,
16 | Replace,
17 | Insert,
18 | InsertIgnore,
19 | DeleteInsert,
20 | Max,
21 | }
22 |
23 | public class SqlBuilder
24 | {
25 | ///
26 | /// Gets a sql query type
27 | ///
28 | public SqlQueryType QueryType { get; private set; }
29 |
30 | ///
31 | /// Gets a value indicating whether to allow null values
32 | ///
33 | public bool AllowNullValue { get; private set; }
34 |
35 | ///
36 | /// Gets a value indication whether to allow append header to insert and replace query
37 | ///
38 | public bool WriteWithoutHeader { get; private set; }
39 |
40 | private string _tableName = string.Empty;
41 |
42 | private string _keyName = string.Empty;
43 |
44 | private List _fields = new List(64);
45 |
46 | public List _items = new List(64);
47 |
48 | private StringBuilder _content = new StringBuilder(8196);
49 |
50 | ///
51 | /// Initial Sql builder
52 | ///
53 | /// Table name (like creature_template, creature etc.)
54 | /// Key name (like entry, id, guid etc.)
55 | public SqlBuilder(string tableName, string keyName, SqlQueryType type = SqlQueryType.InsertOrUpdate)
56 | {
57 | _tableName = tableName;
58 | _keyName = keyName;
59 |
60 | WriteWithoutHeader = false;// Settings.Default.WithoutHeader;
61 | AllowNullValue = true;// Settings.Default.AllowEmptyValues;
62 | QueryType = type;// (SqlQueryType)Settings.Default.QueryType;
63 |
64 | if (QueryType <= SqlQueryType.None || QueryType >= SqlQueryType.Max)
65 | throw new InvalidQueryTypeException(QueryType);
66 | }
67 |
68 | ///
69 | /// Initial Sql builder
70 | /// Table name (like creature_template, creature etc.)
71 | ///
72 | public SqlBuilder(string tableName)
73 | : this(tableName, "entry")
74 | {
75 | }
76 |
77 | ///
78 | /// Append fields names
79 | ///
80 | /// fields name array
81 | public void SetFieldsNames(params string[] args)
82 | {
83 | if (args == null)
84 | throw new ArgumentNullException();
85 |
86 | for (int i = 0; i < args.Length; ++i)
87 | {
88 | _fields.Add(args[i]);
89 | }
90 | }
91 |
92 | ///
93 | /// Append fields names
94 | ///
95 | /// fields name array
96 | public void SetFieldsName(string format, params object[] args)
97 | {
98 | if (args == null || string.IsNullOrEmpty(format))
99 | throw new ArgumentNullException();
100 |
101 | string field = string.Format(format, args);
102 | _fields.Add(field);
103 | }
104 |
105 | ///
106 | /// Append key and fields value
107 | ///
108 | /// key value
109 | /// string fields values array
110 | public void AppendFieldsValue(object key, params string[] args)
111 | {
112 | if (key == null || args == null)
113 | throw new ArgumentNullException();
114 |
115 | List values = new List(args.Length);
116 | for (int i = 0; i < args.Length; ++i)
117 | {
118 | values.Add(args[i]);
119 | }
120 |
121 | _items.Add(new SqlItem(key, values));
122 | }
123 |
124 | ///
125 | /// Append key and fields value
126 | ///
127 | /// key value
128 | /// object fields values array
129 | public void AppendFieldsValue(object key, params object[] args)
130 | {
131 | if (key == null || args == null)
132 | throw new ArgumentNullException();
133 |
134 | List values = new List(args.Length);
135 | for (int i = 0; i < args.Length; ++i)
136 | {
137 | values.Add(args[i].ToString());
138 | }
139 |
140 | _items.Add(new SqlItem(key, values));
141 | }
142 |
143 | ///
144 | /// Append sql query
145 | ///
146 | ///
147 | public void AppendSqlQuery(string query, params object[] args)
148 | {
149 | if (args == null || string.IsNullOrWhiteSpace(query))
150 | throw new ArgumentNullException();
151 |
152 | _content.AppendLine(string.Format(query, args));
153 | }
154 |
155 | public bool Empty
156 | {
157 | get { return _items.Count <= 0; }
158 | }
159 |
160 | ///
161 | /// Build sql query
162 | ///
163 | public override string ToString()
164 | {
165 | if (Empty)
166 | return string.Empty;
167 |
168 | _content.Clear();
169 | _content.Capacity = 2048 * _items.Count;
170 |
171 | switch (QueryType)
172 | {
173 | case SqlQueryType.Update:
174 | return BuildUpdateQuery();
175 | case SqlQueryType.InsertOrUpdate:
176 | return BuildInsertOrUpdateQuery();
177 | case SqlQueryType.Replace:
178 | case SqlQueryType.Insert:
179 | case SqlQueryType.InsertIgnore:
180 | case SqlQueryType.DeleteInsert:
181 | return BuildReplaceInsertQuery();
182 | default:
183 | return string.Empty;
184 | }
185 | }
186 |
187 | private string BuildUpdateQuery()
188 | {
189 | for (int i = 0; i < _items.Count; ++i)
190 | {
191 | bool notEmpty = false;
192 |
193 | SqlItem item = _items[i];
194 |
195 | StringBuilder contentInternal = new StringBuilder(1024);
196 | {
197 | contentInternal.AppendFormat("UPDATE `{0}` SET ", _tableName);
198 | for (int j = 0; j < item.Count; ++j)
199 | {
200 | if (!AllowNullValue && string.IsNullOrWhiteSpace(item[j]))
201 | continue;
202 |
203 | contentInternal.AppendFormat(NumberFormatInfo.InvariantInfo, "`{0}` = '{1}', ", _fields[j], item[j]);
204 | notEmpty = true;
205 | }
206 | contentInternal.Remove(contentInternal.Length - 2, 2);
207 | contentInternal.AppendFormat(" WHERE `{0}` = {1};", _keyName, item.Key).AppendLine();
208 |
209 | if (notEmpty)
210 | _content.Append(contentInternal.ToString());
211 | }
212 | }
213 |
214 | return _content.ToString();
215 | }
216 |
217 | private string BuildInsertOrUpdateQuery()
218 | {
219 | for (int i = 0; i < _items.Count; ++i)
220 | {
221 | bool notEmpty = false;
222 |
223 | SqlItem item = _items[i];
224 |
225 | StringBuilder tableNames = new StringBuilder(1024);
226 | StringBuilder tableValues = new StringBuilder(1024);
227 | StringBuilder tableUpdates = new StringBuilder(1024);
228 |
229 | tableNames.AppendFormat("INSERT INTO `{0}` ({1}, ", _tableName, _keyName);
230 | tableValues.AppendFormat(") VALUES ({0}, ", item.Key);
231 | tableUpdates.AppendFormat(") ON DUPLICATE KEY UPDATE ");
232 | for (int j = 0; j < item.Count; ++j)
233 | {
234 | if (!AllowNullValue && string.IsNullOrWhiteSpace(item[j]))
235 | continue;
236 |
237 | tableNames.AppendFormat(NumberFormatInfo.InvariantInfo, "{0}, ", _fields[j]);
238 | tableValues.AppendFormat(NumberFormatInfo.InvariantInfo, "'{0}', ", item[j].Replace("'", "''"));
239 | tableUpdates.AppendFormat(NumberFormatInfo.InvariantInfo, "{0} = VALUES({1}), ", _fields[j], _fields[j]);
240 | notEmpty = true;
241 | }
242 |
243 | if (notEmpty)
244 | {
245 | tableNames.Remove(tableNames.Length - 2, 2);
246 | tableValues.Remove(tableValues.Length - 2, 2);
247 | tableUpdates.Remove(tableUpdates.Length - 2, 2);
248 |
249 | tableNames.Append(tableValues);
250 | tableNames.Append(tableUpdates);
251 | tableNames.Append(";").AppendLine();
252 |
253 | _content.Append(tableNames.ToString());
254 | }
255 | }
256 |
257 | return _content.ToString();
258 | }
259 |
260 | private string BuildReplaceInsertQuery()
261 | {
262 | if (QueryType == SqlQueryType.DeleteInsert)
263 | {
264 | List