From 77efec36ee0227ebdc7c9deb83fe3db35bd78c75 Mon Sep 17 00:00:00 2001 From: Ovahlord Date: Sat, 7 Jun 2025 15:53:41 +0200 Subject: [PATCH] Core/DataStores: ported NpcTotalHp game tables from Cata Classic and use them to calculate npc health values --- .../world/4.3.4/2025_06_07_00_world.sql | 475 ++++++++++++++++++ src/server/game/DataStores/GameTable.h | 31 -- .../{GameTable.cpp => GameTables.cpp} | 14 +- src/server/game/DataStores/GameTables.h | 104 ++++ src/server/game/Globals/ObjectMgr.cpp | 98 +++- src/server/game/Globals/ObjectMgr.h | 3 + src/server/game/Spells/SpellInfo.cpp | 6 +- src/server/game/World/World.cpp | 5 +- 8 files changed, 685 insertions(+), 51 deletions(-) create mode 100644 sql/updates/world/4.3.4/2025_06_07_00_world.sql delete mode 100644 src/server/game/DataStores/GameTable.h rename src/server/game/DataStores/{GameTable.cpp => GameTables.cpp} (68%) create mode 100644 src/server/game/DataStores/GameTables.h diff --git a/sql/updates/world/4.3.4/2025_06_07_00_world.sql b/sql/updates/world/4.3.4/2025_06_07_00_world.sql new file mode 100644 index 0000000000..582b9528f4 --- /dev/null +++ b/sql/updates/world/4.3.4/2025_06_07_00_world.sql @@ -0,0 +1,475 @@ +DROP TABLE IF EXISTS `gt_npc_total_hp`; +CREATE TABLE `gt_npc_total_hp` ( + `Level` TINYINT UNSIGNED NOT NULL, + `Warrior` FLOAT NOT NULL, + `Paladin` FLOAT NOT NULL, + `Hunter` FLOAT NOT NULL, + `Rogue` FLOAT NOT NULL, + `Priest` FLOAT NOT NULL, + `DeathKnight` FLOAT NOT NULL, + `Shaman` FLOAT NOT NULL, + `Mage` FLOAT NOT NULL, + `Warlock` FLOAT NOT NULL, + `Monk` FLOAT NOT NULL, + `Druid` FLOAT NOT NULL, + PRIMARY KEY (`Level`) +) ENGINE=INNODB CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +INSERT INTO `gt_npc_total_hp` (`Level`, `Warrior`, `Paladin`, `Hunter`, `Rogue`, `Priest`, `DeathKnight`, `Shaman`, `Mage`, `Warlock`, `Monk`, `Druid`) VALUES +(1, 42.000000, 41.000000, 1.000000, 42.000000, 1.000000, 0.000000, 1.000000, 40.000000, 1.000000, 0.000000, 1.000000), +(2, 55.000000, 54.000000, 1.000000, 55.000000, 1.000000, 0.000000, 1.000000, 52.000000, 1.000000, 0.000000, 1.000000), +(3, 71.000000, 69.000000, 1.000000, 71.000000, 1.000000, 0.000000, 1.000000, 67.000000, 1.000000, 0.000000, 1.000000), +(4, 86.000000, 83.000000, 1.000000, 86.000000, 1.000000, 0.000000, 1.000000, 81.000000, 1.000000, 0.000000, 1.000000), +(5, 102.000000, 98.000000, 1.000000, 102.000000, 1.000000, 0.000000, 1.000000, 95.000000, 1.000000, 0.000000, 1.000000), +(6, 120.000000, 115.000000, 1.000000, 120.000000, 1.000000, 0.000000, 1.000000, 111.000000, 1.000000, 0.000000, 1.000000), +(7, 137.000000, 131.000000, 1.000000, 137.000000, 1.000000, 0.000000, 1.000000, 126.000000, 1.000000, 0.000000, 1.000000), +(8, 156.000000, 148.000000, 1.000000, 156.000000, 1.000000, 0.000000, 1.000000, 143.000000, 1.000000, 0.000000, 1.000000), +(9, 176.000000, 166.000000, 1.000000, 176.000000, 1.000000, 0.000000, 1.000000, 160.000000, 1.000000, 0.000000, 1.000000), +(10, 198.000000, 186.000000, 1.000000, 198.000000, 1.000000, 0.000000, 1.000000, 178.000000, 1.000000, 0.000000, 1.000000), +(11, 222.000000, 208.000000, 1.000000, 222.000000, 1.000000, 0.000000, 1.000000, 199.000000, 1.000000, 0.000000, 1.000000), +(12, 247.000000, 230.000000, 1.000000, 247.000000, 1.000000, 0.000000, 1.000000, 219.000000, 1.000000, 0.000000, 1.000000), +(13, 273.000000, 253.000000, 1.000000, 273.000000, 1.000000, 0.000000, 1.000000, 241.000000, 1.000000, 0.000000, 1.000000), +(14, 300.000000, 276.000000, 1.000000, 300.000000, 1.000000, 0.000000, 1.000000, 263.000000, 1.000000, 0.000000, 1.000000), +(15, 328.000000, 301.000000, 1.000000, 328.000000, 1.000000, 0.000000, 1.000000, 285.000000, 1.000000, 0.000000, 1.000000), +(16, 356.000000, 325.000000, 1.000000, 356.000000, 1.000000, 0.000000, 1.000000, 307.000000, 1.000000, 0.000000, 1.000000), +(17, 386.000000, 350.000000, 1.000000, 386.000000, 1.000000, 0.000000, 1.000000, 330.000000, 1.000000, 0.000000, 1.000000), +(18, 417.000000, 377.000000, 1.000000, 417.000000, 1.000000, 0.000000, 1.000000, 354.000000, 1.000000, 0.000000, 1.000000), +(19, 449.000000, 404.000000, 1.000000, 449.000000, 1.000000, 0.000000, 1.000000, 379.000000, 1.000000, 0.000000, 1.000000), +(20, 484.000000, 433.000000, 1.000000, 484.000000, 1.000000, 0.000000, 1.000000, 405.000000, 1.000000, 0.000000, 1.000000), +(21, 521.000000, 464.000000, 1.000000, 521.000000, 1.000000, 0.000000, 1.000000, 432.000000, 1.000000, 0.000000, 1.000000), +(22, 562.000000, 498.000000, 1.000000, 562.000000, 1.000000, 0.000000, 1.000000, 463.000000, 1.000000, 0.000000, 1.000000), +(23, 605.000000, 533.000000, 1.000000, 605.000000, 1.000000, 0.000000, 1.000000, 494.000000, 1.000000, 0.000000, 1.000000), +(24, 651.000000, 571.000000, 1.000000, 651.000000, 1.000000, 0.000000, 1.000000, 528.000000, 1.000000, 0.000000, 1.000000), +(25, 699.000000, 610.000000, 1.000000, 699.000000, 1.000000, 0.000000, 1.000000, 562.000000, 1.000000, 0.000000, 1.000000), +(26, 750.000000, 651.000000, 1.000000, 750.000000, 1.000000, 0.000000, 1.000000, 598.000000, 1.000000, 0.000000, 1.000000), +(27, 800.000000, 690.000000, 1.000000, 800.000000, 1.000000, 0.000000, 1.000000, 633.000000, 1.000000, 0.000000, 1.000000), +(28, 853.000000, 732.000000, 1.000000, 853.000000, 1.000000, 0.000000, 1.000000, 669.000000, 1.000000, 0.000000, 1.000000), +(29, 905.000000, 773.000000, 1.000000, 905.000000, 1.000000, 0.000000, 1.000000, 704.000000, 1.000000, 0.000000, 1.000000), +(30, 955.000000, 811.000000, 1.000000, 955.000000, 1.000000, 0.000000, 1.000000, 737.000000, 1.000000, 0.000000, 1.000000), +(31, 1006.000000, 850.000000, 1.000000, 1006.000000, 1.000000, 0.000000, 1.000000, 770.000000, 1.000000, 0.000000, 1.000000), +(32, 1057.000000, 888.000000, 1.000000, 1057.000000, 1.000000, 0.000000, 1.000000, 802.000000, 1.000000, 0.000000, 1.000000), +(33, 1110.000000, 928.000000, 1.000000, 1110.000000, 1.000000, 0.000000, 1.000000, 835.000000, 1.000000, 0.000000, 1.000000), +(34, 1163.000000, 967.000000, 1.000000, 1163.000000, 1.000000, 0.000000, 1.000000, 867.000000, 1.000000, 0.000000, 1.000000), +(35, 1220.000000, 1009.000000, 1.000000, 1220.000000, 1.000000, 0.000000, 1.000000, 902.000000, 1.000000, 0.000000, 1.000000), +(36, 1277.000000, 1050.000000, 1.000000, 1277.000000, 1.000000, 0.000000, 1.000000, 935.000000, 1.000000, 0.000000, 1.000000), +(37, 1336.000000, 1093.000000, 1.000000, 1336.000000, 1.000000, 0.000000, 1.000000, 970.000000, 1.000000, 0.000000, 1.000000), +(38, 1395.000000, 1135.000000, 1.000000, 1395.000000, 1.000000, 0.000000, 1.000000, 1004.000000, 1.000000, 0.000000, 1.000000), +(39, 1459.000000, 1180.000000, 1.000000, 1459.000000, 1.000000, 0.000000, 1.000000, 1040.000000, 1.000000, 0.000000, 1.000000), +(40, 1524.000000, 1226.000000, 1.000000, 1524.000000, 1.000000, 0.000000, 1.000000, 1077.000000, 1.000000, 0.000000, 1.000000), +(41, 1585.000000, 1268.000000, 1.000000, 1585.000000, 1.000000, 0.000000, 1.000000, 1110.000000, 1.000000, 0.000000, 1.000000), +(42, 1651.000000, 1321.000000, 1.000000, 1651.000000, 1.000000, 0.000000, 1.000000, 1156.000000, 1.000000, 0.000000, 1.000000), +(43, 1716.000000, 1373.000000, 1.000000, 1716.000000, 1.000000, 0.000000, 1.000000, 1201.000000, 1.000000, 0.000000, 1.000000), +(44, 1782.000000, 1426.000000, 1.000000, 1782.000000, 1.000000, 0.000000, 1.000000, 1247.000000, 1.000000, 0.000000, 1.000000), +(45, 1848.000000, 1478.000000, 1.000000, 1848.000000, 1.000000, 0.000000, 1.000000, 1294.000000, 1.000000, 0.000000, 1.000000), +(46, 1919.000000, 1535.000000, 1.000000, 1919.000000, 1.000000, 0.000000, 1.000000, 1343.000000, 1.000000, 0.000000, 1.000000), +(47, 1990.000000, 1592.000000, 1.000000, 1990.000000, 1.000000, 0.000000, 1.000000, 1393.000000, 1.000000, 0.000000, 1.000000), +(48, 2062.000000, 1650.000000, 1.000000, 2062.000000, 1.000000, 0.000000, 1.000000, 1443.000000, 1.000000, 0.000000, 1.000000), +(49, 2138.000000, 1710.000000, 1.000000, 2138.000000, 1.000000, 0.000000, 1.000000, 1497.000000, 1.000000, 0.000000, 1.000000), +(50, 2215.000000, 1772.000000, 1.000000, 2215.000000, 1.000000, 0.000000, 1.000000, 1551.000000, 1.000000, 0.000000, 1.000000), +(51, 2292.000000, 1834.000000, 1.000000, 2292.000000, 1.000000, 0.000000, 1.000000, 1604.000000, 1.000000, 0.000000, 1.000000), +(52, 2371.000000, 1897.000000, 1.000000, 2371.000000, 1.000000, 0.000000, 1.000000, 1660.000000, 1.000000, 0.000000, 1.000000), +(53, 2453.000000, 1962.000000, 1.000000, 2453.000000, 1.000000, 0.000000, 1.000000, 1717.000000, 1.000000, 0.000000, 1.000000), +(54, 2533.000000, 2026.000000, 1.000000, 2533.000000, 1.000000, 0.000000, 1.000000, 1773.000000, 1.000000, 0.000000, 1.000000), +(55, 2614.000000, 2091.000000, 1.000000, 2614.000000, 1.000000, 0.000000, 1.000000, 1830.000000, 1.000000, 0.000000, 1.000000), +(56, 2699.000000, 2159.000000, 1.000000, 2699.000000, 1.000000, 0.000000, 1.000000, 1889.000000, 1.000000, 0.000000, 1.000000), +(57, 2784.000000, 2227.000000, 1.000000, 2784.000000, 1.000000, 0.000000, 1.000000, 1949.000000, 1.000000, 0.000000, 1.000000), +(58, 2871.000000, 2297.000000, 1.000000, 2871.000000, 1.000000, 0.000000, 1.000000, 2010.000000, 1.000000, 0.000000, 1.000000), +(59, 2961.000000, 2369.000000, 1.000000, 2961.000000, 1.000000, 0.000000, 1.000000, 2073.000000, 1.000000, 0.000000, 1.000000), +(60, 3052.000000, 2442.000000, 1.000000, 3052.000000, 1.000000, 0.000000, 1.000000, 2136.000000, 1.000000, 0.000000, 1.000000), +(61, 3144.000000, 2515.000000, 1.000000, 3144.000000, 1.000000, 0.000000, 1.000000, 2201.000000, 1.000000, 0.000000, 1.000000), +(62, 3237.000000, 2590.000000, 1.000000, 3237.000000, 1.000000, 0.000000, 1.000000, 2266.000000, 1.000000, 0.000000, 1.000000), +(63, 3331.000000, 2665.000000, 1.000000, 3331.000000, 1.000000, 0.000000, 1.000000, 2332.000000, 1.000000, 0.000000, 1.000000), +(64, 3425.000000, 2740.000000, 1.000000, 3425.000000, 1.000000, 0.000000, 1.000000, 2398.000000, 1.000000, 0.000000, 1.000000), +(65, 3524.000000, 2819.000000, 1.000000, 3524.000000, 1.000000, 0.000000, 1.000000, 2467.000000, 1.000000, 0.000000, 1.000000), +(66, 3624.000000, 2899.000000, 1.000000, 3624.000000, 1.000000, 0.000000, 1.000000, 2537.000000, 1.000000, 0.000000, 1.000000), +(67, 3728.000000, 2982.000000, 1.000000, 3728.000000, 1.000000, 0.000000, 1.000000, 2610.000000, 1.000000, 0.000000, 1.000000), +(68, 3834.000000, 3067.000000, 1.000000, 3834.000000, 1.000000, 0.000000, 1.000000, 2684.000000, 1.000000, 0.000000, 1.000000), +(69, 3941.000000, 3153.000000, 1.000000, 3941.000000, 1.000000, 0.000000, 1.000000, 2759.000000, 1.000000, 0.000000, 1.000000), +(70, 4050.000000, 3240.000000, 1.000000, 4050.000000, 1.000000, 0.000000, 1.000000, 2835.000000, 1.000000, 0.000000, 1.000000), +(71, 4163.000000, 3330.000000, 1.000000, 4163.000000, 1.000000, 0.000000, 1.000000, 2914.000000, 1.000000, 0.000000, 1.000000), +(72, 4278.000000, 3422.000000, 1.000000, 4278.000000, 1.000000, 0.000000, 1.000000, 2995.000000, 1.000000, 0.000000, 1.000000), +(73, 4399.000000, 3519.000000, 1.000000, 4399.000000, 1.000000, 0.000000, 1.000000, 3079.000000, 1.000000, 0.000000, 1.000000), +(74, 4524.000000, 3619.000000, 1.000000, 4524.000000, 1.000000, 0.000000, 1.000000, 3167.000000, 1.000000, 0.000000, 1.000000), +(75, 4652.000000, 3722.000000, 1.000000, 4652.000000, 1.000000, 0.000000, 1.000000, 3256.000000, 1.000000, 0.000000, 1.000000), +(76, 4781.000000, 3825.000000, 1.000000, 4781.000000, 1.000000, 0.000000, 1.000000, 3347.000000, 1.000000, 0.000000, 1.000000), +(77, 4916.000000, 3933.000000, 1.000000, 4916.000000, 1.000000, 0.000000, 1.000000, 3441.000000, 1.000000, 0.000000, 1.000000), +(78, 5052.000000, 4042.000000, 1.000000, 5052.000000, 1.000000, 0.000000, 1.000000, 3536.000000, 1.000000, 0.000000, 1.000000), +(79, 5194.000000, 4155.000000, 1.000000, 5194.000000, 1.000000, 0.000000, 1.000000, 3636.000000, 1.000000, 0.000000, 1.000000), +(80, 5342.000000, 4274.000000, 1.000000, 5342.000000, 1.000000, 0.000000, 1.000000, 3739.000000, 1.000000, 0.000000, 1.000000), +(81, 5492.000000, 4394.000000, 1.000000, 5492.000000, 1.000000, 0.000000, 1.000000, 3844.000000, 1.000000, 0.000000, 1.000000), +(82, 5647.000000, 4518.000000, 1.000000, 5647.000000, 1.000000, 0.000000, 1.000000, 3953.000000, 1.000000, 0.000000, 1.000000), +(83, 5808.000000, 4646.000000, 1.000000, 5808.000000, 1.000000, 0.000000, 1.000000, 4066.000000, 1.000000, 0.000000, 1.000000), +(84, 5971.000000, 4777.000000, 1.000000, 5971.000000, 1.000000, 0.000000, 1.000000, 4180.000000, 1.000000, 0.000000, 1.000000), +(85, 6141.000000, 4913.000000, 1.000000, 6141.000000, 1.000000, 0.000000, 1.000000, 4299.000000, 1.000000, 0.000000, 1.000000), +(86, 6316.000000, 5053.000000, 1.000000, 6316.000000, 1.000000, 0.000000, 1.000000, 4421.000000, 1.000000, 0.000000, 1.000000), +(87, 6490.000000, 5192.000000, 1.000000, 6490.000000, 1.000000, 0.000000, 1.000000, 4543.000000, 1.000000, 0.000000, 1.000000), +(88, 6670.000000, 5336.000000, 1.000000, 6670.000000, 1.000000, 0.000000, 1.000000, 4669.000000, 1.000000, 0.000000, 1.000000), +(89, 6857.000000, 5486.000000, 1.000000, 6857.000000, 1.000000, 0.000000, 1.000000, 4800.000000, 1.000000, 0.000000, 1.000000), +(90, 7049.000000, 5639.000000, 1.000000, 7049.000000, 1.000000, 0.000000, 1.000000, 4934.000000, 1.000000, 0.000000, 1.000000), +(91, 7245.000000, 5796.000000, 1.000000, 7245.000000, 1.000000, 0.000000, 1.000000, 5072.000000, 1.000000, 0.000000, 1.000000), +(92, 7450.000000, 5960.000000, 1.000000, 7450.000000, 1.000000, 0.000000, 1.000000, 5215.000000, 1.000000, 0.000000, 1.000000), +(93, 7661.000000, 6129.000000, 1.000000, 7661.000000, 1.000000, 0.000000, 1.000000, 5363.000000, 1.000000, 0.000000, 1.000000), +(94, 7876.000000, 6301.000000, 1.000000, 7876.000000, 1.000000, 0.000000, 1.000000, 5513.000000, 1.000000, 0.000000, 1.000000), +(95, 8097.000000, 6478.000000, 1.000000, 8097.000000, 1.000000, 0.000000, 1.000000, 5668.000000, 1.000000, 0.000000, 1.000000), +(96, 8325.000000, 6660.000000, 1.000000, 8325.000000, 1.000000, 0.000000, 1.000000, 5828.000000, 1.000000, 0.000000, 1.000000), +(97, 8560.000000, 6848.000000, 1.000000, 8560.000000, 1.000000, 0.000000, 1.000000, 5992.000000, 1.000000, 0.000000, 1.000000), +(98, 8801.000000, 7041.000000, 1.000000, 8801.000000, 1.000000, 0.000000, 1.000000, 6161.000000, 1.000000, 0.000000, 1.000000), +(99, 9040.000000, 7232.000000, 1.000000, 9040.000000, 1.000000, 0.000000, 1.000000, 6328.000000, 1.000000, 0.000000, 1.000000), +(100, 9305.000000, 7444.000000, 1.000000, 9305.000000, 1.000000, 0.000000, 1.000000, 6514.000000, 1.000000, 0.000000, 1.000000); + +DROP TABLE IF EXISTS `gt_npc_total_hp_exp1`; +CREATE TABLE `gt_npc_total_hp_exp1` ( + `Level` TINYINT UNSIGNED NOT NULL, + `Warrior` FLOAT NOT NULL, + `Paladin` FLOAT NOT NULL, + `Hunter` FLOAT NOT NULL, + `Rogue` FLOAT NOT NULL, + `Priest` FLOAT NOT NULL, + `DeathKnight` FLOAT NOT NULL, + `Shaman` FLOAT NOT NULL, + `Mage` FLOAT NOT NULL, + `Warlock` FLOAT NOT NULL, + `Monk` FLOAT NOT NULL, + `Druid` FLOAT NOT NULL, + PRIMARY KEY (`Level`) +) ENGINE=INNODB CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +INSERT INTO `gt_npc_total_hp_exp1` (`Level`, `Warrior`, `Paladin`, `Hunter`, `Rogue`, `Priest`, `DeathKnight`, `Shaman`, `Mage`, `Warlock`, `Monk`, `Druid`) VALUES +(1, 42.000000, 41.000000, 1.000000, 42.000000, 1.000000, 0.000000, 1.000000, 40.000000, 1.000000, 0.000000, 1.000000), +(2, 55.000000, 54.000000, 1.000000, 55.000000, 1.000000, 0.000000, 1.000000, 52.000000, 1.000000, 0.000000, 1.000000), +(3, 71.000000, 69.000000, 1.000000, 71.000000, 1.000000, 0.000000, 1.000000, 67.000000, 1.000000, 0.000000, 1.000000), +(4, 86.000000, 83.000000, 1.000000, 86.000000, 1.000000, 0.000000, 1.000000, 81.000000, 1.000000, 0.000000, 1.000000), +(5, 102.000000, 98.000000, 1.000000, 102.000000, 1.000000, 0.000000, 1.000000, 95.000000, 1.000000, 0.000000, 1.000000), +(6, 120.000000, 115.000000, 1.000000, 120.000000, 1.000000, 0.000000, 1.000000, 111.000000, 1.000000, 0.000000, 1.000000), +(7, 137.000000, 131.000000, 1.000000, 137.000000, 1.000000, 0.000000, 1.000000, 126.000000, 1.000000, 0.000000, 1.000000), +(8, 156.000000, 148.000000, 1.000000, 156.000000, 1.000000, 0.000000, 1.000000, 143.000000, 1.000000, 0.000000, 1.000000), +(9, 176.000000, 166.000000, 1.000000, 176.000000, 1.000000, 0.000000, 1.000000, 160.000000, 1.000000, 0.000000, 1.000000), +(10, 198.000000, 186.000000, 1.000000, 198.000000, 1.000000, 0.000000, 1.000000, 178.000000, 1.000000, 0.000000, 1.000000), +(11, 222.000000, 208.000000, 1.000000, 222.000000, 1.000000, 0.000000, 1.000000, 199.000000, 1.000000, 0.000000, 1.000000), +(12, 247.000000, 230.000000, 1.000000, 247.000000, 1.000000, 0.000000, 1.000000, 219.000000, 1.000000, 0.000000, 1.000000), +(13, 273.000000, 253.000000, 1.000000, 273.000000, 1.000000, 0.000000, 1.000000, 241.000000, 1.000000, 0.000000, 1.000000), +(14, 300.000000, 276.000000, 1.000000, 300.000000, 1.000000, 0.000000, 1.000000, 263.000000, 1.000000, 0.000000, 1.000000), +(15, 328.000000, 301.000000, 1.000000, 328.000000, 1.000000, 0.000000, 1.000000, 285.000000, 1.000000, 0.000000, 1.000000), +(16, 356.000000, 325.000000, 1.000000, 356.000000, 1.000000, 0.000000, 1.000000, 307.000000, 1.000000, 0.000000, 1.000000), +(17, 386.000000, 350.000000, 1.000000, 386.000000, 1.000000, 0.000000, 1.000000, 330.000000, 1.000000, 0.000000, 1.000000), +(18, 417.000000, 377.000000, 1.000000, 417.000000, 1.000000, 0.000000, 1.000000, 354.000000, 1.000000, 0.000000, 1.000000), +(19, 449.000000, 404.000000, 1.000000, 449.000000, 1.000000, 0.000000, 1.000000, 379.000000, 1.000000, 0.000000, 1.000000), +(20, 484.000000, 433.000000, 1.000000, 484.000000, 1.000000, 0.000000, 1.000000, 405.000000, 1.000000, 0.000000, 1.000000), +(21, 521.000000, 464.000000, 1.000000, 521.000000, 1.000000, 0.000000, 1.000000, 432.000000, 1.000000, 0.000000, 1.000000), +(22, 562.000000, 498.000000, 1.000000, 562.000000, 1.000000, 0.000000, 1.000000, 463.000000, 1.000000, 0.000000, 1.000000), +(23, 605.000000, 533.000000, 1.000000, 605.000000, 1.000000, 0.000000, 1.000000, 494.000000, 1.000000, 0.000000, 1.000000), +(24, 651.000000, 571.000000, 1.000000, 651.000000, 1.000000, 0.000000, 1.000000, 528.000000, 1.000000, 0.000000, 1.000000), +(25, 699.000000, 610.000000, 1.000000, 699.000000, 1.000000, 0.000000, 1.000000, 562.000000, 1.000000, 0.000000, 1.000000), +(26, 750.000000, 651.000000, 1.000000, 750.000000, 1.000000, 0.000000, 1.000000, 598.000000, 1.000000, 0.000000, 1.000000), +(27, 800.000000, 690.000000, 1.000000, 800.000000, 1.000000, 0.000000, 1.000000, 633.000000, 1.000000, 0.000000, 1.000000), +(28, 853.000000, 732.000000, 1.000000, 853.000000, 1.000000, 0.000000, 1.000000, 669.000000, 1.000000, 0.000000, 1.000000), +(29, 905.000000, 773.000000, 1.000000, 905.000000, 1.000000, 0.000000, 1.000000, 704.000000, 1.000000, 0.000000, 1.000000), +(30, 955.000000, 811.000000, 1.000000, 955.000000, 1.000000, 0.000000, 1.000000, 737.000000, 1.000000, 0.000000, 1.000000), +(31, 1006.000000, 850.000000, 1.000000, 1006.000000, 1.000000, 0.000000, 1.000000, 770.000000, 1.000000, 0.000000, 1.000000), +(32, 1057.000000, 888.000000, 1.000000, 1057.000000, 1.000000, 0.000000, 1.000000, 802.000000, 1.000000, 0.000000, 1.000000), +(33, 1110.000000, 928.000000, 1.000000, 1110.000000, 1.000000, 0.000000, 1.000000, 835.000000, 1.000000, 0.000000, 1.000000), +(34, 1163.000000, 967.000000, 1.000000, 1163.000000, 1.000000, 0.000000, 1.000000, 867.000000, 1.000000, 0.000000, 1.000000), +(35, 1220.000000, 1009.000000, 1.000000, 1220.000000, 1.000000, 0.000000, 1.000000, 902.000000, 1.000000, 0.000000, 1.000000), +(36, 1277.000000, 1050.000000, 1.000000, 1277.000000, 1.000000, 0.000000, 1.000000, 935.000000, 1.000000, 0.000000, 1.000000), +(37, 1336.000000, 1093.000000, 1.000000, 1336.000000, 1.000000, 0.000000, 1.000000, 970.000000, 1.000000, 0.000000, 1.000000), +(38, 1395.000000, 1135.000000, 1.000000, 1395.000000, 1.000000, 0.000000, 1.000000, 1004.000000, 1.000000, 0.000000, 1.000000), +(39, 1459.000000, 1180.000000, 1.000000, 1459.000000, 1.000000, 0.000000, 1.000000, 1040.000000, 1.000000, 0.000000, 1.000000), +(40, 1524.000000, 1226.000000, 1.000000, 1524.000000, 1.000000, 0.000000, 1.000000, 1077.000000, 1.000000, 0.000000, 1.000000), +(41, 1585.000000, 1268.000000, 1.000000, 1585.000000, 1.000000, 0.000000, 1.000000, 1110.000000, 1.000000, 0.000000, 1.000000), +(42, 1651.000000, 1321.000000, 1.000000, 1651.000000, 1.000000, 0.000000, 1.000000, 1156.000000, 1.000000, 0.000000, 1.000000), +(43, 1716.000000, 1373.000000, 1.000000, 1716.000000, 1.000000, 0.000000, 1.000000, 1201.000000, 1.000000, 0.000000, 1.000000), +(44, 1782.000000, 1426.000000, 1.000000, 1782.000000, 1.000000, 0.000000, 1.000000, 1247.000000, 1.000000, 0.000000, 1.000000), +(45, 1848.000000, 1478.000000, 1.000000, 1848.000000, 1.000000, 0.000000, 1.000000, 1294.000000, 1.000000, 0.000000, 1.000000), +(46, 1919.000000, 1535.000000, 1.000000, 1919.000000, 1.000000, 0.000000, 1.000000, 1343.000000, 1.000000, 0.000000, 1.000000), +(47, 1990.000000, 1592.000000, 1.000000, 1990.000000, 1.000000, 0.000000, 1.000000, 1393.000000, 1.000000, 0.000000, 1.000000), +(48, 2062.000000, 1650.000000, 1.000000, 2062.000000, 1.000000, 0.000000, 1.000000, 1443.000000, 1.000000, 0.000000, 1.000000), +(49, 2138.000000, 1710.000000, 1.000000, 2138.000000, 1.000000, 0.000000, 1.000000, 1497.000000, 1.000000, 0.000000, 1.000000), +(50, 2215.000000, 1772.000000, 1.000000, 2215.000000, 1.000000, 0.000000, 1.000000, 1551.000000, 1.000000, 0.000000, 1.000000), +(51, 2292.000000, 1834.000000, 1.000000, 2292.000000, 1.000000, 0.000000, 1.000000, 1604.000000, 1.000000, 0.000000, 1.000000), +(52, 2371.000000, 1897.000000, 1.000000, 2371.000000, 1.000000, 0.000000, 1.000000, 1660.000000, 1.000000, 0.000000, 1.000000), +(53, 2453.000000, 1962.000000, 1.000000, 2453.000000, 1.000000, 0.000000, 1.000000, 1717.000000, 1.000000, 0.000000, 1.000000), +(54, 2533.000000, 2026.000000, 1.000000, 2533.000000, 1.000000, 0.000000, 1.000000, 1773.000000, 1.000000, 0.000000, 1.000000), +(55, 2614.000000, 2091.000000, 1.000000, 2614.000000, 1.000000, 0.000000, 1.000000, 1830.000000, 1.000000, 0.000000, 1.000000), +(56, 2699.000000, 2159.000000, 1.000000, 2699.000000, 1.000000, 0.000000, 1.000000, 1889.000000, 1.000000, 0.000000, 1.000000), +(57, 2784.000000, 2227.000000, 1.000000, 2784.000000, 1.000000, 0.000000, 1.000000, 1949.000000, 1.000000, 0.000000, 1.000000), +(58, 3989.000000, 3191.000000, 1.000000, 3989.000000, 1.000000, 0.000000, 1.000000, 2792.000000, 1.000000, 0.000000, 1.000000), +(59, 4142.000000, 3313.000000, 1.000000, 4142.000000, 1.000000, 0.000000, 1.000000, 2899.000000, 1.000000, 0.000000, 1.000000), +(60, 4979.000000, 3984.000000, 1.000000, 4979.000000, 1.000000, 0.000000, 1.000000, 3484.000000, 1.000000, 0.000000, 1.000000), +(61, 5158.000000, 4126.000000, 1.000000, 5158.000000, 1.000000, 0.000000, 1.000000, 3611.000000, 1.000000, 0.000000, 1.000000), +(62, 5341.000000, 4274.000000, 1.000000, 5341.000000, 1.000000, 0.000000, 1.000000, 3739.000000, 1.000000, 0.000000, 1.000000), +(63, 5527.000000, 4422.000000, 1.000000, 5527.000000, 1.000000, 0.000000, 1.000000, 3870.000000, 1.000000, 0.000000, 1.000000), +(64, 5715.000000, 4572.000000, 1.000000, 5715.000000, 1.000000, 0.000000, 1.000000, 4002.000000, 1.000000, 0.000000, 1.000000), +(65, 5914.000000, 4731.000000, 1.000000, 5914.000000, 1.000000, 0.000000, 1.000000, 4140.000000, 1.000000, 0.000000, 1.000000), +(66, 6116.000000, 4892.000000, 1.000000, 6116.000000, 1.000000, 0.000000, 1.000000, 4281.000000, 1.000000, 0.000000, 1.000000), +(67, 6326.000000, 5060.000000, 1.000000, 6326.000000, 1.000000, 0.000000, 1.000000, 4429.000000, 1.000000, 0.000000, 1.000000), +(68, 6542.000000, 5233.000000, 1.000000, 6542.000000, 1.000000, 0.000000, 1.000000, 4580.000000, 1.000000, 0.000000, 1.000000), +(69, 6761.000000, 5409.000000, 1.000000, 6761.000000, 1.000000, 0.000000, 1.000000, 4733.000000, 1.000000, 0.000000, 1.000000), +(70, 6986.000000, 5589.000000, 1.000000, 6986.000000, 1.000000, 0.000000, 1.000000, 4890.000000, 1.000000, 0.000000, 1.000000), +(71, 7181.000000, 5744.000000, 1.000000, 7181.000000, 1.000000, 0.000000, 1.000000, 5027.000000, 1.000000, 0.000000, 1.000000), +(72, 7380.000000, 5903.000000, 1.000000, 7380.000000, 1.000000, 0.000000, 1.000000, 5166.000000, 1.000000, 0.000000, 1.000000), +(73, 7588.000000, 6070.000000, 1.000000, 7588.000000, 1.000000, 0.000000, 1.000000, 5311.000000, 1.000000, 0.000000, 1.000000), +(74, 7804.000000, 6243.000000, 1.000000, 7804.000000, 1.000000, 0.000000, 1.000000, 5463.000000, 1.000000, 0.000000, 1.000000), +(75, 8025.000000, 6420.000000, 1.000000, 8025.000000, 1.000000, 0.000000, 1.000000, 5617.000000, 1.000000, 0.000000, 1.000000), +(76, 8247.000000, 6598.000000, 1.000000, 8247.000000, 1.000000, 0.000000, 1.000000, 5774.000000, 1.000000, 0.000000, 1.000000), +(77, 8480.000000, 6784.000000, 1.000000, 8480.000000, 1.000000, 0.000000, 1.000000, 5936.000000, 1.000000, 0.000000, 1.000000), +(78, 8715.000000, 6972.000000, 1.000000, 8715.000000, 1.000000, 0.000000, 1.000000, 6100.000000, 1.000000, 0.000000, 1.000000), +(79, 8960.000000, 7167.000000, 1.000000, 8960.000000, 1.000000, 0.000000, 1.000000, 6272.000000, 1.000000, 0.000000, 1.000000), +(80, 9215.000000, 7373.000000, 1.000000, 9215.000000, 1.000000, 0.000000, 1.000000, 6450.000000, 1.000000, 0.000000, 1.000000), +(81, 9474.000000, 7580.000000, 1.000000, 9474.000000, 1.000000, 0.000000, 1.000000, 6631.000000, 1.000000, 0.000000, 1.000000), +(82, 9741.000000, 7794.000000, 1.000000, 9741.000000, 1.000000, 0.000000, 1.000000, 6819.000000, 1.000000, 0.000000, 1.000000), +(83, 10019.000000, 8014.000000, 1.000000, 10019.000000, 1.000000, 0.000000, 1.000000, 7014.000000, 1.000000, 0.000000, 1.000000), +(84, 10300.000000, 8240.000000, 1.000000, 10300.000000, 1.000000, 0.000000, 1.000000, 7211.000000, 1.000000, 0.000000, 1.000000), +(85, 10593.000000, 8475.000000, 1.000000, 10593.000000, 1.000000, 0.000000, 1.000000, 7416.000000, 1.000000, 0.000000, 1.000000), +(86, 10895.000000, 8716.000000, 1.000000, 10895.000000, 1.000000, 0.000000, 1.000000, 7626.000000, 1.000000, 0.000000, 1.000000), +(87, 11195.000000, 8956.000000, 1.000000, 11195.000000, 1.000000, 0.000000, 1.000000, 7837.000000, 1.000000, 0.000000, 1.000000), +(88, 11506.000000, 9205.000000, 1.000000, 11506.000000, 1.000000, 0.000000, 1.000000, 8054.000000, 1.000000, 0.000000, 1.000000), +(89, 11828.000000, 9463.000000, 1.000000, 11828.000000, 1.000000, 0.000000, 1.000000, 8280.000000, 1.000000, 0.000000, 1.000000), +(90, 12160.000000, 9727.000000, 1.000000, 12160.000000, 1.000000, 0.000000, 1.000000, 8511.000000, 1.000000, 0.000000, 1.000000), +(91, 12498.000000, 9998.000000, 1.000000, 12498.000000, 1.000000, 0.000000, 1.000000, 8749.000000, 1.000000, 0.000000, 1.000000), +(92, 12851.000000, 10281.000000, 1.000000, 12851.000000, 1.000000, 0.000000, 1.000000, 8996.000000, 1.000000, 0.000000, 1.000000), +(93, 13215.000000, 10573.000000, 1.000000, 13215.000000, 1.000000, 0.000000, 1.000000, 9251.000000, 1.000000, 0.000000, 1.000000), +(94, 13586.000000, 10869.000000, 1.000000, 13586.000000, 1.000000, 0.000000, 1.000000, 9510.000000, 1.000000, 0.000000, 1.000000), +(95, 13967.000000, 11175.000000, 1.000000, 13967.000000, 1.000000, 0.000000, 1.000000, 9777.000000, 1.000000, 0.000000, 1.000000), +(96, 14361.000000, 11489.000000, 1.000000, 14361.000000, 1.000000, 0.000000, 1.000000, 10053.000000, 1.000000, 0.000000, 1.000000), +(97, 14766.000000, 11813.000000, 1.000000, 14766.000000, 1.000000, 0.000000, 1.000000, 10336.000000, 1.000000, 0.000000, 1.000000), +(98, 15182.000000, 12146.000000, 1.000000, 15182.000000, 1.000000, 0.000000, 1.000000, 10628.000000, 1.000000, 0.000000, 1.000000), +(99, 15594.000000, 12475.000000, 1.000000, 15594.000000, 1.000000, 0.000000, 1.000000, 10916.000000, 1.000000, 0.000000, 1.000000), +(100, 16051.000000, 12841.000000, 1.000000, 16051.000000, 1.000000, 0.000000, 1.000000, 11237.000000, 1.000000, 0.000000, 1.000000); + +DROP TABLE IF EXISTS `gt_npc_total_hp_exp2`; +CREATE TABLE `gt_npc_total_hp_exp2` ( + `Level` TINYINT UNSIGNED NOT NULL, + `Warrior` FLOAT NOT NULL, + `Paladin` FLOAT NOT NULL, + `Hunter` FLOAT NOT NULL, + `Rogue` FLOAT NOT NULL, + `Priest` FLOAT NOT NULL, + `DeathKnight` FLOAT NOT NULL, + `Shaman` FLOAT NOT NULL, + `Mage` FLOAT NOT NULL, + `Warlock` FLOAT NOT NULL, + `Monk` FLOAT NOT NULL, + `Druid` FLOAT NOT NULL, + PRIMARY KEY (`Level`) +) ENGINE=INNODB CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +INSERT INTO `gt_npc_total_hp_exp2` (`Level`, `Warrior`, `Paladin`, `Hunter`, `Rogue`, `Priest`, `DeathKnight`, `Shaman`, `Mage`, `Warlock`, `Monk`, `Druid`) VALUES +(1, 42.000000, 42.000000, 1.000000, 42.000000, 1.000000, 0.000000, 1.000000, 41.000000, 1.000000, 0.000000, 1.000000), +(2, 55.000000, 55.000000, 1.000000, 55.000000, 1.000000, 0.000000, 1.000000, 54.000000, 1.000000, 0.000000, 1.000000), +(3, 71.000000, 71.000000, 1.000000, 71.000000, 1.000000, 0.000000, 1.000000, 69.000000, 1.000000, 0.000000, 1.000000), +(4, 86.000000, 86.000000, 1.000000, 86.000000, 1.000000, 0.000000, 1.000000, 83.000000, 1.000000, 0.000000, 1.000000), +(5, 102.000000, 102.000000, 1.000000, 102.000000, 1.000000, 0.000000, 1.000000, 98.000000, 1.000000, 0.000000, 1.000000), +(6, 120.000000, 120.000000, 1.000000, 120.000000, 1.000000, 0.000000, 1.000000, 115.000000, 1.000000, 0.000000, 1.000000), +(7, 137.000000, 137.000000, 1.000000, 137.000000, 1.000000, 0.000000, 1.000000, 131.000000, 1.000000, 0.000000, 1.000000), +(8, 156.000000, 156.000000, 1.000000, 156.000000, 1.000000, 0.000000, 1.000000, 148.000000, 1.000000, 0.000000, 1.000000), +(9, 176.000000, 176.000000, 1.000000, 176.000000, 1.000000, 0.000000, 1.000000, 166.000000, 1.000000, 0.000000, 1.000000), +(10, 198.000000, 198.000000, 1.000000, 198.000000, 1.000000, 0.000000, 1.000000, 186.000000, 1.000000, 0.000000, 1.000000), +(11, 222.000000, 222.000000, 1.000000, 222.000000, 1.000000, 0.000000, 1.000000, 208.000000, 1.000000, 0.000000, 1.000000), +(12, 247.000000, 247.000000, 1.000000, 247.000000, 1.000000, 0.000000, 1.000000, 230.000000, 1.000000, 0.000000, 1.000000), +(13, 273.000000, 273.000000, 1.000000, 273.000000, 1.000000, 0.000000, 1.000000, 253.000000, 1.000000, 0.000000, 1.000000), +(14, 300.000000, 300.000000, 1.000000, 300.000000, 1.000000, 0.000000, 1.000000, 276.000000, 1.000000, 0.000000, 1.000000), +(15, 328.000000, 328.000000, 1.000000, 328.000000, 1.000000, 0.000000, 1.000000, 301.000000, 1.000000, 0.000000, 1.000000), +(16, 356.000000, 356.000000, 1.000000, 356.000000, 1.000000, 0.000000, 1.000000, 325.000000, 1.000000, 0.000000, 1.000000), +(17, 386.000000, 386.000000, 1.000000, 386.000000, 1.000000, 0.000000, 1.000000, 350.000000, 1.000000, 0.000000, 1.000000), +(18, 417.000000, 417.000000, 1.000000, 417.000000, 1.000000, 0.000000, 1.000000, 377.000000, 1.000000, 0.000000, 1.000000), +(19, 449.000000, 449.000000, 1.000000, 449.000000, 1.000000, 0.000000, 1.000000, 404.000000, 1.000000, 0.000000, 1.000000), +(20, 484.000000, 484.000000, 1.000000, 484.000000, 1.000000, 0.000000, 1.000000, 433.000000, 1.000000, 0.000000, 1.000000), +(21, 521.000000, 521.000000, 1.000000, 521.000000, 1.000000, 0.000000, 1.000000, 464.000000, 1.000000, 0.000000, 1.000000), +(22, 562.000000, 562.000000, 1.000000, 562.000000, 1.000000, 0.000000, 1.000000, 498.000000, 1.000000, 0.000000, 1.000000), +(23, 605.000000, 605.000000, 1.000000, 605.000000, 1.000000, 0.000000, 1.000000, 533.000000, 1.000000, 0.000000, 1.000000), +(24, 651.000000, 651.000000, 1.000000, 651.000000, 1.000000, 0.000000, 1.000000, 571.000000, 1.000000, 0.000000, 1.000000), +(25, 699.000000, 699.000000, 1.000000, 699.000000, 1.000000, 0.000000, 1.000000, 610.000000, 1.000000, 0.000000, 1.000000), +(26, 750.000000, 750.000000, 1.000000, 750.000000, 1.000000, 0.000000, 1.000000, 651.000000, 1.000000, 0.000000, 1.000000), +(27, 800.000000, 800.000000, 1.000000, 800.000000, 1.000000, 0.000000, 1.000000, 690.000000, 1.000000, 0.000000, 1.000000), +(28, 853.000000, 853.000000, 1.000000, 853.000000, 1.000000, 0.000000, 1.000000, 732.000000, 1.000000, 0.000000, 1.000000), +(29, 905.000000, 905.000000, 1.000000, 905.000000, 1.000000, 0.000000, 1.000000, 773.000000, 1.000000, 0.000000, 1.000000), +(30, 955.000000, 955.000000, 1.000000, 955.000000, 1.000000, 0.000000, 1.000000, 811.000000, 1.000000, 0.000000, 1.000000), +(31, 1006.000000, 1006.000000, 1.000000, 1006.000000, 1.000000, 0.000000, 1.000000, 850.000000, 1.000000, 0.000000, 1.000000), +(32, 1057.000000, 1057.000000, 1.000000, 1057.000000, 1.000000, 0.000000, 1.000000, 888.000000, 1.000000, 0.000000, 1.000000), +(33, 1110.000000, 1110.000000, 1.000000, 1110.000000, 1.000000, 0.000000, 1.000000, 928.000000, 1.000000, 0.000000, 1.000000), +(34, 1163.000000, 1163.000000, 1.000000, 1163.000000, 1.000000, 0.000000, 1.000000, 967.000000, 1.000000, 0.000000, 1.000000), +(35, 1220.000000, 1220.000000, 1.000000, 1220.000000, 1.000000, 0.000000, 1.000000, 1009.000000, 1.000000, 0.000000, 1.000000), +(36, 1277.000000, 1277.000000, 1.000000, 1277.000000, 1.000000, 0.000000, 1.000000, 1050.000000, 1.000000, 0.000000, 1.000000), +(37, 1336.000000, 1336.000000, 1.000000, 1336.000000, 1.000000, 0.000000, 1.000000, 1093.000000, 1.000000, 0.000000, 1.000000), +(38, 1395.000000, 1395.000000, 1.000000, 1395.000000, 1.000000, 0.000000, 1.000000, 1135.000000, 1.000000, 0.000000, 1.000000), +(39, 1459.000000, 1459.000000, 1.000000, 1459.000000, 1.000000, 0.000000, 1.000000, 1180.000000, 1.000000, 0.000000, 1.000000), +(40, 1524.000000, 1524.000000, 1.000000, 1524.000000, 1.000000, 0.000000, 1.000000, 1226.000000, 1.000000, 0.000000, 1.000000), +(41, 1585.000000, 1585.000000, 1.000000, 1585.000000, 1.000000, 0.000000, 1.000000, 1268.000000, 1.000000, 0.000000, 1.000000), +(42, 1651.000000, 1651.000000, 1.000000, 1651.000000, 1.000000, 0.000000, 1.000000, 1321.000000, 1.000000, 0.000000, 1.000000), +(43, 1716.000000, 1716.000000, 1.000000, 1716.000000, 1.000000, 0.000000, 1.000000, 1373.000000, 1.000000, 0.000000, 1.000000), +(44, 1782.000000, 1782.000000, 1.000000, 1782.000000, 1.000000, 0.000000, 1.000000, 1426.000000, 1.000000, 0.000000, 1.000000), +(45, 1848.000000, 1848.000000, 1.000000, 1848.000000, 1.000000, 0.000000, 1.000000, 1478.000000, 1.000000, 0.000000, 1.000000), +(46, 1919.000000, 1919.000000, 1.000000, 1919.000000, 1.000000, 0.000000, 1.000000, 1535.000000, 1.000000, 0.000000, 1.000000), +(47, 1990.000000, 1990.000000, 1.000000, 1990.000000, 1.000000, 0.000000, 1.000000, 1592.000000, 1.000000, 0.000000, 1.000000), +(48, 2062.000000, 2062.000000, 1.000000, 2062.000000, 1.000000, 0.000000, 1.000000, 1650.000000, 1.000000, 0.000000, 1.000000), +(49, 2138.000000, 2138.000000, 1.000000, 2138.000000, 1.000000, 0.000000, 1.000000, 1710.000000, 1.000000, 0.000000, 1.000000), +(50, 2215.000000, 2215.000000, 1.000000, 2215.000000, 1.000000, 0.000000, 1.000000, 1772.000000, 1.000000, 0.000000, 1.000000), +(51, 2292.000000, 2292.000000, 1.000000, 2292.000000, 1.000000, 0.000000, 1.000000, 1834.000000, 1.000000, 0.000000, 1.000000), +(52, 2371.000000, 2371.000000, 1.000000, 2371.000000, 1.000000, 0.000000, 1.000000, 1897.000000, 1.000000, 0.000000, 1.000000), +(53, 2453.000000, 2453.000000, 1.000000, 2453.000000, 1.000000, 0.000000, 1.000000, 1962.000000, 1.000000, 0.000000, 1.000000), +(54, 2533.000000, 2533.000000, 1.000000, 2533.000000, 1.000000, 0.000000, 1.000000, 2026.000000, 1.000000, 0.000000, 1.000000), +(55, 2614.000000, 2614.000000, 1.000000, 2614.000000, 1.000000, 0.000000, 1.000000, 2091.000000, 1.000000, 0.000000, 1.000000), +(56, 2699.000000, 2699.000000, 1.000000, 2699.000000, 1.000000, 0.000000, 1.000000, 2159.000000, 1.000000, 0.000000, 1.000000), +(57, 2784.000000, 2784.000000, 1.000000, 2784.000000, 1.000000, 0.000000, 1.000000, 2227.000000, 1.000000, 0.000000, 1.000000), +(58, 3989.000000, 3989.000000, 1.000000, 3989.000000, 1.000000, 0.000000, 1.000000, 3191.000000, 1.000000, 0.000000, 1.000000), +(59, 4142.000000, 4142.000000, 1.000000, 4142.000000, 1.000000, 0.000000, 1.000000, 3313.000000, 1.000000, 0.000000, 1.000000), +(60, 4979.000000, 4979.000000, 1.000000, 4979.000000, 1.000000, 0.000000, 1.000000, 3984.000000, 1.000000, 0.000000, 1.000000), +(61, 5158.000000, 5158.000000, 1.000000, 5158.000000, 1.000000, 0.000000, 1.000000, 4126.000000, 1.000000, 0.000000, 1.000000), +(62, 5341.000000, 5341.000000, 1.000000, 5341.000000, 1.000000, 0.000000, 1.000000, 4272.000000, 1.000000, 0.000000, 1.000000), +(63, 5527.000000, 5527.000000, 1.000000, 5527.000000, 1.000000, 0.000000, 1.000000, 4421.000000, 1.000000, 0.000000, 1.000000), +(64, 5715.000000, 5715.000000, 1.000000, 5715.000000, 1.000000, 0.000000, 1.000000, 4572.000000, 1.000000, 0.000000, 1.000000), +(65, 5914.000000, 5914.000000, 1.000000, 5914.000000, 1.000000, 0.000000, 1.000000, 4731.000000, 1.000000, 0.000000, 1.000000), +(66, 6116.000000, 6116.000000, 1.000000, 6116.000000, 1.000000, 0.000000, 1.000000, 4892.000000, 1.000000, 0.000000, 1.000000), +(67, 6326.000000, 6326.000000, 1.000000, 6326.000000, 1.000000, 0.000000, 1.000000, 5060.000000, 1.000000, 0.000000, 1.000000), +(68, 6986.000000, 6986.000000, 1.000000, 6986.000000, 1.000000, 0.000000, 1.000000, 5588.000000, 1.000000, 0.000000, 1.000000), +(69, 7984.000000, 7984.000000, 1.000000, 7984.000000, 1.000000, 0.000000, 1.000000, 6387.000000, 1.000000, 0.000000, 1.000000), +(70, 8982.000000, 8982.000000, 1.000000, 8982.000000, 1.000000, 0.000000, 1.000000, 7185.000000, 1.000000, 0.000000, 1.000000), +(71, 9291.000000, 9291.000000, 1.000000, 9291.000000, 1.000000, 0.000000, 1.000000, 7432.000000, 1.000000, 0.000000, 1.000000), +(72, 9610.000000, 9610.000000, 1.000000, 9610.000000, 1.000000, 0.000000, 1.000000, 7688.000000, 1.000000, 0.000000, 1.000000), +(73, 9940.000000, 9940.000000, 1.000000, 9940.000000, 1.000000, 0.000000, 1.000000, 7952.000000, 1.000000, 0.000000, 1.000000), +(74, 10282.000000, 10282.000000, 1.000000, 10282.000000, 1.000000, 0.000000, 1.000000, 8225.000000, 1.000000, 0.000000, 1.000000), +(75, 10635.000000, 10635.000000, 1.000000, 10635.000000, 1.000000, 0.000000, 1.000000, 8508.000000, 1.000000, 0.000000, 1.000000), +(76, 11001.000000, 11001.000000, 1.000000, 11001.000000, 1.000000, 0.000000, 1.000000, 8800.000000, 1.000000, 0.000000, 1.000000), +(77, 11379.000000, 11379.000000, 1.000000, 11379.000000, 1.000000, 0.000000, 1.000000, 9103.000000, 1.000000, 0.000000, 1.000000), +(78, 11770.000000, 11770.000000, 1.000000, 11770.000000, 1.000000, 0.000000, 1.000000, 9416.000000, 1.000000, 0.000000, 1.000000), +(79, 12175.000000, 12175.000000, 1.000000, 12175.000000, 1.000000, 0.000000, 1.000000, 9740.000000, 1.000000, 0.000000, 1.000000), +(80, 12600.000000, 12600.000000, 1.000000, 12600.000000, 1.000000, 0.000000, 1.000000, 10080.000000, 1.000000, 0.000000, 1.000000), +(81, 13033.000000, 13033.000000, 1.000000, 13033.000000, 1.000000, 0.000000, 1.000000, 10426.000000, 1.000000, 0.000000, 1.000000), +(82, 13481.000000, 13481.000000, 1.000000, 13481.000000, 1.000000, 0.000000, 1.000000, 10784.000000, 1.000000, 0.000000, 1.000000), +(83, 13945.000000, 13945.000000, 1.000000, 13945.000000, 1.000000, 0.000000, 1.000000, 11156.000000, 1.000000, 0.000000, 1.000000), +(84, 14424.000000, 14424.000000, 1.000000, 14424.000000, 1.000000, 0.000000, 1.000000, 11539.000000, 1.000000, 0.000000, 1.000000), +(85, 14921.000000, 14921.000000, 1.000000, 14921.000000, 1.000000, 0.000000, 1.000000, 11936.000000, 1.000000, 0.000000, 1.000000), +(86, 15435.000000, 15435.000000, 1.000000, 15435.000000, 1.000000, 0.000000, 1.000000, 12348.000000, 1.000000, 0.000000, 1.000000), +(87, 15966.000000, 15966.000000, 1.000000, 15966.000000, 1.000000, 0.000000, 1.000000, 12772.000000, 1.000000, 0.000000, 1.000000), +(88, 16515.000000, 16515.000000, 1.000000, 16515.000000, 1.000000, 0.000000, 1.000000, 13212.000000, 1.000000, 0.000000, 1.000000), +(89, 17084.000000, 17084.000000, 1.000000, 17084.000000, 1.000000, 0.000000, 1.000000, 13667.000000, 1.000000, 0.000000, 1.000000), +(90, 17672.000000, 17672.000000, 1.000000, 17672.000000, 1.000000, 0.000000, 1.000000, 14137.000000, 1.000000, 0.000000, 1.000000), +(91, 18280.000000, 18280.000000, 1.000000, 18280.000000, 1.000000, 0.000000, 1.000000, 14624.000000, 1.000000, 0.000000, 1.000000), +(92, 18909.000000, 18909.000000, 1.000000, 18909.000000, 1.000000, 0.000000, 1.000000, 15127.000000, 1.000000, 0.000000, 1.000000), +(93, 19560.000000, 19560.000000, 1.000000, 19560.000000, 1.000000, 0.000000, 1.000000, 15648.000000, 1.000000, 0.000000, 1.000000), +(94, 20233.000000, 20233.000000, 1.000000, 20233.000000, 1.000000, 0.000000, 1.000000, 16186.000000, 1.000000, 0.000000, 1.000000), +(95, 20930.000000, 20930.000000, 1.000000, 20930.000000, 1.000000, 0.000000, 1.000000, 16744.000000, 1.000000, 0.000000, 1.000000), +(96, 21650.000000, 21650.000000, 1.000000, 21650.000000, 1.000000, 0.000000, 1.000000, 17320.000000, 1.000000, 0.000000, 1.000000), +(97, 22395.000000, 22395.000000, 1.000000, 22395.000000, 1.000000, 0.000000, 1.000000, 17916.000000, 1.000000, 0.000000, 1.000000), +(98, 23166.000000, 23166.000000, 1.000000, 23166.000000, 1.000000, 0.000000, 1.000000, 18532.000000, 1.000000, 0.000000, 1.000000), +(99, 23964.000000, 23964.000000, 1.000000, 23964.000000, 1.000000, 0.000000, 1.000000, 19171.000000, 1.000000, 0.000000, 1.000000), +(100, 24788.000000, 24788.000000, 1.000000, 24788.000000, 1.000000, 0.000000, 1.000000, 19830.000000, 1.000000, 0.000000, 1.000000); + +DROP TABLE IF EXISTS `gt_npc_total_hp_exp3`; +CREATE TABLE `gt_npc_total_hp_exp3` ( + `Level` TINYINT UNSIGNED NOT NULL, + `Warrior` FLOAT NOT NULL, + `Paladin` FLOAT NOT NULL, + `Hunter` FLOAT NOT NULL, + `Rogue` FLOAT NOT NULL, + `Priest` FLOAT NOT NULL, + `DeathKnight` FLOAT NOT NULL, + `Shaman` FLOAT NOT NULL, + `Mage` FLOAT NOT NULL, + `Warlock` FLOAT NOT NULL, + `Monk` FLOAT NOT NULL, + `Druid` FLOAT NOT NULL, + PRIMARY KEY (`Level`) +) ENGINE=INNODB CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +INSERT INTO `gt_npc_total_hp_exp3` (`Level`, `Warrior`, `Paladin`, `Hunter`, `Rogue`, `Priest`, `DeathKnight`, `Shaman`, `Mage`, `Warlock`, `Monk`, `Druid`) VALUES +(1, 42.000000, 42.000000, 1.000000, 42.000000, 1.000000, 0.000000, 1.000000, 41.000000, 1.000000, 0.000000, 1.000000), +(2, 55.000000, 55.000000, 1.000000, 55.000000, 1.000000, 0.000000, 1.000000, 54.000000, 1.000000, 0.000000, 1.000000), +(3, 71.000000, 71.000000, 1.000000, 71.000000, 1.000000, 0.000000, 1.000000, 69.000000, 1.000000, 0.000000, 1.000000), +(4, 86.000000, 86.000000, 1.000000, 86.000000, 1.000000, 0.000000, 1.000000, 83.000000, 1.000000, 0.000000, 1.000000), +(5, 102.000000, 102.000000, 1.000000, 102.000000, 1.000000, 0.000000, 1.000000, 98.000000, 1.000000, 0.000000, 1.000000), +(6, 120.000000, 120.000000, 1.000000, 120.000000, 1.000000, 0.000000, 1.000000, 115.000000, 1.000000, 0.000000, 1.000000), +(7, 137.000000, 137.000000, 1.000000, 137.000000, 1.000000, 0.000000, 1.000000, 131.000000, 1.000000, 0.000000, 1.000000), +(8, 156.000000, 156.000000, 1.000000, 156.000000, 1.000000, 0.000000, 1.000000, 148.000000, 1.000000, 0.000000, 1.000000), +(9, 176.000000, 176.000000, 1.000000, 176.000000, 1.000000, 0.000000, 1.000000, 166.000000, 1.000000, 0.000000, 1.000000), +(10, 198.000000, 198.000000, 1.000000, 198.000000, 1.000000, 0.000000, 1.000000, 186.000000, 1.000000, 0.000000, 1.000000), +(11, 222.000000, 222.000000, 1.000000, 222.000000, 1.000000, 0.000000, 1.000000, 208.000000, 1.000000, 0.000000, 1.000000), +(12, 247.000000, 247.000000, 1.000000, 247.000000, 1.000000, 0.000000, 1.000000, 230.000000, 1.000000, 0.000000, 1.000000), +(13, 273.000000, 273.000000, 1.000000, 273.000000, 1.000000, 0.000000, 1.000000, 253.000000, 1.000000, 0.000000, 1.000000), +(14, 300.000000, 300.000000, 1.000000, 300.000000, 1.000000, 0.000000, 1.000000, 276.000000, 1.000000, 0.000000, 1.000000), +(15, 328.000000, 328.000000, 1.000000, 328.000000, 1.000000, 0.000000, 1.000000, 301.000000, 1.000000, 0.000000, 1.000000), +(16, 356.000000, 356.000000, 1.000000, 356.000000, 1.000000, 0.000000, 1.000000, 325.000000, 1.000000, 0.000000, 1.000000), +(17, 386.000000, 386.000000, 1.000000, 386.000000, 1.000000, 0.000000, 1.000000, 350.000000, 1.000000, 0.000000, 1.000000), +(18, 417.000000, 417.000000, 1.000000, 417.000000, 1.000000, 0.000000, 1.000000, 377.000000, 1.000000, 0.000000, 1.000000), +(19, 449.000000, 449.000000, 1.000000, 449.000000, 1.000000, 0.000000, 1.000000, 404.000000, 1.000000, 0.000000, 1.000000), +(20, 484.000000, 484.000000, 1.000000, 484.000000, 1.000000, 0.000000, 1.000000, 433.000000, 1.000000, 0.000000, 1.000000), +(21, 521.000000, 521.000000, 1.000000, 521.000000, 1.000000, 0.000000, 1.000000, 464.000000, 1.000000, 0.000000, 1.000000), +(22, 562.000000, 562.000000, 1.000000, 562.000000, 1.000000, 0.000000, 1.000000, 498.000000, 1.000000, 0.000000, 1.000000), +(23, 605.000000, 605.000000, 1.000000, 605.000000, 1.000000, 0.000000, 1.000000, 533.000000, 1.000000, 0.000000, 1.000000), +(24, 651.000000, 651.000000, 1.000000, 651.000000, 1.000000, 0.000000, 1.000000, 571.000000, 1.000000, 0.000000, 1.000000), +(25, 699.000000, 699.000000, 1.000000, 699.000000, 1.000000, 0.000000, 1.000000, 610.000000, 1.000000, 0.000000, 1.000000), +(26, 750.000000, 750.000000, 1.000000, 750.000000, 1.000000, 0.000000, 1.000000, 651.000000, 1.000000, 0.000000, 1.000000), +(27, 800.000000, 800.000000, 1.000000, 800.000000, 1.000000, 0.000000, 1.000000, 690.000000, 1.000000, 0.000000, 1.000000), +(28, 853.000000, 853.000000, 1.000000, 853.000000, 1.000000, 0.000000, 1.000000, 732.000000, 1.000000, 0.000000, 1.000000), +(29, 905.000000, 905.000000, 1.000000, 905.000000, 1.000000, 0.000000, 1.000000, 773.000000, 1.000000, 0.000000, 1.000000), +(30, 955.000000, 955.000000, 1.000000, 955.000000, 1.000000, 0.000000, 1.000000, 811.000000, 1.000000, 0.000000, 1.000000), +(31, 1006.000000, 1006.000000, 1.000000, 1006.000000, 1.000000, 0.000000, 1.000000, 850.000000, 1.000000, 0.000000, 1.000000), +(32, 1057.000000, 1057.000000, 1.000000, 1057.000000, 1.000000, 0.000000, 1.000000, 888.000000, 1.000000, 0.000000, 1.000000), +(33, 1110.000000, 1110.000000, 1.000000, 1110.000000, 1.000000, 0.000000, 1.000000, 928.000000, 1.000000, 0.000000, 1.000000), +(34, 1163.000000, 1163.000000, 1.000000, 1163.000000, 1.000000, 0.000000, 1.000000, 967.000000, 1.000000, 0.000000, 1.000000), +(35, 1220.000000, 1220.000000, 1.000000, 1220.000000, 1.000000, 0.000000, 1.000000, 1009.000000, 1.000000, 0.000000, 1.000000), +(36, 1277.000000, 1277.000000, 1.000000, 1277.000000, 1.000000, 0.000000, 1.000000, 1050.000000, 1.000000, 0.000000, 1.000000), +(37, 1336.000000, 1336.000000, 1.000000, 1336.000000, 1.000000, 0.000000, 1.000000, 1093.000000, 1.000000, 0.000000, 1.000000), +(38, 1395.000000, 1395.000000, 1.000000, 1395.000000, 1.000000, 0.000000, 1.000000, 1135.000000, 1.000000, 0.000000, 1.000000), +(39, 1459.000000, 1459.000000, 1.000000, 1459.000000, 1.000000, 0.000000, 1.000000, 1180.000000, 1.000000, 0.000000, 1.000000), +(40, 1524.000000, 1524.000000, 1.000000, 1524.000000, 1.000000, 0.000000, 1.000000, 1226.000000, 1.000000, 0.000000, 1.000000), +(41, 1585.000000, 1585.000000, 1.000000, 1585.000000, 1.000000, 0.000000, 1.000000, 1268.000000, 1.000000, 0.000000, 1.000000), +(42, 1651.000000, 1651.000000, 1.000000, 1651.000000, 1.000000, 0.000000, 1.000000, 1321.000000, 1.000000, 0.000000, 1.000000), +(43, 1716.000000, 1716.000000, 1.000000, 1716.000000, 1.000000, 0.000000, 1.000000, 1373.000000, 1.000000, 0.000000, 1.000000), +(44, 1782.000000, 1782.000000, 1.000000, 1782.000000, 1.000000, 0.000000, 1.000000, 1426.000000, 1.000000, 0.000000, 1.000000), +(45, 1848.000000, 1848.000000, 1.000000, 1848.000000, 1.000000, 0.000000, 1.000000, 1478.000000, 1.000000, 0.000000, 1.000000), +(46, 1919.000000, 1919.000000, 1.000000, 1919.000000, 1.000000, 0.000000, 1.000000, 1535.000000, 1.000000, 0.000000, 1.000000), +(47, 1990.000000, 1990.000000, 1.000000, 1990.000000, 1.000000, 0.000000, 1.000000, 1592.000000, 1.000000, 0.000000, 1.000000), +(48, 2062.000000, 2062.000000, 1.000000, 2062.000000, 1.000000, 0.000000, 1.000000, 1650.000000, 1.000000, 0.000000, 1.000000), +(49, 2138.000000, 2138.000000, 1.000000, 2138.000000, 1.000000, 0.000000, 1.000000, 1710.000000, 1.000000, 0.000000, 1.000000), +(50, 2215.000000, 2215.000000, 1.000000, 2215.000000, 1.000000, 0.000000, 1.000000, 1772.000000, 1.000000, 0.000000, 1.000000), +(51, 2292.000000, 2292.000000, 1.000000, 2292.000000, 1.000000, 0.000000, 1.000000, 1834.000000, 1.000000, 0.000000, 1.000000), +(52, 2371.000000, 2371.000000, 1.000000, 2371.000000, 1.000000, 0.000000, 1.000000, 1897.000000, 1.000000, 0.000000, 1.000000), +(53, 2453.000000, 2453.000000, 1.000000, 2453.000000, 1.000000, 0.000000, 1.000000, 1962.000000, 1.000000, 0.000000, 1.000000), +(54, 2533.000000, 2533.000000, 1.000000, 2533.000000, 1.000000, 0.000000, 1.000000, 2026.000000, 1.000000, 0.000000, 1.000000), +(55, 2614.000000, 2614.000000, 1.000000, 2614.000000, 1.000000, 0.000000, 1.000000, 2091.000000, 1.000000, 0.000000, 1.000000), +(56, 2699.000000, 2699.000000, 1.000000, 2699.000000, 1.000000, 0.000000, 1.000000, 2159.000000, 1.000000, 0.000000, 1.000000), +(57, 2784.000000, 2784.000000, 1.000000, 2784.000000, 1.000000, 0.000000, 1.000000, 2227.000000, 1.000000, 0.000000, 1.000000), +(58, 3989.000000, 3989.000000, 1.000000, 3989.000000, 1.000000, 0.000000, 1.000000, 3191.000000, 1.000000, 0.000000, 1.000000), +(59, 4142.000000, 4142.000000, 1.000000, 4142.000000, 1.000000, 0.000000, 1.000000, 3313.000000, 1.000000, 0.000000, 1.000000), +(60, 4979.000000, 4979.000000, 1.000000, 4979.000000, 1.000000, 0.000000, 1.000000, 3984.000000, 1.000000, 0.000000, 1.000000), +(61, 5158.000000, 5158.000000, 1.000000, 5158.000000, 1.000000, 0.000000, 1.000000, 4126.000000, 1.000000, 0.000000, 1.000000), +(62, 5341.000000, 5341.000000, 1.000000, 5341.000000, 1.000000, 0.000000, 1.000000, 4272.000000, 1.000000, 0.000000, 1.000000), +(63, 5527.000000, 5527.000000, 1.000000, 5527.000000, 1.000000, 0.000000, 1.000000, 4421.000000, 1.000000, 0.000000, 1.000000), +(64, 5715.000000, 5715.000000, 1.000000, 5715.000000, 1.000000, 0.000000, 1.000000, 4572.000000, 1.000000, 0.000000, 1.000000), +(65, 5914.000000, 5914.000000, 1.000000, 5914.000000, 1.000000, 0.000000, 1.000000, 4731.000000, 1.000000, 0.000000, 1.000000), +(66, 6116.000000, 6116.000000, 1.000000, 6116.000000, 1.000000, 0.000000, 1.000000, 4892.000000, 1.000000, 0.000000, 1.000000), +(67, 6326.000000, 6326.000000, 1.000000, 6326.000000, 1.000000, 0.000000, 1.000000, 5060.000000, 1.000000, 0.000000, 1.000000), +(68, 6986.000000, 6986.000000, 1.000000, 6986.000000, 1.000000, 0.000000, 1.000000, 5588.000000, 1.000000, 0.000000, 1.000000), +(69, 7984.000000, 7984.000000, 1.000000, 7984.000000, 1.000000, 0.000000, 1.000000, 6387.000000, 1.000000, 0.000000, 1.000000), +(70, 8982.000000, 8982.000000, 1.000000, 8982.000000, 1.000000, 0.000000, 1.000000, 7185.000000, 1.000000, 0.000000, 1.000000), +(71, 9291.000000, 9291.000000, 1.000000, 9291.000000, 1.000000, 0.000000, 1.000000, 7432.000000, 1.000000, 0.000000, 1.000000), +(72, 9610.000000, 9610.000000, 1.000000, 9610.000000, 1.000000, 0.000000, 1.000000, 7688.000000, 1.000000, 0.000000, 1.000000), +(73, 9940.000000, 9940.000000, 1.000000, 9940.000000, 1.000000, 0.000000, 1.000000, 7952.000000, 1.000000, 0.000000, 1.000000), +(74, 10282.000000, 10282.000000, 1.000000, 10282.000000, 1.000000, 0.000000, 1.000000, 8225.000000, 1.000000, 0.000000, 1.000000), +(75, 10635.000000, 10635.000000, 1.000000, 10635.000000, 1.000000, 0.000000, 1.000000, 8508.000000, 1.000000, 0.000000, 1.000000), +(76, 11001.000000, 11001.000000, 1.000000, 11001.000000, 1.000000, 0.000000, 1.000000, 8800.000000, 1.000000, 0.000000, 1.000000), +(77, 11379.000000, 11379.000000, 1.000000, 11379.000000, 1.000000, 0.000000, 1.000000, 9103.000000, 1.000000, 0.000000, 1.000000), +(78, 21441.000000, 21441.000000, 1.000000, 21441.000000, 1.000000, 0.000000, 1.000000, 17153.000000, 1.000000, 0.000000, 1.000000), +(79, 25761.000000, 25761.000000, 1.000000, 25761.000000, 1.000000, 0.000000, 1.000000, 20609.000000, 1.000000, 0.000000, 1.000000), +(80, 30951.000000, 30951.000000, 1.000000, 30951.000000, 1.000000, 0.000000, 1.000000, 24761.000000, 1.000000, 0.000000, 1.000000), +(81, 37187.000000, 37187.000000, 1.000000, 37187.000000, 1.000000, 0.000000, 1.000000, 29750.000000, 1.000000, 0.000000, 1.000000), +(82, 44679.000000, 44679.000000, 1.000000, 44679.000000, 1.000000, 0.000000, 1.000000, 35743.000000, 1.000000, 0.000000, 1.000000), +(83, 53681.000000, 53681.000000, 1.000000, 53681.000000, 1.000000, 0.000000, 1.000000, 42945.000000, 1.000000, 0.000000, 1.000000), +(84, 64496.000000, 64496.000000, 1.000000, 64496.000000, 1.000000, 0.000000, 1.000000, 51597.000000, 1.000000, 0.000000, 1.000000), +(85, 77490.000000, 77490.000000, 1.000000, 77490.000000, 1.000000, 0.000000, 1.000000, 61992.000000, 1.000000, 0.000000, 1.000000), +(86, 80195.000000, 80195.000000, 1.000000, 80195.000000, 1.000000, 0.000000, 1.000000, 64156.000000, 1.000000, 0.000000, 1.000000), +(87, 82994.000000, 82994.000000, 1.000000, 82994.000000, 1.000000, 0.000000, 1.000000, 66395.000000, 1.000000, 0.000000, 1.000000), +(88, 85892.000000, 85892.000000, 1.000000, 85892.000000, 1.000000, 0.000000, 1.000000, 68714.000000, 1.000000, 0.000000, 1.000000), +(89, 17084.000000, 17084.000000, 1.000000, 17084.000000, 1.000000, 0.000000, 1.000000, 13667.000000, 1.000000, 0.000000, 1.000000), +(90, 17672.000000, 17672.000000, 1.000000, 17672.000000, 1.000000, 0.000000, 1.000000, 14138.000000, 1.000000, 0.000000, 1.000000), +(91, 18280.000000, 18280.000000, 1.000000, 18280.000000, 1.000000, 0.000000, 1.000000, 14624.000000, 1.000000, 0.000000, 1.000000), +(92, 18909.000000, 18909.000000, 1.000000, 18909.000000, 1.000000, 0.000000, 1.000000, 15127.000000, 1.000000, 0.000000, 1.000000), +(93, 19560.000000, 19560.000000, 1.000000, 19560.000000, 1.000000, 0.000000, 1.000000, 15648.000000, 1.000000, 0.000000, 1.000000), +(94, 20233.000000, 20233.000000, 1.000000, 20233.000000, 1.000000, 0.000000, 1.000000, 16186.000000, 1.000000, 0.000000, 1.000000), +(95, 20930.000000, 20930.000000, 1.000000, 20930.000000, 1.000000, 0.000000, 1.000000, 16744.000000, 1.000000, 0.000000, 1.000000), +(96, 21650.000000, 21650.000000, 1.000000, 21650.000000, 1.000000, 0.000000, 1.000000, 17320.000000, 1.000000, 0.000000, 1.000000), +(97, 22395.000000, 22395.000000, 1.000000, 22395.000000, 1.000000, 0.000000, 1.000000, 17916.000000, 1.000000, 0.000000, 1.000000), +(98, 23166.000000, 23166.000000, 1.000000, 23166.000000, 1.000000, 0.000000, 1.000000, 18533.000000, 1.000000, 0.000000, 1.000000), +(99, 23964.000000, 23964.000000, 1.000000, 23964.000000, 1.000000, 0.000000, 1.000000, 19171.000000, 1.000000, 0.000000, 1.000000), +(100, 24788.000000, 24788.000000, 1.000000, 24788.000000, 1.000000, 0.000000, 1.000000, 19830.000000, 1.000000, 0.000000, 1.000000); diff --git a/src/server/game/DataStores/GameTable.h b/src/server/game/DataStores/GameTable.h deleted file mode 100644 index dc42f7ef79..0000000000 --- a/src/server/game/DataStores/GameTable.h +++ /dev/null @@ -1,31 +0,0 @@ -/* -* This file is part of the TrinityCore Project. See AUTHORS file for Copyright information - * - * This program is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License as published by the - * Free Software Foundation; either version 2 of the License, or (at your - * option) any later version. - * - * This program is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - * more details. - * - * You should have received a copy of the GNU General Public License along - * with this program. If not, see . - */ - -#ifndef __GAMETABLE_H -#define __GAMETABLE_H - -#include "Define.h" - -enum UnitClass : uint8; - -class GameTable -{ -public: - static float GetSpellScalingValue(uint8 level, UnitClass unitClass); -}; - -#endif // __GAMETABLE_H diff --git a/src/server/game/DataStores/GameTable.cpp b/src/server/game/DataStores/GameTables.cpp similarity index 68% rename from src/server/game/DataStores/GameTable.cpp rename to src/server/game/DataStores/GameTables.cpp index b11efb977e..98bd289429 100644 --- a/src/server/game/DataStores/GameTable.cpp +++ b/src/server/game/DataStores/GameTables.cpp @@ -15,11 +15,13 @@ * with this program. If not, see . */ -#include "GameTable.h" +#include "GameTables.h" #include "DBCStores.h" #include "DBCStructure.h" -/*static*/ float GameTable::GetSpellScalingValue(uint8 level, UnitClass unitClass) +GameTable sNpcTotalHpGameTable[MAX_EXPANSIONS]; + +/*static*/ float GameTables::GetSpellScalingValue(uint8 level, UnitClass unitClass) { if (level > GT_MAX_LEVEL) return 0.0f; @@ -30,3 +32,11 @@ return gt->value; } + +/*float*/ float GameTables::GetNpcTotalHpValue(uint8 level, UnitClass unitClass, Expansions expansion) +{ + if (level > GT_MAX_LEVEL || expansion >= MAX_EXPANSIONS) + return 0.0f; + + return GetGameTableColumnForClass(sNpcTotalHpGameTable[expansion].GetRow(level), unitClass); +} diff --git a/src/server/game/DataStores/GameTables.h b/src/server/game/DataStores/GameTables.h new file mode 100644 index 0000000000..3b2c992a07 --- /dev/null +++ b/src/server/game/DataStores/GameTables.h @@ -0,0 +1,104 @@ +/* +* This file is part of the TrinityCore Project. See AUTHORS file for Copyright information + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General Public License along + * with this program. If not, see . + */ + +#ifndef __GAMETABLES_H +#define __GAMETABLES_H + +#include "Define.h" + +enum UnitClass : uint8; + +struct GtNpcTotalHpEntry +{ + float Warrior = 0.0f; + float Paladin = 0.0f; + float Hunter = 0.0f; + float Rogue = 0.0f; + float Priest = 0.0f; + float DeathKnight = 0.0f; + float Shaman = 0.0f; + float Mage = 0.0f; + float Warlock = 0.0f; + float Monk = 0.0f; + float Druid = 0.0f; +}; + +template +class GameTable +{ +public: + T const* GetRow(uint32 row) const + { + if (row >= _data.size()) + return nullptr; + + return &_data[row]; + } + + std::size_t GetTableRowCount() const { return _data.size(); } + + void SetData(std::vector data) { _data = std::move(data); } + +private: + std::vector _data; +}; + +class GameTables +{ +public: + // Helper Methods + static float GetSpellScalingValue(uint8 level, UnitClass unitClass); + static float GetNpcTotalHpValue(uint8 level, UnitClass unitClass, Expansions expansion); +}; + +TC_GAME_API extern GameTable sNpcTotalHpGameTable[MAX_EXPANSIONS]; + +template +inline float GetGameTableColumnForClass(T const* row, int32 class_) +{ + switch (class_) + { + case CLASS_WARRIOR: + return row->Warrior; + case CLASS_PALADIN: + return row->Paladin; + case CLASS_HUNTER: + return row->Hunter; + case CLASS_ROGUE: + return row->Rogue; + case CLASS_PRIEST: + return row->Priest; + case CLASS_DEATH_KNIGHT: + return row->DeathKnight; + case CLASS_SHAMAN: + return row->Shaman; + case CLASS_MAGE: + return row->Mage; + case CLASS_WARLOCK: + return row->Warlock; + //case CLASS_MONK: + // return row->Monk; + case CLASS_DRUID: + return row->Druid; + default: + break; + } + + return 0.0f; +} + +#endif // __GAMETABLES_H diff --git a/src/server/game/Globals/ObjectMgr.cpp b/src/server/game/Globals/ObjectMgr.cpp index dbc0b9888c..4c7b406c0e 100644 --- a/src/server/game/Globals/ObjectMgr.cpp +++ b/src/server/game/Globals/ObjectMgr.cpp @@ -27,6 +27,7 @@ #include "DB2Structure.h" #include "DB2Stores.h" #include "DisableMgr.h" +#include "GameTables.h" #include "GameTime.h" #include "GameObject.h" #include "GameObjectAIFactory.h" @@ -9554,8 +9555,8 @@ CreatureBaseStats const* ObjectMgr::GetCreatureBaseStats(uint8 level, uint8 unit void ObjectMgr::LoadCreatureClassLevelStats() { uint32 oldMSTime = getMSTime(); - // 0 1 2 3 4 5 6 7 8 9 10 11 12 13 - QueryResult result = WorldDatabase.Query("SELECT level, class, basehp0, basehp1, basehp2, basehp3, basemana, basearmor, attackpower, rangedattackpower, damage_base, damage_exp1, damage_exp2, damage_exp3 FROM creature_classlevelstats"); + // 0 1 2 3 4 5 6 7 8 9 + QueryResult result = WorldDatabase.Query("SELECT level, class, basemana, basearmor, attackpower, rangedattackpower, damage_base, damage_exp1, damage_exp2, damage_exp3 FROM creature_classlevelstats"); if (!result) { @@ -9578,15 +9579,9 @@ void ObjectMgr::LoadCreatureClassLevelStats() for (uint8 i = 0; i < MAX_EXPANSIONS; ++i) { - stats.BaseHealth[i] = fields[2 + i].GetUInt32(); + stats.BaseHealth[i] = GetGameTableColumnForClass(sNpcTotalHpGameTable[i].GetRow(Level), Class); - if (stats.BaseHealth[i] == 0) - { - TC_LOG_ERROR("sql.sql", "Creature base stats for class %u, level %u has invalid zero base HP[%u] - set to 1", Class, Level, i); - stats.BaseHealth[i] = 1; - } - - stats.BaseDamage[i] = fields[10 + i].GetFloat(); + stats.BaseDamage[i] = fields[6 + i].GetFloat(); if (stats.BaseDamage[i] < 0.0f) { TC_LOG_ERROR("sql.sql", "Creature base stats for class %u, level %u has invalid negative base damage[%u] - set to 0.0", Class, Level, i); @@ -9594,11 +9589,11 @@ void ObjectMgr::LoadCreatureClassLevelStats() } } - stats.BaseMana = fields[6].GetUInt16(); - stats.BaseArmor = fields[7].GetUInt16(); + stats.BaseMana = fields[2].GetUInt16(); + stats.BaseArmor = fields[3].GetUInt16(); - stats.AttackPower = fields[8].GetUInt16(); - stats.RangedAttackPower = fields[9].GetUInt16(); + stats.AttackPower = fields[4].GetUInt16(); + stats.RangedAttackPower = fields[5].GetUInt16(); _creatureBaseStatsStore[MAKE_PAIR16(Level, Class)] = stats; @@ -10098,6 +10093,81 @@ CreatureStaticFlagsOverride const* ObjectMgr::GetCreatureStaticFlagsOverride(Obj return Trinity::Containers::MapGetValuePtr(_creatureStaticFlagsOverrideStore, std::make_pair(spawnId, difficultyId)); } +void ObjectMgr::LoadDatabaseGameTables() +{ + LoadNpcTotalHpGameTables(); +} + +void ObjectMgr::LoadNpcTotalHpGameTables() +{ + uint32 oldMSTime = getMSTime(); + + QueryResult result = WorldDatabase.Query("SELECT exp0.Level, exp0.Warrior, exp1.Warrior, exp2.Warrior, exp3.Warrior, " + "exp0.Paladin, exp1.Paladin, exp2.Paladin, exp3.Paladin, " + "exp0.Hunter, exp1.Hunter, exp2.Hunter, exp3.Hunter, " + "exp0.Rogue, exp1.Rogue, exp2.Rogue, exp3.Rogue, " + "exp0.Priest, exp1.Priest, exp2.Priest, exp3.Priest, " + "exp0.DeathKnight, exp1.DeathKnight, exp2.DeathKnight, exp3.DeathKnight, " + "exp0.Shaman, exp1.Shaman, exp2.Shaman, exp3.Shaman, " + "exp0.Mage, exp1.Mage, exp2.Mage, exp3.Mage, " + "exp0.Warlock, exp1.Warlock, exp2.Warlock, exp3.Warlock, " + "exp0.Monk, exp1.Monk, exp2.Monk, exp3.Monk, " + "exp0.Druid, exp1.Druid, exp2.Druid, exp3.Druid " + "FROM gt_npc_total_hp AS exp0 " + "INNER JOIN gt_npc_total_hp_exp1 AS exp1 ON exp0.Level = exp1.Level " + "INNER JOIN gt_npc_total_hp_exp2 AS exp2 ON exp0.Level = exp2.Level " + "INNER JOIN gt_npc_total_hp_exp3 AS exp3 ON exp0.Level = exp3.Level " + "ORDER BY Level ASC"); + + if (!result) + { + TC_LOG_INFO("server.loading", ">> Loaded 0 npc total health game table entries. DB table `gt_npc_total_hp` is empty."); + return; + } + + uint32 count = 0; + + // Initialize the storages with one extra entry for level 0 + std::vector npcTotalHpExp0(result->GetRowCount() + 1); + std::vector npcTotalHpExp1(result->GetRowCount() + 1); + std::vector npcTotalHpExp2(result->GetRowCount() + 1); + std::vector npcTotalHpExp3(result->GetRowCount() + 1); + + do + { + Field* fields = result->Fetch(); + + uint8 level = fields[0].GetUInt8(); + uint8 expansion = 0; + for (std::vector* storage : { &npcTotalHpExp0, &npcTotalHpExp1, &npcTotalHpExp2, &npcTotalHpExp3 }) + { + std::vector& npcTotalHp = *storage; + + npcTotalHp[level].Warrior = fields[1 + expansion].GetFloat(); + npcTotalHp[level].Paladin = fields[5 + expansion].GetFloat(); + npcTotalHp[level].Hunter = fields[9 + expansion].GetFloat(); + npcTotalHp[level].Rogue = fields[13 + expansion].GetFloat(); + npcTotalHp[level].Priest = fields[17 + expansion].GetFloat(); + npcTotalHp[level].DeathKnight = fields[21 + expansion].GetFloat(); + npcTotalHp[level].Shaman = fields[25 + expansion].GetFloat(); + npcTotalHp[level].Mage = fields[29 + expansion].GetFloat(); + npcTotalHp[level].Warlock = fields[33 + expansion].GetFloat(); + npcTotalHp[level].Monk = fields[37 + expansion].GetFloat(); + npcTotalHp[level].Druid = fields[41 + expansion].GetFloat(); + + ++expansion; + } + } + while (result->NextRow()); + + sNpcTotalHpGameTable[EXPANSION_CLASSIC].SetData(npcTotalHpExp0); + sNpcTotalHpGameTable[EXPANSION_THE_BURNING_CRUSADE].SetData(npcTotalHpExp1); + sNpcTotalHpGameTable[EXPANSION_WRATH_OF_THE_LICH_KING].SetData(npcTotalHpExp2); + sNpcTotalHpGameTable[EXPANSION_CATACLYSM].SetData(npcTotalHpExp3); + + TC_LOG_INFO("server.loading", ">> Loaded %u npc total health game table entries in %u ms", count, GetMSTimeDiffToNow(oldMSTime)); +} + void ObjectMgr::LoadGameObjectQuestItems() { uint32 oldMSTime = getMSTime(); diff --git a/src/server/game/Globals/ObjectMgr.h b/src/server/game/Globals/ObjectMgr.h index 3fa21dc346..274496d170 100644 --- a/src/server/game/Globals/ObjectMgr.h +++ b/src/server/game/Globals/ObjectMgr.h @@ -1611,6 +1611,9 @@ class TC_GAME_API ObjectMgr CreatureStaticFlagsOverride const* GetCreatureStaticFlagsOverride(ObjectGuid::LowType spawnId, Difficulty difficultyId) const; + void LoadDatabaseGameTables(); + void LoadNpcTotalHpGameTables(); + private: // first free id for selected id type uint32 _auctionId; diff --git a/src/server/game/Spells/SpellInfo.cpp b/src/server/game/Spells/SpellInfo.cpp index 8c2f12b72f..46ccd1a355 100644 --- a/src/server/game/Spells/SpellInfo.cpp +++ b/src/server/game/Spells/SpellInfo.cpp @@ -21,7 +21,7 @@ #include "Creature.h" #include "DBCStores.h" #include "GameClient.h" -#include "GameTable.h" +#include "GameTables.h" #include "InstanceScript.h" #include "Item.h" #include "ItemTemplate.h" @@ -518,7 +518,7 @@ int32 SpellEffectInfo::CalcBaseValue(WorldObject const* caster, Unit const* targ if (!_spellInfo->Scaling.Class) return 0; - value = GameTable::GetSpellScalingValue(level, static_cast(_spellInfo->Scaling.Class > 0 ? _spellInfo->Scaling.Class: (MAX_CLASSES - 1 /*last class*/) - _spellInfo->Scaling.Class)); + value = GameTables::GetSpellScalingValue(level, static_cast(_spellInfo->Scaling.Class > 0 ? _spellInfo->Scaling.Class: (MAX_CLASSES - 1 /*last class*/) - _spellInfo->Scaling.Class)); value *= _spellInfo->GetSpellScalingMultiplier(level, false); } @@ -550,7 +550,7 @@ double SpellEffectInfo::CalcPointsPerResource(WorldObject const* caster) const if (scalingClass < 0) scalingClass = (MAX_CLASSES - 1 /*last class*/) - scalingClass; - float scaledAmount = GameTable::GetSpellScalingValue(caster->ToUnit()->getLevel(), static_cast(scalingClass)); + float scaledAmount = GameTables::GetSpellScalingValue(caster->ToUnit()->getLevel(), static_cast(scalingClass)); scaledAmount *= _spellInfo->GetSpellScalingMultiplier(caster->ToUnit()->getLevel(), false) * Scaling.ComboPointsCoefficient; value = scaledAmount; } diff --git a/src/server/game/World/World.cpp b/src/server/game/World/World.cpp index e55c960817..69bba7576d 100644 --- a/src/server/game/World/World.cpp +++ b/src/server/game/World/World.cpp @@ -1901,7 +1901,10 @@ void World::SetInitialWorldSettings() TC_LOG_INFO("server.loading", "Loading Points Of Interest Data..."); sObjectMgr->LoadPointsOfInterest(); - TC_LOG_INFO("server.loading", "Loading Creature Base Stats..."); + TC_LOG_INFO("server.loading", "Loading Database Game Tables..."); + sObjectMgr->LoadDatabaseGameTables(); + + TC_LOG_INFO("server.loading", "Loading Creature Base Stats..."); // must be after LoadDatabaseGameTables sObjectMgr->LoadCreatureClassLevelStats(); TC_LOG_INFO("server.loading", "Loading Spawn Group Templates...");