diff options
-rw-r--r-- | sql/updates/7139_world_creature_classlevelstats.sql | 406 | ||||
-rw-r--r-- | sql/updates/7139_world_creature_template.sql | 11 | ||||
-rw-r--r-- | src/game/Creature.cpp | 19 | ||||
-rw-r--r-- | src/game/Creature.h | 30 | ||||
-rw-r--r-- | src/game/ObjectMgr.cpp | 6 | ||||
-rw-r--r-- | src/game/StatSystem.cpp | 4 | ||||
-rw-r--r-- | src/scripts/eastern_kingdoms/karazhan/boss_prince_malchezaar.cpp | 22 | ||||
-rw-r--r-- | src/scripts/eastern_kingdoms/zulgurub/boss_arlokk.cpp | 7 | ||||
-rw-r--r-- | src/scripts/eastern_kingdoms/zulgurub/boss_marli.cpp | 14 | ||||
-rw-r--r-- | src/scripts/eastern_kingdoms/zulgurub/boss_thekal.cpp | 7 | ||||
-rw-r--r-- | src/scripts/eastern_kingdoms/zulgurub/boss_venoxis.cpp | 7 | ||||
-rw-r--r-- | src/scripts/world/npcs_special.cpp | 4 | ||||
-rw-r--r-- | src/shared/Database/SQLStorage.cpp | 4 |
13 files changed, 507 insertions, 34 deletions
diff --git a/sql/updates/7139_world_creature_classlevelstats.sql b/sql/updates/7139_world_creature_classlevelstats.sql new file mode 100644 index 00000000000..5dc5eea7233 --- /dev/null +++ b/sql/updates/7139_world_creature_classlevelstats.sql @@ -0,0 +1,406 @@ +ALTER TABLE `creature_classlevelstats` +ADD COLUMN `basedmg` float NOT NULL DEFAULT 0 AFTER `basearmor`, +ADD COLUMN `baserangeddmg` float NOT NULL DEFAULT 0 AFTER `basedmg`; + +TRUNCATE `creature_classlevelstats`; +INSERT INTO `creature_classlevelstats` (`level`,`class`,`basehp0`,`basehp1`,`basehp2`,`basemana`,`basearmor`,`basedmg`,`baserangeddmg`) VALUES +(1, 1, 42, 1, 1, 0, 8, 1.25, 1), +(2, 1, 55, 1, 1, 0, 20, 2.5, 2), +(3, 1, 71, 1, 1, 0, 33, 3.75, 3), +(4, 1, 86, 1, 1, 0, 68, 5, 4), +(5, 1, 102, 1, 1, 0, 111, 6.25, 5), +(6, 1, 120, 1, 1, 0, 165, 6.25, 5), +(7, 1, 137, 1, 1, 0, 230, 7.5, 6.25), +(8, 1, 156, 1, 1, 0, 306, 10, 7.5), +(9, 1, 176, 1, 1, 0, 387, 11.25, 8.75), +(10, 1, 198, 1, 1, 0, 463, 12.5, 10), +(11, 1, 222, 1, 1, 0, 528, 15, 11.25), +(12, 1, 247, 1, 1, 0, 562, 16.25, 13.75), +(13, 1, 273, 1, 1, 0, 596, 18.75, 15), +(14, 1, 300, 1, 1, 0, 630, 20, 16.25), +(15, 1, 328, 1, 1, 0, 665, 21.25, 17.5), +(16, 1, 356, 1, 1, 0, 700, 23.75, 18.75), +(17, 1, 386, 1, 1, 0, 734, 25, 20), +(18, 1, 417, 1, 1, 0, 768, 27.5, 21.25), +(19, 1, 449, 1, 1, 0, 802, 28.75, 22.5), +(20, 1, 484, 1, 1, 0, 836, 30, 25), +(21, 1, 521, 1, 1, 0, 872, 32.5, 26.25), +(22, 1, 562, 1, 1, 0, 906, 33.75, 27.5), +(23, 1, 605, 1, 1, 0, 940, 36.25, 28.75), +(24, 1, 651, 1, 1, 0, 975, 37.5, 30), +(25, 1, 699, 1, 1, 0, 1008, 38.75, 31.25), +(26, 1, 750, 1, 1, 0, 1043, 41.25, 32.5), +(27, 1, 800, 1, 1, 0, 1078, 42.5, 33.75), +(28, 1, 853, 1, 1, 0, 1111, 45, 35), +(29, 1, 905, 1, 1, 0, 1145, 46.25, 37.5), +(30, 1, 955, 1, 1, 0, 1179, 47.5, 38.75), +(31, 1, 1006, 1, 1, 0, 1213, 50, 40), +(32, 1, 1057, 1, 1, 0, 1249, 51.25, 41.25), +(33, 1, 1110, 1, 1, 0, 1281, 53.75, 42.5), +(34, 1, 1163, 1, 1, 0, 1317, 55, 43.75), +(35, 1, 1220, 1, 1, 0, 1349, 56.25, 45), +(36, 1, 1277, 1, 1, 0, 1456, 58.75, 46.25), +(37, 1, 1336, 1, 1, 0, 1568, 60, 48.75), +(38, 1, 1395, 1, 1, 0, 1684, 62.5, 50), +(39, 1, 1459, 1, 1, 0, 1808, 63.75, 51.25), +(40, 1, 1524, 1, 1, 0, 1938, 65, 52.5), +(41, 1, 1585, 1, 1, 0, 2074, 68.75, 55), +(42, 1, 1651, 1, 1, 0, 2218, 72.5, 57.5), +(43, 1, 1716, 1, 1, 0, 2369, 75, 60), +(44, 1, 1782, 1, 1, 0, 2528, 78.75, 63.75), +(45, 1, 1848, 1, 1, 0, 2695, 82.5, 66.25), +(46, 1, 1919, 1, 1, 0, 2750, 86.25, 68.75), +(47, 1, 1990, 1, 1, 0, 2804, 90, 71.25), +(48, 1, 2062, 1, 1, 0, 2857, 92.5, 75), +(49, 1, 2138, 1, 1, 0, 2912, 96.25, 77.5), +(50, 1, 2215, 1, 1, 0, 2966, 100, 80), +(51, 1, 2292, 1, 1, 0, 3018, 102.5, 81.25), +(52, 1, 2371, 1, 1, 0, 3060, 103.75, 83.75), +(53, 1, 2453, 1, 1, 0, 3128, 106.25, 85), +(54, 1, 2533, 1, 1, 0, 3180, 107.5, 86.25), +(55, 1, 2614, 1, 1, 0, 3234, 110, 87.5), +(56, 1, 2699, 1, 1, 0, 3289, 112.5, 90), +(57, 1, 2784, 1, 1, 0, 3342, 113.75, 91.25), +(58, 1, 2871, 3989, 1, 0, 3396, 130, 103.75), +(59, 1, 2961, 4142, 1, 0, 3449, 145, 116.25), +(60, 1, 3052, 4979, 1, 0, 3750, 160, 127.5), +(61, 1, 3144, 5158, 1, 0, 4047, 175, 140), +(62, 1, 3237, 5341, 1, 0, 4344, 190, 152.5), +(63, 1, 3331, 5527, 1, 0, 4641, 205, 163.75), +(64, 1, 3427, 5715, 1, 0, 4937, 220, 176.25), +(65, 1, 3524, 5914, 1, 0, 5234, 235, 187.5), +(66, 1, 3624, 6116, 1, 0, 5531, 250, 200), +(67, 1, 3728, 6326, 1, 0, 5829, 265, 212.5), +(68, 1, 3834, 6542, 6986, 0, 6126, 285, 227.5), +(69, 1, 3942, 6761, 7984, 0, 6423, 305, 243.75), +(70, 1, 4050, 6986, 8982, 0, 6719, 325, 260), +(71, 1, 4163, 7181, 9291, 0, 7018, 345, 276.25), +(72, 1, 4278, 7380, 9610, 0, 7318, 365, 292.5), +(73, 1, 4399, 7588, 9940, 0, 7618, 385, 307.5), +(74, 1, 4524, 7804, 10282, 0, 7918, 405, 323.75), +(75, 1, 4652, 8025, 10635, 0, 8219, 425, 340), +(76, 1, 4781, 8247, 11001, 0, 8520, 445, 356.25), +(77, 1, 4916, 8480, 11379, 0, 8822, 465, 372.5), +(78, 1, 5052, 1, 11770, 0, 9124, 485, 387.5), +(79, 1, 5194, 1, 12175, 0, 9426, 505, 403.75), +(80, 1, 5342, 9215, 12600, 0, 9729, 525, 420), +(81, 1, 5496, 1, 13033, 0, 10033, 545, 436.25), +(82, 1, 5647, 1, 13481, 0, 10356, 565, 452.5), +(83, 1, 5808, 1, 13945, 0, 10673, 585, 467.5), +(84, 1, 1, 1, 1, 0, 1, 0, 0), +(85, 1, 1, 1, 1, 0, 1, 0, 0), +(86, 1, 1, 1, 1, 0, 1, 0, 0), +(87, 1, 1, 1, 1, 0, 1, 0, 0), +(88, 1, 1, 1, 1, 0, 1, 0, 0), +(89, 1, 1, 1, 1, 0, 1, 0, 0), +(90, 1, 1, 1, 1, 0, 1, 0, 0), +(91, 1, 1, 1, 1, 0, 1, 0, 0), +(92, 1, 1, 1, 1, 0, 1, 0, 0), +(93, 1, 1, 1, 1, 0, 1, 0, 0), +(94, 1, 1, 1, 1, 0, 1, 0, 0), +(95, 1, 1, 1, 1, 0, 1, 0, 0), +(96, 1, 1, 1, 1, 0, 1, 0, 0), +(97, 1, 1, 1, 1, 0, 1, 0, 0), +(98, 1, 1, 1, 1, 0, 1, 0, 0), +(99, 1, 1, 1, 1, 0, 1, 0, 0), +(100, 1, 1, 1, 1, 0, 1, 0, 0), +(1, 2, 41, 1, 1, 60, 7, 1.25, 1), +(2, 2, 54, 1, 1, 69, 19, 2.5, 2), +(3, 2, 69, 1, 1, 79, 33, 3.75, 3), +(4, 2, 83, 1, 1, 104, 66, 5, 4), +(5, 2, 98, 1, 1, 115, 109, 6.25, 5), +(6, 2, 115, 1, 1, 126, 163, 6.25, 5), +(7, 2, 131, 1, 1, 138, 208, 7.5, 6.25), +(8, 2, 148, 1, 1, 165, 303, 8.75, 7.5), +(9, 2, 166, 1, 1, 178, 369, 11.25, 8.75), +(10, 2, 186, 1, 1, 191, 460, 12.5, 10), +(11, 2, 208, 1, 1, 205, 526, 13.75, 11.25), +(12, 2, 230, 1, 1, 249, 560, 16.25, 12.5), +(13, 2, 253, 1, 1, 264, 596, 17.5, 13.75), +(14, 2, 276, 1, 1, 295, 630, 18.75, 15), +(15, 2, 301, 1, 1, 326, 665, 20, 16.25), +(16, 2, 325, 1, 1, 357, 700, 22.5, 17.5), +(17, 2, 350, 1, 1, 390, 734, 23.75, 18.75), +(18, 2, 377, 1, 1, 408, 768, 25, 20), +(19, 2, 404, 1, 1, 456, 802, 27.5, 21.25), +(20, 2, 433, 1, 1, 490, 836, 28.75, 22.5), +(21, 2, 464, 1, 1, 510, 872, 30, 23.75), +(22, 2, 498, 1, 1, 545, 906, 32.5, 25), +(23, 2, 533, 1, 1, 581, 940, 33.75, 26.25), +(24, 2, 571, 1, 1, 618, 975, 35, 28.75), +(25, 2, 610, 1, 1, 655, 1008, 36.25, 30), +(26, 2, 651, 1, 1, 693, 1042, 38.75, 31.25), +(27, 2, 690, 1, 1, 732, 1078, 40, 32.5), +(28, 2, 732, 1, 1, 756, 1110, 41.25, 33.75), +(29, 2, 773, 1, 1, 811, 1145, 43.75, 35), +(30, 2, 811, 1, 1, 852, 1178, 45, 36.25), +(31, 2, 850, 1, 1, 878, 1213, 46.25, 37.5), +(32, 2, 888, 1, 1, 935, 1248, 48.75, 38.75), +(33, 2, 928, 1, 1, 963, 1281, 50, 40), +(34, 2, 967, 1, 1, 1007, 1316, 51.25, 41.25), +(35, 2, 1009, 1, 1, 1067, 1349, 52.5, 42.5), +(36, 2, 1050, 1, 1, 1097, 1455, 55, 43.75), +(37, 2, 1093, 1, 1, 1142, 1567, 56.25, 45), +(38, 2, 1135, 1, 1, 1189, 1683, 57.5, 46.25), +(39, 2, 1180, 1, 1, 1236, 1807, 60, 47.5), +(40, 2, 1226, 1, 1, 1283, 1937, 61.25, 48.75), +(41, 2, 1268, 1, 1, 1332, 2072, 68.75, 55), +(42, 2, 1321, 1, 1, 1381, 2216, 71.25, 57.5), +(43, 2, 1373, 1, 1, 1432, 2367, 75, 60), +(44, 2, 1426, 1, 1, 1483, 2527, 77.5, 62.5), +(45, 2, 1478, 1, 1, 1534, 2692, 81.25, 65), +(46, 2, 1535, 1, 1, 1587, 2749, 85, 67.5), +(47, 2, 1592, 1, 1, 1640, 2802, 87.5, 70), +(48, 2, 1650, 1, 1, 1695, 2855, 91.25, 72.5), +(49, 2, 1710, 1, 1, 1750, 2910, 93.75, 75), +(50, 2, 1772, 1, 1, 1807, 2964, 97.5, 77.5), +(51, 2, 1834, 1, 1, 1864, 3017, 101.25, 81.25), +(52, 2, 1897, 1, 1, 1923, 3072, 103.75, 82.5), +(53, 2, 1962, 1, 1, 1982, 3126, 105, 85), +(54, 2, 2026, 1, 1, 2041, 3178, 107.5, 86.25), +(55, 2, 2091, 1, 1, 2117, 3232, 108.75, 87.5), +(56, 2, 2159, 1, 1, 2163, 3287, 111.25, 88.75), +(57, 2, 2227, 1, 1, 2241, 3340, 112.5, 90), +(58, 2, 2297, 3191, 1, 2289, 3394, 128.75, 103.75), +(59, 2, 2369, 3314, 1, 2369, 3447, 142.5, 113.75), +(60, 2, 2442, 3984, 1, 2434, 3748, 156.25, 125), +(61, 2, 2515, 4126, 1, 2486, 4044, 171.25, 136.25), +(62, 2, 2590, 4274, 1, 2568, 4340, 185, 147.5), +(63, 2, 2665, 4422, 1, 2620, 4637, 198.75, 158.75), +(64, 2, 2740, 4572, 1, 2705, 4933, 212.5, 170), +(65, 2, 2819, 4731, 1, 2790, 5228, 226.25, 181.25), +(66, 2, 2899, 4892, 6116, 2846, 5523, 240, 192.5), +(67, 2, 2982, 5060, 1, 2933, 5821, 255, 203.75), +(68, 2, 3067, 5233, 6986, 2991, 6116, 283.75, 227.5), +(69, 2, 3153, 5409, 7984, 3080, 6412, 302.5, 241.25), +(70, 2, 3240, 5589, 8982, 3155, 6708, 321.25, 256.25), +(71, 2, 3330, 5744, 9291, 3231, 7007, 340, 271.25), +(72, 2, 3422, 5903, 9610, 3309, 7305, 357.5, 286.25), +(73, 2, 3519, 6070, 9940, 3387, 7604, 376.25, 301.25), +(74, 2, 3619, 1, 10282, 3466, 7903, 395, 316.25), +(75, 2, 3722, 6420, 10635, 3561, 8204, 413.75, 331.25), +(76, 2, 3825, 1, 11001, 3643, 8503, 432.5, 346.25), +(77, 2, 3933, 1, 11379, 3725, 8803, 451.25, 361.25), +(78, 2, 4042, 1, 11770, 3809, 9104, 470, 376.25), +(79, 2, 4155, 1, 12175, 3893, 9405, 488.75, 390), +(80, 2, 4274, 1, 12600, 3994, 9706, 506.25, 405), +(81, 2, 4394, 1, 13033, 4081, 10007, 525, 420), +(82, 2, 4518, 1, 13481, 4169, 10253, 543.75, 435), +(83, 2, 4646, 1, 13945, 4258, 10573, 562.5, 450), +(84, 2, 1, 1, 1, 1, 1, 0, 0), +(85, 2, 1, 1, 1, 1, 1, 0, 0), +(86, 2, 1, 1, 1, 1, 1, 0, 0), +(87, 2, 1, 1, 1, 1, 1, 0, 0), +(88, 2, 1, 1, 1, 1, 1, 0, 0), +(89, 2, 1, 1, 1, 1, 1, 0, 0), +(90, 2, 1, 1, 1, 1, 1, 0, 0), +(91, 2, 1, 1, 1, 1, 1, 0, 0), +(92, 2, 1, 1, 1, 1, 1, 0, 0), +(93, 2, 1, 1, 1, 1, 1, 0, 0), +(94, 2, 1, 1, 1, 1, 1, 0, 0), +(95, 2, 1, 1, 1, 1, 1, 0, 0), +(96, 2, 1, 1, 1, 1, 1, 0, 0), +(97, 2, 1, 1, 1, 1, 1, 0, 0), +(98, 2, 1, 1, 1, 1, 1, 0, 0), +(99, 2, 1, 1, 1, 1, 1, 0, 0), +(100, 2, 1, 1, 1, 1, 1, 0, 0), +(1, 4, 42, 1, 1, 0, 6, 1.25, 1), +(2, 4, 55, 1, 1, 0, 18, 2.5, 2), +(3, 4, 71, 1, 1, 0, 31, 3.75, 3), +(4, 4, 86, 1, 1, 0, 63, 5, 4), +(5, 4, 102, 1, 1, 0, 102, 6.25, 5), +(6, 4, 120, 1, 1, 0, 152, 6.25, 5), +(7, 4, 137, 1, 1, 0, 212, 7.5, 6.25), +(8, 4, 156, 1, 1, 0, 286, 8.75, 7.5), +(9, 4, 176, 1, 1, 0, 363, 10, 7.5), +(10, 4, 198, 1, 1, 0, 443, 11.25, 8.75), +(11, 4, 222, 1, 1, 0, 488, 12.5, 10), +(12, 4, 247, 1, 1, 0, 519, 15, 11.25), +(13, 4, 273, 1, 1, 0, 553, 16.25, 12.5), +(14, 4, 300, 1, 1, 0, 577, 17.5, 13.75), +(15, 4, 328, 1, 1, 0, 612, 18.75, 15), +(16, 4, 356, 1, 1, 0, 645, 20, 16.25), +(17, 4, 386, 1, 1, 0, 676, 21.25, 17.5), +(18, 4, 417, 1, 1, 0, 706, 23.75, 18.75), +(19, 4, 449, 1, 1, 0, 738, 25, 20), +(20, 4, 484, 1, 1, 0, 769, 26.25, 21.25), +(21, 4, 521, 1, 1, 0, 801, 27.5, 22.5), +(22, 4, 562, 1, 1, 0, 833, 28.75, 23.75), +(23, 4, 605, 1, 1, 0, 863, 30, 23.75), +(24, 4, 651, 1, 1, 0, 895, 31.25, 25), +(25, 4, 699, 1, 1, 0, 926, 33.75, 26.25), +(26, 4, 750, 1, 1, 0, 957, 35, 27.5), +(27, 4, 800, 1, 1, 0, 989, 36.25, 28.75), +(28, 4, 853, 1, 1, 0, 1020, 37.5, 30), +(29, 4, 905, 1, 1, 0, 1051, 38.75, 31.25), +(30, 4, 955, 1, 1, 0, 1082, 40, 32.5), +(31, 4, 1006, 1, 1, 0, 1113, 42.5, 33.75), +(32, 4, 1057, 1, 1, 0, 1146, 43.75, 35), +(33, 4, 1110, 1, 1, 0, 1173, 45, 36.25), +(34, 4, 1163, 1, 1, 0, 1208, 46.25, 37.5), +(35, 4, 1220, 1, 1, 0, 1237, 47.5, 38.75), +(36, 4, 1277, 1, 1, 0, 1349, 48.75, 40), +(37, 4, 1336, 1, 1, 0, 1434, 51.25, 40), +(38, 4, 1395, 1, 1, 0, 1538, 52.5, 41.25), +(39, 4, 1459, 1, 1, 0, 1649, 53.75, 42.5), +(40, 4, 1524, 1, 1, 0, 1764, 55, 43.75), +(41, 4, 1585, 1, 1, 0, 1886, 67.5, 53.75), +(42, 4, 1651, 1, 1, 0, 2015, 71.25, 56.25), +(43, 4, 1716, 1, 1, 0, 2148, 73.75, 58.75), +(44, 4, 1782, 1, 1, 0, 2303, 76.25, 61.25), +(45, 4, 1848, 1, 1, 0, 2436, 80, 63.75), +(46, 4, 1919, 1, 1, 0, 2485, 82.5, 66.25), +(47, 4, 1990, 1, 1, 0, 2535, 85, 68.75), +(48, 4, 2062, 1, 1, 0, 2582, 88.75, 70), +(49, 4, 2138, 1, 1, 0, 2631, 91.25, 72.5), +(50, 4, 2215, 1, 1, 0, 2680, 93.75, 75), +(51, 4, 2292, 1, 1, 0, 2728, 101.25, 81.25), +(52, 4, 2371, 1, 1, 0, 2778, 103.75, 82.5), +(53, 4, 2453, 1, 1, 0, 2826, 105, 83.75), +(54, 4, 2533, 1, 1, 0, 2874, 106.25, 85), +(55, 4, 2614, 1, 1, 0, 2922, 108.75, 86.25), +(56, 4, 2699, 1, 1, 0, 2972, 110, 87.5), +(57, 4, 2784, 1, 1, 0, 3020, 111.25, 88.75), +(58, 4, 2871, 3989, 1, 0, 3068, 127.5, 102.5), +(59, 4, 2961, 4142, 1, 0, 3117, 140, 112.5), +(60, 4, 3052, 4979, 1, 0, 3388, 152.5, 122.5), +(61, 4, 3144, 5158, 1, 0, 3655, 165, 131.25), +(62, 4, 3237, 5341, 1, 0, 3922, 177.5, 141.25), +(63, 4, 3331, 5527, 1, 0, 4189, 190, 151.25), +(64, 4, 3427, 5715, 1, 0, 4457, 202.5, 161.25), +(65, 4, 3524, 5914, 1, 0, 4724, 215, 171.25), +(66, 4, 3624, 6116, 1, 0, 5104, 227.5, 181.25), +(67, 4, 3728, 6326, 1, 0, 5326, 240, 191.25), +(68, 4, 3834, 6542, 6986, 0, 5527, 281.25, 225), +(69, 4, 3942, 6761, 7984, 0, 5795, 298.75, 238.75), +(70, 4, 4050, 6986, 8982, 0, 6062, 315, 251.25), +(71, 4, 4163, 7181, 9291, 0, 6332, 331.25, 265), +(72, 4, 4278, 7380, 9610, 0, 6602, 347.5, 278.75), +(73, 4, 4399, 7580, 9940, 0, 6872, 365, 291.25), +(74, 4, 4524, 1, 10282, 0, 7143, 381.25, 305), +(75, 4, 4652, 1, 10635, 0, 7415, 397.5, 318.75), +(76, 4, 4781, 1, 11001, 0, 7686, 415, 331.25), +(77, 4, 4916, 1, 11379, 0, 7958, 431.25, 345), +(78, 4, 5052, 1, 11770, 0, 8230, 447.5, 357.5), +(79, 4, 5194, 1, 12175, 0, 8503, 463.75, 371.25), +(80, 4, 5342, 1, 12600, 0, 8776, 481.25, 385), +(81, 4, 5496, 1, 13033, 0, 9068, 497.5, 397.5), +(82, 4, 5647, 1, 13481, 0, 9348, 513.75, 411.25), +(83, 4, 5808, 1, 13945, 0, 9589, 530, 425), +(84, 4, 1, 1, 1, 0, 1, 0, 0), +(85, 4, 1, 1, 1, 0, 1, 0, 0), +(86, 4, 1, 1, 1, 0, 1, 0, 0), +(87, 4, 1, 1, 1, 0, 1, 0, 0), +(88, 4, 1, 1, 1, 0, 1, 0, 0), +(89, 4, 1, 1, 1, 0, 1, 0, 0), +(90, 4, 1, 1, 1, 0, 1, 0, 0), +(91, 4, 1, 1, 1, 0, 1, 0, 0), +(92, 4, 1, 1, 1, 0, 1, 0, 0), +(93, 4, 1, 1, 1, 0, 1, 0, 0), +(94, 4, 1, 1, 1, 0, 1, 0, 0), +(95, 4, 1, 1, 1, 0, 1, 0, 0), +(96, 4, 1, 1, 1, 0, 1, 0, 0), +(97, 4, 1, 1, 1, 0, 1, 0, 0), +(98, 4, 1, 1, 1, 0, 1, 0, 0), +(99, 4, 1, 1, 1, 0, 1, 0, 0), +(100, 4, 1, 1, 1, 0, 1, 0, 0), +(1, 8, 40, 1, 1, 120, 5, 1.25, 1), +(2, 8, 52, 1, 1, 147, 16, 2.5, 2), +(3, 8, 67, 1, 1, 174, 28, 3.75, 3), +(4, 8, 81, 1, 1, 202, 57, 5, 4), +(5, 8, 95, 1, 1, 230, 93, 6.25, 5), +(6, 8, 111, 1, 1, 259, 139, 5, 5), +(7, 8, 126, 1, 1, 289, 194, 6.25, 5), +(8, 8, 143, 1, 1, 319, 265, 7.5, 6.25), +(9, 8, 160, 1, 1, 350, 339, 8.75, 7.5), +(10, 8, 178, 1, 1, 382, 423, 11.25, 8.75), +(11, 8, 199, 1, 1, 459, 447, 12.5, 10), +(12, 8, 219, 1, 1, 537, 475, 13.75, 10), +(13, 8, 241, 1, 1, 601, 509, 15, 11.25), +(14, 8, 263, 1, 1, 710, 523, 16.25, 12.5), +(15, 8, 285, 1, 1, 790, 559, 17.5, 13.75), +(16, 8, 307, 1, 1, 856, 589, 18.75, 15), +(17, 8, 330, 1, 1, 938, 617, 20, 16.25), +(18, 8, 354, 1, 1, 1020, 643, 21.25, 16.25), +(19, 8, 379, 1, 1, 1118, 674, 22.5, 17.5), +(20, 8, 405, 1, 1, 1202, 701, 23.75, 18.75), +(21, 8, 432, 1, 1, 1272, 729, 25, 20), +(22, 8, 463, 1, 1, 1357, 759, 26.25, 21.25), +(23, 8, 494, 1, 1, 1443, 786, 27.5, 21.25), +(24, 8, 528, 1, 1, 1545, 815, 28.75, 22.5), +(25, 8, 562, 1, 1, 1633, 843, 30, 23.75), +(26, 8, 598, 1, 1, 1707, 871, 31.25, 25), +(27, 8, 633, 1, 1, 1812, 900, 32.5, 26.25), +(28, 8, 669, 1, 1, 1977, 928, 33.75, 27.5), +(29, 8, 704, 1, 1, 2068, 957, 35, 27.5), +(30, 8, 737, 1, 1, 2175, 984, 36.25, 28.75), +(31, 8, 770, 1, 1, 2253, 1012, 37.5, 30), +(32, 8, 802, 1, 1, 2362, 1042, 38.75, 31.25), +(33, 8, 835, 1, 1, 2457, 1065, 40, 32.5), +(34, 8, 867, 1, 1, 2553, 1098, 41.25, 32.5), +(35, 8, 902, 1, 1, 2680, 1124, 42.5, 33.75), +(36, 8, 935, 1, 1, 2763, 1241, 43.75, 35), +(37, 8, 970, 1, 1, 2861, 1300, 45, 36.25), +(38, 8, 1004, 1, 1, 2975, 1391, 46.25, 37.5), +(39, 8, 1040, 1, 1, 3075, 1489, 47.5, 38.75), +(40, 8, 1077, 1, 1, 3191, 1590, 48.75, 38.75), +(41, 8, 1110, 1, 1, 3293, 1697, 67.5, 53.75), +(42, 8, 1156, 1, 1, 3471, 1811, 70, 56.25), +(43, 8, 1201, 1, 1, 3575, 1926, 72.5, 58.75), +(44, 8, 1247, 1, 1, 3680, 2078, 75, 60), +(45, 8, 1294, 1, 1, 3801, 2177, 77.5, 62.5), +(46, 8, 1343, 1, 1, 3923, 2220, 80, 63.75), +(47, 8, 1393, 1, 1, 4031, 2265, 82.5, 66.25), +(48, 8, 1443, 1, 1, 4140, 2307, 85, 68.75), +(49, 8, 1497, 1, 1, 4281, 2349, 87.5, 70), +(50, 8, 1551, 1, 1, 4393, 2393, 90, 72.5), +(51, 8, 1604, 1, 1, 4506, 2437, 101.25, 81.25), +(52, 8, 1660, 1, 1, 4650, 2481, 102.5, 82.5), +(53, 8, 1717, 1, 1, 4765, 2524, 105, 83.75), +(54, 8, 1773, 1, 1, 4896, 2567, 106.25, 85), +(55, 8, 1830, 1, 1, 5013, 2609, 107.5, 86.25), +(56, 8, 1889, 1, 1, 5206, 2654, 108.75, 87.5), +(57, 8, 1949, 1, 1, 5340, 2698, 110, 88.75), +(58, 8, 2010, 2793, 1, 5461, 2740, 126.25, 101.25), +(59, 8, 2073, 2899, 1, 5598, 2784, 137.5, 110), +(60, 8, 2136, 3484, 1, 5751, 3025, 147.5, 118.75), +(61, 8, 2201, 3611, 1, 5875, 3263, 158.75, 127.5), +(62, 8, 2266, 3739, 1, 6015, 3500, 170, 136.25), +(63, 8, 2332, 3870, 1, 6156, 3736, 181.25, 145), +(64, 8, 2399, 4000, 1, 6229, 3977, 191.25, 153.75), +(65, 8, 2467, 4140, 4731, 6443, 4214, 202.5, 162.5), +(66, 8, 2552, 4281, 4892, 6588, 4460, 213.75, 171.25), +(67, 8, 2610, 4429, 1, 6749, 4710, 225, 180), +(68, 8, 2684, 4580, 5588, 6882, 4928, 280, 223.75), +(69, 8, 2759, 4733, 6387, 7031, 5167, 293.75, 235), +(70, 8, 2835, 4890, 7185, 7196, 5404, 308.75, 247.5), +(71, 8, 2914, 5027, 7432, 7332, 5645, 323.75, 258.75), +(72, 8, 2995, 5166, 7688, 7500, 5886, 337.5, 270), +(73, 8, 3098, 5311, 7952, 7654, 6126, 352.5, 282.5), +(74, 8, 3186, 1, 8225, 7809, 6368, 367.5, 293.75), +(75, 8, 3256, 5617, 8508, 7981, 6610, 381.25, 305), +(76, 8, 3367, 1, 8800, 8139, 6851, 396.25, 317.5), +(77, 8, 3462, 1, 9103, 8313, 7094, 411.25, 328.75), +(78, 8, 3558, 1, 9416, 8459, 7335, 425, 340), +(79, 8, 3658, 1, 9740, 8636, 7579, 440, 352.5), +(80, 8, 3739, 1, 10080, 8814, 7822, 455, 363.75), +(81, 8, 3870, 1, 10486, 8979, 8102, 470, 375), +(82, 8, 3977, 1, 10784, 9160, 8340, 483.75, 387.5), +(83, 8, 4090, 1, 11156, 9325, 8505, 498.75, 398.75), +(84, 8, 1, 1, 1, 1, 1, 0, 0), +(85, 8, 1, 1, 1, 1, 1, 0, 0), +(86, 8, 1, 1, 1, 1, 1, 0, 0), +(87, 8, 1, 1, 1, 1, 1, 0, 0), +(88, 8, 1, 1, 1, 1, 1, 0, 0), +(89, 8, 1, 1, 1, 1, 1, 0, 0), +(90, 8, 1, 1, 1, 1, 1, 0, 0), +(91, 8, 1, 1, 1, 1, 1, 0, 0), +(92, 8, 1, 1, 1, 1, 1, 0, 0), +(93, 8, 1, 1, 1, 1, 1, 0, 0), +(94, 8, 1, 1, 1, 1, 1, 0, 0), +(95, 8, 1, 1, 1, 1, 1, 0, 0), +(96, 8, 1, 1, 1, 1, 1, 0, 0), +(97, 8, 1, 1, 1, 1, 1, 0, 0), +(98, 8, 1, 1, 1, 1, 1, 0, 0), +(99, 8, 1, 1, 1, 1, 1, 0, 0), +(100, 8, 1, 1, 1, 1, 1, 0, 0);
\ No newline at end of file diff --git a/sql/updates/7139_world_creature_template.sql b/sql/updates/7139_world_creature_template.sql new file mode 100644 index 00000000000..808df5b5dbc --- /dev/null +++ b/sql/updates/7139_world_creature_template.sql @@ -0,0 +1,11 @@ +ALTER TABLE `creature_template` +DROP COLUMN `mindmg`, +DROP COLUMN `maxdmg`, +DROP COLUMN `attackpower`, +DROP COLUMN `minrangedmg`, +DROP COLUMN `maxrangedmg`, +DROP COLUMN `rangedattackpower`; + +ALTER TABLE `creature_template` +ADD COLUMN `Dmg_Mod` float NOT NULL DEFAULT 1 AFTER `Armor_Mod`, +ADD COLUMN `Rangeddmg_Mod` float NOT NULL DEFAULT 1 AFTER `Dmg_Mod`; diff --git a/src/game/Creature.cpp b/src/game/Creature.cpp index 29ed9983cd2..4b6e8186801 100644 --- a/src/game/Creature.cpp +++ b/src/game/Creature.cpp @@ -1107,15 +1107,24 @@ void Creature::SelectLevel(const CreatureInfo *cinfo) //damage float damagemod = 1.0f;//_GetDamageMod(rank); + float mindmg = stats->GenerateMinDmg(cinfo); + float maxdmg = stats->GenerateMaxDmg(cinfo); + float attackpower = stats->GenerateAttackPower(cinfo); - SetBaseWeaponDamage(BASE_ATTACK, MINDAMAGE, cinfo->mindmg * damagemod); - SetBaseWeaponDamage(BASE_ATTACK, MAXDAMAGE, cinfo->maxdmg * damagemod); + SetBaseWeaponDamage(BASE_ATTACK, MINDAMAGE, mindmg * damagemod); + SetBaseWeaponDamage(BASE_ATTACK, MAXDAMAGE, maxdmg * damagemod); - SetFloatValue(UNIT_FIELD_MINRANGEDDAMAGE,cinfo->minrangedmg * damagemod); - SetFloatValue(UNIT_FIELD_MAXRANGEDDAMAGE,cinfo->maxrangedmg * damagemod); + SetModifierValue(UNIT_MOD_ATTACK_POWER, BASE_VALUE, attackpower * damagemod); - SetModifierValue(UNIT_MOD_ATTACK_POWER, BASE_VALUE, cinfo->attackpower * damagemod); + // ranged damage + float minrangeddmg = stats->GenerateRangedDmg(cinfo) / 2.5f; + float maxrangeddmg = stats->GenerateRangedDmg(cinfo) - mindmg; + float rangedattackpower = (minrangeddmg + maxrangeddmg) / 2 * 0.3; + SetFloatValue(UNIT_FIELD_MINRANGEDDAMAGE, minrangeddmg * damagemod); + SetFloatValue(UNIT_FIELD_MAXRANGEDDAMAGE, maxrangeddmg * damagemod); + + SetModifierValue(UNIT_MOD_ATTACK_POWER_RANGED, BASE_VALUE, rangedattackpower * damagemod); } float Creature::_GetHealthMod(int32 Rank) diff --git a/src/game/Creature.h b/src/game/Creature.h index ad8dfc2b01c..d3bee8d2eca 100644 --- a/src/game/Creature.h +++ b/src/game/Creature.h @@ -89,10 +89,7 @@ struct CreatureInfo float speed; float scale; uint32 rank; - float mindmg; - float maxdmg; uint32 dmgschool; - uint32 attackpower; float dmg_multiplier; uint32 baseattacktime; uint32 rangeattacktime; @@ -104,9 +101,6 @@ struct CreatureInfo uint32 trainer_spell; uint32 trainer_class; uint32 trainer_race; - float minrangedmg; - float maxrangedmg; - uint32 rangedattackpower; uint32 type; // enum CreatureType values uint32 type_flags; // enum CreatureTypeFlags mask values uint32 lootid; @@ -129,6 +123,8 @@ struct CreatureInfo float ModHealth; float ModMana; float ModArmor; + float ModDmg; + float ModRangedDmg; bool RacialLeader; uint32 questItems[6]; uint32 movementId; @@ -175,6 +171,8 @@ struct TRINITY_DLL_SPEC CreatureBaseStats uint32 BaseHealth[MAX_CREATURE_BASE_HP]; uint32 BaseMana; uint32 BaseArmor; + uint32 BaseDmg; + uint32 BaseRangedDmg; // Helpers @@ -197,6 +195,26 @@ struct TRINITY_DLL_SPEC CreatureBaseStats return uint32((BaseArmor * info->ModArmor) + 0.5f); } + uint32 GenerateMinDmg(CreatureInfo const* info) const + { + return uint32((BaseDmg * (info->baseattacktime / 1000.0f) / 2.5f) * info->ModDmg + 0.5f); + } + + uint32 GenerateMaxDmg(CreatureInfo const* info) const + { + return uint32((BaseDmg * (info->baseattacktime / 1000) - GenerateMinDmg(info)) * info->ModDmg + 0.5f); + } + + uint32 GenerateAttackPower(CreatureInfo const* info) const + { + return uint32(((GenerateMinDmg(info) + GenerateMaxDmg(info)) / 2.0f * 0.3f) * info->ModDmg + 0.5f); + } + + uint32 GenerateRangedDmg(CreatureInfo const* info) const + { + return uint32((BaseDmg * (info->baseattacktime / 1000.0f) * info->ModRangedDmg) + 0.5f); + } + static CreatureBaseStats const* GetBaseStats(uint32 level, uint8 unitClass); }; diff --git a/src/game/ObjectMgr.cpp b/src/game/ObjectMgr.cpp index 7c2c2e6a658..3416fcff41d 100644 --- a/src/game/ObjectMgr.cpp +++ b/src/game/ObjectMgr.cpp @@ -8917,7 +8917,7 @@ CreatureBaseStats const* ObjectMgr::GetCreatureBaseStats(uint32 level, uint8 uni void ObjectMgr::LoadCreatureClassLevelStats() { - QueryResult *result = WorldDatabase.Query("SELECT level, class, basehp0, basehp1, basehp2, basemana, basearmor FROM creature_classlevelstats"); + QueryResult *result = WorldDatabase.Query("SELECT level, class, basehp0, basehp1, basehp2, basemana, basearmor, basedmg, baserangeddmg FROM creature_classlevelstats"); if (!result) { @@ -8941,6 +8941,8 @@ void ObjectMgr::LoadCreatureClassLevelStats() stats.BaseHealth[i] = fields[i + 2].GetUInt32(); stats.BaseMana = fields[5].GetUInt32(); stats.BaseArmor = fields[6].GetUInt32(); + stats.BaseDmg = fields[7].GetUInt32(); + stats.BaseRangedDmg = fields[8].GetUInt32(); if (stats.Level > STRONG_MAX_LEVEL) { @@ -8987,6 +8989,8 @@ void ObjectMgr::LoadCreatureClassLevelStats() CreatureBaseStats new_stats = CreatureBaseStats(); new_stats.BaseArmor = 1; + new_stats.BaseDmg = 1; + new_stats.BaseRangedDmg = 1; for (uint8 j = 0; j < MAX_CREATURE_BASE_HP; ++j) new_stats.BaseHealth[j] = 1; new_stats.BaseMana = 0; diff --git a/src/game/StatSystem.cpp b/src/game/StatSystem.cpp index 7197779fdfd..b5895fbb2e6 100644 --- a/src/game/StatSystem.cpp +++ b/src/game/StatSystem.cpp @@ -25,6 +25,7 @@ #include "SharedDefines.h" #include "SpellAuras.h" #include "SpellAuraEffects.h" +#include "ObjectMgr.h" /*####################################### ######## ######## @@ -865,7 +866,8 @@ void Creature::UpdateDamagePhysical(WeaponAttackType attType) float weapon_maxdamage = GetWeaponDamageRange(attType, MAXDAMAGE); /* difference in AP between current attack power and base value from DB */ - float att_pwr_change = GetTotalAttackPowerValue(attType) - GetCreatureInfo()->attackpower; + CreatureBaseStats const* stats = objmgr.GetCreatureBaseStats(getLevel(), GetCreatureInfo()->unit_class); + float att_pwr_change = GetTotalAttackPowerValue(attType) - stats->GenerateAttackPower(GetCreatureInfo()); float base_value = GetModifierValue(unitMod, BASE_VALUE) + (att_pwr_change * GetAPMultiplier(attType, false) / 14.0f); float base_pct = GetModifierValue(unitMod, BASE_PCT); float total_value = GetModifierValue(unitMod, TOTAL_VALUE); diff --git a/src/scripts/eastern_kingdoms/karazhan/boss_prince_malchezaar.cpp b/src/scripts/eastern_kingdoms/karazhan/boss_prince_malchezaar.cpp index dcba83ab249..6a40cecacb6 100644 --- a/src/scripts/eastern_kingdoms/karazhan/boss_prince_malchezaar.cpp +++ b/src/scripts/eastern_kingdoms/karazhan/boss_prince_malchezaar.cpp @@ -270,8 +270,11 @@ struct TRINITY_DLL_DECL boss_malchezaarAI : public ScriptedAI //damage const CreatureInfo *cinfo = m_creature->GetCreatureInfo(); - m_creature->SetBaseWeaponDamage(BASE_ATTACK, MINDAMAGE, cinfo->mindmg); - m_creature->SetBaseWeaponDamage(BASE_ATTACK, MAXDAMAGE, cinfo->maxdmg); + const CreatureBaseStats *stats = ((CreatureBaseStats*)m_creature)->GetBaseStats(m_creature->getLevel(), cinfo->unit_class); + float mindmg = stats->GenerateMinDmg(cinfo); + float maxdmg = stats->GenerateMaxDmg(cinfo); + m_creature->SetBaseWeaponDamage(BASE_ATTACK, MINDAMAGE, mindmg); + m_creature->SetBaseWeaponDamage(BASE_ATTACK, MAXDAMAGE, maxdmg); m_creature->UpdateDamagePhysical(BASE_ATTACK); } @@ -393,15 +396,18 @@ struct TRINITY_DLL_DECL boss_malchezaarAI : public ScriptedAI //damage const CreatureInfo *cinfo = m_creature->GetCreatureInfo(); - m_creature->SetBaseWeaponDamage(BASE_ATTACK, MINDAMAGE, 2*cinfo->mindmg); - m_creature->SetBaseWeaponDamage(BASE_ATTACK, MAXDAMAGE, 2*cinfo->maxdmg); + const CreatureBaseStats *stats = ((CreatureBaseStats*)m_creature)->GetBaseStats(m_creature->getLevel(), cinfo->unit_class); + float mindmg = stats->GenerateMinDmg(cinfo); + float maxdmg = stats->GenerateMaxDmg(cinfo); + m_creature->SetBaseWeaponDamage(BASE_ATTACK, MINDAMAGE, 2 * mindmg); + m_creature->SetBaseWeaponDamage(BASE_ATTACK, MAXDAMAGE, 2 * maxdmg); m_creature->UpdateDamagePhysical(BASE_ATTACK); - m_creature->SetBaseWeaponDamage(OFF_ATTACK, MINDAMAGE, cinfo->mindmg); - m_creature->SetBaseWeaponDamage(OFF_ATTACK, MAXDAMAGE, cinfo->maxdmg); + m_creature->SetBaseWeaponDamage(OFF_ATTACK, MINDAMAGE, mindmg); + m_creature->SetBaseWeaponDamage(OFF_ATTACK, MAXDAMAGE, maxdmg); //Sigh, updating only works on main attack, do it manually .... - m_creature->SetFloatValue(UNIT_FIELD_MINOFFHANDDAMAGE, cinfo->mindmg); - m_creature->SetFloatValue(UNIT_FIELD_MAXOFFHANDDAMAGE, cinfo->maxdmg); + m_creature->SetFloatValue(UNIT_FIELD_MINOFFHANDDAMAGE, mindmg); + m_creature->SetFloatValue(UNIT_FIELD_MAXOFFHANDDAMAGE, maxdmg); m_creature->SetAttackTime(OFF_ATTACK, (m_creature->GetAttackTime(BASE_ATTACK)*150)/100); } diff --git a/src/scripts/eastern_kingdoms/zulgurub/boss_arlokk.cpp b/src/scripts/eastern_kingdoms/zulgurub/boss_arlokk.cpp index 7cea97bb7c2..05ab5c81447 100644 --- a/src/scripts/eastern_kingdoms/zulgurub/boss_arlokk.cpp +++ b/src/scripts/eastern_kingdoms/zulgurub/boss_arlokk.cpp @@ -234,8 +234,11 @@ struct TRINITY_DLL_DECL boss_arlokkAI : public ScriptedAI m_creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); const CreatureInfo *cinfo = m_creature->GetCreatureInfo(); - m_creature->SetBaseWeaponDamage(BASE_ATTACK, MINDAMAGE, (cinfo->mindmg +((cinfo->mindmg/100) * 35))); - m_creature->SetBaseWeaponDamage(BASE_ATTACK, MAXDAMAGE, (cinfo->maxdmg +((cinfo->maxdmg/100) * 35))); + const CreatureBaseStats *stats = ((CreatureBaseStats*)m_creature)->GetBaseStats(m_creature->getLevel(), cinfo->unit_class); + float mindmg = stats->GenerateMinDmg(cinfo); + float maxdmg = stats->GenerateMaxDmg(cinfo); + m_creature->SetBaseWeaponDamage(BASE_ATTACK, MINDAMAGE, (mindmg +((mindmg/100) * 35))); + m_creature->SetBaseWeaponDamage(BASE_ATTACK, MAXDAMAGE, (maxdmg +((maxdmg/100) * 35))); m_creature->UpdateDamagePhysical(BASE_ATTACK); if (Unit* pTarget = SelectUnit(SELECT_TARGET_RANDOM,0)) diff --git a/src/scripts/eastern_kingdoms/zulgurub/boss_marli.cpp b/src/scripts/eastern_kingdoms/zulgurub/boss_marli.cpp index e4b12ffb972..e240ae5db9a 100644 --- a/src/scripts/eastern_kingdoms/zulgurub/boss_marli.cpp +++ b/src/scripts/eastern_kingdoms/zulgurub/boss_marli.cpp @@ -145,8 +145,11 @@ struct TRINITY_DLL_DECL boss_marliAI : public ScriptedAI DoScriptText(SAY_TRANSFORM, m_creature); DoCast(m_creature, SPELL_SPIDER_FORM); const CreatureInfo *cinfo = m_creature->GetCreatureInfo(); - m_creature->SetBaseWeaponDamage(BASE_ATTACK, MINDAMAGE, (cinfo->mindmg +((cinfo->mindmg/100) * 35))); - m_creature->SetBaseWeaponDamage(BASE_ATTACK, MAXDAMAGE, (cinfo->maxdmg +((cinfo->maxdmg/100) * 35))); + const CreatureBaseStats *stats = ((CreatureBaseStats*)m_creature)->GetBaseStats(m_creature->getLevel(), cinfo->unit_class); + float mindmg = stats->GenerateMinDmg(cinfo); + float maxdmg = stats->GenerateMaxDmg(cinfo); + m_creature->SetBaseWeaponDamage(BASE_ATTACK, MINDAMAGE, (mindmg +((mindmg/100) * 35))); + m_creature->SetBaseWeaponDamage(BASE_ATTACK, MAXDAMAGE, (maxdmg +((maxdmg/100) * 35))); m_creature->UpdateDamagePhysical(BASE_ATTACK); DoCast(m_creature->getVictim(), SPELL_ENVOLWINGWEB); @@ -185,8 +188,11 @@ struct TRINITY_DLL_DECL boss_marliAI : public ScriptedAI { m_creature->SetDisplayId(15220); const CreatureInfo *cinfo = m_creature->GetCreatureInfo(); - m_creature->SetBaseWeaponDamage(BASE_ATTACK, MINDAMAGE, (cinfo->mindmg +((cinfo->mindmg/100) * 1))); - m_creature->SetBaseWeaponDamage(BASE_ATTACK, MAXDAMAGE, (cinfo->maxdmg +((cinfo->maxdmg/100) * 1))); + const CreatureBaseStats *stats = ((CreatureBaseStats*)m_creature)->GetBaseStats(m_creature->getLevel(), cinfo->unit_class); + float mindmg = stats->GenerateMinDmg(cinfo); + float maxdmg = stats->GenerateMaxDmg(cinfo); + m_creature->SetBaseWeaponDamage(BASE_ATTACK, MINDAMAGE, (mindmg +((mindmg/100) * 1))); + m_creature->SetBaseWeaponDamage(BASE_ATTACK, MAXDAMAGE, (maxdmg +((maxdmg/100) * 1))); m_creature->UpdateDamagePhysical(BASE_ATTACK); PhaseTwo = false; diff --git a/src/scripts/eastern_kingdoms/zulgurub/boss_thekal.cpp b/src/scripts/eastern_kingdoms/zulgurub/boss_thekal.cpp index e7002673cd3..3f8b49c8970 100644 --- a/src/scripts/eastern_kingdoms/zulgurub/boss_thekal.cpp +++ b/src/scripts/eastern_kingdoms/zulgurub/boss_thekal.cpp @@ -185,8 +185,11 @@ struct TRINITY_DLL_DECL boss_thekalAI : public ScriptedAI m_creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); m_creature->SetHealth(int(m_creature->GetMaxHealth()*1.0)); const CreatureInfo *cinfo = m_creature->GetCreatureInfo(); - m_creature->SetBaseWeaponDamage(BASE_ATTACK, MINDAMAGE, (cinfo->mindmg +((cinfo->mindmg/100) * 40))); - m_creature->SetBaseWeaponDamage(BASE_ATTACK, MAXDAMAGE, (cinfo->maxdmg +((cinfo->maxdmg/100) * 40))); + const CreatureBaseStats *stats = ((CreatureBaseStats*)m_creature)->GetBaseStats(m_creature->getLevel(), cinfo->unit_class); + float mindmg = stats->GenerateMinDmg(cinfo); + float maxdmg = stats->GenerateMaxDmg(cinfo); + m_creature->SetBaseWeaponDamage(BASE_ATTACK, MINDAMAGE, (mindmg +((mindmg/100) * 40))); + m_creature->SetBaseWeaponDamage(BASE_ATTACK, MAXDAMAGE, (maxdmg +((maxdmg/100) * 40))); m_creature->UpdateDamagePhysical(BASE_ATTACK); DoResetThreat(); PhaseTwo = true; diff --git a/src/scripts/eastern_kingdoms/zulgurub/boss_venoxis.cpp b/src/scripts/eastern_kingdoms/zulgurub/boss_venoxis.cpp index 3b094b74b1e..5ea03ab4615 100644 --- a/src/scripts/eastern_kingdoms/zulgurub/boss_venoxis.cpp +++ b/src/scripts/eastern_kingdoms/zulgurub/boss_venoxis.cpp @@ -148,8 +148,11 @@ struct TRINITY_DLL_DECL boss_venoxisAI : public ScriptedAI DoCast(m_creature, SPELL_SNAKE_FORM); m_creature->SetFloatValue(OBJECT_FIELD_SCALE_X, 2.00f); const CreatureInfo *cinfo = m_creature->GetCreatureInfo(); - m_creature->SetBaseWeaponDamage(BASE_ATTACK, MINDAMAGE, (cinfo->mindmg +((cinfo->mindmg/100) * 25))); - m_creature->SetBaseWeaponDamage(BASE_ATTACK, MAXDAMAGE, (cinfo->maxdmg +((cinfo->maxdmg/100) * 25))); + const CreatureBaseStats *stats = ((CreatureBaseStats*)m_creature)->GetBaseStats(m_creature->getLevel(), cinfo->unit_class); + float mindmg = stats->GenerateMinDmg(cinfo); + float maxdmg = stats->GenerateMaxDmg(cinfo); + m_creature->SetBaseWeaponDamage(BASE_ATTACK, MINDAMAGE, (mindmg +((mindmg/100) * 25))); + m_creature->SetBaseWeaponDamage(BASE_ATTACK, MAXDAMAGE, (maxdmg +((maxdmg/100) * 25))); m_creature->UpdateDamagePhysical(BASE_ATTACK); DoResetThreat(); PhaseTwo = true; diff --git a/src/scripts/world/npcs_special.cpp b/src/scripts/world/npcs_special.cpp index a57507f9c6a..93e68d074e1 100644 --- a/src/scripts/world/npcs_special.cpp +++ b/src/scripts/world/npcs_special.cpp @@ -1580,6 +1580,7 @@ struct TRINITY_DLL_DECL npc_snake_trap_serpentsAI : public ScriptedAI SpellTimer = 0; CreatureInfo const *Info = m_creature->GetCreatureInfo(); + CreatureBaseStats const *stats = ((CreatureBaseStats*)m_creature)->GetBaseStats(m_creature->getLevel(), Info->unit_class); if (Info->Entry == C_VIPER) IsViper = true; @@ -1588,8 +1589,9 @@ struct TRINITY_DLL_DECL npc_snake_trap_serpentsAI : public ScriptedAI //Add delta to make them not all hit the same time uint32 delta = (rand() % 7) * 100; + float attackpower = stats->GenerateAttackPower(Info); m_creature->SetStatFloatValue(UNIT_FIELD_BASEATTACKTIME, Info->baseattacktime + delta); - m_creature->SetStatFloatValue(UNIT_FIELD_RANGED_ATTACK_POWER , Info->attackpower); + m_creature->SetStatFloatValue(UNIT_FIELD_RANGED_ATTACK_POWER , attackpower); } //Redefined for random target selection: diff --git a/src/shared/Database/SQLStorage.cpp b/src/shared/Database/SQLStorage.cpp index e36297ed35b..efe00b9c0f6 100644 --- a/src/shared/Database/SQLStorage.cpp +++ b/src/shared/Database/SQLStorage.cpp @@ -27,8 +27,8 @@ extern DatabasePostgre WorldDatabase; extern DatabaseMysql WorldDatabase; #endif -const char CreatureInfosrcfmt[]="iiiiiiiiiisssiiiiiiiffiffiifiiiiiiiiiiffiiiiiiiiiiiiiiiiiiiiiiiisiifffliiiiiiiliiis"; -const char CreatureInfodstfmt[]="iiiiiiiiiisssiiiiiiiffiffiifiiiiiiiiiiffiiiiiiiiiiiiiiiiiiiiiiiisiifffliiiiiiiliiii"; +const char CreatureInfosrcfmt[]="iiiiiiiiiisssiiiiiiiffiifiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiisiifffffliiiiiiiliiis"; +const char CreatureInfodstfmt[]="iiiiiiiiiisssiiiiiiiffiifiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiisiifffffliiiiiiiliiii"; const char CreatureDataAddonInfofmt[]="iiiiiis"; const char CreatureModelfmt[]="iffbi"; const char CreatureInfoAddonInfofmt[]="iiiiiis"; |