Merge branch 'master' of github.com:TrinityCore/TrinityCore into 4.3.4

Conflicts:
	src/server/game/Globals/ObjectMgr.cpp
	src/server/game/Spells/SpellMgr.cpp
	src/server/game/Spells/SpellMgr.h
	src/server/game/World/World.cpp
This commit is contained in:
Vincent-Michael
2013-07-25 00:41:37 +02:00
11 changed files with 1752 additions and 89 deletions
@@ -0,0 +1,682 @@
DELETE FROM `spell_ranks` WHERE `first_spell_id` IN (
5923,
5952,
9452,
9453,
9799,
11069,
11070,
11071,
11078,
11083,
11094,
11095,
11100,
11103,
11108,
11115,
11119,
11124,
11151,
11160,
11170,
11175,
11180,
11185,
11189,
11190,
11207,
11210,
11213,
11222,
11232,
11237,
11242,
11247,
11252,
11255,
12163,
12281,
12282,
12284,
12285,
12286,
12287,
12289,
12290,
12295,
12297,
12298,
12299,
12300,
12301,
12308,
12311,
12312,
12313,
12317,
12318,
12319,
12320,
12321,
12322,
12324,
12329,
12700,
12797,
12834,
12862,
13705,
13706,
13709,
13712,
13713,
13715,
13732,
13733,
13741,
13742,
13743,
13754,
13958,
13960,
13975,
13976,
13981,
13983,
14057,
14076,
14079,
14082,
14113,
14128,
14138,
14144,
14156,
14158,
14162,
14165,
14168,
14171,
14174,
14179,
14186,
14520,
14521,
14522,
14523,
14531,
14747,
14748,
14749,
14750,
14889,
14892,
14898,
14901,
14908,
14909,
14910,
14911,
14912,
14913,
15058,
15257,
15259,
15260,
15270,
15273,
15274,
15275,
15318,
15337,
15392,
16035,
16038,
16039,
16040,
16043,
16086,
16089,
16173,
16176,
16178,
16179,
16180,
16181,
16182,
16184,
16187,
16194,
16252,
16254,
16255,
16256,
16258,
16259,
16261,
16262,
16266,
16462,
16487,
16493,
16513,
16538,
16578,
16757,
16814,
16819,
16821,
16833,
16836,
16845,
16850,
16858,
16880,
16896,
16909,
16929,
16934,
16940,
16942,
16947,
16966,
16972,
16998,
17002,
17003,
17050,
17056,
17063,
17069,
17074,
17104,
17106,
17111,
17118,
17123,
17322,
17485,
17778,
17783,
17788,
17793,
17804,
17810,
17815,
17917,
17927,
17954,
17959,
18094,
18096,
18119,
18126,
18135,
18174,
18179,
18182,
18213,
18218,
18271,
18427,
18459,
18462,
18530,
18551,
18692,
18694,
18697,
18703,
18705,
18709,
18731,
18754,
18767,
18769,
18827,
19159,
19168,
19184,
19255,
19286,
19290,
19295,
19370,
19376,
19407,
19416,
19421,
19426,
19454,
19461,
19464,
19485,
19498,
19507,
19549,
19552,
19559,
19572,
19578,
19583,
19590,
19598,
19609,
19616,
19621,
20042,
20049,
20060,
20096,
20101,
20111,
20117,
20127,
20138,
20143,
20174,
20177,
20196,
20205,
20210,
20224,
20234,
20237,
20244,
20254,
20257,
20262,
20335,
20359,
20468,
20487,
20500,
20502,
20504,
23584,
23785,
24443,
24968,
25956,
26022,
27789,
27811,
27839,
27900,
28574,
28996,
28999,
29062,
29074,
29082,
29140,
29187,
29192,
29206,
29438,
29441,
29447,
29590,
29593,
29598,
29721,
29723,
29759,
29787,
29834,
29836,
29888,
30054,
30060,
30143,
30160,
30242,
30288,
30293,
30299,
30319,
30664,
30672,
30675,
30802,
30812,
30816,
30864,
30867,
30872,
30881,
30892,
30894,
30902,
30919,
31122,
31124,
31130,
31208,
31211,
31216,
31221,
31226,
31228,
31234,
31244,
31380,
31569,
31571,
31574,
31579,
31584,
31638,
31641,
31656,
31667,
31670,
31674,
31679,
31682,
31785,
31822,
31825,
31828,
31833,
31837,
31844,
31848,
31850,
31858,
31866,
31871,
31876,
31879,
32043,
32381,
32385,
32477,
33142,
33150,
33158,
33167,
33186,
33191,
33201,
33213,
33221,
33589,
33592,
33597,
33600,
33603,
33851,
33853,
33859,
33872,
33879,
33881,
33886,
34151,
34293,
34297,
34453,
34455,
34462,
34466,
34475,
34482,
34485,
34491,
34494,
34497,
34500,
34506,
34753,
34908,
34935,
34948,
34950,
35029,
35100,
35104,
35363,
35446,
35541,
35578,
35691,
37116,
44378,
44394,
44397,
44400,
44404,
44442,
44445,
44449,
44543,
44546,
44557,
44566,
44745,
45234,
46854,
46859,
46865,
46867,
46908,
46910,
46913,
46945,
46951,
47195,
47198,
47201,
47220,
47230,
47236,
47245,
47258,
47266,
47294,
47507,
47509,
47516,
47535,
47558,
47562,
47569,
47573,
47580,
47586,
48384,
48389,
48409,
48411,
48432,
48483,
48488,
48492,
48496,
48506,
48516,
48532,
48535,
48539,
48962,
48963,
48965,
48977,
48978,
48979,
48985,
48987,
48988,
48997,
49004,
49006,
49013,
49015,
49018,
49023,
49024,
49027,
49032,
49036,
49042,
49137,
49140,
49145,
49146,
49149,
49175,
49182,
49186,
49188,
49189,
49200,
49202,
49208,
49217,
49219,
49220,
49223,
49224,
49226,
49455,
49467,
49471,
49588,
50040,
50117,
50187,
50365,
50384,
50391,
50685,
50880,
51099,
51123,
51179,
51459,
51466,
51468,
51474,
51480,
51483,
51521,
51523,
51525,
51528,
51554,
51556,
51560,
51562,
51625,
51627,
51632,
51634,
51664,
51672,
51682,
51685,
51692,
51698,
51708,
51745,
51883,
52234,
52783,
52795,
53137,
53175,
53178,
53180,
53182,
53186,
53203,
53215,
53221,
53228,
53234,
53241,
53252,
53256,
53262,
53290,
53295,
53298,
53302,
53375,
53379,
53380,
53409,
53427,
53450,
53481,
53483,
53486,
53501,
53511,
53514,
53527,
53551,
53554,
53556,
53569,
53583,
53590,
53620,
53660,
53671,
53695,
53709,
53754,
54037,
54117,
54347,
54639,
54747,
55061,
55091,
55107,
55129,
55620,
55666,
56314,
56333,
56339,
56342,
56636,
56927,
57470,
57810,
57849,
57873,
57878,
58414,
58872,
59088,
61154,
61216,
61680,
61682,
61686,
61689,
62097,
62758,
62759,
62764,
62905,
63117,
63156,
63349,
63370,
63373,
63410,
63504,
63534,
63625,
63646,
63730,
64127,
64353,
65661,
66799);
@@ -0,0 +1,3 @@
DELETE FROM `trinity_string` WHERE entry = 850;
INSERT INTO `trinity_string` (entry, content_default, content_loc1, content_loc2, content_loc3, content_loc4, content_loc5, content_loc6, content_loc7, content_loc8) VALUES
(850, '├─ Rank: %s (ID: %u)', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
@@ -0,0 +1,876 @@
ALTER TABLE `spell_proc_event`
CHANGE `entry` `entry` MEDIUMINT(8) DEFAULT 0 NOT NULL;
DELETE FROM `spell_proc_event` WHERE `entry` IN (
325,
905,
945,
8134,
8494,
8495,
10191,
10192,
10193,
10431,
10432,
11120,
12487,
12488,
12574,
12575,
12576,
12577,
12598,
12668,
12724,
12725,
12726,
12727,
12799,
12812,
12813,
12814,
12815,
12846,
12847,
12848,
12849,
12867,
12872,
12873,
12958,
12967,
12968,
12969,
12970,
12971,
12972,
12973,
12974,
13867,
14070,
14071,
14160,
14161,
14190,
14193,
14194,
14195,
14318,
14319,
14320,
14321,
14322,
14774,
15338,
15362,
15363,
16196,
16198,
16235,
16240,
16277,
16278,
16279,
16280,
16281,
16282,
16283,
16284,
16489,
16492,
16544,
16923,
16924,
16954,
16961,
17107,
17108,
17796,
17801,
17802,
17803,
18073,
18095,
18120,
19387,
19388,
19573,
20056,
20057,
20179,
20180,
20181,
20182,
20212,
20213,
20214,
20215,
20235,
20336,
20337,
20501,
20927,
20928,
23695,
24398,
25296,
25469,
25472,
25988,
27044,
27131,
27179,
27815,
27816,
28592,
28593,
29075,
29076,
29179,
29180,
29444,
29594,
29838,
30295,
30296,
30301,
30302,
30678,
30679,
30705,
30883,
30884,
30885,
30886,
31126,
31245,
31570,
31572,
31657,
31658,
31835,
31836,
31872,
31877,
31878,
32387,
32392,
32393,
32394,
32593,
32594,
33145,
33146,
33154,
33192,
33193,
33736,
33882,
33883,
34498,
34499,
34502,
34503,
34859,
34860,
34916,
34917,
34938,
34939,
34954,
35102,
35550,
35551,
35552,
35553,
43019,
43020,
44443,
44446,
44448,
44469,
44470,
44471,
44472,
44560,
44561,
45243,
45244,
46855,
46914,
46915,
46949,
47196,
47197,
47202,
47203,
47204,
47205,
47246,
47247,
47259,
47260,
47264,
47265,
47511,
47515,
47517,
47570,
47581,
47582,
48110,
48111,
48112,
48113,
48159,
48160,
48484,
48485,
48499,
48500,
48510,
48511,
48521,
48525,
48544,
48545,
48951,
48952,
49280,
49281,
49283,
49284,
49503,
49504,
49508,
49509,
49529,
49530,
49599,
49627,
49628,
49654,
49655,
50033,
50034,
50115,
50884,
50885,
50886,
50887,
51462,
51463,
51464,
51465,
51478,
51479,
51522,
51524,
51557,
51558,
51563,
51564,
51565,
51566,
51626,
51628,
51629,
51635,
51636,
51665,
51667,
51668,
51669,
51674,
51679,
51696,
51989,
52004,
52005,
52007,
52008,
52129,
52131,
52134,
52136,
52138,
52797,
52798,
52799,
52800,
53179,
53216,
53217,
53222,
53224,
53232,
53237,
53238,
53259,
53260,
53291,
53292,
53376,
53381,
53382,
53488,
53502,
53503,
53530,
53552,
53553,
53576,
53673,
53696,
53710,
53711,
54151,
54154,
54155,
54637,
54638,
54749,
55667,
56343,
56344,
56611,
56612,
56613,
56614,
56637,
56638,
56822,
56834,
56835,
57472,
57880,
57881,
57960,
58874,
59057,
59089,
61345,
61346,
61847,
62765,
63158,
63245,
63374,
63733,
63737,
64129,
66191,
66192,
66814,
66815,
66816,
66817);
DELETE FROM `spell_proc_event` WHERE `entry` IN (
324,
974,
1463,
5952,
9799,
11095,
11119,
11180,
11185,
11213,
11255,
12281,
12289,
12298,
12311,
12319,
12797,
12834,
12966,
13165,
13754,
13983,
14156,
14186,
14531,
14892,
15337,
16086,
16176,
16180,
16256,
16257,
16487,
16850,
16880,
16952,
16958,
17106,
17793,
18094,
18096,
18119,
19184,
19572,
20049,
20177,
20210,
20234,
20335,
20500,
20925,
27811,
29074,
29441,
29593,
29834,
30160,
30293,
30299,
30675,
30701,
30881,
31124,
31244,
31569,
31571,
31656,
31833,
31871,
31876,
32385,
33076,
33142,
33150,
33191,
33881,
34497,
34500,
34753,
34914,
34935,
34950,
35100,
35541,
41635,
44442,
44445,
44449,
44557,
45234,
46854,
46867,
46913,
46945,
47195,
47201,
47245,
47258,
47263,
47509,
47516,
47569,
47580,
48483,
48496,
48506,
48516,
48539,
48988,
49004,
49018,
49149,
49188,
49208,
49217,
49219,
49223,
49467,
50880,
51459,
51474,
51521,
51523,
51556,
51562,
51625,
51627,
51634,
51664,
51672,
51692,
51940,
52127,
52795,
53178,
53215,
53221,
53228,
53234,
53256,
53290,
53375,
53380,
53486,
53501,
53527,
53551,
53569,
53671,
53695,
53709,
54639,
54747,
55666,
56342,
56636,
57470,
57878,
58872,
59088,
61846,
62764,
63156,
63373,
63730,
64127,
65661,
66799,
-324,
-974,
-1463,
-5952,
-9799,
-11095,
-11119,
-11180,
-11185,
-11213,
-11255,
-12281,
-12289,
-12298,
-12311,
-12319,
-12797,
-12834,
-12966,
-13165,
-13754,
-13983,
-14156,
-14186,
-14531,
-14892,
-15337,
-16086,
-16176,
-16180,
-16256,
-16257,
-16487,
-16850,
-16880,
-16952,
-16958,
-17106,
-17793,
-18094,
-18096,
-18119,
-19184,
-19572,
-20049,
-20177,
-20210,
-20234,
-20335,
-20500,
-20925,
-27811,
-29074,
-29441,
-29593,
-29834,
-30160,
-30293,
-30299,
-30675,
-30701,
-30881,
-31124,
-31244,
-31569,
-31571,
-31656,
-31833,
-31871,
-31876,
-32385,
-33076,
-33142,
-33150,
-33191,
-33881,
-34497,
-34500,
-34753,
-34914,
-34935,
-34950,
-35100,
-35541,
-41635,
-44442,
-44445,
-44449,
-44557,
-45234,
-46854,
-46867,
-46913,
-46945,
-47195,
-47201,
-47245,
-47258,
-47263,
-47509,
-47516,
-47569,
-47580,
-48483,
-48496,
-48506,
-48516,
-48539,
-48988,
-49004,
-49018,
-49149,
-49188,
-49208,
-49217,
-49219,
-49223,
-49467,
-50880,
-51459,
-51474,
-51521,
-51523,
-51556,
-51562,
-51625,
-51627,
-51634,
-51664,
-51672,
-51692,
-51940,
-52127,
-52795,
-53178,
-53215,
-53221,
-53228,
-53234,
-53256,
-53290,
-53375,
-53380,
-53486,
-53501,
-53527,
-53551,
-53569,
-53671,
-53695,
-53709,
-54639,
-54747,
-55666,
-56342,
-56636,
-57470,
-57878,
-58872,
-59088,
-61846,
-62764,
-63156,
-63373,
-63730,
-64127,
-65661,
-66799);
INSERT INTO `spell_proc_event` (`entry`, `SchoolMask`, `SpellFamilyName`, `SpellFamilyMask0`, `SpellFamilyMask1`, `SpellFamilyMask2`, `procFlags`, `procEx`, `ppmRate`, `CustomChance`, `Cooldown`) VALUES
(-324,0,0,0,0,0,0,0,0,0,3),
(-974,0,0,0,0,0,139944,0,0,0,3),
(-1463,0,0,0,0,0,0,1024,0,0,0),
(-5952,0,8,0,1,0,0,0,0,0,0),
(-9799,0,0,0,0,0,0,2,0,0,0),
(-11095,0,3,16,0,0,0,0,0,0,0),
(-11119,4,3,0,0,0,0,2,0,0,0),
(-11180,16,3,0,0,0,0,0,0,0,0),
(-11185,0,3,128,0,0,327680,0,0,0,0),
(-11213,0,3,0,0,0,0,0,0,0,0),
(-11255,0,3,16384,0,0,0,0,0,0,0),
(-12281,0,4,2858419268,4194565,0,0,0,0,0,6),
(-12289,0,4,2,0,0,0,0,0,0,0),
(-12298,0,0,0,0,0,0,112,0,0,0),
(-12311,0,4,2048,1,0,0,0,0,0,0),
(-12319,0,0,0,0,0,0,2,0,0,0),
(-12797,0,4,1024,0,0,0,0,0,0,0),
(-12834,0,0,0,0,0,0,2,0,0,0),
(-12966,0,0,0,0,0,0,65536,0,0,0),
(-13165,0,0,0,0,0,64,0,0,0,0),
(-13754,0,8,16,0,0,0,0,0,0,0),
(-13983,0,0,0,0,0,0,24,0,0,0),
(-14156,0,8,4063232,8,0,0,0,0,0,0),
(-14186,0,8,1082131720,6,0,0,2,0,0,1),
(-14531,0,0,0,0,0,0,2,0,0,0),
(-14892,0,6,268443136,65540,0,0,2,0,0,0),
(-15337,0,6,8396800,2,0,0,2,0,0,0),
(-16086,4,11,0,262144,0,196608,0,0,0,0),
(-16176,0,11,448,0,16,0,2,0,0,0),
(-16180,0,11,448,0,16,0,2,0,100,0),
(-16256,0,0,0,0,0,0,2,0,0,0),
(-16257,0,0,0,0,0,0,65536,0,0,0),
(-16487,0,0,0,0,0,0,2,0,0,0),
(-16850,0,7,4,0,0,0,0,0,0,0),
(-16880,72,7,103,58720258,0,0,2,0,0,0),
(-16952,0,7,233472,1024,262144,0,2,0,0,0),
(-16958,0,0,0,0,0,0,2,0,0,0),
(-17106,0,7,524288,0,0,0,0,0,0,0),
(-17793,0,5,1,0,0,0,0,0,0,0),
(-18094,0,5,10,0,0,0,0,0,0,0),
(-18096,0,5,256,8388608,0,0,2,0,0,0),
(-18119,0,5,0,8388608,0,0,0,0,0,0),
(-19184,0,9,16,8192,0,0,0,0,0,0),
(-19572,0,9,8388608,0,0,16384,0,0,0,0),
(-20049,0,0,0,0,0,0,2,0,0,0),
(-20177,0,0,0,0,0,0,67,0,0,0),
(-20210,0,10,3221225472,65536,0,0,2,0,0,0),
(-20234,0,10,32768,0,0,0,0,0,0,0),
(-20335,0,10,8388608,0,8,16,0,0,100,0),
(-20500,0,4,268435456,0,0,0,0,0,0,0),
(-20925,0,0,0,0,0,0,64,0,0,0),
(-27811,0,0,0,0,0,0,2,0,0,0),
(-29074,20,3,0,0,0,0,2,0,0,0),
(-29441,0,0,0,0,0,0,8,0,0,1),
(-29593,0,0,0,0,0,0,112,0,0,0),
(-29834,0,0,0,0,0,0,65536,0,0,0),
(-30160,0,0,0,0,0,0,2,0,0,0),
(-30293,0,5,897,8519872,0,0,0,0,0,0),
(-30299,126,0,0,0,0,0,0,0,0,0),
(-30675,0,11,3,0,0,0,0,0,0,0),
(-30701,28,0,0,0,0,664232,0,0,100,0),
(-30881,0,0,0,0,0,0,0,0,0,30),
(-31124,0,8,16777222,0,0,0,0,0,0,0),
(-31244,0,8,4063232,9,0,0,52,0,0,0),
(-31569,0,3,65536,0,0,0,0,0,0,0),
(-31571,0,3,0,34,0,16384,0,0,0,0),
(-31656,4,3,134217728,0,0,0,0,0,0,0),
(-31833,0,10,2147483648,0,0,0,0,0,0,0),
(-31871,0,10,16,0,0,16384,0,0,0,0),
(-31876,0,10,8388608,0,0,0,262144,0,0,0),
(-32385,0,5,1,262144,0,0,0,0,0,0),
(-33076,0,0,0,0,0,664232,0,0,0,0),
(-33142,0,0,0,0,0,0,2,0,0,0),
(-33150,0,0,0,0,0,0,2,0,0,0),
(-33191,0,6,32768,1024,64,0,0,0,0,0),
(-33881,0,0,0,0,0,0,2,0,0,0),
(-34497,0,0,0,0,0,0,2,0,0,0),
(-34500,0,0,0,0,0,0,2,0,0,0),
(-34753,0,6,6144,4,4096,0,2,0,0,0),
(-34914,0,6,8192,0,0,0,0,0,0,0),
(-34935,0,0,0,0,0,0,0,0,0,8),
(-34950,0,0,0,0,0,0,2,0,0,0),
(-35100,0,9,4096,0,1,0,0,0,0,0),
(-35541,0,0,0,0,0,8388608,0,0,0,0),
(-41635,0,0,0,0,0,664232,0,0,0,0),
(-44442,0,3,8388608,64,0,0,65536,0,0,1),
(-44445,0,3,19,69632,0,0,0,0,0,0),
(-44449,0,3,551686775,102472,0,0,2,0,0,0),
(-44557,0,3,32,0,0,0,0,0,0,0),
(-45234,0,0,0,0,0,0,2,0,0,0),
(-46854,0,0,0,0,0,0,2,0,0,0),
(-46867,0,0,0,0,0,0,2,0,0,0),
(-46913,0,4,64,1028,0,0,262144,0,0,0),
(-46945,0,4,0,65536,0,0,0,0,0,0),
(-47195,0,5,2,0,0,0,0,0,0,0),
(-47201,0,5,16393,262144,0,0,0,0,0,0),
(-47245,0,5,2,0,0,0,1,0,0,0),
(-47258,0,5,0,8388608,0,0,65536,0,0,0),
(-47263,32,5,0,0,0,0,2,0,0,20),
(-47509,0,0,0,0,0,0,2,0,0,0),
(-47516,0,6,6144,65536,0,0,0,0,0,0),
(-47569,0,6,16384,0,0,16384,0,0,0,0),
(-47580,0,6,0,0,64,0,65536,0,0,0),
(-48483,0,7,34816,1088,0,0,0,0,0,0),
(-48496,0,7,96,33554434,0,0,2,0,0,0),
(-48506,0,7,5,0,0,0,0,0,0,0),
(-48516,0,7,5,0,0,0,2,0,0,30),
(-48539,0,7,16,67108864,0,262144,0,0,0,0),
(-48988,0,0,0,0,0,0,2,0,0,0),
(-49004,0,0,0,0,0,0,51,0,0,0),
(-49018,0,15,20971520,0,0,0,0,0,0,0),
(-49149,0,15,6,131074,0,0,0,0,0,0),
(-49188,0,15,0,131072,0,0,0,0,0,0),
(-49208,0,15,4194304,65536,0,0,0,0,0,0),
(-49217,0,15,0,0,2,0,0,0,0,1),
(-49219,0,0,0,0,0,4,0,0,0,0),
(-49223,0,15,17,134348800,0,0,0,0,0,0),
(-49467,0,15,16,131072,0,0,0,0,0,0),
(-50880,0,15,0,67108864,0,0,0,0,0,0),
(-51459,0,0,0,0,0,4,0,0,0,0),
(-51474,0,0,0,0,0,0,65536,0,0,0),
(-51521,0,11,0,16777216,0,0,0,0,0,0),
(-51523,0,11,0,1,0,65536,0,0,50,0),
(-51556,0,11,192,0,16,0,2,0,0,0),
(-51562,0,11,256,0,16,0,0,0,0,0),
(-51625,0,8,268476416,0,0,0,0,0,0,0),
(-51627,0,0,0,0,0,0,112,0,0,0),
(-51634,0,0,0,0,0,0,2,0,0,0),
(-51664,0,8,131072,8,0,0,0,0,0,0),
(-51672,0,0,0,0,0,0,16,0,0,1),
(-51692,0,8,516,0,0,0,0,0,0,0),
(-51940,0,0,0,0,0,0,0,0,20,0),
(-52127,0,0,0,0,0,0,0,0,0,3),
(-52795,0,6,1,0,0,0,0,0,0,0),
(-53178,0,9,0,268435456,0,65536,0,0,100,0),
(-53215,0,9,1,0,0,0,0,0,0,0),
(-53221,0,9,0,1,0,0,0,0,0,0),
(-53228,0,9,32,16777216,0,0,0,0,0,0),
(-53234,0,9,131072,1,1,0,2,0,0,0),
(-53256,0,9,2048,8388609,0,0,2,0,0,0),
(-53290,0,9,2048,1,512,0,2,0,0,0),
(-53375,0,10,0,8192,0,1024,0,0,0,6),
(-53380,0,10,8388608,163840,0,0,262146,0,0,0),
(-53486,0,10,8388608,163840,0,0,262146,0,0,0),
(-53501,0,0,0,0,0,0,2,0,0,0),
(-53527,1,10,0,0,4,1024,1,0,100,0),
(-53551,0,10,4096,0,0,0,0,0,0,0),
(-53569,0,10,1075838976,65536,0,0,0,0,0,0),
(-53671,0,10,8388608,0,0,0,0,0,0,0),
(-53695,0,10,8388608,0,8,16,0,0,0,0),
(-53709,2,10,16384,0,0,0,0,0,0,0),
(-54639,0,15,4194304,65536,0,0,0,0,0,0),
(-54747,0,0,0,0,0,0,65536,0,0,0),
(-55666,0,15,1,134217728,0,0,0,0,0,0),
(-56342,0,9,24,134217728,147456,0,0,0,0,22),
(-56636,0,4,32,0,0,0,262144,0,0,6),
(-57470,0,6,1,0,0,0,0,0,0,0),
(-57878,0,0,0,0,0,0,16,0,0,0),
(-58872,0,0,0,0,0,0,270403,0,0,0),
(-59088,0,4,0,2,0,1024,0,0,0,0),
(-61846,0,0,0,0,0,64,0,0,0,0),
(-62764,0,9,0,268435456,0,65536,0,0,100,0),
(-63156,0,5,1,192,0,0,0,0,0,0),
(-63373,0,11,2147483648,0,0,65536,0,0,0,0),
(-63730,0,6,2048,4,0,0,0,0,0,0),
(-64127,0,6,1,1,0,0,0,0,0,0),
(-65661,0,15,4194321,537001988,0,16,0,0,100,0),
(-66799,0,15,4194304,0,0,0,0,0,0,0);
+14 -10
View File
@@ -4827,10 +4827,10 @@ void ObjectMgr::LoadSpellScriptNames()
Field* fields = result->Fetch();
int32 spellId = fields[0].GetInt32();
const char *scriptName = fields[1].GetCString();
char const* scriptName = fields[1].GetCString();
bool allRanks = false;
if (spellId <= 0)
if (spellId < 0)
{
allRanks = true;
spellId = -spellId;
@@ -4839,20 +4839,18 @@ void ObjectMgr::LoadSpellScriptNames()
SpellInfo const* spellInfo = sSpellMgr->GetSpellInfo(spellId);
if (!spellInfo)
{
TC_LOG_ERROR(LOG_FILTER_SQL, "Scriptname:`%s` spell (spell_id:%d) does not exist in `Spell.dbc`.", scriptName, fields[0].GetInt32());
TC_LOG_ERROR(LOG_FILTER_SQL, "Scriptname: `%s` spell (Id: %d) does not exist.", scriptName, spellId);
continue;
}
if (allRanks)
{
if (sSpellMgr->GetFirstSpellInChain(spellId) != uint32(spellId))
if (!spellInfo->IsRanked())
TC_LOG_ERROR(LOG_FILTER_SQL, "Scriptname: `%s` spell (Id: %d) has no ranks of spell.", scriptName, fields[0].GetInt32());
if (spellInfo->GetFirstRankSpell()->Id != uint32(spellId))
{
TC_LOG_ERROR(LOG_FILTER_SQL, "Scriptname:`%s` spell (spell_id:%d) is not first rank of spell.", scriptName, fields[0].GetInt32());
continue;
}
if (!sSpellMgr->GetNextSpellInChain(spellId))
{
TC_LOG_ERROR(LOG_FILTER_SQL, "Scriptname:`%s` spell (spell_id:%d) has no ranks of spell.", scriptName, fields[0].GetInt32());
TC_LOG_ERROR(LOG_FILTER_SQL, "Scriptname: `%s` spell (Id: %d) is not first rank of spell.", scriptName, fields[0].GetInt32());
continue;
}
while (spellInfo)
@@ -4862,7 +4860,13 @@ void ObjectMgr::LoadSpellScriptNames()
}
}
else
{
if (spellInfo->IsRanked())
TC_LOG_ERROR(LOG_FILTER_SQL, "Scriptname: `%s` spell (Id: %d) is ranked spell. Properly not all ranks are assigned to this script.", scriptName, spellId);
_spellScriptsStore.insert(SpellScriptsContainer::value_type(spellInfo->Id, GetScriptId(scriptName)));
}
++count;
}
while (result->NextRow());
+1 -1
View File
@@ -223,7 +223,7 @@ void GuildMgr::LoadGuilds()
}
while (result->NextRow());
TC_LOG_INFO(LOG_FILTER_SERVER_LOADING, ">> Loaded %u guild members int %u ms", count, GetMSTimeDiffToNow(oldMSTime));
TC_LOG_INFO(LOG_FILTER_SERVER_LOADING, ">> Loaded %u guild members in %u ms", count, GetMSTimeDiffToNow(oldMSTime));
}
}
+158 -65
View File
@@ -1175,23 +1175,88 @@ bool SpellArea::IsFitToRequirements(Player const* player, uint32 newZone, uint32
return true;
}
void SpellMgr::UnloadSpellInfoChains()
{
for (SpellChainMap::iterator itr = mSpellChains.begin(); itr != mSpellChains.end(); ++itr)
mSpellInfoMap[itr->first]->ChainEntry = NULL;
mSpellChains.clear();
}
void SpellMgr::LoadSpellTalentRanks()
{
// cleanup core data before reload - remove reference to ChainNode from SpellInfo
UnloadSpellInfoChains();
for (uint32 i = 0; i < sTalentStore.GetNumRows(); ++i)
{
TalentEntry const* talentInfo = sTalentStore.LookupEntry(i);
if (!talentInfo)
continue;
SpellInfo const* lastSpell = NULL;
for (uint8 rank = MAX_TALENT_RANK - 1; rank > 0; --rank)
{
if (talentInfo->RankID[rank])
{
lastSpell = GetSpellInfo(talentInfo->RankID[rank]);
break;
}
}
if (!lastSpell)
continue;
SpellInfo const* firstSpell = GetSpellInfo(talentInfo->RankID[0]);
if (!firstSpell)
{
TC_LOG_ERROR(LOG_FILTER_SPELLS_AURAS, "SpellMgr::LoadSpellTalentRanks: First Rank Spell %u for TalentEntry %u does not exist.", talentInfo->RankID[0], i);
continue;
}
SpellInfo const* prevSpell = NULL;
for (uint8 rank = 0; rank < MAX_TALENT_RANK; ++rank)
{
uint32 spellId = talentInfo->RankID[rank];
if (!spellId)
break;
SpellInfo const* currentSpell = GetSpellInfo(spellId);
if (!currentSpell)
{
TC_LOG_ERROR(LOG_FILTER_SPELLS_AURAS, "SpellMgr::LoadSpellTalentRanks: Spell %u (Rank: %u) for TalentEntry %u does not exist.", spellId, rank + 1, i);
break;
}
SpellChainNode node;
node.first = firstSpell;
node.last = lastSpell;
node.rank = rank + 1;
node.prev = prevSpell;
node.next = node.rank < MAX_TALENT_RANK ? GetSpellInfo(talentInfo->RankID[rank + 1]) : NULL;
mSpellChains[spellId] = node;
mSpellInfoMap[spellId]->ChainEntry = &mSpellChains[spellId];
prevSpell = currentSpell;
}
}
}
void SpellMgr::LoadSpellRanks()
{
// cleanup data and load spell ranks for talents from dbc
LoadSpellTalentRanks();
uint32 oldMSTime = getMSTime();
// cleanup core data before reload - remove reference to ChainNode from SpellInfo
for (SpellChainMap::iterator itr = mSpellChains.begin(); itr != mSpellChains.end(); ++itr)
{
mSpellInfoMap[itr->first]->ChainEntry = NULL;
}
mSpellChains.clear();
// 0 1 2
QueryResult result = WorldDatabase.Query("SELECT first_spell_id, spell_id, rank from spell_ranks ORDER BY first_spell_id, rank");
if (!result)
{
TC_LOG_INFO(LOG_FILTER_SERVER_LOADING, ">> Loaded 0 spell rank records. DB table `spell_ranks` is empty.");
return;
}
@@ -1268,6 +1333,10 @@ void SpellMgr::LoadSpellRanks()
{
++count;
int32 addedSpell = itr->first;
if (mSpellInfoMap[addedSpell]->ChainEntry)
TC_LOG_ERROR(LOG_FILTER_SQL, "Spell %u (rank: %u, first: %u) listed in `spell_ranks` has already ChainEntry from dbc.", addedSpell, itr->second, lastSpell);
mSpellChains[addedSpell].first = GetSpellInfo(lastSpell);
mSpellChains[addedSpell].last = GetSpellInfo(rankChain.back().first);
mSpellChains[addedSpell].rank = itr->second;
@@ -1285,10 +1354,10 @@ void SpellMgr::LoadSpellRanks()
mSpellChains[addedSpell].next = GetSpellInfo(itr->first);
}
while (true);
} while (!finished);
}
while (!finished);
TC_LOG_INFO(LOG_FILTER_SERVER_LOADING, ">> Loaded %u spell rank records in %u ms", count, GetMSTimeDiffToNow(oldMSTime));
}
void SpellMgr::LoadSpellRequired()
@@ -1324,14 +1393,14 @@ void SpellMgr::LoadSpellRequired()
continue;
}
SpellInfo const* req_spell = GetSpellInfo(spell_req);
if (!req_spell)
SpellInfo const* reqSpell = GetSpellInfo(spell_req);
if (!reqSpell)
{
TC_LOG_ERROR(LOG_FILTER_SQL, "req_spell %u in `spell_required` table is not found in dbcs, skipped", spell_req);
continue;
}
if (GetFirstSpellInChain(spell_id) == GetFirstSpellInChain(spell_req))
if (spell->IsRankOf(reqSpell))
{
TC_LOG_ERROR(LOG_FILTER_SQL, "req_spell %u and spell_id %u in `spell_required` table are ranks of the same spell, entry not needed, skipped", spell_req, spell_id);
continue;
@@ -1794,52 +1863,76 @@ void SpellMgr::LoadSpellProcEvents()
}
uint32 count = 0;
uint32 customProc = 0;
do
{
Field* fields = result->Fetch();
uint32 entry = fields[0].GetUInt32();
int32 spellId = fields[0].GetInt32();
SpellInfo const* spell = GetSpellInfo(entry);
if (!spell)
bool allRanks = false;
if (spellId < 0)
{
TC_LOG_ERROR(LOG_FILTER_SQL, "Spell %u listed in `spell_proc_event` does not exist", entry);
allRanks = true;
spellId = -spellId;
}
SpellInfo const* spellInfo = GetSpellInfo(spellId);
if (!spellInfo)
{
TC_LOG_ERROR(LOG_FILTER_SQL, "Spell %u listed in `spell_proc_event` does not exist", spellId);
continue;
}
SpellProcEventEntry spe;
spe.schoolMask = fields[1].GetInt8();
spe.spellFamilyName = fields[2].GetUInt16();
spe.spellFamilyMask[0] = fields[3].GetUInt32();
spe.spellFamilyMask[1] = fields[4].GetUInt32();
spe.spellFamilyMask[2] = fields[5].GetUInt32();
spe.procFlags = fields[6].GetUInt32();
spe.procEx = fields[7].GetUInt32();
spe.ppmRate = fields[8].GetFloat();
spe.customChance = fields[9].GetFloat();
spe.cooldown = fields[10].GetUInt32();
mSpellProcEventMap[entry] = spe;
if (spell->ProcFlags == 0)
if (allRanks)
{
if (spe.procFlags == 0)
if (!spellInfo->IsRanked())
TC_LOG_ERROR(LOG_FILTER_SQL, "Spell %u listed in `spell_proc_event` with all ranks, but spell has no ranks.", spellId);
if (spellInfo->GetFirstRankSpell()->Id != uint32(spellId))
{
TC_LOG_ERROR(LOG_FILTER_SQL, "Spell %u listed in `spell_proc_event` probally not triggered spell", entry);
TC_LOG_ERROR(LOG_FILTER_SQL, "Spell %u listed in `spell_proc_event` is not first rank of spell.", spellId);
continue;
}
customProc++;
}
SpellProcEventEntry spellProcEvent;
spellProcEvent.schoolMask = fields[1].GetInt8();
spellProcEvent.spellFamilyName = fields[2].GetUInt16();
spellProcEvent.spellFamilyMask[0] = fields[3].GetUInt32();
spellProcEvent.spellFamilyMask[1] = fields[4].GetUInt32();
spellProcEvent.spellFamilyMask[2] = fields[5].GetUInt32();
spellProcEvent.procFlags = fields[6].GetUInt32();
spellProcEvent.procEx = fields[7].GetUInt32();
spellProcEvent.ppmRate = fields[8].GetFloat();
spellProcEvent.customChance = fields[9].GetFloat();
spellProcEvent.cooldown = fields[10].GetUInt32();
while (spellInfo)
{
if (mSpellProcEventMap.find(spellInfo->Id) != mSpellProcEventMap.end())
{
TC_LOG_ERROR(LOG_FILTER_SQL, "Spell %u listed in `spell_proc_event` already has its first rank in table.", spellInfo->Id);
break;
}
if (!spellInfo->ProcFlags && !spellProcEvent.procFlags)
TC_LOG_ERROR(LOG_FILTER_SQL, "Spell %u listed in `spell_proc_event` probally not triggered spell", spellInfo->Id);
mSpellProcEventMap[spellInfo->Id] = spellProcEvent;
if (allRanks)
spellInfo = spellInfo->GetNextRankSpell();
else
break;
}
++count;
} while (result->NextRow());
if (customProc)
TC_LOG_INFO(LOG_FILTER_SERVER_LOADING, ">> Loaded %u extra and %u custom spell proc event conditions in %u ms", count, customProc, GetMSTimeDiffToNow(oldMSTime));
else
TC_LOG_INFO(LOG_FILTER_SERVER_LOADING, ">> Loaded %u extra spell proc event conditions in %u ms", count, GetMSTimeDiffToNow(oldMSTime));
}
while (result->NextRow());
TC_LOG_INFO(LOG_FILTER_SERVER_LOADING, ">> Loaded %u extra spell proc event conditions in %u ms", count, GetMSTimeDiffToNow(oldMSTime));
}
void SpellMgr::LoadSpellProcs()
@@ -1879,6 +1972,9 @@ void SpellMgr::LoadSpellProcs()
if (allRanks)
{
if (!spellInfo->IsRanked())
TC_LOG_ERROR(LOG_FILTER_SQL, "Spell %u listed in `spell_proc` with all ranks, but spell has no ranks.", spellId);
if (spellInfo->GetFirstRankSpell()->Id != uint32(spellId))
{
TC_LOG_ERROR(LOG_FILTER_SQL, "Spell %u listed in `spell_proc` is not first rank of spell.", spellId);
@@ -1908,9 +2004,10 @@ void SpellMgr::LoadSpellProcs()
{
if (mSpellProcMap.find(spellInfo->Id) != mSpellProcMap.end())
{
TC_LOG_ERROR(LOG_FILTER_SQL, "Spell %u listed in `spell_proc` has duplicate entry in the table", spellInfo->Id);
TC_LOG_ERROR(LOG_FILTER_SQL, "Spell %u listed in `spell_proc` already has its first rank in table.", spellInfo->Id);
break;
}
SpellProcEntry procEntry = SpellProcEntry(baseProcEntry);
// take defaults from dbcs
@@ -2676,12 +2773,12 @@ void SpellMgr::LoadSpellInfoStore()
if (SpellEntry const* spellEntry = sSpellStore.LookupEntry(i))
mSpellInfoMap[i] = new SpellInfo(spellEntry, effectsBySpell[i].effects);
TC_LOG_INFO(LOG_FILTER_SERVER_LOADING, ">> Loaded spell info store in %u ms", GetMSTimeDiffToNow(oldMSTime));
TC_LOG_INFO(LOG_FILTER_SERVER_LOADING, ">> Loaded SpellInfo store in %u ms", GetMSTimeDiffToNow(oldMSTime));
}
void SpellMgr::UnloadSpellInfoStore()
{
for (uint32 i = 0; i < mSpellInfoMap.size(); ++i)
for (uint32 i = 0; i < GetSpellInfoStoreSize(); ++i)
{
if (mSpellInfoMap[i])
delete mSpellInfoMap[i];
@@ -2691,14 +2788,14 @@ void SpellMgr::UnloadSpellInfoStore()
void SpellMgr::UnloadSpellInfoImplicitTargetConditionLists()
{
for (uint32 i = 0; i < mSpellInfoMap.size(); ++i)
for (uint32 i = 0; i < GetSpellInfoStoreSize(); ++i)
{
if (mSpellInfoMap[i])
mSpellInfoMap[i]->_UnloadImplicitTargetConditionLists();
}
}
void SpellMgr::LoadSpellCustomAttr()
void SpellMgr::LoadSpellInfoCustomAttributes()
{
uint32 oldMSTime = getMSTime();
@@ -2780,7 +2877,7 @@ void SpellMgr::LoadSpellCustomAttr()
if (enchant->type[s] != ITEM_ENCHANTMENT_TYPE_COMBAT_SPELL)
continue;
SpellInfo* procInfo = (SpellInfo*)GetSpellInfo(enchant->spellid[s]);
SpellInfo* procInfo = _GetSpellInfo(enchant->spellid[s]);
if (!procInfo)
continue;
@@ -2992,7 +3089,7 @@ void SpellMgr::LoadSpellCustomAttr()
CreatureAI::FillAISpellInfo();
TC_LOG_INFO(LOG_FILTER_SERVER_LOADING, ">> Loaded spell custom attributes in %u ms", GetMSTimeDiffToNow(oldMSTime));
TC_LOG_INFO(LOG_FILTER_SERVER_LOADING, ">> Loaded SpellInfo custom attributes in %u ms", GetMSTimeDiffToNow(oldMSTime));
}
void SpellMgr::LoadSpellInfoCorrections()
@@ -3000,7 +3097,7 @@ void SpellMgr::LoadSpellInfoCorrections()
uint32 oldMSTime = getMSTime();
SpellInfo* spellInfo = NULL;
for (uint32 i = 0; i < mSpellInfoMap.size(); ++i)
for (uint32 i = 0; i < GetSpellInfoStoreSize(); ++i)
{
spellInfo = (SpellInfo*)mSpellInfoMap[i];
if (!spellInfo)
@@ -3069,7 +3166,7 @@ void SpellMgr::LoadSpellInfoCorrections()
case 42821: // Headless Horseman - Wisp Flight Missile
spellInfo->RangeEntry = sSpellRangeStore.LookupEntry(6); // 100 yards
break;
case 36350: //They Must Burn Bomb Aura (self)
case 36350: // They Must Burn Bomb Aura (self)
spellInfo->Effects[EFFECT_0].TriggerSpell = 36325; // They Must Burn Bomb Drop (DND)
break;
case 49838: // Stop Time
@@ -3202,13 +3299,13 @@ void SpellMgr::LoadSpellInfoCorrections()
case 47204:
case 47205:
// add corruption to affected spells
spellInfo->Effects[1].SpellClassMask[0] |= 2;
spellInfo->Effects[EFFECT_1].SpellClassMask[0] |= 2;
break;
case 51852: // The Eye of Acherus (no spawn in phase 2 in db)
spellInfo->Effects[0].MiscValue |= 1;
spellInfo->Effects[EFFECT_0].MiscValue |= 1;
break;
case 51912: // Crafty's Ultra-Advanced Proto-Typical Shortening Blaster
spellInfo->Effects[0].Amplitude = 3000;
spellInfo->Effects[EFFECT_0].Amplitude = 3000;
break;
case 29809: // Desecration Arm - 36 instead of 37 - typo? :/
spellInfo->Effects[EFFECT_0].RadiusEntry = sSpellRadiusStore.LookupEntry(EFFECT_RADIUS_7_YARDS);
@@ -3239,17 +3336,17 @@ void SpellMgr::LoadSpellInfoCorrections()
spellInfo->Effects[EFFECT_1].ApplyAuraName = SPELL_AURA_MOD_INCREASE_ENERGY_PERCENT;
break;
case 30421: // Nether Portal - Perseverence
spellInfo->Effects[2].BasePoints += 30000;
spellInfo->Effects[EFFECT_2].BasePoints += 30000;
break;
case 51735: // Ebon Plague
case 51734:
case 51726:
spellInfo->AttributesEx3 |= SPELL_ATTR3_STACK_FOR_DIFF_CASTERS;
spellInfo->SpellFamilyFlags[2] = 0x10;
spellInfo->Effects[1].ApplyAuraName = SPELL_AURA_MOD_DAMAGE_PERCENT_TAKEN;
spellInfo->Effects[EFFECT_1].ApplyAuraName = SPELL_AURA_MOD_DAMAGE_PERCENT_TAKEN;
break;
case 41913: // Parasitic Shadowfiend Passive
spellInfo->Effects[0].ApplyAuraName = SPELL_AURA_DUMMY; // proc debuff, and summon infinite fiends
spellInfo->Effects[EFFECT_0].ApplyAuraName = SPELL_AURA_DUMMY; // proc debuff, and summon infinite fiends
break;
case 27892: // To Anchor 1
case 27928: // To Anchor 1
@@ -3283,8 +3380,8 @@ void SpellMgr::LoadSpellInfoCorrections()
case 5176: // Wrath
case 2912: // Starfire
case 78674: // Starsurge
spellInfo->Effects[1].Effect = SPELL_EFFECT_DUMMY;
spellInfo->Effects[1].TargetA = TARGET_UNIT_CASTER;
spellInfo->Effects[EFFECT_1].Effect = SPELL_EFFECT_DUMMY;
spellInfo->Effects[EFFECT_1].TargetA = TARGET_UNIT_CASTER;
break;
case 70728: // Exploit Weakness (needs target selection script)
case 70840: // Devious Minds (needs target selection script)
@@ -3322,7 +3419,7 @@ void SpellMgr::LoadSpellInfoCorrections()
break;
case 64745: // Item - Death Knight T8 Tank 4P Bonus
case 64936: // Item - Warrior T8 Protection 4P Bonus
spellInfo->Effects[0].BasePoints = 100; // 100% chance of procc'ing, not -10% (chance calculated in PrepareTriggersExecutedOnHit)
spellInfo->Effects[EFFECT_0].BasePoints = 100; // 100% chance of procc'ing, not -10% (chance calculated in PrepareTriggersExecutedOnHit)
break;
case 59414: // Pulsing Shockwave Aura (Loken)
// this flag breaks movement, remove it
@@ -3332,7 +3429,7 @@ void SpellMgr::LoadSpellInfoCorrections()
spellInfo->AuraInterruptFlags = AURA_INTERRUPT_FLAG_HITBYSPELL | AURA_INTERRUPT_FLAG_TAKE_DAMAGE;
break;
case 70650: // Death Knight T10 Tank 2P Bonus
spellInfo->Effects[0].ApplyAuraName = SPELL_AURA_ADD_PCT_MODIFIER;
spellInfo->Effects[EFFECT_0].ApplyAuraName = SPELL_AURA_ADD_PCT_MODIFIER;
break;
case 71838: // Drain Life - Bryntroll Normal
case 71839: // Drain Life - Bryntroll Heroic
@@ -3437,10 +3534,6 @@ void SpellMgr::LoadSpellInfoCorrections()
case 70861: // Sindragosa's Lair Teleport
spellInfo->Effects[EFFECT_0].TargetA = SpellImplicitTargetInfo(TARGET_DEST_DB);
break;
case 69055: // Saber Lash (Lord Marrowgar)
case 70814: // Saber Lash (Lord Marrowgar)
spellInfo->Effects[EFFECT_0].RadiusEntry = sSpellRadiusStore.LookupEntry(EFFECT_RADIUS_8_YARDS); // 8yd
break;
case 69075: // Bone Storm (Lord Marrowgar)
case 70834: // Bone Storm (Lord Marrowgar)
case 70835: // Bone Storm (Lord Marrowgar)
+6 -1
View File
@@ -694,10 +694,15 @@ class SpellMgr
SpellInfo const* GetSpellInfo(uint32 spellId) const { return spellId < GetSpellInfoStoreSize() ? mSpellInfoMap[spellId] : NULL; }
uint32 GetSpellInfoStoreSize() const { return mSpellInfoMap.size(); }
private:
SpellInfo* _GetSpellInfo(uint32 spellId) { return spellId < GetSpellInfoStoreSize() ? mSpellInfoMap[spellId] : NULL; }
// Modifiers
public:
// Loading data at server startup
void UnloadSpellInfoChains();
void LoadSpellTalentRanks();
void LoadSpellRanks();
void LoadSpellRequired();
void LoadSpellLearnSkills();
@@ -720,7 +725,7 @@ class SpellMgr
void LoadSpellInfoStore();
void UnloadSpellInfoStore();
void UnloadSpellInfoImplicitTargetConditionLists();
void LoadSpellCustomAttr();
void LoadSpellInfoCustomAttributes();
void LoadSpellInfoCorrections();
private:
+2 -2
View File
@@ -1357,8 +1357,8 @@ void World::SetInitialWorldSettings()
TC_LOG_INFO(LOG_FILTER_SERVER_LOADING, "Loading SkillLineAbilityMultiMap Data...");
sSpellMgr->LoadSkillLineAbilityMap();
TC_LOG_INFO(LOG_FILTER_SERVER_LOADING, "Loading spell custom attributes...");
sSpellMgr->LoadSpellCustomAttr();
TC_LOG_INFO(LOG_FILTER_SERVER_LOADING, "Loading SpellInfo custom attributes...");
sSpellMgr->LoadSpellInfoCustomAttributes();
TC_LOG_INFO(LOG_FILTER_SERVER_LOADING, "Loading GameObject models...");
LoadGameObjectModelList();
+3 -5
View File
@@ -116,8 +116,7 @@ public:
else
targetPlayer->learnSpell(spell, false);
uint32 firstSpell = sSpellMgr->GetFirstSpellInChain(spell);
if (GetTalentSpellCost(firstSpell))
if (GetTalentSpellCost(spellInfo->GetFirstRankSpell()->Id))
targetPlayer->SendTalentsInfoData(false);
return true;
@@ -178,8 +177,7 @@ public:
continue;
// skip spells with first rank learned as talent (and all talents then also)
uint32 firstRank = sSpellMgr->GetFirstSpellInChain(spellInfo->Id);
if (GetTalentSpellCost(firstRank) > 0)
if (GetTalentSpellCost(spellInfo->GetFirstRankSpell()->Id) > 0)
continue;
// skip broken spells
@@ -474,7 +472,7 @@ public:
}
if (allRanks)
spellId = sSpellMgr->GetFirstSpellInChain (spellId);
spellId = sSpellMgr->GetFirstSpellInChain(spellId);
if (target->HasSpell(spellId))
target->removeSpell(spellId, false, !allRanks);
+6 -4
View File
@@ -1586,6 +1586,7 @@ public:
// Guild data print variables defined so that they exist, but are not necessarily used
uint32 guildId = 0;
uint8 guildRankId = 0;
std::string guildName;
std::string guildRank;
std::string note;
@@ -1752,8 +1753,9 @@ public:
guildId = fields[0].GetUInt32();
guildName = fields[1].GetString();
guildRank = fields[2].GetString();
note = fields[3].GetString();
officeNote = fields[4].GetString();
guildRankId = fields[3].GetUInt8();
note = fields[4].GetString();
officeNote = fields[5].GetString();
}
}
}
@@ -1762,7 +1764,7 @@ public:
// Output I. LANG_PINFO_PLAYER
handler->PSendSysMessage(LANG_PINFO_PLAYER, target ? "" : handler->GetTrinityString(LANG_OFFLINE), nameLink.c_str(), lowguid);
// Output II. LANG_PINFO_GM_ACTIVE
// Output II. LANG_PINFO_GM_ACTIVE if character is gamemaster
if (target && target->IsGameMaster())
handler->PSendSysMessage(LANG_PINFO_GM_ACTIVE);
@@ -1829,7 +1831,7 @@ public:
if (!guildName.empty())
{
handler->PSendSysMessage(LANG_PINFO_CHR_GUILD, guildName.c_str(), guildId);
handler->PSendSysMessage(LANG_PINFO_CHR_GUILD_RANK, guildRank.c_str());
handler->PSendSysMessage(LANG_PINFO_CHR_GUILD_RANK, guildRank.c_str(), uint32(guildRankId));
if (!note.empty())
handler->PSendSysMessage(LANG_PINFO_CHR_GUILD_NOTE, note.c_str());
if (!officeNote.empty())
@@ -105,7 +105,7 @@ void CharacterDatabaseConnection::DoPrepareStatements()
PrepareStatement(CHAR_SEL_CHARACTER_SPELLCOOLDOWNS, "SELECT spell, item, time FROM character_spell_cooldown WHERE guid = ?", CONNECTION_ASYNC);
PrepareStatement(CHAR_SEL_CHARACTER_DECLINEDNAMES, "SELECT genitive, dative, accusative, instrumental, prepositional FROM character_declinedname WHERE guid = ?", CONNECTION_ASYNC);
PrepareStatement(CHAR_SEL_GUILD_MEMBER, "SELECT guildid, rank FROM guild_member WHERE guid = ?", CONNECTION_BOTH);
PrepareStatement(CHAR_SEL_GUILD_MEMBER_EXTENDED, "SELECT g.guildid, g.name, gr.rname, gm.pnote, gm.offnote "
PrepareStatement(CHAR_SEL_GUILD_MEMBER_EXTENDED, "SELECT g.guildid, g.name, gr.rname, gr.rid, gm.pnote, gm.offnote "
"FROM guild g JOIN guild_member gm ON g.guildid = gm.guildid "
"JOIN guild_rank gr ON g.guildid = gr.guildid AND gm.rank = gr.rid WHERE gm.guid = ?", CONNECTION_BOTH);
PrepareStatement(CHAR_SEL_CHARACTER_ACHIEVEMENTS, "SELECT achievement, date FROM character_achievement WHERE guid = ?", CONNECTION_ASYNC);