mirror of
https://github.com/mangosfour/server.git
synced 2025-12-17 07:37:03 +00:00
Merge remote branch 'origin/master' into 330
Also move accepteble build number to src/game/SharedDefines.h as expected by new realmd code.
This commit is contained in:
commit
34d8d69e2b
42 changed files with 462 additions and 229 deletions
|
|
@ -24,7 +24,7 @@ CREATE TABLE `db_version` (
|
||||||
`version` varchar(120) default NULL,
|
`version` varchar(120) default NULL,
|
||||||
`creature_ai_version` varchar(120) default NULL,
|
`creature_ai_version` varchar(120) default NULL,
|
||||||
`cache_id` int(10) default '0',
|
`cache_id` int(10) default '0',
|
||||||
`required_8996_01_mangos_spell_proc_event` bit(1) default NULL
|
`required_9007_01_mangos_spell_proc_event` bit(1) default NULL
|
||||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8 ROW_FORMAT=FIXED COMMENT='Used DB version notes';
|
) ENGINE=MyISAM DEFAULT CHARSET=utf8 ROW_FORMAT=FIXED COMMENT='Used DB version notes';
|
||||||
|
|
||||||
--
|
--
|
||||||
|
|
@ -17882,7 +17882,7 @@ INSERT INTO `spell_proc_event` VALUES
|
||||||
(20234, 0x00000000, 10, 0x00008000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 0),
|
(20234, 0x00000000, 10, 0x00008000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 0),
|
||||||
(20235, 0x00000000, 10, 0x00008000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 0),
|
(20235, 0x00000000, 10, 0x00008000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 0),
|
||||||
(20335, 0x00000000, 10, 0x00800000, 0x00000000, 0x00000008, 0x00000100, 0x00000000, 0.000000, 100.000000,0),
|
(20335, 0x00000000, 10, 0x00800000, 0x00000000, 0x00000008, 0x00000100, 0x00000000, 0.000000, 100.000000,0),
|
||||||
(20375, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 7.000000, 0.000000, 0),
|
(20375, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 7.000000, 0.000000, 1),
|
||||||
(20500, 0x00000000, 4, 0x10000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 0),
|
(20500, 0x00000000, 4, 0x10000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 0),
|
||||||
(20501, 0x00000000, 4, 0x10000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 0),
|
(20501, 0x00000000, 4, 0x10000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 0),
|
||||||
(20705, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000002, 0.000000, 0.000000, 0),
|
(20705, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000002, 0.000000, 0.000000, 0),
|
||||||
|
|
@ -18040,6 +18040,7 @@ INSERT INTO `spell_proc_event` VALUES
|
||||||
(33191, 0x00000000, 6, 0x00808000, 0x00000400, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 0),
|
(33191, 0x00000000, 6, 0x00808000, 0x00000400, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 0),
|
||||||
(33192, 0x00000000, 6, 0x00808000, 0x00000400, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 0),
|
(33192, 0x00000000, 6, 0x00808000, 0x00000400, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 0),
|
||||||
(33193, 0x00000000, 6, 0x00808000, 0x00000400, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 0),
|
(33193, 0x00000000, 6, 0x00808000, 0x00000400, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 0),
|
||||||
|
(33297, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 45),
|
||||||
(33299, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00010000, 0.000000, 0.000000, 0),
|
(33299, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00010000, 0.000000, 0.000000, 0),
|
||||||
(33510, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 5.000000, 0.000000, 0),
|
(33510, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 5.000000, 0.000000, 0),
|
||||||
(33648, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000002, 0.000000, 0.000000, 0),
|
(33648, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000002, 0.000000, 0.000000, 0),
|
||||||
|
|
@ -18057,7 +18058,7 @@ INSERT INTO `spell_proc_event` VALUES
|
||||||
(34139, 0x00000000, 10, 0x40000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 0),
|
(34139, 0x00000000, 10, 0x40000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 0),
|
||||||
(34258, 0x00000000, 10, 0x00000400, 0x00000008, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 0),
|
(34258, 0x00000000, 10, 0x00000400, 0x00000008, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 0),
|
||||||
(34262, 0x00000000, 10, 0x00800000, 0x00000000, 0x00000000, 0x00000000, 0x00010000, 0.000000, 0.000000, 0),
|
(34262, 0x00000000, 10, 0x00800000, 0x00000000, 0x00000000, 0x00000000, 0x00010000, 0.000000, 0.000000, 0),
|
||||||
(34320, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000002, 0.000000, 0.000000, 0),
|
(34320, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000002, 0.000000, 0.000000, 45),
|
||||||
(34355, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 3),
|
(34355, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 3),
|
||||||
(34457, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000002, 0.000000, 0.000000, 0),
|
(34457, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000002, 0.000000, 0.000000, 0),
|
||||||
(34497, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000002, 0.000000, 0.000000, 0),
|
(34497, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000002, 0.000000, 0.000000, 0),
|
||||||
|
|
@ -18125,10 +18126,11 @@ INSERT INTO `spell_proc_event` VALUES
|
||||||
(38026, 0x00000001, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000100, 0.000000, 0.000000, 0),
|
(38026, 0x00000001, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000100, 0.000000, 0.000000, 0),
|
||||||
(38031, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000040, 0.000000, 0.000000, 0),
|
(38031, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000040, 0.000000, 0.000000, 0),
|
||||||
(38290, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1.600000, 0.000000, 0),
|
(38290, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1.600000, 0.000000, 0),
|
||||||
|
(38299, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 12),
|
||||||
(38326, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000002, 0.000000, 0.000000, 0),
|
(38326, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000002, 0.000000, 0.000000, 0),
|
||||||
(38327, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000002, 0.000000, 0.000000, 0),
|
(38327, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000002, 0.000000, 0.000000, 0),
|
||||||
(38334, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 60),
|
(38334, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 60),
|
||||||
(38347, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000002, 0.000000, 0.000000, 0),
|
(38347, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000002, 0.000000, 0.000000, 45),
|
||||||
(38350, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000002, 0.000000, 0.000000, 0),
|
(38350, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000002, 0.000000, 0.000000, 0),
|
||||||
(38394, 0x00000000, 5, 0x00000006, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 0),
|
(38394, 0x00000000, 5, 0x00000006, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 0),
|
||||||
(38857, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00010000, 0.000000, 0.000000, 0),
|
(38857, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00010000, 0.000000, 0.000000, 0),
|
||||||
|
|
@ -18274,7 +18276,7 @@ INSERT INTO `spell_proc_event` VALUES
|
||||||
(49530, 0x00000000, 15, 0x01400000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 0),
|
(49530, 0x00000000, 15, 0x01400000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 0),
|
||||||
(49622, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 60),
|
(49622, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 60),
|
||||||
(49657, 0x00000000, 15, 0x00000000, 0x00004000, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 0),
|
(49657, 0x00000000, 15, 0x00000000, 0x00004000, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 0),
|
||||||
(50781, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000002, 0.000000, 0.000000, 0),
|
(50781, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000002, 0.000000, 0.000000, 6),
|
||||||
(50880, 0x00000010, 15, 0x00000000, 0x00000800, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 0),
|
(50880, 0x00000010, 15, 0x00000000, 0x00000800, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 0),
|
||||||
(51123, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000002, 0.000000, 0.000000, 0),
|
(51123, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000002, 0.000000, 0.000000, 0),
|
||||||
(51127, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000002, 0.000000, 0.000000, 0),
|
(51127, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000002, 0.000000, 0.000000, 0),
|
||||||
|
|
@ -18285,6 +18287,7 @@ INSERT INTO `spell_proc_event` VALUES
|
||||||
(51349, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 10),
|
(51349, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 10),
|
||||||
(51352, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 10),
|
(51352, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 10),
|
||||||
(51359, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 10),
|
(51359, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 10),
|
||||||
|
(51414, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 45),
|
||||||
(51466, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000002, 0.000000, 0.000000, 0),
|
(51466, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000002, 0.000000, 0.000000, 0),
|
||||||
(51470, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000002, 0.000000, 0.000000, 0),
|
(51470, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000002, 0.000000, 0.000000, 0),
|
||||||
(51474, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00010000, 0.000000, 0.000000, 0),
|
(51474, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00010000, 0.000000, 0.000000, 0),
|
||||||
|
|
@ -18386,11 +18389,15 @@ INSERT INTO `spell_proc_event` VALUES
|
||||||
(54489, 0x00000000, 0, 0x20000021, 0x00009000, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 0),
|
(54489, 0x00000000, 0, 0x20000021, 0x00009000, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 0),
|
||||||
(54490, 0x00000000, 0, 0x20000021, 0x00009000, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 0),
|
(54490, 0x00000000, 0, 0x20000021, 0x00009000, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 0),
|
||||||
(54646, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00015400, 0x00000002, 0.000000, 0.000000, 0),
|
(54646, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00015400, 0x00000002, 0.000000, 0.000000, 0),
|
||||||
(54738, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000002, 0.000000, 0.000000, 0),
|
(54695, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 45),
|
||||||
|
(54707, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 60),
|
||||||
|
(54738, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000002, 0.000000, 0.000000, 45),
|
||||||
(54747, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00010000, 0.000000, 0.000000, 0),
|
(54747, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00010000, 0.000000, 0.000000, 0),
|
||||||
(54749, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00010000, 0.000000, 0.000000, 0),
|
(54749, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00010000, 0.000000, 0.000000, 0),
|
||||||
(54754, 0x00000000, 7, 0x00000010, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 0),
|
(54754, 0x00000000, 7, 0x00000010, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 0),
|
||||||
(54841, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000002, 0.000000, 0.000000, 0),
|
(54808, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 60),
|
||||||
|
(54838, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 45),
|
||||||
|
(54841, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000002, 0.000000, 0.000000, 3),
|
||||||
(54936, 0x00000000, 10, 0x40000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 0),
|
(54936, 0x00000000, 10, 0x40000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 0),
|
||||||
(54937, 0x00000000, 10, 0x80000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 0),
|
(54937, 0x00000000, 10, 0x80000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 0),
|
||||||
(54939, 0x00000000, 10, 0x00008000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 0),
|
(54939, 0x00000000, 10, 0x00008000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 0),
|
||||||
|
|
@ -18428,6 +18435,7 @@ INSERT INTO `spell_proc_event` VALUES
|
||||||
(56822, 0x00000000, 15, 0x00000002, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 0),
|
(56822, 0x00000000, 15, 0x00000002, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 0),
|
||||||
(56834, 0x00000000, 15, 0x00440000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 0),
|
(56834, 0x00000000, 15, 0x00440000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 0),
|
||||||
(56835, 0x00000000, 15, 0x00440000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 0),
|
(56835, 0x00000000, 15, 0x00440000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 0),
|
||||||
|
(57345, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 45),
|
||||||
(57352, 0x00000000, 0, 0x00000001, 0x00000040, 0x00000000, 0x00010154, 0x00000003, 0.000000, 0.000000, 45),
|
(57352, 0x00000000, 0, 0x00000001, 0x00000040, 0x00000000, 0x00010154, 0x00000003, 0.000000, 0.000000, 45),
|
||||||
(57470, 0x00000000, 6, 0x00000001, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 0),
|
(57470, 0x00000000, 6, 0x00000001, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 0),
|
||||||
(57472, 0x00000000, 6, 0x00000001, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 0),
|
(57472, 0x00000000, 6, 0x00000001, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 0),
|
||||||
|
|
@ -18440,6 +18448,8 @@ INSERT INTO `spell_proc_event` VALUES
|
||||||
(58364, 0x00000000, 4, 0x00000400, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 0),
|
(58364, 0x00000000, 4, 0x00000400, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 0),
|
||||||
(58372, 0x00000000, 4, 0x00000002, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 0),
|
(58372, 0x00000000, 4, 0x00000002, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 0),
|
||||||
(58386, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000020, 0.000000, 0.000000, 0),
|
(58386, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000020, 0.000000, 0.000000, 0),
|
||||||
|
(58442, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 15),
|
||||||
|
(58444, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 5),
|
||||||
(58597, 0x00000000, 10, 0x40000000, 0x00000000, 0x00000000, 0x00008000, 0x00000000, 0.000000, 100.000000,0),
|
(58597, 0x00000000, 10, 0x40000000, 0x00000000, 0x00000000, 0x00008000, 0x00000000, 0.000000, 100.000000,0),
|
||||||
(58616, 0x00000000, 15, 0x01000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 0),
|
(58616, 0x00000000, 15, 0x01000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 0),
|
||||||
(58620, 0x00000000, 15, 0x00000000, 0x00004000, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 0),
|
(58620, 0x00000000, 15, 0x00000000, 0x00004000, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 0),
|
||||||
|
|
@ -18450,19 +18460,34 @@ INSERT INTO `spell_proc_event` VALUES
|
||||||
(58677, 0x00000000, 15, 0x00002000, 0x00000000, 0x00000000, 0x00004000, 0x00000000, 0.000000, 0.000000, 0),
|
(58677, 0x00000000, 15, 0x00002000, 0x00000000, 0x00000000, 0x00004000, 0x00000000, 0.000000, 0.000000, 0),
|
||||||
(58872, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000040, 0.000000, 0.000000, 0),
|
(58872, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000040, 0.000000, 0.000000, 0),
|
||||||
(58874, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000040, 0.000000, 0.000000, 0),
|
(58874, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000040, 0.000000, 0.000000, 0),
|
||||||
(58901, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000002, 0.000000, 0.000000, 0),
|
(58901, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000002, 0.000000, 0.000000, 45),
|
||||||
(59057, 0x00000000, 15, 0x00000002, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 0),
|
(59057, 0x00000000, 15, 0x00000002, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 0),
|
||||||
(59176, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000002, 0.000000, 0.000000, 0),
|
(59176, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000002, 0.000000, 0.000000, 0),
|
||||||
(59327, 0x00000000, 15, 0x08000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 0),
|
(59327, 0x00000000, 15, 0x08000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 0),
|
||||||
|
(59345, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 45),
|
||||||
|
(59630, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 45),
|
||||||
(59725, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000800, 0.000000, 0.000000, 0),
|
(59725, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000800, 0.000000, 0.000000, 0),
|
||||||
|
(60061, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 45),
|
||||||
|
(60063, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 45),
|
||||||
|
(60066, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 45),
|
||||||
(60132, 0x00000000, 15, 0x00000000, 0x08020000, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 0),
|
(60132, 0x00000000, 15, 0x00000000, 0x08020000, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 0),
|
||||||
(60170, 0x00000000, 5, 0x00000006, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 0),
|
(60170, 0x00000000, 5, 0x00000006, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 0),
|
||||||
(60172, 0x00000000, 5, 0x00040000, 0x00000000, 0x00000000, 0x00000000, 0x00010000, 0.000000, 0.000000, 0),
|
(60172, 0x00000000, 5, 0x00040000, 0x00000000, 0x00000000, 0x00000000, 0x00010000, 0.000000, 0.000000, 0),
|
||||||
|
(60221, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 45),
|
||||||
|
(60301, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 45),
|
||||||
|
(60306, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 45),
|
||||||
|
(60317, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 45),
|
||||||
(60436, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 45),
|
(60436, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 45),
|
||||||
(60442, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 45),
|
(60442, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 45),
|
||||||
|
(60473, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 45),
|
||||||
|
(60482, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 45),
|
||||||
|
(60487, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 15),
|
||||||
|
(60490, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 45),
|
||||||
(60493, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 45),
|
(60493, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 45),
|
||||||
(60503, 0x00000000, 4, 0x00000004, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 0),
|
(60503, 0x00000000, 4, 0x00000004, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 0),
|
||||||
(60537, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000002, 0.000000, 0.000000, 0),
|
(60519, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 45),
|
||||||
|
(60529, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 45),
|
||||||
|
(60537, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000002, 0.000000, 0.000000, 45),
|
||||||
(60564, 0x00000000, 11, 0x90100000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 0),
|
(60564, 0x00000000, 11, 0x90100000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 0),
|
||||||
(60571, 0x00000000, 11, 0x90100000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 0),
|
(60571, 0x00000000, 11, 0x90100000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 0),
|
||||||
(60572, 0x00000000, 11, 0x90100000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 0),
|
(60572, 0x00000000, 11, 0x90100000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 0),
|
||||||
|
|
@ -18485,7 +18510,8 @@ INSERT INTO `spell_proc_event` VALUES
|
||||||
(61324, 0x00000000, 10, 0x00000000, 0x00020000, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 0),
|
(61324, 0x00000000, 10, 0x00000000, 0x00020000, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 0),
|
||||||
(61345, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000002, 0.000000, 0.000000, 0),
|
(61345, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000002, 0.000000, 0.000000, 0),
|
||||||
(61346, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000002, 0.000000, 0.000000, 0),
|
(61346, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000002, 0.000000, 0.000000, 0),
|
||||||
(61356, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000002, 0.000000, 0.000000, 0),
|
(61356, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x000002A8, 0x00000002, 0.000000, 0.000000, 45),
|
||||||
|
(61618, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 45),
|
||||||
(61846, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000010, 0.000000, 0.000000, 0),
|
(61846, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000010, 0.000000, 0.000000, 0),
|
||||||
(61847, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000010, 0.000000, 0.000000, 0),
|
(61847, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000010, 0.000000, 0.000000, 0),
|
||||||
(62600, 0x00000000, 7, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000002, 0.000000, 0.000000, 0),
|
(62600, 0x00000000, 7, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000002, 0.000000, 0.000000, 0),
|
||||||
|
|
|
||||||
|
|
@ -21,7 +21,7 @@
|
||||||
|
|
||||||
DROP TABLE IF EXISTS `realmd_db_version`;
|
DROP TABLE IF EXISTS `realmd_db_version`;
|
||||||
CREATE TABLE `realmd_db_version` (
|
CREATE TABLE `realmd_db_version` (
|
||||||
`required_8728_01_realmd_account` bit(1) default NULL
|
`required_9010_01_realmd_realmlist` bit(1) default NULL
|
||||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8 ROW_FORMAT=FIXED COMMENT='Last applied sql update to DB';
|
) ENGINE=MyISAM DEFAULT CHARSET=utf8 ROW_FORMAT=FIXED COMMENT='Last applied sql update to DB';
|
||||||
|
|
||||||
--
|
--
|
||||||
|
|
@ -161,6 +161,7 @@ CREATE TABLE `realmlist` (
|
||||||
`timezone` tinyint(3) unsigned NOT NULL default '0',
|
`timezone` tinyint(3) unsigned NOT NULL default '0',
|
||||||
`allowedSecurityLevel` tinyint(3) unsigned NOT NULL default '0',
|
`allowedSecurityLevel` tinyint(3) unsigned NOT NULL default '0',
|
||||||
`population` float unsigned NOT NULL default '0',
|
`population` float unsigned NOT NULL default '0',
|
||||||
|
`realmbuilds` varchar(64) NOT NULL default '',
|
||||||
PRIMARY KEY (`id`),
|
PRIMARY KEY (`id`),
|
||||||
UNIQUE KEY `idx_name` (`name`)
|
UNIQUE KEY `idx_name` (`name`)
|
||||||
) ENGINE=MyISAM AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC COMMENT='Realm System';
|
) ENGINE=MyISAM AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC COMMENT='Realm System';
|
||||||
|
|
|
||||||
|
|
@ -66,6 +66,7 @@ ALTER TABLE locales_npc_option ADD menu_id smallint(6) unsigned NOT NULL default
|
||||||
ALTER TABLE locales_npc_option DROP PRIMARY KEY;
|
ALTER TABLE locales_npc_option DROP PRIMARY KEY;
|
||||||
ALTER TABLE locales_npc_option ADD PRIMARY KEY (menu_id, id);
|
ALTER TABLE locales_npc_option ADD PRIMARY KEY (menu_id, id);
|
||||||
|
|
||||||
|
DROP TABLE IF EXISTS locales_gossip_menu_option;
|
||||||
RENAME TABLE locales_npc_option TO locales_gossip_menu_option;
|
RENAME TABLE locales_npc_option TO locales_gossip_menu_option;
|
||||||
|
|
||||||
DROP TABLE IF EXISTS npc_option;
|
DROP TABLE IF EXISTS npc_option;
|
||||||
|
|
|
||||||
5
sql/updates/9001_01_mangos_spell_proc_event.sql
Normal file
5
sql/updates/9001_01_mangos_spell_proc_event.sql
Normal file
|
|
@ -0,0 +1,5 @@
|
||||||
|
ALTER TABLE db_version CHANGE COLUMN required_8996_01_mangos_spell_proc_event required_9001_01_mangos_spell_proc_event bit;
|
||||||
|
|
||||||
|
DELETE FROM spell_proc_event WHERE entry=57345;
|
||||||
|
INSERT INTO spell_proc_event VALUES
|
||||||
|
(57345, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 45);
|
||||||
5
sql/updates/9005_01_mangos_spell_proc_event.sql
Normal file
5
sql/updates/9005_01_mangos_spell_proc_event.sql
Normal file
|
|
@ -0,0 +1,5 @@
|
||||||
|
ALTER TABLE db_version CHANGE COLUMN required_9001_01_mangos_spell_proc_event required_9005_01_mangos_spell_proc_event bit;
|
||||||
|
|
||||||
|
DELETE FROM spell_proc_event WHERE entry = '60487';
|
||||||
|
INSERT INTO spell_proc_event VALUES
|
||||||
|
(60487, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 15);
|
||||||
41
sql/updates/9007_01_mangos_spell_proc_event.sql
Normal file
41
sql/updates/9007_01_mangos_spell_proc_event.sql
Normal file
|
|
@ -0,0 +1,41 @@
|
||||||
|
ALTER TABLE db_version CHANGE COLUMN required_9005_01_mangos_spell_proc_event required_9007_01_mangos_spell_proc_event bit;
|
||||||
|
|
||||||
|
DELETE FROM spell_proc_event WHERE entry IN (
|
||||||
|
20375, 33297, 34320, 38299, 38347, 50781, 51414, 54695, 54707, 54738, 54808,
|
||||||
|
54838, 54841, 58442, 58444, 58901, 59345, 59630, 60061, 60063, 60066, 60221,
|
||||||
|
60301, 60306, 60317, 60473, 60482, 60490, 60519, 60529, 60537, 61356, 61618);
|
||||||
|
|
||||||
|
INSERT INTO spell_proc_event(entry, SchoolMask, SpellFamilyName, SpellFamilyMask0, SpellFamilyMask1, SpellFamilyMask2, procFlags, procEx, ppmRate, CustomChance, Cooldown) VALUES
|
||||||
|
(20375, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 7.000000, 0.000000, 1), -- Seal of Command
|
||||||
|
(33297, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 45), -- Quagmirran's Eye
|
||||||
|
(34320, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000002, 0.000000, 0.000000, 45), -- Shiffar's Nexus-Horn
|
||||||
|
(38299, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 12), -- Fel Reaver's Piston
|
||||||
|
(38347, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000002, 0.000000, 0.000000, 45), -- Sextant of Unstable Currents
|
||||||
|
(50781, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000002, 0.000000, 0.000000, 6), -- Fate Rune of Primal Energy
|
||||||
|
(51414, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 45), -- Venomous Tome
|
||||||
|
(54695, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 45), -- Death Knight's Anguish
|
||||||
|
(54707, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 60), -- Sonic Booster
|
||||||
|
(54738, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000002, 0.000000, 0.000000, 45), -- Serrah's Star
|
||||||
|
(54808, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 60), -- Noise Machine
|
||||||
|
(54838, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 45), -- Valonforth's Remembrance
|
||||||
|
(54841, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000002, 0.000000, 0.000000, 3), -- Thunder Capacitor
|
||||||
|
(58442, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 15), -- Airy Pale Ale
|
||||||
|
(58444, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 5), -- Worg Tooth Oatmeal Stout
|
||||||
|
(58901, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000002, 0.000000, 0.000000, 45), -- Tears of Bitter Anguish
|
||||||
|
(59345, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 45), -- Crusader's Locket
|
||||||
|
(59630, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 45), -- Black Magic
|
||||||
|
(60061, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 45), -- Scarab of the Infinite Cycle
|
||||||
|
(60063, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 45), -- Sundial of the Exiled
|
||||||
|
(60066, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 45), -- Hourglass of the Unraveller
|
||||||
|
(60221, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 45), -- Essence of Gossamer
|
||||||
|
(60301, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 45), -- Meteorite Whetstone
|
||||||
|
(60306, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 45), -- Vestige of Haldor
|
||||||
|
(60317, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 45), -- Signet of Edward the Odd
|
||||||
|
(60473, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 45), -- Forge Ember
|
||||||
|
(60482, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 45), -- Pendulum of Telluric Currents
|
||||||
|
(60490, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 45), -- Embrace of the Spider
|
||||||
|
(60519, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 45), -- Spark of Life
|
||||||
|
(60529, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 45), -- Forethought Talisman
|
||||||
|
(60537, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000002, 0.000000, 0.000000, 45), -- Soul of the Dead
|
||||||
|
(61356, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x000002A8, 0x00000002, 0.000000, 0.000000, 45), -- Invigorating Earthsiege Diamond
|
||||||
|
(61618, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 45); -- Chuchu's Tiny Box of Horrors
|
||||||
4
sql/updates/9010_01_realmd_realmlist.sql
Normal file
4
sql/updates/9010_01_realmd_realmlist.sql
Normal file
|
|
@ -0,0 +1,4 @@
|
||||||
|
ALTER TABLE realmd_db_version CHANGE COLUMN required_8728_01_realmd_account required_9010_01_realmd_realmlist bit;
|
||||||
|
|
||||||
|
ALTER TABLE realmlist
|
||||||
|
ADD COLUMN realmbuilds varchar(64) NOT NULL default '' AFTER population;
|
||||||
|
|
@ -208,6 +208,10 @@ pkgdata_DATA = \
|
||||||
8993_01_mangos_spell_proc_event.sql \
|
8993_01_mangos_spell_proc_event.sql \
|
||||||
8995_01_mangos_spell_proc_event.sql \
|
8995_01_mangos_spell_proc_event.sql \
|
||||||
8996_01_mangos_spell_proc_event.sql \
|
8996_01_mangos_spell_proc_event.sql \
|
||||||
|
9001_01_mangos_spell_proc_event.sql \
|
||||||
|
9005_01_mangos_spell_proc_event.sql \
|
||||||
|
9007_01_mangos_spell_proc_event.sql \
|
||||||
|
9010_01_realmd_realmlist.sql \
|
||||||
README
|
README
|
||||||
|
|
||||||
## Additional files to include when running 'make dist'
|
## Additional files to include when running 'make dist'
|
||||||
|
|
@ -396,4 +400,8 @@ EXTRA_DIST = \
|
||||||
8993_01_mangos_spell_proc_event.sql \
|
8993_01_mangos_spell_proc_event.sql \
|
||||||
8995_01_mangos_spell_proc_event.sql \
|
8995_01_mangos_spell_proc_event.sql \
|
||||||
8996_01_mangos_spell_proc_event.sql \
|
8996_01_mangos_spell_proc_event.sql \
|
||||||
|
9001_01_mangos_spell_proc_event.sql \
|
||||||
|
9005_01_mangos_spell_proc_event.sql \
|
||||||
|
9007_01_mangos_spell_proc_event.sql \
|
||||||
|
9010_01_realmd_realmlist.sql \
|
||||||
README
|
README
|
||||||
|
|
|
||||||
|
|
@ -1491,11 +1491,11 @@ struct SpellShapeshiftEntry
|
||||||
int32 creatureType; // 20 <=0 humanoid, other normal creature types
|
int32 creatureType; // 20 <=0 humanoid, other normal creature types
|
||||||
//uint32 unk1; // 21 unused, related to next field
|
//uint32 unk1; // 21 unused, related to next field
|
||||||
uint32 attackSpeed; // 22
|
uint32 attackSpeed; // 22
|
||||||
//uint32 modelID; // 23 unused, alliance modelid (where horde case?)
|
uint32 modelID_A; // 23 alliance modelid (0 means no model)
|
||||||
//uint32 unk2; // 24 unused, also modelid (single case)
|
uint32 modelID_H; // 24 horde modelid (but only for one form)
|
||||||
//uint32 unk3; // 25 unused, all zeros
|
//uint32 unk3; // 25 unused always 0
|
||||||
//uint32 unk4; // 26 unused, all zeros
|
//uint32 unk4; // 26 unused always 0
|
||||||
//uint32 spellids[8]; // 27-34 unused
|
//uint32 spell[8]; // 27-34 unused, spells which appear in the bar after shapeshifting
|
||||||
};
|
};
|
||||||
|
|
||||||
struct SpellDurationEntry
|
struct SpellDurationEntry
|
||||||
|
|
|
||||||
|
|
@ -91,7 +91,7 @@ const char SpellItemEnchantmentConditionfmt[]="nbbbbbxxxxxbbbbbbbbbbiiiiiXXXXX";
|
||||||
const char SpellRadiusfmt[]="nfxf";
|
const char SpellRadiusfmt[]="nfxf";
|
||||||
const char SpellRangefmt[]="nffffxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
|
const char SpellRangefmt[]="nffffxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
|
||||||
const char SpellRuneCostfmt[]="niiii";
|
const char SpellRuneCostfmt[]="niiii";
|
||||||
const char SpellShapeshiftfmt[]="nxxxxxxxxxxxxxxxxxxiixixxxxxxxxxxxx";
|
const char SpellShapeshiftfmt[]="nxxxxxxxxxxxxxxxxxxiixiiixxxxxxxxxx";
|
||||||
const char StableSlotPricesfmt[] = "ni";
|
const char StableSlotPricesfmt[] = "ni";
|
||||||
const char SummonPropertiesfmt[] = "niiiii";
|
const char SummonPropertiesfmt[] = "niiiii";
|
||||||
const char TalentEntryfmt[]="niiiiiiiixxxxixxixxxxxx";
|
const char TalentEntryfmt[]="niiiiiiiixxxxixxixxxxxx";
|
||||||
|
|
|
||||||
|
|
@ -306,7 +306,8 @@ void WorldSession::HandleGossipSelectOptionOpcode( WorldPacket & recv_data )
|
||||||
|
|
||||||
// TODO: determine if scriptCall is needed for GO and also if scriptCall can be same as current, with modified argument WorldObject*
|
// TODO: determine if scriptCall is needed for GO and also if scriptCall can be same as current, with modified argument WorldObject*
|
||||||
|
|
||||||
if (IS_CREATURE_GUID(guid))
|
// can vehicle have gossip? If so, need check for this also.
|
||||||
|
if (IS_CREATURE_OR_PET_GUID(guid))
|
||||||
{
|
{
|
||||||
Creature *pCreature = GetPlayer()->GetNPCIfCanInteractWith(guid, UNIT_NPC_FLAG_NONE);
|
Creature *pCreature = GetPlayer()->GetNPCIfCanInteractWith(guid, UNIT_NPC_FLAG_NONE);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -352,23 +352,29 @@ void WorldSession::HandlePetSetAction( WorldPacket & recv_data )
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// check swap
|
// check swap (at command->spell swap client remove spell first in another packet, so check only command move correctness)
|
||||||
if (move_command)
|
if (move_command)
|
||||||
{
|
{
|
||||||
uint8 act_state_0 = UNIT_ACTION_BUTTON_TYPE(data[0]);
|
uint8 act_state_0 = UNIT_ACTION_BUTTON_TYPE(data[0]);
|
||||||
|
if(act_state_0 == ACT_COMMAND || act_state_0 == ACT_REACTION)
|
||||||
|
{
|
||||||
uint32 spell_id_0 = UNIT_ACTION_BUTTON_ACTION(data[0]);
|
uint32 spell_id_0 = UNIT_ACTION_BUTTON_ACTION(data[0]);
|
||||||
UnitActionBarEntry const* actionEntry_1 = charmInfo->GetActionBarEntry(position[1]);
|
UnitActionBarEntry const* actionEntry_1 = charmInfo->GetActionBarEntry(position[1]);
|
||||||
if (!actionEntry_1 || spell_id_0 != actionEntry_1->GetAction() ||
|
if (!actionEntry_1 || spell_id_0 != actionEntry_1->GetAction() ||
|
||||||
act_state_0 != actionEntry_1->GetType())
|
act_state_0 != actionEntry_1->GetType())
|
||||||
return;
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
uint8 act_state_1 = UNIT_ACTION_BUTTON_TYPE(data[1]);
|
uint8 act_state_1 = UNIT_ACTION_BUTTON_TYPE(data[1]);
|
||||||
|
if(act_state_1 == ACT_COMMAND || act_state_1 == ACT_REACTION)
|
||||||
|
{
|
||||||
uint32 spell_id_1 = UNIT_ACTION_BUTTON_ACTION(data[1]);
|
uint32 spell_id_1 = UNIT_ACTION_BUTTON_ACTION(data[1]);
|
||||||
UnitActionBarEntry const* actionEntry_0 = charmInfo->GetActionBarEntry(position[0]);
|
UnitActionBarEntry const* actionEntry_0 = charmInfo->GetActionBarEntry(position[0]);
|
||||||
if (!actionEntry_0 || spell_id_1 != actionEntry_0->GetAction() ||
|
if (!actionEntry_0 || spell_id_1 != actionEntry_0->GetAction() ||
|
||||||
act_state_1 != actionEntry_0->GetType())
|
act_state_1 != actionEntry_0->GetType())
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
for(uint8 i = 0; i < count; ++i)
|
for(uint8 i = 0; i < count; ++i)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -2640,4 +2640,10 @@ enum PetTameFailureReason
|
||||||
PETTAME_UNKNOWNERROR = 12
|
PETTAME_UNKNOWNERROR = 12
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// we need to stick to 1 version or half of the stuff will work for someone
|
||||||
|
// others will not and opposite
|
||||||
|
// will only support WoW, WoW:TBC and WoW:WotLK 3.3.0a client build 11159...
|
||||||
|
|
||||||
|
#define EXPECTED_MANGOSD_CLIENT_BUILD {11159, 0}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
||||||
|
|
@ -2923,86 +2923,68 @@ void Aura::HandleAuraModShapeshift(bool apply, bool Real)
|
||||||
uint32 modelid = 0;
|
uint32 modelid = 0;
|
||||||
Powers PowerType = POWER_MANA;
|
Powers PowerType = POWER_MANA;
|
||||||
ShapeshiftForm form = ShapeshiftForm(m_modifier.m_miscvalue);
|
ShapeshiftForm form = ShapeshiftForm(m_modifier.m_miscvalue);
|
||||||
|
|
||||||
|
SpellShapeshiftEntry const* ssEntry = sSpellShapeshiftStore.LookupEntry(form);
|
||||||
|
if(ssEntry && ssEntry->modelID_A)
|
||||||
|
{
|
||||||
|
// i will asume that creatures will always take the defined model from the dbc
|
||||||
|
// since no field in creature_templates describes wether an alliance or
|
||||||
|
// horde modelid should be used at shapeshifting
|
||||||
|
if (m_target->GetTypeId() != TYPEID_PLAYER)
|
||||||
|
modelid = ssEntry->modelID_A;
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// players are a bit difficult since the dbc has seldomly an horde modelid
|
||||||
|
// so we add hacks here to set the right model
|
||||||
|
if (Player::TeamForRace(m_target->getRace()) == ALLIANCE)
|
||||||
|
modelid = ssEntry->modelID_A;
|
||||||
|
else // 3.2.3 only the moonkin form has this information
|
||||||
|
modelid = ssEntry->modelID_H;
|
||||||
|
|
||||||
|
// no model found, if player is horde we look here for our hardcoded modelids
|
||||||
|
if (!modelid && Player::TeamForRace(m_target->getRace()) == HORDE)
|
||||||
|
{
|
||||||
|
|
||||||
switch(form)
|
switch(form)
|
||||||
{
|
{
|
||||||
case FORM_CAT:
|
case FORM_CAT:
|
||||||
if(Player::TeamForRace(m_target->getRace()) == ALLIANCE)
|
|
||||||
modelid = 892;
|
|
||||||
else
|
|
||||||
modelid = 8571;
|
modelid = 8571;
|
||||||
PowerType = POWER_ENERGY;
|
|
||||||
break;
|
|
||||||
case FORM_TRAVEL:
|
|
||||||
modelid = 632;
|
|
||||||
break;
|
|
||||||
case FORM_AQUA:
|
|
||||||
if(Player::TeamForRace(m_target->getRace()) == ALLIANCE)
|
|
||||||
modelid = 2428;
|
|
||||||
else
|
|
||||||
modelid = 2428;
|
|
||||||
break;
|
break;
|
||||||
case FORM_BEAR:
|
case FORM_BEAR:
|
||||||
if(Player::TeamForRace(m_target->getRace()) == ALLIANCE)
|
|
||||||
modelid = 2281;
|
|
||||||
else
|
|
||||||
modelid = 2289;
|
|
||||||
PowerType = POWER_RAGE;
|
|
||||||
break;
|
|
||||||
case FORM_GHOUL:
|
|
||||||
if(Player::TeamForRace(m_target->getRace()) == ALLIANCE)
|
|
||||||
modelid = 10045;
|
|
||||||
break;
|
|
||||||
case FORM_DIREBEAR:
|
case FORM_DIREBEAR:
|
||||||
if(Player::TeamForRace(m_target->getRace()) == ALLIANCE)
|
|
||||||
modelid = 2281;
|
|
||||||
else
|
|
||||||
modelid = 2289;
|
modelid = 2289;
|
||||||
PowerType = POWER_RAGE;
|
|
||||||
break;
|
|
||||||
case FORM_CREATUREBEAR:
|
|
||||||
modelid = 902;
|
|
||||||
break;
|
|
||||||
case FORM_GHOSTWOLF:
|
|
||||||
modelid = 4613;
|
|
||||||
break;
|
break;
|
||||||
case FORM_FLIGHT:
|
case FORM_FLIGHT:
|
||||||
if(Player::TeamForRace(m_target->getRace()) == ALLIANCE)
|
|
||||||
modelid = 20857;
|
|
||||||
else
|
|
||||||
modelid = 20872;
|
modelid = 20872;
|
||||||
break;
|
break;
|
||||||
case FORM_MOONKIN:
|
|
||||||
if(Player::TeamForRace(m_target->getRace()) == ALLIANCE)
|
|
||||||
modelid = 15374;
|
|
||||||
else
|
|
||||||
modelid = 15375;
|
|
||||||
break;
|
|
||||||
case FORM_FLIGHT_EPIC:
|
case FORM_FLIGHT_EPIC:
|
||||||
if(Player::TeamForRace(m_target->getRace()) == ALLIANCE)
|
|
||||||
modelid = 21243;
|
|
||||||
else
|
|
||||||
modelid = 21244;
|
modelid = 21244;
|
||||||
break;
|
break;
|
||||||
case FORM_METAMORPHOSIS:
|
// per default use alliance modelid
|
||||||
modelid = 25277;
|
// mostly horde and alliance share the same
|
||||||
|
default:
|
||||||
|
modelid = ssEntry->modelID_A;
|
||||||
break;
|
break;
|
||||||
case FORM_AMBIENT:
|
}
|
||||||
case FORM_SHADOW:
|
}
|
||||||
case FORM_STEALTH:
|
}
|
||||||
break;
|
}
|
||||||
case FORM_TREE:
|
|
||||||
modelid = 864;
|
// now only powertype must be set
|
||||||
|
switch(form)
|
||||||
|
{
|
||||||
|
case FORM_CAT:
|
||||||
|
PowerType = POWER_ENERGY;
|
||||||
break;
|
break;
|
||||||
|
case FORM_BEAR:
|
||||||
|
case FORM_DIREBEAR:
|
||||||
case FORM_BATTLESTANCE:
|
case FORM_BATTLESTANCE:
|
||||||
case FORM_BERSERKERSTANCE:
|
case FORM_BERSERKERSTANCE:
|
||||||
case FORM_DEFENSIVESTANCE:
|
case FORM_DEFENSIVESTANCE:
|
||||||
PowerType = POWER_RAGE;
|
PowerType = POWER_RAGE;
|
||||||
break;
|
break;
|
||||||
case FORM_SPIRITOFREDEMPTION:
|
|
||||||
modelid = 16031;
|
|
||||||
break;
|
|
||||||
default:
|
default:
|
||||||
sLog.outError("Auras: Unknown Shapeshift Type: %u, SpellId %u.", m_modifier.m_miscvalue, GetId());
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
// remove polymorph before changing display id to keep new display id
|
// remove polymorph before changing display id to keep new display id
|
||||||
|
|
|
||||||
|
|
@ -3414,16 +3414,15 @@ void Spell::EffectSummonType(uint32 i)
|
||||||
{
|
{
|
||||||
switch(summon_prop->Type)
|
switch(summon_prop->Type)
|
||||||
{
|
{
|
||||||
case SUMMON_PROP_TYPE_SIEGE_VEH:
|
case SUMMON_PROP_TYPE_OTHER:
|
||||||
case SUMMON_PROP_TYPE_DRAKE_VEH:
|
|
||||||
{
|
{
|
||||||
// TODO
|
// those are classical totems - effectbasepoints is their hp and not summon ammount!
|
||||||
// EffectSummonVehicle(i);
|
//SUMMON_TYPE_TOTEM = 121: 23035, battlestands
|
||||||
break;
|
//SUMMON_TYPE_TOTEM2 = 647: 52893, Anti-Magic Zone (npc used)
|
||||||
}
|
if(prop_id == 121 || prop_id == 647)
|
||||||
case SUMMON_PROP_TYPE_TOTEM:
|
EffectSummonTotem(i);
|
||||||
{
|
else
|
||||||
EffectSummonTotem(i, summon_prop->Slot);
|
EffectSummonWild(i, summon_prop->FactionId);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case SUMMON_PROP_TYPE_SUMMON:
|
case SUMMON_PROP_TYPE_SUMMON:
|
||||||
|
|
@ -3441,25 +3440,22 @@ void Spell::EffectSummonType(uint32 i)
|
||||||
EffectSummonGuardian(i, summon_prop->FactionId);
|
EffectSummonGuardian(i, summon_prop->FactionId);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
case SUMMON_PROP_TYPE_TOTEM:
|
||||||
|
EffectSummonTotem(i, summon_prop->Slot);
|
||||||
|
break;
|
||||||
case SUMMON_PROP_TYPE_CRITTER:
|
case SUMMON_PROP_TYPE_CRITTER:
|
||||||
case SUMMON_PROP_TYPE_REPAIR_BOT:
|
|
||||||
{
|
|
||||||
EffectSummonCritter(i, summon_prop->FactionId);
|
EffectSummonCritter(i, summon_prop->FactionId);
|
||||||
break;
|
break;
|
||||||
}
|
|
||||||
case SUMMON_PROP_TYPE_OTHER:
|
|
||||||
case SUMMON_PROP_TYPE_PHASING:
|
case SUMMON_PROP_TYPE_PHASING:
|
||||||
case SUMMON_PROP_TYPE_LIGHTWELL:
|
case SUMMON_PROP_TYPE_LIGHTWELL:
|
||||||
{
|
case SUMMON_PROP_TYPE_REPAIR_BOT:
|
||||||
// those are classical totems - effectbasepoints is their hp and not summon ammount!
|
|
||||||
//SUMMON_TYPE_TOTEM = 121: 23035, battlestands
|
|
||||||
//SUMMON_TYPE_TOTEM2 = 647: 52893, Anti-Magic Zone (npc used)
|
|
||||||
if(prop_id == 121 || prop_id == 647)
|
|
||||||
EffectSummonTotem(i);
|
|
||||||
else
|
|
||||||
EffectSummonWild(i, summon_prop->FactionId);
|
EffectSummonWild(i, summon_prop->FactionId);
|
||||||
break;
|
break;
|
||||||
}
|
case SUMMON_PROP_TYPE_SIEGE_VEH:
|
||||||
|
case SUMMON_PROP_TYPE_DRAKE_VEH:
|
||||||
|
// TODO
|
||||||
|
// EffectSummonVehicle(i);
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
sLog.outError("EffectSummonType: Unhandled summon type %u", summon_prop->Type);
|
sLog.outError("EffectSummonType: Unhandled summon type %u", summon_prop->Type);
|
||||||
break;
|
break;
|
||||||
|
|
|
||||||
|
|
@ -311,6 +311,7 @@ void WorldSession::HandleCastSpellOpcode(WorldPacket& recvPacket)
|
||||||
// not have spell in spellbook or spell passive and not casted by client
|
// not have spell in spellbook or spell passive and not casted by client
|
||||||
if (!((Player*)mover)->HasActiveSpell (spellId) || IsPassiveSpell(spellId) )
|
if (!((Player*)mover)->HasActiveSpell (spellId) || IsPassiveSpell(spellId) )
|
||||||
{
|
{
|
||||||
|
sLog.outError("World: Player %u casts spell %u which he shouldn't have", mover->GetGUIDLow(), spellId);
|
||||||
//cheater? kick? ban?
|
//cheater? kick? ban?
|
||||||
recvPacket.rpos(recvPacket.wpos()); // prevent spam at ignore packet
|
recvPacket.rpos(recvPacket.wpos()); // prevent spam at ignore packet
|
||||||
return;
|
return;
|
||||||
|
|
|
||||||
|
|
@ -7638,16 +7638,6 @@ bool Unit::HandleOverrideClassScriptAuraProc(Unit *pVictim, uint32 damage, Aura
|
||||||
case 6953: // Warbringer
|
case 6953: // Warbringer
|
||||||
RemoveAurasAtMechanicImmunity(IMMUNE_TO_ROOT_AND_SNARE_MASK,0,true);
|
RemoveAurasAtMechanicImmunity(IMMUNE_TO_ROOT_AND_SNARE_MASK,0,true);
|
||||||
return true;
|
return true;
|
||||||
case 8152: // Serendipity
|
|
||||||
{
|
|
||||||
// if heal your target over maximum health
|
|
||||||
if (pVictim->GetHealth() + damage < pVictim->GetMaxHealth())
|
|
||||||
return false;
|
|
||||||
int32 cost = procSpell->manaCost + procSpell->ManaCostPercentage * GetCreateMana() / 100;
|
|
||||||
int32 basepoints0 = cost * triggeredByAura->GetModifier()->m_amount/100;
|
|
||||||
CastCustomSpell(this, 47762, &basepoints0, NULL, NULL, true, NULL, triggeredByAura);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// not processed
|
// not processed
|
||||||
|
|
|
||||||
|
|
@ -173,6 +173,11 @@ enum ShapeshiftForm
|
||||||
FORM_AMBIENT = 0x06,
|
FORM_AMBIENT = 0x06,
|
||||||
FORM_GHOUL = 0x07,
|
FORM_GHOUL = 0x07,
|
||||||
FORM_DIREBEAR = 0x08,
|
FORM_DIREBEAR = 0x08,
|
||||||
|
FORM_STEVES_GHOUL = 0x09,
|
||||||
|
FORM_THARONJA_SKELETON = 0x0A,
|
||||||
|
FORM_TEST_OF_STRENGTH = 0x0B,
|
||||||
|
FORM_BLB_PLAYER = 0x0C,
|
||||||
|
FORM_SHADOW_DANCE = 0x0D,
|
||||||
FORM_CREATUREBEAR = 0x0E,
|
FORM_CREATUREBEAR = 0x0E,
|
||||||
FORM_CREATURECAT = 0x0F,
|
FORM_CREATURECAT = 0x0F,
|
||||||
FORM_GHOSTWOLF = 0x10,
|
FORM_GHOSTWOLF = 0x10,
|
||||||
|
|
@ -182,12 +187,14 @@ enum ShapeshiftForm
|
||||||
FORM_TEST = 0x14,
|
FORM_TEST = 0x14,
|
||||||
FORM_ZOMBIE = 0x15,
|
FORM_ZOMBIE = 0x15,
|
||||||
FORM_METAMORPHOSIS = 0x16,
|
FORM_METAMORPHOSIS = 0x16,
|
||||||
|
FORM_UNDEAD = 0x19,
|
||||||
|
FORM_FRENZY = 0x1A,
|
||||||
FORM_FLIGHT_EPIC = 0x1B,
|
FORM_FLIGHT_EPIC = 0x1B,
|
||||||
FORM_SHADOW = 0x1C,
|
FORM_SHADOW = 0x1C,
|
||||||
FORM_FLIGHT = 0x1D,
|
FORM_FLIGHT = 0x1D,
|
||||||
FORM_STEALTH = 0x1E,
|
FORM_STEALTH = 0x1E,
|
||||||
FORM_MOONKIN = 0x1F,
|
FORM_MOONKIN = 0x1F,
|
||||||
FORM_SPIRITOFREDEMPTION = 0x20
|
FORM_SPIRITOFREDEMPTION = 0x20,
|
||||||
};
|
};
|
||||||
|
|
||||||
// low byte ( 0 from 0..3 ) of UNIT_FIELD_BYTES_2
|
// low byte ( 0 from 0..3 ) of UNIT_FIELD_BYTES_2
|
||||||
|
|
|
||||||
|
|
@ -745,7 +745,7 @@ int WorldSocket::HandleAuthSession (WorldPacket& recvPacket)
|
||||||
BigNumber K;
|
BigNumber K;
|
||||||
|
|
||||||
// Read the content of the packet
|
// Read the content of the packet
|
||||||
recvPacket >> ClientBuild; // for now no use
|
recvPacket >> ClientBuild;
|
||||||
recvPacket >> unk2;
|
recvPacket >> unk2;
|
||||||
recvPacket >> account;
|
recvPacket >> account;
|
||||||
recvPacket >> unk3;
|
recvPacket >> unk3;
|
||||||
|
|
@ -760,6 +760,29 @@ int WorldSocket::HandleAuthSession (WorldPacket& recvPacket)
|
||||||
unk3,
|
unk3,
|
||||||
clientSeed);
|
clientSeed);
|
||||||
|
|
||||||
|
// Check the version of client trying to connect
|
||||||
|
bool valid_version = false;
|
||||||
|
int accepted_versions[] = EXPECTED_MANGOSD_CLIENT_BUILD;
|
||||||
|
for(int i = 0; accepted_versions[i]; ++i)
|
||||||
|
{
|
||||||
|
if(ClientBuild == accepted_versions[i])
|
||||||
|
{
|
||||||
|
valid_version = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(!valid_version)
|
||||||
|
{
|
||||||
|
packet.Initialize (SMSG_AUTH_RESPONSE, 1);
|
||||||
|
packet << uint8 (AUTH_VERSION_MISMATCH);
|
||||||
|
|
||||||
|
SendPacket (packet);
|
||||||
|
|
||||||
|
sLog.outError ("WorldSocket::HandleAuthSession: Sent Auth Response (version mismatch).");
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
// Get the account information from the realmd database
|
// Get the account information from the realmd database
|
||||||
std::string safe_account = account; // Duplicate, else will screw the SHA hash verification below
|
std::string safe_account = account; // Duplicate, else will screw the SHA hash verification below
|
||||||
loginDatabase.escape_string (safe_account);
|
loginDatabase.escape_string (safe_account);
|
||||||
|
|
|
||||||
|
|
@ -227,8 +227,16 @@ int Master::Run()
|
||||||
ACE_Based::Thread world_thread(new WorldRunnable);
|
ACE_Based::Thread world_thread(new WorldRunnable);
|
||||||
world_thread.setPriority(ACE_Based::Highest);
|
world_thread.setPriority(ACE_Based::Highest);
|
||||||
|
|
||||||
// set server online
|
// set realmbuilds depend on mangosd expected builds, and set server online
|
||||||
loginDatabase.PExecute("UPDATE realmlist SET color = 0, population = 0 WHERE id = '%d'",realmID);
|
{
|
||||||
|
std::ostringstream data;
|
||||||
|
int accepted_versions[] = EXPECTED_MANGOSD_CLIENT_BUILD;
|
||||||
|
for(int i = 0; accepted_versions[i]; ++i)
|
||||||
|
{
|
||||||
|
data << accepted_versions[i] << " ";
|
||||||
|
}
|
||||||
|
loginDatabase.PExecute("UPDATE realmlist SET color = 0, population = 0, realmbuilds = '%s' WHERE id = '%d'", data.str().c_str(), realmID);
|
||||||
|
}
|
||||||
|
|
||||||
ACE_Based::Thread* cliThread = NULL;
|
ACE_Based::Thread* cliThread = NULL;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -64,11 +64,18 @@ enum LoginResult
|
||||||
LOGIN_LOCKED_ENFORCED = 0x10,
|
LOGIN_LOCKED_ENFORCED = 0x10,
|
||||||
};
|
};
|
||||||
|
|
||||||
// we need to stick to 1 version or half of the stuff will work for someone
|
// will only support WoW 1.12.1/1.12.2 , WoW:TBC 2.4.3 and WoW:WotLK 3.2.2a, client builds 10505, 8606, 6005, 5875
|
||||||
// others will not and opposite
|
// if you need more from old build then add it in cases in relamd sources code
|
||||||
// will only support WoW, WoW:TBC and WoW:WotLK 3.3.0a client build 11159...
|
// list sorted from high to low build and first build used as low bound for accepted by default range (any > it will accepted by realmd at least)
|
||||||
|
|
||||||
#define EXPECTED_MANGOS_CLIENT_BUILD {11159, 0}
|
#define EXPECTED_REALMD_CLIENT_BUILD \
|
||||||
|
{ \
|
||||||
|
10505, /* 3.2.2a and higher */ \
|
||||||
|
8606, /* 2.4.3 */ \
|
||||||
|
6005, /* 1.12.2 */ \
|
||||||
|
5875, /* 1.12.1 */ \
|
||||||
|
0 \
|
||||||
|
}
|
||||||
|
|
||||||
// At update excepted builds please update if need define DEFAULT_MAX_LEVEL
|
// At update excepted builds please update if need define DEFAULT_MAX_LEVEL
|
||||||
// in DBCEnum.h to default max player level expected by build
|
// in DBCEnum.h to default max player level expected by build
|
||||||
|
|
|
||||||
|
|
@ -22,14 +22,12 @@
|
||||||
|
|
||||||
#include "Common.h"
|
#include "Common.h"
|
||||||
#include "Database/DatabaseEnv.h"
|
#include "Database/DatabaseEnv.h"
|
||||||
#include "ByteBuffer.h"
|
|
||||||
#include "Config/ConfigEnv.h"
|
#include "Config/ConfigEnv.h"
|
||||||
#include "Log.h"
|
#include "Log.h"
|
||||||
#include "RealmList.h"
|
#include "RealmList.h"
|
||||||
#include "AuthSocket.h"
|
#include "AuthSocket.h"
|
||||||
#include "AuthCodes.h"
|
#include "AuthCodes.h"
|
||||||
#include <openssl/md5.h>
|
#include <openssl/md5.h>
|
||||||
#include "Auth/Sha1.h"
|
|
||||||
//#include "Util.h" -- for commented utf8ToUpperOnlyLatin
|
//#include "Util.h" -- for commented utf8ToUpperOnlyLatin
|
||||||
|
|
||||||
extern DatabaseType loginDatabase;
|
extern DatabaseType loginDatabase;
|
||||||
|
|
@ -129,6 +127,16 @@ typedef struct AUTH_LOGON_PROOF_S
|
||||||
uint16 unk3;
|
uint16 unk3;
|
||||||
} sAuthLogonProof_S;
|
} sAuthLogonProof_S;
|
||||||
|
|
||||||
|
typedef struct AUTH_LOGON_PROOF_S_BUILD_6005
|
||||||
|
{
|
||||||
|
uint8 cmd;
|
||||||
|
uint8 error;
|
||||||
|
uint8 M2[20];
|
||||||
|
//uint32 unk1;
|
||||||
|
uint32 unk2;
|
||||||
|
//uint16 unk3;
|
||||||
|
} sAuthLogonProof_S_BUILD_6005;
|
||||||
|
|
||||||
typedef struct AUTH_RECONNECT_PROOF_C
|
typedef struct AUTH_RECONNECT_PROOF_C
|
||||||
{
|
{
|
||||||
uint8 cmd;
|
uint8 cmd;
|
||||||
|
|
@ -321,6 +329,40 @@ void AuthSocket::_SetVSFields(const std::string& rI)
|
||||||
OPENSSL_free((void*)s_hex);
|
OPENSSL_free((void*)s_hex);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void AuthSocket::SendProof(Sha1Hash sha)
|
||||||
|
{
|
||||||
|
switch(_build)
|
||||||
|
{
|
||||||
|
case 5875: // 1.12.1
|
||||||
|
case 6005: // 1.12.2
|
||||||
|
{
|
||||||
|
sAuthLogonProof_S_BUILD_6005 proof;
|
||||||
|
memcpy(proof.M2, sha.GetDigest(), 20);
|
||||||
|
proof.cmd = AUTH_LOGON_PROOF;
|
||||||
|
proof.error = 0;
|
||||||
|
proof.unk2 = 0x00;
|
||||||
|
|
||||||
|
SendBuf((char *)&proof, sizeof(proof));
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case 8606: // 2.4.3
|
||||||
|
case 10505: // 3.2.2a
|
||||||
|
default: // or later
|
||||||
|
{
|
||||||
|
sAuthLogonProof_S proof;
|
||||||
|
memcpy(proof.M2, sha.GetDigest(), 20);
|
||||||
|
proof.cmd = AUTH_LOGON_PROOF;
|
||||||
|
proof.error = 0;
|
||||||
|
proof.unk1 = 0x00800000;
|
||||||
|
proof.unk2 = 0x00;
|
||||||
|
proof.unk3 = 0x00;
|
||||||
|
|
||||||
|
SendBuf((char *)&proof, sizeof(proof));
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// Logon Challenge command handler
|
/// Logon Challenge command handler
|
||||||
bool AuthSocket::_HandleLogonChallenge()
|
bool AuthSocket::_HandleLogonChallenge()
|
||||||
{
|
{
|
||||||
|
|
@ -536,8 +578,13 @@ bool AuthSocket::_HandleLogonProof()
|
||||||
|
|
||||||
///- Check if the client has one of the expected version numbers
|
///- Check if the client has one of the expected version numbers
|
||||||
bool valid_version = false;
|
bool valid_version = false;
|
||||||
int accepted_versions[] = EXPECTED_MANGOS_CLIENT_BUILD;
|
int accepted_versions[] = EXPECTED_REALMD_CLIENT_BUILD;
|
||||||
for(int i = 0; accepted_versions[i]; ++i)
|
if (_build >= accepted_versions[0]) // first build is low bound of always accepted range
|
||||||
|
valid_version = true;
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// continue from 1 with explict equal check
|
||||||
|
for(int i = 1; accepted_versions[i]; ++i)
|
||||||
{
|
{
|
||||||
if(_build == accepted_versions[i])
|
if(_build == accepted_versions[i])
|
||||||
{
|
{
|
||||||
|
|
@ -545,6 +592,7 @@ bool AuthSocket::_HandleLogonProof()
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// <ul><li> If the client has no valid version
|
/// <ul><li> If the client has no valid version
|
||||||
if(!valid_version)
|
if(!valid_version)
|
||||||
|
|
@ -691,15 +739,7 @@ bool AuthSocket::_HandleLogonProof()
|
||||||
sha.UpdateBigNumbers(&A, &M, &K, NULL);
|
sha.UpdateBigNumbers(&A, &M, &K, NULL);
|
||||||
sha.Finalize();
|
sha.Finalize();
|
||||||
|
|
||||||
sAuthLogonProof_S proof;
|
SendProof(sha);
|
||||||
memcpy(proof.M2, sha.GetDigest(), 20);
|
|
||||||
proof.cmd = AUTH_LOGON_PROOF;
|
|
||||||
proof.error = 0;
|
|
||||||
proof.unk1 = 0x00800000;
|
|
||||||
proof.unk2 = 0x00;
|
|
||||||
proof.unk3 = 0x00;
|
|
||||||
|
|
||||||
SendBuf((char *)&proof, sizeof(proof));
|
|
||||||
|
|
||||||
///- Set _authed to true!
|
///- Set _authed to true!
|
||||||
_authed = true;
|
_authed = true;
|
||||||
|
|
@ -882,15 +922,75 @@ bool AuthSocket::_HandleRealmList()
|
||||||
|
|
||||||
///- Circle through realms in the RealmList and construct the return packet (including # of user characters in each realm)
|
///- Circle through realms in the RealmList and construct the return packet (including # of user characters in each realm)
|
||||||
ByteBuffer pkt;
|
ByteBuffer pkt;
|
||||||
pkt << (uint32) 0;
|
LoadRealmlist(pkt, id);
|
||||||
pkt << (uint16) sRealmList.size();
|
|
||||||
RealmList::RealmMap::const_iterator i;
|
ByteBuffer hdr;
|
||||||
for( i = sRealmList.begin(); i != sRealmList.end(); ++i )
|
hdr << (uint8) REALM_LIST;
|
||||||
|
hdr << (uint16)pkt.size();
|
||||||
|
hdr.append(pkt);
|
||||||
|
|
||||||
|
SendBuf((char const*)hdr.contents(), hdr.size());
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
void AuthSocket::LoadRealmlist(ByteBuffer &pkt, uint32 acctid)
|
||||||
|
{
|
||||||
|
switch(_build)
|
||||||
|
{
|
||||||
|
case 5875: // 1.12.1
|
||||||
|
case 6005: // 1.12.2
|
||||||
|
{
|
||||||
|
pkt << uint32(0);
|
||||||
|
pkt << uint8(sRealmList.size());
|
||||||
|
|
||||||
|
for(RealmList::RealmMap::const_iterator i = sRealmList.begin(); i != sRealmList.end(); ++i)
|
||||||
{
|
{
|
||||||
uint8 AmountOfCharacters;
|
uint8 AmountOfCharacters;
|
||||||
|
|
||||||
// No SQL injection. id of realm is controlled by the database.
|
// No SQL injection. id of realm is controlled by the database.
|
||||||
result = loginDatabase.PQuery( "SELECT numchars FROM realmcharacters WHERE realmid = '%d' AND acctid='%u'",i->second.m_ID,id);
|
QueryResult *result = loginDatabase.PQuery( "SELECT numchars FROM realmcharacters WHERE realmid = '%d' AND acctid='%u'", i->second.m_ID, acctid);
|
||||||
|
if( result )
|
||||||
|
{
|
||||||
|
Field *fields = result->Fetch();
|
||||||
|
AmountOfCharacters = fields[0].GetUInt8();
|
||||||
|
delete result;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
AmountOfCharacters = 0;
|
||||||
|
|
||||||
|
// Show offline state for unsupported client builds
|
||||||
|
uint8 color = (std::find(i->second.realmbuilds.begin(), i->second.realmbuilds.end(), _build) != i->second.realmbuilds.end()) ? i->second.color : 2;
|
||||||
|
color = (i->second.allowedSecurityLevel > _accountSecurityLevel) ? 2 : color;
|
||||||
|
|
||||||
|
pkt << uint32(i->second.icon); // realm type
|
||||||
|
pkt << uint8(color); // if 2, then realm is offline
|
||||||
|
pkt << i->first; // name
|
||||||
|
pkt << i->second.address; // address
|
||||||
|
pkt << float(i->second.populationLevel);
|
||||||
|
pkt << uint8(AmountOfCharacters);
|
||||||
|
pkt << uint8(i->second.timezone); // realm category
|
||||||
|
pkt << uint8(0x00); // unk, may be realm number/id?
|
||||||
|
}
|
||||||
|
|
||||||
|
pkt << uint8(0x00);
|
||||||
|
pkt << uint8(0x02);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
case 8606: // 2.4.3
|
||||||
|
case 10505: // 3.2.2a
|
||||||
|
default: // and later
|
||||||
|
{
|
||||||
|
pkt << uint32(0);
|
||||||
|
pkt << uint16(sRealmList.size());
|
||||||
|
|
||||||
|
for(RealmList::RealmMap::const_iterator i = sRealmList.begin(); i != sRealmList.end(); ++i)
|
||||||
|
{
|
||||||
|
uint8 AmountOfCharacters;
|
||||||
|
|
||||||
|
// No SQL injection. id of realm is controlled by the database.
|
||||||
|
QueryResult *result = loginDatabase.PQuery( "SELECT numchars FROM realmcharacters WHERE realmid = '%d' AND acctid='%u'", i->second.m_ID, acctid);
|
||||||
if( result )
|
if( result )
|
||||||
{
|
{
|
||||||
Field *fields = result->Fetch();
|
Field *fields = result->Fetch();
|
||||||
|
|
@ -902,27 +1002,25 @@ bool AuthSocket::_HandleRealmList()
|
||||||
|
|
||||||
uint8 lock = (i->second.allowedSecurityLevel > _accountSecurityLevel) ? 1 : 0;
|
uint8 lock = (i->second.allowedSecurityLevel > _accountSecurityLevel) ? 1 : 0;
|
||||||
|
|
||||||
pkt << i->second.icon; // realm type
|
// Show offline state for unsupported client builds
|
||||||
pkt << lock; // if 1, then realm locked
|
uint8 color = (std::find(i->second.realmbuilds.begin(), i->second.realmbuilds.end(), _build) != i->second.realmbuilds.end()) ? i->second.color : 2;
|
||||||
pkt << i->second.color; // if 2, then realm is offline
|
|
||||||
pkt << i->first;
|
pkt << uint8(i->second.icon); // realm type
|
||||||
pkt << i->second.address;
|
pkt << uint8(lock); // if 1, then realm locked
|
||||||
pkt << i->second.populationLevel;
|
pkt << uint8(color); // if 2, then realm is offline
|
||||||
pkt << AmountOfCharacters;
|
pkt << i->first; // name
|
||||||
pkt << i->second.timezone; // realm category
|
pkt << i->second.address; // address
|
||||||
pkt << (uint8) 0x2C; // unk, may be realm number/id?
|
pkt << float(i->second.populationLevel);
|
||||||
|
pkt << uint8(AmountOfCharacters);
|
||||||
|
pkt << uint8(i->second.timezone); // realm category
|
||||||
|
pkt << uint8(0x2C); // unk, may be realm number/id?
|
||||||
}
|
}
|
||||||
pkt << (uint8) 0x10;
|
|
||||||
pkt << (uint8) 0x00;
|
|
||||||
|
|
||||||
ByteBuffer hdr;
|
pkt << uint8(0x10);
|
||||||
hdr << (uint8) REALM_LIST;
|
pkt << uint8(0x00);
|
||||||
hdr << (uint16)pkt.size();
|
break;
|
||||||
hdr.append(pkt);
|
}
|
||||||
|
}
|
||||||
SendBuf((char const*)hdr.contents(), hdr.size());
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Resume patch transfer
|
/// Resume patch transfer
|
||||||
|
|
|
||||||
|
|
@ -31,6 +31,8 @@
|
||||||
#include "sockets/Utility.h"
|
#include "sockets/Utility.h"
|
||||||
#include "sockets/Parse.h"
|
#include "sockets/Parse.h"
|
||||||
#include "sockets/Socket.h"
|
#include "sockets/Socket.h"
|
||||||
|
#include "Auth/Sha1.h"
|
||||||
|
#include "ByteBuffer.h"
|
||||||
|
|
||||||
/// Handle login commands
|
/// Handle login commands
|
||||||
class AuthSocket: public TcpSocket
|
class AuthSocket: public TcpSocket
|
||||||
|
|
@ -43,6 +45,8 @@ class AuthSocket: public TcpSocket
|
||||||
|
|
||||||
void OnAccept();
|
void OnAccept();
|
||||||
void OnRead();
|
void OnRead();
|
||||||
|
void SendProof(Sha1Hash sha);
|
||||||
|
void LoadRealmlist(ByteBuffer &pkt, uint32 acctid);
|
||||||
|
|
||||||
bool _HandleLogonChallenge();
|
bool _HandleLogonChallenge();
|
||||||
bool _HandleLogonProof();
|
bool _HandleLogonProof();
|
||||||
|
|
|
||||||
|
|
@ -22,6 +22,8 @@
|
||||||
|
|
||||||
#include "Common.h"
|
#include "Common.h"
|
||||||
#include "RealmList.h"
|
#include "RealmList.h"
|
||||||
|
#include "AuthCodes.h"
|
||||||
|
#include "Util.h" // for Tokens typedef
|
||||||
#include "Policies/SingletonImp.h"
|
#include "Policies/SingletonImp.h"
|
||||||
#include "Database/DatabaseEnv.h"
|
#include "Database/DatabaseEnv.h"
|
||||||
|
|
||||||
|
|
@ -48,7 +50,7 @@ void RealmList::Initialize(uint32 updateInterval)
|
||||||
UpdateRealms(true);
|
UpdateRealms(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
void RealmList::UpdateRealm( uint32 ID, const std::string& name, const std::string& address, uint32 port, uint8 icon, uint8 color, uint8 timezone, AccountTypes allowedSecurityLevel, float popu)
|
void RealmList::UpdateRealm( uint32 ID, const std::string& name, const std::string& address, uint32 port, uint8 icon, uint8 color, uint8 timezone, AccountTypes allowedSecurityLevel, float popu, const char* builds)
|
||||||
{
|
{
|
||||||
///- Create new if not exist or update existed
|
///- Create new if not exist or update existed
|
||||||
Realm& realm = m_realms[name];
|
Realm& realm = m_realms[name];
|
||||||
|
|
@ -60,6 +62,15 @@ void RealmList::UpdateRealm( uint32 ID, const std::string& name, const std::stri
|
||||||
realm.allowedSecurityLevel = allowedSecurityLevel;
|
realm.allowedSecurityLevel = allowedSecurityLevel;
|
||||||
realm.populationLevel = popu;
|
realm.populationLevel = popu;
|
||||||
|
|
||||||
|
Tokens tokens = StrSplit(builds, " ");
|
||||||
|
Tokens::iterator iter;
|
||||||
|
|
||||||
|
for (iter = tokens.begin(); iter != tokens.end(); ++iter)
|
||||||
|
{
|
||||||
|
uint32 build = atol((*iter).c_str());
|
||||||
|
realm.realmbuilds.insert(build);
|
||||||
|
}
|
||||||
|
|
||||||
///- Append port to IP address.
|
///- Append port to IP address.
|
||||||
std::ostringstream ss;
|
std::ostringstream ss;
|
||||||
ss << address << ":" << port;
|
ss << address << ":" << port;
|
||||||
|
|
@ -85,7 +96,8 @@ void RealmList::UpdateRealms(bool init)
|
||||||
{
|
{
|
||||||
sLog.outDetail("Updating Realm List...");
|
sLog.outDetail("Updating Realm List...");
|
||||||
|
|
||||||
QueryResult *result = loginDatabase.Query( "SELECT id, name, address, port, icon, color, timezone, allowedSecurityLevel, population FROM realmlist WHERE color <> 3 ORDER BY name" );
|
//// 0 1 2 3 4 5 6 7 8 9
|
||||||
|
QueryResult *result = loginDatabase.Query( "SELECT id, name, address, port, icon, color, timezone, allowedSecurityLevel, population, realmbuilds FROM realmlist WHERE color <> 3 ORDER BY name" );
|
||||||
|
|
||||||
///- Circle through results and add them to the realm map
|
///- Circle through results and add them to the realm map
|
||||||
if(result)
|
if(result)
|
||||||
|
|
@ -96,9 +108,9 @@ void RealmList::UpdateRealms(bool init)
|
||||||
|
|
||||||
uint8 allowedSecurityLevel = fields[7].GetUInt8();
|
uint8 allowedSecurityLevel = fields[7].GetUInt8();
|
||||||
|
|
||||||
UpdateRealm(fields[0].GetUInt32(), fields[1].GetCppString(),fields[2].GetCppString(),fields[3].GetUInt32(),fields[4].GetUInt8(), fields[5].GetUInt8(), fields[6].GetUInt8(), (allowedSecurityLevel <= SEC_ADMINISTRATOR ? AccountTypes(allowedSecurityLevel) : SEC_ADMINISTRATOR), fields[8].GetFloat() );
|
UpdateRealm(fields[0].GetUInt32(), fields[1].GetCppString(),fields[2].GetCppString(),fields[3].GetUInt32(),fields[4].GetUInt8(), fields[5].GetUInt8(), fields[6].GetUInt8(), (allowedSecurityLevel <= SEC_ADMINISTRATOR ? AccountTypes(allowedSecurityLevel) : SEC_ADMINISTRATOR), fields[8].GetFloat(), fields[9].GetString() );
|
||||||
if(init)
|
if(init)
|
||||||
sLog.outString("Added realm \"%s\".", fields[1].GetString());
|
sLog.outString("Added realm \"%s\"", fields[1].GetString());
|
||||||
} while( result->NextRow() );
|
} while( result->NextRow() );
|
||||||
delete result;
|
delete result;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -35,6 +35,7 @@ struct Realm
|
||||||
uint32 m_ID;
|
uint32 m_ID;
|
||||||
AccountTypes allowedSecurityLevel;
|
AccountTypes allowedSecurityLevel;
|
||||||
float populationLevel;
|
float populationLevel;
|
||||||
|
std::set<uint32> realmbuilds;
|
||||||
};
|
};
|
||||||
|
|
||||||
/// Storage object for the list of realms on the server
|
/// Storage object for the list of realms on the server
|
||||||
|
|
@ -57,7 +58,7 @@ class RealmList
|
||||||
uint32 size() const { return m_realms.size(); }
|
uint32 size() const { return m_realms.size(); }
|
||||||
private:
|
private:
|
||||||
void UpdateRealms(bool init);
|
void UpdateRealms(bool init);
|
||||||
void UpdateRealm( uint32 ID, const std::string& name, const std::string& address, uint32 port, uint8 icon, uint8 color, uint8 timezone, AccountTypes allowedSecurityLevel, float popu);
|
void UpdateRealm( uint32 ID, const std::string& name, const std::string& address, uint32 port, uint8 icon, uint8 color, uint8 timezone, AccountTypes allowedSecurityLevel, float popu, const char* builds);
|
||||||
private:
|
private:
|
||||||
RealmMap m_realms; ///< Internal map of realms
|
RealmMap m_realms; ///< Internal map of realms
|
||||||
uint32 m_UpdateInterval;
|
uint32 m_UpdateInterval;
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
#ifndef __REVISION_NR_H__
|
#ifndef __REVISION_NR_H__
|
||||||
#define __REVISION_NR_H__
|
#define __REVISION_NR_H__
|
||||||
#define REVISION_NR "8997"
|
#define REVISION_NR "9010"
|
||||||
#endif // __REVISION_NR_H__
|
#endif // __REVISION_NR_H__
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
#ifndef __REVISION_SQL_H__
|
#ifndef __REVISION_SQL_H__
|
||||||
#define __REVISION_SQL_H__
|
#define __REVISION_SQL_H__
|
||||||
#define REVISION_DB_CHARACTERS "required_8874_01_characters_character_skills"
|
#define REVISION_DB_CHARACTERS "required_8874_01_characters_character_skills"
|
||||||
#define REVISION_DB_MANGOS "required_8996_01_mangos_spell_proc_event"
|
#define REVISION_DB_MANGOS "required_9007_01_mangos_spell_proc_event"
|
||||||
#define REVISION_DB_REALMD "required_8728_01_realmd_account"
|
#define REVISION_DB_REALMD "required_9010_01_realmd_realmlist"
|
||||||
#endif // __REVISION_SQL_H__
|
#endif // __REVISION_SQL_H__
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue