*Procflag patch by DiSlord.
--HG-- branch : trunk
This commit is contained in:
@@ -0,0 +1,605 @@
|
||||
/*
|
||||
These are Trinity sql. Need to check if they should be added again.
|
||||
[\sql\updates\230_world.sql]
|
||||
Line 1 : UPDATE `spell_proc_event` SET `procFlags` = '8396800' WHERE `entry` =14774;
|
||||
Line 2 : UPDATE `spell_proc_event` SET `procFlags` = '8396800' WHERE `entry` =14531;
|
||||
[\sql\updates\233_world.sql]
|
||||
Line 1 : UPDATE `spell_proc_event` SET `SchoolMask` = '1' WHERE `entry` = '41434';
|
||||
[\sql\updates\57_world_scripts.sql]
|
||||
Line 34 : DELETE FROM `spell_proc_event` WHERE `entry` = 43983;
|
||||
Line 35 : INSERT INTO `spell_proc_event` VALUES ('43983', '0', '0', '0', '0', '0', '16384', '0', '0');
|
||||
[\updates\78_world.sql]
|
||||
Line 12 : DELETE FROM spell_proc_event WHERE entry IN (34139,42368,43726,46092);
|
||||
Line 13 : INSERT INTO spell_proc_event (entry, SchoolMask, Category, SkillID, SpellFamilyName, SpellFamilyMask, procFlags, ppmRate, cooldown) VALUES
|
||||
Line 19 : DELETE FROM spell_proc_event where entry IN (34598, 34584, 36488);
|
||||
Line 20 : INSERT INTO spell_proc_event (entry, SchoolMask, Category, SkillID, SpellFamilyName, SpellFamilyMask, procFlags, ppmRate, cooldown) VALUES
|
||||
[\updates\79_world.sql]
|
||||
Line 1 : DELETE FROM spell_proc_event where entry = 42083;
|
||||
Line 2 : INSERT INTO spell_proc_event (entry, SchoolMask, Category, SkillID, SpellFamilyName, SpellFamilyMask, procFlags, ppmRate, cooldown) VALUES
|
||||
*/
|
||||
|
||||
DROP TABLE IF EXISTS `spell_proc_event`;
|
||||
|
||||
SET FOREIGN_KEY_CHECKS=0;
|
||||
-- ----------------------------
|
||||
-- Table structure for spell_proc_event
|
||||
-- ----------------------------
|
||||
CREATE TABLE `spell_proc_event` (
|
||||
`entry` smallint(6) unsigned NOT NULL default '0',
|
||||
`SchoolMask` tinyint(4) NOT NULL default '0',
|
||||
`SpellFamilyName` smallint(6) unsigned NOT NULL default '0',
|
||||
`SpellFamilyMask` bigint(40) unsigned NOT NULL default '0',
|
||||
`procFlags` int(10) unsigned NOT NULL default '0',
|
||||
`procEx` int(10) unsigned NOT NULL default '0',
|
||||
`ppmRate` float NOT NULL default '0',
|
||||
`CustomChance` float NOT NULL default '0',
|
||||
`Cooldown` int(10) unsigned NOT NULL default '0',
|
||||
PRIMARY KEY (`entry`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
|
||||
|
||||
-- ----------------------------
|
||||
-- Records
|
||||
-- ----------------------------
|
||||
INSERT INTO `spell_proc_event` VALUES ('9452', '0', '0', '0', '0', '0', '3', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('34917', '32', '6', '0', '0', '0', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('34916', '32', '6', '0', '0', '0', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('34914', '32', '6', '0', '0', '0', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('29076', '20', '3', '0', '0', '2', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('29075', '20', '3', '0', '0', '2', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('29074', '20', '3', '0', '0', '2', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('12704', '0', '0', '0', '0', '0', '1.6626', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('12289', '0', '4', '2', '0', '0', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('12311', '0', '4', '2048', '0', '0', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('28849', '0', '11', '128', '0', '0', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('28847', '0', '7', '32', '0', '0', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('28823', '0', '11', '192', '0', '0', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('28809', '0', '6', '4096', '0', '2', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('28719', '0', '7', '32', '0', '2', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('12668', '0', '4', '2', '0', '0', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('12703', '0', '0', '0', '0', '0', '1.33008', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('12702', '0', '0', '0', '0', '0', '0.99756', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('12701', '0', '0', '0', '0', '0', '0.66504', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('12284', '0', '0', '0', '0', '0', '0.33252', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('12797', '0', '4', '1024', '0', '0', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('12799', '0', '4', '1024', '0', '0', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('12800', '0', '4', '1024', '0', '0', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('28595', '16', '3', '0', '0', '0', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('28594', '16', '3', '0', '0', '0', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('28593', '16', '3', '0', '0', '0', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('12958', '0', '4', '2048', '0', '0', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('13754', '0', '8', '16', '0', '0', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('13867', '0', '8', '16', '0', '0', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('14186', '0', '8', '1082131720', '0', '2', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('14190', '0', '8', '9672066312', '0', '2', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('14193', '0', '8', '9672066312', '0', '2', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('14194', '0', '8', '9672066312', '0', '2', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('14195', '0', '8', '9672066312', '0', '2', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('28592', '16', '3', '0', '0', '0', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('23721', '0', '9', '2048', '0', '0', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('15277', '0', '0', '0', '0', '0', '6', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('23572', '0', '11', '192', '0', '0', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('23551', '0', '11', '192', '0', '0', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('20235', '0', '10', '32768', '0', '0', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('20234', '0', '10', '32768', '0', '0', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('19415', '0', '9', '512', '0', '0', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('15346', '0', '0', '0', '0', '0', '6', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('19414', '0', '9', '512', '0', '0', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('19413', '0', '9', '512', '0', '0', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('15600', '0', '0', '0', '0', '0', '1', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('19412', '0', '9', '512', '0', '0', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('16850', '0', '7', '4', '0', '0', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('16864', '0', '0', '0', '0', '0', '2', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('16923', '0', '7', '4', '0', '0', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('16924', '0', '7', '4', '0', '0', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('16952', '0', '7', '4398046744576', '0', '2', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('16954', '0', '7', '4398046744576', '0', '2', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('19407', '0', '9', '512', '0', '0', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('18096', '0', '5', '549755813984', '0', '0', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('18073', '0', '5', '549755813984', '0', '0', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('17793', '0', '5', '1', '0', '2', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('17796', '0', '5', '1', '0', '2', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('17801', '0', '5', '1', '0', '2', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('18095', '0', '5', '10', '0', '0', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('18094', '0', '5', '10', '0', '0', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('17802', '0', '5', '1', '0', '2', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('18119', '0', '5', '18416819766245', '0', '0', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('18120', '0', '5', '18416819766245', '0', '0', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('18121', '0', '5', '18416819766245', '0', '0', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('18122', '0', '5', '18416819766245', '0', '0', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('18123', '0', '5', '18416819766245', '0', '0', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('19228', '0', '0', '64', '0', '0', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('19232', '0', '9', '64', '0', '0', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('19233', '0', '9', '64', '0', '0', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('17803', '0', '5', '1', '0', '2', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('16164', '0', '11', '2416967683', '0', '2', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('15363', '0', '6', '17448312320', '0', '2', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('15362', '0', '6', '17448312320', '0', '2', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('15326', '0', '6', '8691163136', '0', '0', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('20164', '0', '0', '0', '0', '0', '5', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('20165', '0', '0', '0', '0', '0', '20', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('20166', '0', '0', '0', '0', '0', '20', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('20215', '0', '10', '3223322624', '0', '2', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('20214', '0', '10', '3223322624', '0', '2', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('20213', '0', '10', '3223322624', '0', '2', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('20212', '0', '10', '3223322624', '0', '2', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('20210', '0', '10', '3223322624', '0', '2', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('15325', '0', '6', '8691163136', '0', '0', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('15324', '0', '6', '8691163136', '0', '0', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('20347', '0', '0', '0', '0', '0', '20', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('20348', '0', '0', '0', '0', '0', '20', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('20349', '0', '0', '0', '0', '0', '20', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('20356', '0', '0', '0', '0', '0', '20', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('20357', '0', '0', '0', '0', '0', '20', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('20375', '0', '0', '0', '0', '0', '7', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('20500', '0', '4', '268435456', '0', '0', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('20501', '0', '4', '268435456', '0', '0', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('20915', '0', '0', '0', '0', '0', '7', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('20918', '0', '0', '0', '0', '0', '7', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('20919', '0', '0', '0', '0', '0', '7', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('20920', '0', '0', '0', '0', '0', '7', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('21890', '0', '4', '3763103747823', '0', '0', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('15323', '0', '6', '8691163136', '0', '0', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('15286', '32', '6', '0', '0', '0', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('23578', '0', '0', '0', '0', '0', '2', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('23581', '0', '0', '0', '0', '0', '2', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('23686', '0', '0', '0', '0', '0', '2', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('23689', '0', '0', '0', '0', '0', '4', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('23695', '0', '4', '2', '0', '0', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('15268', '0', '6', '8691163136', '0', '0', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('25669', '0', '0', '0', '0', '0', '1', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('26016', '0', '0', '0', '0', '0', '2', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('26021', '0', '0', '0', '0', '0', '2', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('26119', '0', '10', '2416967683', '0', '65536', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('26480', '0', '0', '0', '0', '0', '3', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('27160', '0', '0', '0', '0', '0', '20', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('27166', '0', '0', '0', '0', '0', '20', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('27170', '0', '0', '0', '0', '0', '7', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('27419', '0', '0', '0', '0', '0', '3', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('27498', '0', '0', '0', '0', '0', '3', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('27656', '0', '0', '0', '0', '0', '3', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('27787', '0', '0', '0', '0', '0', '3', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('14892', '0', '6', '17448312320', '0', '2', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('12848', '4', '3', '0', '0', '2', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('12847', '4', '3', '0', '0', '2', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('12846', '4', '3', '0', '0', '2', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('11255', '0', '3', '16384', '0', '0', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('28789', '0', '10', '3221225472', '0', '0', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('12360', '4', '3', '0', '0', '0', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('28816', '0', '0', '0', '0', '0', '3', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('12359', '4', '3', '0', '0', '0', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('12358', '4', '3', '0', '0', '0', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('12357', '4', '3', '0', '0', '0', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('12598', '0', '3', '16384', '0', '0', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('11180', '16', '3', '0', '0', '0', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('11129', '0', '3', '274890489879', '0', '0', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('29150', '0', '0', '0', '0', '0', '3', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('29501', '0', '0', '0', '0', '0', '3', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('29624', '0', '0', '0', '0', '0', '3', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('29625', '0', '0', '0', '0', '0', '3', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('29626', '0', '0', '0', '0', '0', '3', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('29632', '0', '0', '0', '0', '0', '3', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('29633', '0', '0', '0', '0', '0', '3', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('29634', '0', '0', '0', '0', '0', '3', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('29635', '0', '0', '0', '0', '0', '3', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('29636', '0', '0', '0', '0', '0', '3', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('29637', '0', '0', '0', '0', '0', '3', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('30299', '36', '0', '0', '0', '0', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('30675', '0', '11', '3', '0', '0', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('30678', '0', '11', '3', '0', '0', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('30679', '0', '11', '3', '0', '0', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('30680', '0', '11', '3', '0', '0', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('30681', '0', '11', '3', '0', '0', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('31801', '0', '0', '0', '0', '0', '20', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('31833', '0', '10', '2147483648', '0', '0', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('31835', '0', '10', '2147483648', '0', '0', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('31836', '0', '10', '2147483648', '0', '0', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('30302', '36', '0', '0', '0', '0', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('30301', '36', '0', '0', '0', '0', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('32385', '0', '5', '73014445058', '0', '0', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('32387', '0', '5', '73014445058', '0', '0', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('32392', '0', '5', '73014445058', '0', '0', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('32393', '0', '5', '73014445058', '0', '0', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('32394', '0', '5', '73014445058', '0', '0', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('11120', '4', '3', '0', '0', '2', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('11119', '4', '3', '0', '0', '2', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('11103', '4', '3', '0', '0', '0', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('37195', '0', '10', '8388608', '0', '0', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('37377', '32', '0', '0', '0', '65536', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('39437', '4', '5', '824633725796', '0', '65536', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('33191', '0', '6', '4398054932480', '0', '0', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('33192', '0', '6', '4398054932480', '0', '0', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('33193', '0', '6', '4398054932480', '0', '0', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('33194', '0', '6', '4398054932480', '0', '0', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('33195', '0', '6', '4398054932480', '0', '0', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('40475', '0', '0', '0', '0', '0', '3', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('41434', '0', '0', '0', '0', '0', '2', '0', '45');
|
||||
INSERT INTO `spell_proc_event` VALUES ('37523', '0', '0', '0', '0', '64', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('30293', '0', '5', '824633721729', '0', '0', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('30295', '0', '5', '824633721729', '0', '0', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('30296', '0', '5', '824633721729', '0', '0', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('40407', '0', '0', '0', '0', '0', '6', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('31895', '0', '0', '0', '0', '0', '5', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('37247', '8', '0', '0', '0', '65536', '0', '0', '45');
|
||||
INSERT INTO `spell_proc_event` VALUES ('33510', '0', '0', '0', '0', '0', '5', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('16624', '0', '0', '0', '0', '64', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('28752', '0', '0', '0', '0', '2', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('16176', '0', '11', '448', '0', '2', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('16235', '0', '11', '448', '0', '2', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('16240', '0', '11', '448', '0', '2', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('23920', '0', '0', '0', '0', '2048', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('27811', '0', '0', '0', '0', '2', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('27815', '0', '0', '0', '0', '2', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('27816', '0', '0', '0', '0', '2', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('33142', '0', '0', '0', '0', '2', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('33145', '0', '0', '0', '0', '2', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('33146', '0', '0', '0', '0', '2', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('16487', '0', '0', '0', '0', '2', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('16489', '0', '0', '0', '0', '2', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('16492', '0', '0', '0', '0', '2', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('26605', '0', '0', '0', '0', '2', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('16550', '0', '0', '0', '0', '2', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('22648', '0', '0', '0', '0', '2', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('34320', '0', '0', '0', '0', '2', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('29977', '0', '3', '274890489879', '0', '0', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('37443', '0', '0', '0', '0', '2', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('38350', '0', '0', '0', '0', '2', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('38347', '0', '0', '0', '0', '2', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('12834', '0', '0', '0', '0', '2', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('12849', '0', '0', '0', '0', '2', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('12867', '0', '0', '0', '0', '2', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('30160', '0', '0', '0', '0', '2', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('29179', '0', '0', '0', '0', '2', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('29180', '0', '0', '0', '0', '2', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('12317', '0', '0', '0', '0', '2', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('13045', '0', '0', '0', '0', '2', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('13046', '0', '0', '0', '0', '2', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('13047', '0', '0', '0', '0', '2', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('13048', '0', '0', '0', '0', '2', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('34500', '0', '0', '0', '0', '2', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('34502', '0', '0', '0', '0', '2', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('34503', '0', '0', '0', '0', '2', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('9799', '0', '0', '0', '0', '2', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('25988', '0', '0', '0', '0', '2', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('29062', '0', '0', '0', '0', '2', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('29064', '0', '0', '0', '0', '2', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('29065', '0', '0', '0', '0', '2', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('15088', '0', '0', '0', '0', '2', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('12319', '0', '0', '0', '0', '2', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('16256', '0', '0', '0', '0', '2', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('12971', '0', '0', '0', '0', '2', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('16281', '0', '0', '0', '0', '2', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('12972', '0', '0', '0', '0', '2', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('16282', '0', '0', '0', '0', '2', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('12973', '0', '0', '0', '0', '2', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('16283', '0', '0', '0', '0', '2', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('12974', '0', '0', '0', '0', '2', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('16284', '0', '0', '0', '0', '2', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('42083', '0', '0', '0', '0', '2', '0', '0', '45');
|
||||
INSERT INTO `spell_proc_event` VALUES ('34950', '0', '0', '0', '0', '2', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('34954', '0', '0', '0', '0', '2', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('28812', '0', '8', '33554438', '0', '2', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('37227', '0', '11', '448', '0', '2', '0', '0', '60');
|
||||
INSERT INTO `spell_proc_event` VALUES ('32885', '0', '0', '0', '0', '2', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('21882', '0', '0', '0', '0', '2', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('34258', '0', '10', '34359739392', '0', '0', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('37237', '0', '11', '1', '0', '2', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('37657', '0', '0', '0', '0', '2', '0', '0', '3');
|
||||
INSERT INTO `spell_proc_event` VALUES ('40482', '0', '0', '0', '0', '2', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('37213', '0', '0', '0', '0', '2', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('14531', '0', '0', '0', '0', '2', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('14774', '0', '0', '0', '0', '2', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('16880', '0', '0', '0', '0', '2', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('35121', '0', '0', '0', '0', '2', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('20705', '0', '0', '0', '0', '2', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('16958', '0', '0', '0', '0', '2', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('16961', '0', '0', '0', '0', '2', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('33648', '0', '0', '0', '0', '2', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('37189', '0', '10', '3221225472', '0', '2', '0', '0', '60');
|
||||
INSERT INTO `spell_proc_event` VALUES ('43338', '0', '0', '0', '0', '2', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('33150', '0', '0', '0', '0', '2', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('33154', '0', '0', '0', '0', '2', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('34497', '0', '0', '0', '0', '2', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('34498', '0', '0', '0', '0', '2', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('34499', '0', '0', '0', '0', '2', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('30802', '0', '0', '0', '0', '2', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('30808', '0', '0', '0', '0', '2', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('30809', '0', '0', '0', '0', '2', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('30810', '0', '0', '0', '0', '2', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('30811', '0', '0', '0', '0', '2', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('20049', '0', '0', '0', '0', '2', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('20056', '0', '0', '0', '0', '2', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('20057', '0', '0', '0', '0', '2', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('20058', '0', '0', '0', '0', '2', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('20059', '0', '0', '0', '0', '2', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('37519', '0', '0', '0', '0', '48', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('26107', '0', '7', '549764202496', '0', '116', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('23548', '0', '0', '0', '0', '64', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('37514', '0', '0', '0', '0', '32', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('40444', '0', '0', '0', '0', '64', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('20911', '0', '0', '0', '0', '64', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('20912', '0', '0', '0', '0', '64', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('20913', '0', '0', '0', '0', '64', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('20914', '0', '0', '0', '0', '64', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('27168', '0', '0', '0', '0', '64', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('17495', '0', '0', '0', '0', '64', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('22618', '0', '0', '0', '0', '64', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('25899', '0', '0', '0', '0', '64', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('27169', '0', '0', '0', '0', '64', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('31904', '0', '0', '0', '0', '64', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('32777', '0', '0', '0', '0', '64', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('20925', '0', '0', '0', '0', '64', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('20927', '0', '0', '0', '0', '64', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('20928', '0', '0', '0', '0', '64', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('27179', '0', '0', '0', '0', '64', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('12298', '0', '0', '0', '0', '64', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('12724', '0', '0', '0', '0', '64', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('12725', '0', '0', '0', '0', '64', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('12726', '0', '0', '0', '0', '64', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('12727', '0', '0', '0', '0', '64', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('32642', '0', '0', '0', '0', '64', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('33089', '0', '0', '0', '0', '64', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('26128', '0', '0', '0', '0', '8', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('29441', '0', '0', '0', '0', '8', '0', '0', '1');
|
||||
INSERT INTO `spell_proc_event` VALUES ('29444', '0', '0', '0', '0', '8', '0', '0', '1');
|
||||
INSERT INTO `spell_proc_event` VALUES ('29445', '0', '0', '0', '0', '8', '0', '0', '1');
|
||||
INSERT INTO `spell_proc_event` VALUES ('29446', '0', '0', '0', '0', '8', '0', '0', '1');
|
||||
INSERT INTO `spell_proc_event` VALUES ('29447', '0', '0', '0', '0', '8', '0', '0', '1');
|
||||
INSERT INTO `spell_proc_event` VALUES ('34749', '0', '0', '0', '0', '8', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('13983', '0', '0', '0', '0', '24', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('14070', '0', '0', '0', '0', '24', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('14071', '0', '0', '0', '0', '24', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('41034', '0', '0', '0', '0', '1024', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('32734', '0', '0', '0', '0', '0', '0', '0', '3');
|
||||
INSERT INTO `spell_proc_event` VALUES ('974', '0', '0', '0', '0', '0', '0', '0', '3');
|
||||
INSERT INTO `spell_proc_event` VALUES ('32593', '0', '0', '0', '0', '0', '0', '0', '3');
|
||||
INSERT INTO `spell_proc_event` VALUES ('32594', '0', '0', '0', '0', '0', '0', '0', '3');
|
||||
INSERT INTO `spell_proc_event` VALUES ('40899', '0', '0', '0', '0', '0', '0', '0', '3');
|
||||
INSERT INTO `spell_proc_event` VALUES ('324', '0', '0', '0', '0', '0', '0', '0', '3');
|
||||
INSERT INTO `spell_proc_event` VALUES ('325', '0', '0', '0', '0', '0', '0', '0', '3');
|
||||
INSERT INTO `spell_proc_event` VALUES ('905', '0', '0', '0', '0', '0', '0', '0', '3');
|
||||
INSERT INTO `spell_proc_event` VALUES ('945', '0', '0', '0', '0', '0', '0', '0', '3');
|
||||
INSERT INTO `spell_proc_event` VALUES ('8134', '0', '0', '0', '0', '0', '0', '0', '3');
|
||||
INSERT INTO `spell_proc_event` VALUES ('10431', '0', '0', '0', '0', '0', '0', '0', '3');
|
||||
INSERT INTO `spell_proc_event` VALUES ('10432', '0', '0', '0', '0', '0', '0', '0', '3');
|
||||
INSERT INTO `spell_proc_event` VALUES ('25469', '0', '0', '0', '0', '0', '0', '0', '3');
|
||||
INSERT INTO `spell_proc_event` VALUES ('25472', '0', '0', '0', '0', '0', '0', '0', '3');
|
||||
INSERT INTO `spell_proc_event` VALUES ('34355', '0', '0', '0', '0', '0', '0', '0', '3');
|
||||
INSERT INTO `spell_proc_event` VALUES ('39027', '0', '0', '0', '0', '0', '0', '0', '3');
|
||||
INSERT INTO `spell_proc_event` VALUES ('34827', '0', '0', '0', '0', '0', '0', '0', '3');
|
||||
INSERT INTO `spell_proc_event` VALUES ('24398', '0', '0', '0', '0', '0', '0', '0', '3');
|
||||
INSERT INTO `spell_proc_event` VALUES ('33736', '0', '0', '0', '0', '0', '0', '0', '3');
|
||||
INSERT INTO `spell_proc_event` VALUES ('41260', '0', '0', '0', '0', '0', '0', '0', '10');
|
||||
INSERT INTO `spell_proc_event` VALUES ('41262', '0', '0', '0', '0', '0', '0', '0', '10');
|
||||
INSERT INTO `spell_proc_event` VALUES ('34935', '0', '0', '0', '0', '0', '0', '0', '8');
|
||||
INSERT INTO `spell_proc_event` VALUES ('34938', '0', '0', '0', '0', '0', '0', '0', '8');
|
||||
INSERT INTO `spell_proc_event` VALUES ('34939', '0', '0', '0', '0', '0', '0', '0', '8');
|
||||
INSERT INTO `spell_proc_event` VALUES ('33746', '0', '0', '0', '0', '0', '0', '0', '10');
|
||||
INSERT INTO `spell_proc_event` VALUES ('33759', '0', '0', '0', '0', '0', '0', '0', '10');
|
||||
INSERT INTO `spell_proc_event` VALUES ('16620', '0', '0', '0', '0', '0', '0', '0', '30');
|
||||
INSERT INTO `spell_proc_event` VALUES ('21185', '0', '0', '0', '0', '0', '0', '0', '10');
|
||||
INSERT INTO `spell_proc_event` VALUES ('29801', '0', '0', '0', '0', '2', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('30030', '0', '0', '0', '0', '2', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('30033', '0', '0', '0', '0', '2', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('30701', '28', '0', '0', '0', '0', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('30705', '28', '0', '0', '0', '0', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('43748', '0', '11', '2416967680', '0', '0', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('43750', '0', '11', '1', '0', '0', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('42370', '0', '11', '64', '0', '0', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('30881', '0', '0', '0', '0', '0', '0', '0', '5');
|
||||
INSERT INTO `spell_proc_event` VALUES ('30883', '0', '0', '0', '0', '0', '0', '0', '5');
|
||||
INSERT INTO `spell_proc_event` VALUES ('30884', '0', '0', '0', '0', '0', '0', '0', '5');
|
||||
INSERT INTO `spell_proc_event` VALUES ('30885', '0', '0', '0', '0', '0', '0', '0', '5');
|
||||
INSERT INTO `spell_proc_event` VALUES ('30886', '0', '0', '0', '0', '0', '0', '0', '5');
|
||||
INSERT INTO `spell_proc_event` VALUES ('34138', '0', '11', '128', '0', '0', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('43728', '0', '11', '128', '0', '0', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('26135', '0', '10', '8388608', '0', '65536', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('43745', '0', '10', '2199023255552', '0', '0', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('34139', '0', '10', '1073741824', '0', '0', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('43741', '0', '10', '2147483648', '0', '0', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('42368', '0', '10', '1073741824', '0', '0', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('34262', '0', '10', '8388608', '0', '65536', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('41469', '0', '0', '0', '0', '0', '7', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('33127', '0', '0', '0', '0', '0', '7', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('29385', '0', '0', '0', '0', '0', '7', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('43726', '0', '10', '1073741824', '0', '0', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('35100', '0', '9', '1', '0', '0', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('35102', '0', '9', '1', '0', '0', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('35103', '0', '9', '1', '0', '0', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('40485', '0', '9', '4294967296', '0', '0', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('31124', '0', '8', '536870926', '0', '0', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('31126', '0', '8', '536870926', '0', '0', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('31233', '0', '8', '38658768896', '0', '0', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('31239', '0', '8', '38658768896', '0', '0', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('31240', '0', '8', '38658768896', '0', '0', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('31241', '0', '8', '38658768896', '0', '0', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('31242', '0', '8', '38658768896', '0', '0', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('37168', '0', '8', '38658768896', '0', '0', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('37170', '0', '0', '0', '0', '0', '1', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('37165', '0', '8', '2098176', '0', '0', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('31244', '0', '8', '38658768896', '0', '4', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('31245', '0', '8', '38658768896', '0', '4', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('41393', '0', '0', '0', '0', '32', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('14156', '0', '8', '4063232', '0', '0', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('14160', '0', '8', '4063232', '0', '0', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('14161', '0', '8', '4063232', '0', '0', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('38326', '0', '0', '0', '0', '2', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('17106', '0', '7', '524288', '0', '0', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('17107', '0', '7', '524288', '0', '0', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('17108', '0', '7', '524288', '0', '0', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('43739', '0', '7', '2', '0', '0', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('43737', '0', '7', '4672924418048', '0', '0', '0', '0', '10');
|
||||
INSERT INTO `spell_proc_event` VALUES ('39372', '48', '0', '0', '0', '0', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('37568', '0', '6', '2048', '0', '0', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('37594', '0', '6', '4096', '0', '0', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('34753', '0', '6', '17179875328', '0', '0', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('34859', '0', '6', '17179875328', '0', '0', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('34860', '0', '6', '17179875328', '0', '0', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('37603', '0', '6', '32768', '0', '0', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('38394', '0', '5', '6', '0', '0', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('37384', '0', '5', '1', '0', '0', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('40478', '0', '5', '2', '0', '0', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('37528', '0', '4', '4', '0', '0', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('37516', '0', '4', '1024', '0', '0', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('40458', '0', '4', '6601398288384', '0', '0', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('22007', '0', '3', '2097185', '0', '65536', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('3232', '0', '0', '0', '0', '2', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('17364', '8', '0', '0', '0', '0', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('30937', '32', '0', '0', '0', '0', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('15128', '4', '0', '0', '0', '0', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('37193', '0', '0', '0', '0', '64', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('32776', '0', '0', '0', '0', '64', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('20132', '0', '0', '0', '0', '64', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('20131', '0', '0', '0', '0', '64', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('20128', '0', '0', '0', '0', '64', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('17794', '32', '0', '0', '0', '1', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('31394', '32', '0', '0', '0', '0', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('25050', '4', '0', '0', '0', '0', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('24353', '0', '0', '0', '0', '2', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('20134', '0', '0', '0', '0', '64', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('17797', '32', '0', '0', '0', '0', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('17798', '32', '0', '0', '0', '0', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('24389', '0', '3', '274890489879', '0', '0', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('20133', '0', '0', '0', '0', '64', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('36111', '0', '0', '0', '0', '0', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('29455', '0', '0', '0', '0', '64', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('34774', '0', '0', '0', '0', '0', '1.5', '0', '20');
|
||||
INSERT INTO `spell_proc_event` VALUES ('9784', '0', '0', '0', '0', '64', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('31785', '0', '0', '0', '34816', '0', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('9782', '0', '0', '0', '0', '64', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('24932', '0', '0', '0', '0', '2', '0', '0', '6');
|
||||
INSERT INTO `spell_proc_event` VALUES ('33776', '0', '0', '0', '34816', '0', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('34586', '0', '0', '0', '0', '0', '1.5', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('2565', '0', '0', '0', '0', '64', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('12169', '0', '0', '0', '0', '64', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('32587', '0', '0', '0', '0', '64', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('38031', '0', '0', '0', '0', '64', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('34080', '0', '0', '0', '0', '8', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('42136', '0', '0', '0', '0', '0', '0', '0', '90');
|
||||
INSERT INTO `spell_proc_event` VALUES ('42135', '0', '0', '0', '0', '0', '0', '0', '90');
|
||||
INSERT INTO `spell_proc_event` VALUES ('23547', '0', '0', '0', '0', '32', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('32837', '0', '0', '0', '0', '65536', '0', '0', '45');
|
||||
INSERT INTO `spell_proc_event` VALUES ('17799', '32', '0', '0', '0', '0', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('17800', '32', '0', '0', '0', '0', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('37197', '0', '0', '0', '0', '65536', '0', '0', '45');
|
||||
INSERT INTO `spell_proc_event` VALUES ('23688', '0', '0', '0', '0', '65536', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('34783', '0', '0', '0', '0', '2048', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('27521', '0', '0', '0', '0', '65536', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('27774', '0', '0', '0', '0', '65536', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('28802', '0', '0', '0', '0', '65536', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('37600', '0', '0', '0', '0', '65536', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('19184', '0', '9', '35184372088852', '0', '0', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('19387', '0', '9', '35184372088852', '0', '0', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('19388', '0', '9', '35184372088852', '0', '0', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('37655', '0', '0', '0', '0', '0', '0', '0', '60');
|
||||
INSERT INTO `spell_proc_event` VALUES ('38334', '0', '0', '0', '0', '0', '0', '0', '60');
|
||||
INSERT INTO `spell_proc_event` VALUES ('12966', '0', '0', '0', '0', '65536', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('12967', '0', '0', '0', '0', '65536', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('12968', '0', '0', '0', '0', '65536', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('12969', '0', '0', '0', '0', '65536', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('12970', '0', '0', '0', '0', '65536', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('16257', '0', '0', '0', '0', '65536', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('16277', '0', '0', '0', '0', '65536', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('16278', '0', '0', '0', '0', '65536', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('16279', '0', '0', '0', '0', '65536', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('16280', '0', '0', '0', '0', '65536', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('36096', '0', '0', '0', '0', '2048', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('43443', '0', '0', '0', '0', '2048', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('30003', '0', '0', '0', '0', '2048', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('27181', '1', '0', '0', '0', '256', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('41381', '0', '0', '0', '0', '256', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('38026', '1', '0', '0', '0', '256', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('31569', '0', '3', '65536', '0', '0', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('31570', '0', '3', '65536', '0', '0', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('7383', '1', '0', '0', '0', '256', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('39530', '0', '0', '0', '0', '65536', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('33299', '0', '0', '0', '0', '65536', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('37214', '0', '0', '0', '0', '65536', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('31794', '0', '0', '0', '0', '65536', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('18820', '0', '0', '0', '0', '65536', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('37601', '0', '0', '0', '0', '65536', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('43819', '0', '0', '0', '0', '65536', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('6346', '0', '0', '0', '0', '256', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('23552', '0', '0', '0', '0', '0', '0', '0', '3');
|
||||
INSERT INTO `spell_proc_event` VALUES ('46025', '0', '0', '0', '0', '0', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('40442', '0', '7', '4672924418068', '0', '0', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('40470', '0', '10', '3229614080', '0', '0', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('40438', '0', '6', '32832', '0', '0', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('40463', '0', '11', '68719476865', '0', '0', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('12322', '0', '0', '0', '0', '0', '2', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('12999', '0', '0', '0', '0', '0', '4', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('13000', '0', '0', '0', '0', '0', '6', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('13001', '0', '0', '0', '0', '0', '8', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('13002', '0', '0', '0', '0', '0', '10', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('14318', '0', '9', '1', '0', '0', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('13165', '0', '9', '1', '0', '0', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('14319', '0', '9', '1', '0', '0', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('14320', '0', '9', '1', '0', '0', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('14321', '0', '9', '1', '0', '0', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('14322', '0', '9', '1', '0', '0', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('25296', '0', '9', '1', '0', '0', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('27044', '0', '9', '1', '0', '0', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('39443', '0', '0', '0', '0', '2', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('39442', '0', '0', '0', '0', '1', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('35080', '0', '0', '0', '0', '0', '1', '0', '60');
|
||||
INSERT INTO `spell_proc_event` VALUES ('35077', '0', '0', '0', '0', '0', '0', '0', '60');
|
||||
INSERT INTO `spell_proc_event` VALUES ('35086', '0', '0', '0', '0', '0', '0', '0', '60');
|
||||
INSERT INTO `spell_proc_event` VALUES ('35083', '0', '0', '0', '0', '0', '0', '0', '60');
|
||||
INSERT INTO `spell_proc_event` VALUES ('18137', '0', '0', '0', '0', '0', '0', '0', '3');
|
||||
INSERT INTO `spell_proc_event` VALUES ('19308', '0', '0', '0', '0', '0', '0', '0', '3');
|
||||
INSERT INTO `spell_proc_event` VALUES ('19309', '0', '0', '0', '0', '0', '0', '0', '3');
|
||||
INSERT INTO `spell_proc_event` VALUES ('19310', '0', '0', '0', '0', '0', '0', '0', '3');
|
||||
INSERT INTO `spell_proc_event` VALUES ('19311', '0', '0', '0', '0', '0', '0', '0', '3');
|
||||
INSERT INTO `spell_proc_event` VALUES ('19312', '0', '0', '0', '0', '0', '0', '0', '3');
|
||||
INSERT INTO `spell_proc_event` VALUES ('25477', '0', '0', '0', '0', '0', '0', '0', '3');
|
||||
INSERT INTO `spell_proc_event` VALUES ('38327', '0', '0', '0', '0', '2', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('33881', '0', '0', '0', '0', '2', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('33882', '0', '0', '0', '0', '2', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('33883', '0', '0', '0', '0', '2', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('33719', '0', '0', '0', '0', '2048', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('29834', '0', '0', '0', '0', '65536', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('29838', '0', '0', '0', '0', '65536', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('39958', '0', '0', '0', '0', '0', '0.7', '0', '40');
|
||||
INSERT INTO `spell_proc_event` VALUES ('1463', '0', '0', '0', '0', '1024', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('8494', '0', '0', '0', '0', '1024', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('8495', '0', '0', '0', '0', '1024', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('10191', '0', '0', '0', '0', '1024', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('10192', '0', '0', '0', '0', '1024', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('10193', '0', '0', '0', '0', '1024', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('27131', '0', '0', '0', '0', '1024', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('32844', '0', '0', '0', '0', '0', '2', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('33076', '0', '0', '0', '656040', '0', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('46662', '0', '0', '0', '0', '0', '0', '0', '20');
|
||||
INSERT INTO `spell_proc_event` VALUES ('38857', '0', '0', '0', '0', '65536', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('8178', '0', '0', '0', '0', '65536', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('41635', '0', '0', '0', '656040', '0', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('30823', '0', '0', '0', '0', '0', '10.5', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('24905', '0', '0', '0', '0', '0', '15', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('46098', '0', '11', '128', '0', '0', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('46092', '0', '10', '1073741824', '0', '0', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('38290', '0', '0', '0', '0', '0', '1.6', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('45234', '0', '0', '0', '0', '2', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('45243', '0', '0', '0', '0', '2', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('45244', '0', '0', '0', '0', '2', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('23602', '0', '0', '0', '0', '64', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('45483', '0', '0', '0', '0', '0', '0', '0', '45');
|
||||
INSERT INTO `spell_proc_event` VALUES ('45482', '0', '0', '0', '0', '0', '0', '0', '45');
|
||||
INSERT INTO `spell_proc_event` VALUES ('45484', '0', '0', '0', '16384', '0', '0', '0', '45');
|
||||
INSERT INTO `spell_proc_event` VALUES ('46569', '0', '0', '0', '0', '0', '0', '0', '45');
|
||||
INSERT INTO `spell_proc_event` VALUES ('45481', '0', '0', '0', '0', '0', '0', '0', '45');
|
||||
INSERT INTO `spell_proc_event` VALUES ('32748', '0', '8', '4294967296', '320', '0', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('24658', '0', '0', '0', '82192', '0', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('44835', '0', '7', '549755813888', '16', '0', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('46832', '0', '7', '1', '0', '65536', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('45057', '0', '0', '0', '0', '0', '0', '0', '30');
|
||||
INSERT INTO `spell_proc_event` VALUES ('37173', '0', '8', '1126031951256', '0', '0', '0', '0', '30');
|
||||
INSERT INTO `spell_proc_event` VALUES ('45054', '0', '0', '0', '0', '0', '0', '0', '15');
|
||||
INSERT INTO `spell_proc_event` VALUES ('45354', '0', '0', '0', '0', '0', '0', '0', '45');
|
||||
INSERT INTO `spell_proc_event` VALUES ('41989', '0', '0', '0', '0', '0', '0.5', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('11185', '0', '3', '128', '327680', '0', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('12487', '0', '3', '128', '327680', '0', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('19572', '0', '9', '8388608', '16384', '0', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('28716', '0', '7', '16', '294912', '0', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('28744', '0', '7', '64', '278528', '0', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('12488', '0', '3', '128', '327680', '0', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('19573', '0', '9', '8388608', '16384', '0', '0', '0', '0');
|
||||
INSERT INTO `spell_proc_event` VALUES ('33757', '0', '0', '0', '0', '0', '0', '0', '3');
|
||||
+2
-1
@@ -4849,6 +4849,7 @@ void Player::UpdateWeaponSkill (WeaponAttackType attType)
|
||||
|
||||
void Player::UpdateCombatSkills(Unit *pVictim, WeaponAttackType attType, MeleeHitOutcome outcome, bool defence)
|
||||
{
|
||||
/* Not need, this checked on call this func from trigger system
|
||||
switch(outcome)
|
||||
{
|
||||
case MELEE_HIT_CRIT:
|
||||
@@ -4861,7 +4862,7 @@ void Player::UpdateCombatSkills(Unit *pVictim, WeaponAttackType attType, MeleeHi
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
*/
|
||||
uint32 plevel = getLevel(); // if defense than pVictim == attacker
|
||||
uint32 greylevel = Trinity::XP::GetGrayLevel(plevel);
|
||||
uint32 moblevel = pVictim->getLevelForTarget(this);
|
||||
|
||||
+339
-18
@@ -326,6 +326,8 @@ Spell::Spell( Unit* Caster, SpellEntry const *info, bool triggered, uint64 origi
|
||||
m_spellSchoolMask = SpellSchoolMask(1 << pItem->GetProto()->Damage->DamageType);
|
||||
}
|
||||
}
|
||||
// Set health leech amount to zero
|
||||
m_healthLeech = 0;
|
||||
|
||||
if(originalCasterGUID)
|
||||
m_originalCasterGUID = originalCasterGUID;
|
||||
@@ -676,6 +678,77 @@ void Spell::FillTargetMap()
|
||||
}
|
||||
}
|
||||
|
||||
void Spell::prepareDataForTriggerSystem()
|
||||
{
|
||||
//==========================================================================================
|
||||
// Now fill data for trigger system, need know:
|
||||
// Ñan spell trigger another or not ( m_canTrigger )
|
||||
// Create base triggers flags for Attacker and Victim ( m_procAttacker and m_procVictim)
|
||||
//==========================================================================================
|
||||
|
||||
// Fill flag can spell trigger or not
|
||||
if (!m_IsTriggeredSpell)
|
||||
m_canTrigger = true; // Normal cast - can trigger
|
||||
else if (!m_triggeredByAuraSpell)
|
||||
m_canTrigger = true; // Triggered from SPELL_EFFECT_TRIGGER_SPELL - can trigger
|
||||
else // Exceptions (some periodic triggers)
|
||||
{
|
||||
m_canTrigger = false; // Triggered spells can`t trigger another
|
||||
switch (m_spellInfo->SpellFamilyName)
|
||||
{
|
||||
case SPELLFAMILY_MAGE: // Arcane Missles triggers need do it
|
||||
if (m_spellInfo->SpellFamilyFlags & 0x0000000000200000LL) m_canTrigger = true;
|
||||
break;
|
||||
case SPELLFAMILY_WARLOCK: // For Hellfire Effect / Rain of Fire / Seed of Corruption triggers need do it
|
||||
if (m_spellInfo->SpellFamilyFlags & 0x0000800000000060LL) m_canTrigger = true;
|
||||
break;
|
||||
case SPELLFAMILY_HUNTER: // Hunter Explosive Trap Effect/Immolation Trap Effect/Frost Trap Aura/Snake Trap Effect
|
||||
if (m_spellInfo->SpellFamilyFlags & 0x0000200000000014LL) m_canTrigger = true;
|
||||
break;
|
||||
case SPELLFAMILY_PALADIN: // For Holy Shock triggers need do it
|
||||
if (m_spellInfo->SpellFamilyFlags & 0x0001000000200000LL) m_canTrigger = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
// Do not trigger from item cast spell
|
||||
if (m_CastItem)
|
||||
m_canTrigger = false;
|
||||
|
||||
// Get data for type of attack and fill base info for trigger
|
||||
switch (m_spellInfo->DmgClass)
|
||||
{
|
||||
case SPELL_DAMAGE_CLASS_MELEE:
|
||||
m_procAttacker = PROC_FLAG_SUCCESSFUL_MELEE_SPELL_HIT;
|
||||
m_procVictim = PROC_FLAG_TAKEN_MELEE_SPELL_HIT;
|
||||
break;
|
||||
case SPELL_DAMAGE_CLASS_RANGED:
|
||||
m_procAttacker = PROC_FLAG_SUCCESSFUL_RANGED_SPELL_HIT;
|
||||
m_procVictim = PROC_FLAG_TAKEN_RANGED_SPELL_HIT;
|
||||
break;
|
||||
default:
|
||||
if (IsPositiveSpell(m_spellInfo->Id)) // Check for positive spell
|
||||
{
|
||||
m_procAttacker = PROC_FLAG_SUCCESSFUL_POSITIVE_SPELL;
|
||||
m_procVictim = PROC_FLAG_TAKEN_POSITIVE_SPELL;
|
||||
}
|
||||
else if (m_spellInfo->Id == 5019) // Wands
|
||||
{
|
||||
m_procAttacker = PROC_FLAG_SUCCESSFUL_RANGED_SPELL_HIT;
|
||||
m_procVictim = PROC_FLAG_TAKEN_RANGED_SPELL_HIT;
|
||||
}
|
||||
else
|
||||
{
|
||||
m_procAttacker = PROC_FLAG_SUCCESSFUL_NEGATIVE_SPELL_HIT;
|
||||
m_procVictim = PROC_FLAG_TAKEN_NEGATIVE_SPELL_HIT;
|
||||
}
|
||||
break;
|
||||
}
|
||||
// Hunter traps spells (for Entrapment trigger)
|
||||
// Gives your Immolation Trap, Frost Trap, Explosive Trap, and Snake Trap ....
|
||||
if (m_spellInfo->SpellFamilyName == SPELLFAMILY_HUNTER && m_spellInfo->SpellFamilyFlags & 0x0000200000000014LL)
|
||||
m_procAttacker |= PROC_FLAG_ON_TRAP_ACTIVATION;
|
||||
}
|
||||
|
||||
void Spell::CleanupTargetList()
|
||||
{
|
||||
m_UniqueTargetInfo.clear();
|
||||
@@ -835,7 +908,7 @@ void Spell::AddItemTarget(Item* pitem, uint32 effIndex)
|
||||
target.effectMask = 1<<effIndex;
|
||||
m_UniqueItemInfo.push_back(target);
|
||||
}
|
||||
|
||||
/*
|
||||
void Spell::doTriggers(SpellMissInfo missInfo, uint32 damage, SpellSchoolMask damageSchoolMask, uint32 block, uint32 absorb, bool crit)
|
||||
{
|
||||
// Do triggers depends from hit result (triggers on hit do in effects)
|
||||
@@ -911,7 +984,7 @@ void Spell::doTriggers(SpellMissInfo missInfo, uint32 damage, SpellSchoolMask da
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}*/
|
||||
|
||||
void Spell::DoAllEffectOnTarget(TargetInfo *target)
|
||||
{
|
||||
@@ -928,12 +1001,28 @@ void Spell::DoAllEffectOnTarget(TargetInfo *target)
|
||||
if (!unit)
|
||||
return;
|
||||
|
||||
// Get original caster (if exist) and calculate damage/healing from him data
|
||||
Unit *caster = m_originalCasterGUID ? m_originalCaster : m_caster;
|
||||
|
||||
// Skip if m_originalCaster not avaiable
|
||||
if (!caster)
|
||||
return;
|
||||
|
||||
SpellMissInfo missInfo = target->missCondition;
|
||||
|
||||
// Need init unitTarget by default unit (can changed in code on reflect)
|
||||
// Or on missInfo!=SPELL_MISS_NONE unitTarget undefined (but need in trigger subsystem)
|
||||
unitTarget = unit;
|
||||
|
||||
// Reset damage/healing counter
|
||||
m_damage = 0;
|
||||
m_healing = 0;
|
||||
|
||||
// Fill base trigger info
|
||||
uint32 procAttacker = m_procAttacker;
|
||||
uint32 procVictim = m_procVictim;
|
||||
uint32 procEx = PROC_EX_NONE;
|
||||
|
||||
if (missInfo==SPELL_MISS_NONE) // In case spell hit target, do all effect on that target
|
||||
DoSpellHitOnUnit(unit, mask);
|
||||
else if (missInfo == SPELL_MISS_REFLECT) // In case spell reflect from target, do all effect on caster (if hit)
|
||||
@@ -952,9 +1041,103 @@ void Spell::DoAllEffectOnTarget(TargetInfo *target)
|
||||
DoSpellHitOnUnit(unit, tempMask);
|
||||
}
|
||||
|
||||
// Do triggers only on miss/resist/parry/dodge
|
||||
if (missInfo!=SPELL_MISS_NONE)
|
||||
doTriggers(missInfo);
|
||||
// All calculated do it!
|
||||
// Do healing and triggers
|
||||
if (m_healing)
|
||||
{
|
||||
bool crit = caster->isSpellCrit(NULL, m_spellInfo, m_spellSchoolMask);
|
||||
uint32 addhealth = m_healing;
|
||||
if (crit)
|
||||
{
|
||||
procEx |= PROC_EX_CRITICAL_HIT;
|
||||
addhealth = caster->SpellCriticalBonus(m_spellInfo, addhealth, NULL);
|
||||
}
|
||||
else
|
||||
procEx |= PROC_EX_NORMAL_HIT;
|
||||
|
||||
caster->SendHealSpellLog(unitTarget, m_spellInfo->Id, addhealth, crit);
|
||||
|
||||
// Do triggers for unit (reflect triggers passed on hit phase for correct drop charge)
|
||||
if (m_canTrigger && missInfo != SPELL_MISS_REFLECT)
|
||||
caster->ProcDamageAndSpell(unitTarget, procAttacker, procVictim, procEx, addhealth, m_attackType, m_spellInfo);
|
||||
|
||||
int32 gain = unitTarget->ModifyHealth( int32(addhealth) );
|
||||
|
||||
unitTarget->getHostilRefManager().threatAssist(caster, float(gain) * 0.5f, m_spellInfo);
|
||||
if(caster->GetTypeId()==TYPEID_PLAYER)
|
||||
if(BattleGround *bg = ((Player*)caster)->GetBattleGround())
|
||||
bg->UpdatePlayerScore(((Player*)caster), SCORE_HEALING_DONE, gain);
|
||||
}
|
||||
// Do damage and triggers
|
||||
else if (m_damage)
|
||||
{
|
||||
// Fill base damage struct (unitTarget - is real spell target)
|
||||
SpellNonMeleeDamage damageInfo(caster, unitTarget, m_spellInfo->Id, m_spellSchoolMask);
|
||||
|
||||
// Add bonuses and fill damageInfo struct
|
||||
caster->CalculateSpellDamage(&damageInfo, m_damage, m_spellInfo);
|
||||
|
||||
// Send log damage message to client
|
||||
caster->SendSpellNonMeleeDamageLog(&damageInfo);
|
||||
|
||||
procEx = createProcExtendMask(&damageInfo, missInfo);
|
||||
procVictim |= PROC_FLAG_TAKEN_ANY_DAMAGE;
|
||||
|
||||
// Do triggers for unit (reflect triggers passed on hit phase for correct drop charge)
|
||||
if (m_canTrigger && missInfo != SPELL_MISS_REFLECT)
|
||||
caster->ProcDamageAndSpell(unitTarget, procAttacker, procVictim, procEx, damageInfo.damage, m_attackType, m_spellInfo);
|
||||
|
||||
caster->DealSpellDamage(&damageInfo, true);
|
||||
|
||||
// Shadow Word: Death - deals damage equal to damage done to caster if victim is not killed
|
||||
if (m_spellInfo->SpellFamilyName == SPELLFAMILY_PRIEST && m_spellInfo->SpellFamilyFlags&0x0000000200000000LL &&
|
||||
caster != unitTarget && unitTarget->isAlive())
|
||||
{
|
||||
// Redirect damage to caster if victim Alive
|
||||
damageInfo.target = caster;
|
||||
damageInfo.absorb = 0;
|
||||
damageInfo.resist = 0;
|
||||
damageInfo.blocked = 0;
|
||||
// Send log damage message to client
|
||||
caster->SendSpellNonMeleeDamageLog(&damageInfo);
|
||||
caster->DealSpellDamage(&damageInfo, true);
|
||||
}
|
||||
// Judgement of Blood
|
||||
else if (m_spellInfo->SpellFamilyName == SPELLFAMILY_PALADIN && m_spellInfo->SpellFamilyFlags & 0x0000000800000000LL && m_spellInfo->SpellIconID==153)
|
||||
{
|
||||
int32 damagePoint = damageInfo.damage * 33 / 100;
|
||||
m_caster->CastCustomSpell(m_caster, 32220, &damagePoint, NULL, NULL, true);
|
||||
}
|
||||
// Bloodthirst
|
||||
else if (m_spellInfo->SpellFamilyName == SPELLFAMILY_WARRIOR && m_spellInfo->SpellFamilyFlags & 0x40000000000LL)
|
||||
{
|
||||
uint32 BTAura = 0;
|
||||
switch(m_spellInfo->Id)
|
||||
{
|
||||
case 23881: BTAura = 23885; break;
|
||||
case 23892: BTAura = 23886; break;
|
||||
case 23893: BTAura = 23887; break;
|
||||
case 23894: BTAura = 23888; break;
|
||||
case 25251: BTAura = 25252; break;
|
||||
case 30335: BTAura = 30339; break;
|
||||
default:
|
||||
sLog.outError("Spell::EffectSchoolDMG: Spell %u not handled in BTAura",m_spellInfo->Id);
|
||||
break;
|
||||
}
|
||||
if (BTAura)
|
||||
m_caster->CastSpell(m_caster,BTAura,true);
|
||||
}
|
||||
}
|
||||
// Passive spell hits/misses or active spells only misses (only triggers)
|
||||
else
|
||||
{
|
||||
// Fill base damage struct (unitTarget - is real spell target)
|
||||
SpellNonMeleeDamage damageInfo(caster, unitTarget, m_spellInfo->Id, m_spellSchoolMask);
|
||||
procEx = createProcExtendMask(&damageInfo, missInfo);
|
||||
// Do triggers for unit (reflect triggers passed on hit phase for correct drop charge)
|
||||
if (m_canTrigger && missInfo != SPELL_MISS_REFLECT)
|
||||
caster->ProcDamageAndSpell(unit, procAttacker, procVictim, procEx, 0, m_attackType, m_spellInfo);
|
||||
}
|
||||
|
||||
// Call scripted function for AI if this spell is casted upon a creature (except pets)
|
||||
if(IS_CREATURE_GUID(target->targetGUID))
|
||||
@@ -1076,14 +1259,15 @@ void Spell::DoSpellHitOnUnit(Unit *unit, const uint32 effectMask)
|
||||
}
|
||||
}
|
||||
|
||||
if(spellmgr.GetSpellCustomAttr(m_spellInfo->Id) && m_originalCaster)
|
||||
//This is not needed with procflag patch
|
||||
/*if(spellmgr.GetSpellCustomAttr(m_spellInfo->Id) && m_originalCaster)
|
||||
{
|
||||
uint32 flag = spellmgr.GetSpellCustomAttr(m_spellInfo->Id);
|
||||
if(flag & SPELL_ATTR_CU_EFFECT_HEAL)
|
||||
m_originalCaster->ProcDamageAndSpell(unit, PROC_FLAG_HEAL, PROC_FLAG_NONE, 0, GetSpellSchoolMask(m_spellInfo), m_spellInfo);
|
||||
if(m_originalCaster != unit && (flag & SPELL_ATTR_CU_EFFECT_DAMAGE))
|
||||
m_originalCaster->ProcDamageAndSpell(unit, PROC_FLAG_HIT_SPELL, PROC_FLAG_STRUCK_SPELL, 0, GetSpellSchoolMask(m_spellInfo), m_spellInfo);
|
||||
}
|
||||
}*/
|
||||
}
|
||||
|
||||
void Spell::DoAllEffectOnTarget(GOTargetInfo *target)
|
||||
@@ -2150,6 +2334,9 @@ void Spell::prepare(SpellCastTargets * targets, Aura* triggeredByAura)
|
||||
return;
|
||||
}
|
||||
|
||||
// Prepare data for triggers
|
||||
prepareDataForTriggerSystem();
|
||||
|
||||
// calculate cast time (calculated after first CanCast check to prevent charge counting for first CanCast fail)
|
||||
m_casttime = GetSpellCastTime(m_spellInfo, this);
|
||||
|
||||
@@ -2321,15 +2508,6 @@ void Spell::cast(bool skipCheck)
|
||||
SendCastResult(castResult);
|
||||
SendSpellGo(); // we must send smsg_spell_go packet before m_castItem delete in TakeCastItem()...
|
||||
|
||||
// Pass cast spell event to handler (not send triggered by aura spells)
|
||||
if (m_spellInfo->DmgClass != SPELL_DAMAGE_CLASS_MELEE && m_spellInfo->DmgClass != SPELL_DAMAGE_CLASS_RANGED && !m_triggeredByAuraSpell)
|
||||
{
|
||||
m_caster->ProcDamageAndSpell(m_targets.getUnitTarget(), PROC_FLAG_CAST_SPELL, PROC_FLAG_NONE, 0, SPELL_SCHOOL_MASK_NONE, m_spellInfo, m_IsTriggeredSpell);
|
||||
|
||||
// update pointers base at GUIDs to prevent access to non-existed already object
|
||||
UpdatePointers(); // pointers can be invalidate at triggered spell casting
|
||||
}
|
||||
|
||||
// Okay, everything is prepared. Now we need to distinguish between immediate and evented delayed spells
|
||||
if (m_spellInfo->speed > 0.0f && !IsChanneledSpell(m_spellInfo))
|
||||
{
|
||||
@@ -2745,6 +2923,13 @@ void Spell::finish(bool ok)
|
||||
}
|
||||
}
|
||||
|
||||
// Heal caster for all health leech from all targets
|
||||
if (m_healthLeech)
|
||||
{
|
||||
m_caster->ModifyHealth(m_healthLeech);
|
||||
m_caster->SendHealSpellLog(m_caster, m_spellInfo->Id, uint32(m_healthLeech));
|
||||
}
|
||||
|
||||
if (IsMeleeAttackResetSpell())
|
||||
{
|
||||
m_caster->resetAttackTimer(BASE_ATTACK);
|
||||
@@ -3574,8 +3759,144 @@ uint8 Spell::CanCast(bool strict)
|
||||
if(uint8 castResult = CheckItems())
|
||||
return castResult;
|
||||
|
||||
if(uint8 castResult = CheckRange(strict))
|
||||
return castResult;
|
||||
/*//ImpliciteTargetA-B = 38, If fact there is 0 Spell with ImpliciteTargetB=38
|
||||
if(m_UniqueTargetInfo.empty()) // skip second canCast apply (for delayed spells for example)
|
||||
{
|
||||
for(uint8 j = 0; j < 3; j++)
|
||||
{
|
||||
if( m_spellInfo->EffectImplicitTargetA[j] == TARGET_SCRIPT ||
|
||||
m_spellInfo->EffectImplicitTargetB[j] == TARGET_SCRIPT && m_spellInfo->EffectImplicitTargetA[j] != TARGET_SELF ||
|
||||
m_spellInfo->EffectImplicitTargetA[j] == TARGET_SCRIPT_COORDINATES ||
|
||||
m_spellInfo->EffectImplicitTargetB[j] == TARGET_SCRIPT_COORDINATES )
|
||||
{
|
||||
SpellScriptTarget::const_iterator lower = spellmgr.GetBeginSpellScriptTarget(m_spellInfo->Id);
|
||||
SpellScriptTarget::const_iterator upper = spellmgr.GetEndSpellScriptTarget(m_spellInfo->Id);
|
||||
if(lower==upper)
|
||||
sLog.outErrorDb("Spell (ID: %u) has effect EffectImplicitTargetA/EffectImplicitTargetB = TARGET_SCRIPT or TARGET_SCRIPT_COORDINATES, but does not have record in `spell_script_target`",m_spellInfo->Id);
|
||||
|
||||
SpellRangeEntry const* srange = sSpellRangeStore.LookupEntry(m_spellInfo->rangeIndex);
|
||||
float range = GetSpellMaxRange(srange);
|
||||
|
||||
Creature* creatureScriptTarget = NULL;
|
||||
GameObject* goScriptTarget = NULL;
|
||||
|
||||
for(SpellScriptTarget::const_iterator i_spellST = lower; i_spellST != upper; ++i_spellST)
|
||||
{
|
||||
switch(i_spellST->second.type)
|
||||
{
|
||||
case SPELL_TARGET_TYPE_GAMEOBJECT:
|
||||
{
|
||||
GameObject* p_GameObject = NULL;
|
||||
|
||||
if(i_spellST->second.targetEntry)
|
||||
{
|
||||
CellPair p(MaNGOS::ComputeCellPair(m_caster->GetPositionX(), m_caster->GetPositionY()));
|
||||
Cell cell(p);
|
||||
cell.data.Part.reserved = ALL_DISTRICT;
|
||||
|
||||
MaNGOS::NearestGameObjectEntryInObjectRangeCheck go_check(*m_caster,i_spellST->second.targetEntry,range);
|
||||
MaNGOS::GameObjectLastSearcher<MaNGOS::NearestGameObjectEntryInObjectRangeCheck> checker(p_GameObject,go_check);
|
||||
|
||||
TypeContainerVisitor<MaNGOS::GameObjectLastSearcher<MaNGOS::NearestGameObjectEntryInObjectRangeCheck>, GridTypeMapContainer > object_checker(checker);
|
||||
CellLock<GridReadGuard> cell_lock(cell, p);
|
||||
cell_lock->Visit(cell_lock, object_checker, *m_caster->GetMap());
|
||||
|
||||
if(p_GameObject)
|
||||
{
|
||||
// remember found target and range, next attempt will find more near target with another entry
|
||||
creatureScriptTarget = NULL;
|
||||
goScriptTarget = p_GameObject;
|
||||
range = go_check.GetLastRange();
|
||||
}
|
||||
}
|
||||
else if( focusObject ) //Focus Object
|
||||
{
|
||||
float frange = m_caster->GetDistance(focusObject);
|
||||
if(range >= frange)
|
||||
{
|
||||
creatureScriptTarget = NULL;
|
||||
goScriptTarget = focusObject;
|
||||
range = frange;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
case SPELL_TARGET_TYPE_CREATURE:
|
||||
case SPELL_TARGET_TYPE_DEAD:
|
||||
default:
|
||||
{
|
||||
Creature *p_Creature = NULL;
|
||||
|
||||
CellPair p(MaNGOS::ComputeCellPair(m_caster->GetPositionX(), m_caster->GetPositionY()));
|
||||
Cell cell(p);
|
||||
cell.data.Part.reserved = ALL_DISTRICT;
|
||||
cell.SetNoCreate(); // Really don't know what is that???
|
||||
|
||||
MaNGOS::NearestCreatureEntryWithLiveStateInObjectRangeCheck u_check(*m_caster,i_spellST->second.targetEntry,i_spellST->second.type!=SPELL_TARGET_TYPE_DEAD,range);
|
||||
MaNGOS::CreatureLastSearcher<MaNGOS::NearestCreatureEntryWithLiveStateInObjectRangeCheck> searcher(p_Creature, u_check);
|
||||
|
||||
TypeContainerVisitor<MaNGOS::CreatureLastSearcher<MaNGOS::NearestCreatureEntryWithLiveStateInObjectRangeCheck>, GridTypeMapContainer > grid_creature_searcher(searcher);
|
||||
|
||||
CellLock<GridReadGuard> cell_lock(cell, p);
|
||||
cell_lock->Visit(cell_lock, grid_creature_searcher, *m_caster->GetMap());
|
||||
|
||||
if(p_Creature )
|
||||
{
|
||||
creatureScriptTarget = p_Creature;
|
||||
goScriptTarget = NULL;
|
||||
range = u_check.GetLastRange();
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if(creatureScriptTarget)
|
||||
{
|
||||
// store coordinates for TARGET_SCRIPT_COORDINATES
|
||||
if (m_spellInfo->EffectImplicitTargetA[j] == TARGET_SCRIPT_COORDINATES ||
|
||||
m_spellInfo->EffectImplicitTargetB[j] == TARGET_SCRIPT_COORDINATES )
|
||||
{
|
||||
m_targets.setDestination(creatureScriptTarget->GetPositionX(),creatureScriptTarget->GetPositionY(),creatureScriptTarget->GetPositionZ());
|
||||
|
||||
if(m_spellInfo->EffectImplicitTargetA[j] == TARGET_SCRIPT_COORDINATES && m_spellInfo->EffectImplicitTargetB[j] == 0 && m_spellInfo->Effect[j]!=SPELL_EFFECT_PERSISTENT_AREA_AURA)
|
||||
AddUnitTarget(creatureScriptTarget, j);
|
||||
}
|
||||
// store explicit target for TARGET_SCRIPT
|
||||
else
|
||||
AddUnitTarget(creatureScriptTarget, j);
|
||||
}
|
||||
else if(goScriptTarget)
|
||||
{
|
||||
// store coordinates for TARGET_SCRIPT_COORDINATES
|
||||
if (m_spellInfo->EffectImplicitTargetA[j] == TARGET_SCRIPT_COORDINATES ||
|
||||
m_spellInfo->EffectImplicitTargetB[j] == TARGET_SCRIPT_COORDINATES )
|
||||
{
|
||||
m_targets.setDestination(goScriptTarget->GetPositionX(),goScriptTarget->GetPositionY(),goScriptTarget->GetPositionZ());
|
||||
|
||||
if(m_spellInfo->EffectImplicitTargetA[j] == TARGET_SCRIPT_COORDINATES && m_spellInfo->EffectImplicitTargetB[j] == 0 && m_spellInfo->Effect[j]!=SPELL_EFFECT_PERSISTENT_AREA_AURA)
|
||||
AddGOTarget(goScriptTarget, j);
|
||||
}
|
||||
// store explicit target for TARGET_SCRIPT
|
||||
else
|
||||
AddGOTarget(goScriptTarget, j);
|
||||
}
|
||||
//Missing DB Entry or targets for this spellEffect.
|
||||
else
|
||||
{
|
||||
// not report target not existence for triggered spells
|
||||
if(m_triggeredByAuraSpell || m_IsTriggeredSpell)
|
||||
return SPELL_FAILED_DONT_REPORT;
|
||||
else
|
||||
return SPELL_FAILED_BAD_TARGETS;
|
||||
}
|
||||
}
|
||||
}
|
||||
}*/
|
||||
|
||||
if(!m_triggeredByAuraSpell)
|
||||
if(uint8 castResult = CheckRange(strict))
|
||||
return castResult;
|
||||
|
||||
{
|
||||
if(uint8 castResult = CheckPower())
|
||||
|
||||
+9
-1
@@ -470,10 +470,18 @@ class Spell
|
||||
// -------------------------------------------
|
||||
GameObject* focusObject;
|
||||
|
||||
// Damage and healing in effects need just calculate
|
||||
int32 m_damage; // Damge in effects count here
|
||||
int32 m_healing; // Healing in effects count here
|
||||
int32 m_healthLeech; // Health leech in effects for all targets count here
|
||||
|
||||
//******************************************
|
||||
// Spell trigger system
|
||||
//******************************************
|
||||
void doTriggers(SpellMissInfo missInfo, uint32 damage=0, SpellSchoolMask damageSchoolMask = SPELL_SCHOOL_MASK_NONE, uint32 block=0, uint32 absorb=0, bool crit=false);
|
||||
bool m_canTrigger; // Can start trigger (m_IsTriggeredSpell can`t use for this)
|
||||
uint32 m_procAttacker; // Attacker trigger flags
|
||||
uint32 m_procVictim; // Victim trigger flags
|
||||
void prepareDataForTriggerSystem();
|
||||
|
||||
//*****************************************
|
||||
// Spell target subsystem
|
||||
|
||||
+37
-13
@@ -257,8 +257,8 @@ pAuraHandler AuraHandler[TOTAL_AURAS]=
|
||||
&Aura::HandleNoImmediateEffect, //200 SPELL_AURA_MOD_XP_PCT implemented in Player::GiveXP
|
||||
&Aura::HandleAuraAllowFlight, //201 SPELL_AURA_FLY this aura enable flight mode...
|
||||
&Aura::HandleNoImmediateEffect, //202 SPELL_AURA_CANNOT_BE_DODGED implemented in Unit::RollPhysicalOutcomeAgainst
|
||||
&Aura::HandleNoImmediateEffect, //203 SPELL_AURA_MOD_ATTACKER_MELEE_CRIT_DAMAGE implemented in Unit::DoAttackDamage
|
||||
&Aura::HandleNoImmediateEffect, //204 SPELL_AURA_MOD_ATTACKER_RANGED_CRIT_DAMAGE implemented in Unit::DoAttackDamage
|
||||
&Aura::HandleNoImmediateEffect, //203 SPELL_AURA_MOD_ATTACKER_MELEE_CRIT_DAMAGE implemented in Unit::CalculateMeleeDamage and Unit::CalculateSpellDamage
|
||||
&Aura::HandleNoImmediateEffect, //204 SPELL_AURA_MOD_ATTACKER_RANGED_CRIT_DAMAGE implemented in Unit::CalculateMeleeDamage and Unit::CalculateSpellDamage
|
||||
&Aura::HandleNULL, //205 vulnerable to school dmg?
|
||||
&Aura::HandleNULL, //206 SPELL_AURA_MOD_SPEED_MOUNTED
|
||||
&Aura::HandleAuraModIncreaseFlightSpeed, //207 SPELL_AURA_MOD_INCREASE_FLIGHT_SPEED
|
||||
@@ -5616,11 +5616,15 @@ void Aura::PeriodicTick()
|
||||
Unit* target = m_target; // aura can be deleted in DealDamage
|
||||
SpellEntry const* spellProto = GetSpellProto();
|
||||
|
||||
pCaster->DealDamage(m_target, (pdamage <= absorb+resist) ? 0 : (pdamage-absorb-resist), &cleanDamage, DOT, GetSpellSchoolMask(GetSpellProto()), GetSpellProto(), true);
|
||||
// Set trigger flag
|
||||
uint32 procAttacker = PROC_FLAG_ON_DO_PERIODIC;// | PROC_FLAG_SUCCESSFUL_HARMFUL_SPELL_HIT;
|
||||
uint32 procVictim = PROC_FLAG_ON_TAKE_PERIODIC;// | PROC_FLAG_TAKEN_HARMFUL_SPELL_HIT;
|
||||
pdamage = (pdamage <= absorb+resist) ? 0 : (pdamage-absorb-resist);
|
||||
if (pdamage)
|
||||
procVictim|=PROC_FLAG_TAKEN_ANY_DAMAGE;
|
||||
pCaster->ProcDamageAndSpell(target, procAttacker, procVictim, PROC_EX_NORMAL_HIT, pdamage, BASE_ATTACK, spellProto);
|
||||
|
||||
// DO NOT ACCESS MEMBERS OF THE AURA FROM NOW ON (DealDamage can delete aura)
|
||||
|
||||
pCaster->ProcDamageAndSpell(target, PROC_FLAG_NONE, PROC_FLAG_TAKE_DAMAGE, (pdamage <= absorb+resist) ? 0 : (pdamage-absorb-resist), GetSpellSchoolMask(spellProto), spellProto);
|
||||
pCaster->DealDamage(target, pdamage, &cleanDamage, DOT, GetSpellSchoolMask(spellProto), spellProto, true);
|
||||
break;
|
||||
}
|
||||
case SPELL_AURA_PERIODIC_LEECH:
|
||||
@@ -5729,11 +5733,15 @@ void Aura::PeriodicTick()
|
||||
SpellEntry const* spellProto = GetSpellProto();
|
||||
float multiplier = spellProto->EffectMultipleValue[GetEffIndex()] > 0 ? spellProto->EffectMultipleValue[GetEffIndex()] : 1;
|
||||
|
||||
uint32 new_damage = pCaster->DealDamage(m_target, (pdamage <= absorb+resist) ? 0 : (pdamage-absorb-resist), &cleanDamage, DOT, GetSpellSchoolMask(GetSpellProto()), GetSpellProto(), false);
|
||||
// Set trigger flag
|
||||
uint32 procAttacker = PROC_FLAG_ON_DO_PERIODIC;// | PROC_FLAG_SUCCESSFUL_HARMFUL_SPELL_HIT;
|
||||
uint32 procVictim = PROC_FLAG_ON_TAKE_PERIODIC;// | PROC_FLAG_TAKEN_HARMFUL_SPELL_HIT;
|
||||
pdamage = (pdamage <= absorb+resist) ? 0 : (pdamage-absorb-resist);
|
||||
if (pdamage)
|
||||
procVictim|=PROC_FLAG_TAKEN_ANY_DAMAGE;
|
||||
pCaster->ProcDamageAndSpell(target, procAttacker, procVictim, PROC_EX_NORMAL_HIT, pdamage, BASE_ATTACK, spellProto);
|
||||
int32 new_damage = pCaster->DealDamage(target, pdamage, &cleanDamage, DOT, GetSpellSchoolMask(spellProto), spellProto, false);
|
||||
|
||||
// DO NOT ACCESS MEMBERS OF THE AURA FROM NOW ON (DealDamage can delete aura)
|
||||
|
||||
pCaster->ProcDamageAndSpell(target, PROC_FLAG_HEALED, PROC_FLAG_TAKE_DAMAGE, new_damage, GetSpellSchoolMask(spellProto), spellProto);
|
||||
if (!target->isAlive() && pCaster->IsNonMeleeSpellCasted(false))
|
||||
{
|
||||
for (uint32 i = CURRENT_FIRST_NON_MELEE_SPELL; i < CURRENT_MAX_SPELL; i++)
|
||||
@@ -5834,9 +5842,11 @@ void Aura::PeriodicTick()
|
||||
}
|
||||
}
|
||||
|
||||
uint32 procAttacker = PROC_FLAG_ON_DO_PERIODIC;// | PROC_FLAG_SUCCESSFUL_HEAL;
|
||||
uint32 procVictim = 0;//ROC_FLAG_ON_TAKE_PERIODIC | PROC_FLAG_TAKEN_HEAL;
|
||||
// ignore item heals
|
||||
if(procSpell && !haveCastItem)
|
||||
pCaster->ProcDamageAndSpell(target,PROC_FLAG_NONE, PROC_FLAG_HEALED, pdamage, SPELL_SCHOOL_MASK_NONE, spellProto);
|
||||
// if(procSpell && !haveCastItem)
|
||||
// pCaster->ProcDamageAndSpell(target, procAttacker, procVictim, PROC_EX_NORMAL_HIT, pdamage, BASE_ATTACK, spellProto);
|
||||
break;
|
||||
}
|
||||
case SPELL_AURA_PERIODIC_MANA_LEECH:
|
||||
@@ -5995,8 +6005,22 @@ void Aura::PeriodicTick()
|
||||
|
||||
gain = uint32(gain * GetSpellProto()->EffectMultipleValue[GetEffIndex()]);
|
||||
|
||||
SpellEntry const* spellProto = GetSpellProto();
|
||||
//maybe has to be sent different to client, but not by SMSG_PERIODICAURALOG
|
||||
pCaster->SpellNonMeleeDamageLog(m_target, GetId(), gain);
|
||||
SpellNonMeleeDamage damageInfo(pCaster, m_target, spellProto->Id, spellProto->SchoolMask);
|
||||
pCaster->CalculateSpellDamage(&damageInfo, gain, spellProto);
|
||||
pCaster->SendSpellNonMeleeDamageLog(&damageInfo);
|
||||
|
||||
// Set trigger flag
|
||||
uint32 procAttacker = PROC_FLAG_ON_DO_PERIODIC;// | PROC_FLAG_SUCCESSFUL_HARMFUL_SPELL_HIT;
|
||||
uint32 procVictim = PROC_FLAG_ON_TAKE_PERIODIC;// | PROC_FLAG_TAKEN_HARMFUL_SPELL_HIT;
|
||||
uint32 procEx = createProcExtendMask(&damageInfo, SPELL_MISS_NONE);
|
||||
if (damageInfo.damage)
|
||||
procVictim|=PROC_FLAG_TAKEN_ANY_DAMAGE;
|
||||
|
||||
pCaster->ProcDamageAndSpell(damageInfo.target, procAttacker, procVictim, procEx, damageInfo.damage, BASE_ATTACK, spellProto);
|
||||
|
||||
pCaster->DealSpellDamage(&damageInfo, true);
|
||||
break;
|
||||
}
|
||||
// Here tick dummy auras
|
||||
|
||||
+10
-111
@@ -559,61 +559,7 @@ void Spell::EffectSchoolDMG(uint32 effect_idx)
|
||||
}
|
||||
|
||||
if(damage >= 0)
|
||||
{
|
||||
uint32 finalDamage;
|
||||
if(m_originalCaster) // m_caster only passive source of cast
|
||||
finalDamage = m_originalCaster->SpellNonMeleeDamageLog(unitTarget, m_spellInfo->Id, damage, m_IsTriggeredSpell, true);
|
||||
else
|
||||
finalDamage = m_caster->SpellNonMeleeDamageLog(unitTarget, m_spellInfo->Id, damage, m_IsTriggeredSpell, true);
|
||||
|
||||
// post effects
|
||||
switch(m_spellInfo->SpellFamilyName)
|
||||
{
|
||||
case SPELLFAMILY_WARRIOR:
|
||||
{
|
||||
// Bloodthirst
|
||||
if(m_spellInfo->SpellFamilyFlags & 0x40000000000LL)
|
||||
{
|
||||
uint32 BTAura = 0;
|
||||
switch(m_spellInfo->Id)
|
||||
{
|
||||
case 23881: BTAura = 23885; break;
|
||||
case 23892: BTAura = 23886; break;
|
||||
case 23893: BTAura = 23887; break;
|
||||
case 23894: BTAura = 23888; break;
|
||||
case 25251: BTAura = 25252; break;
|
||||
case 30335: BTAura = 30339; break;
|
||||
default:
|
||||
sLog.outError("Spell::EffectSchoolDMG: Spell %u not handled in BTAura",m_spellInfo->Id);
|
||||
break;
|
||||
}
|
||||
|
||||
if (BTAura)
|
||||
m_caster->CastSpell(m_caster,BTAura,true);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case SPELLFAMILY_PRIEST:
|
||||
{
|
||||
// Shadow Word: Death
|
||||
if(finalDamage > 0 && (m_spellInfo->SpellFamilyFlags & 0x0000000200000000LL) && unitTarget->isAlive())
|
||||
// deals damage equal to damage done to caster if victim is not killed
|
||||
m_caster->SpellNonMeleeDamageLog( m_caster, m_spellInfo->Id, finalDamage, m_IsTriggeredSpell, false);
|
||||
|
||||
break;
|
||||
}
|
||||
case SPELLFAMILY_PALADIN:
|
||||
{
|
||||
// Judgement of Blood
|
||||
if(finalDamage > 0 && (m_spellInfo->SpellFamilyFlags & 0x0000000800000000LL) && m_spellInfo->SpellIconID==153)
|
||||
{
|
||||
int32 damagePoint = finalDamage * 33 / 100;
|
||||
m_caster->CastCustomSpell(m_caster, 32220, &damagePoint, NULL, NULL, true);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
m_damage+= damage;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1452,7 +1398,7 @@ void Spell::EffectDummy(uint32 i)
|
||||
}
|
||||
|
||||
if(found)
|
||||
m_caster->SpellNonMeleeDamageLog(unitTarget, m_spellInfo->Id, damage, m_IsTriggeredSpell, true);
|
||||
m_damage+= damage;
|
||||
return;
|
||||
}
|
||||
// Kill command
|
||||
@@ -2347,7 +2293,7 @@ void Spell::EffectPowerBurn(uint32 i)
|
||||
modOwner->ApplySpellMod(m_spellInfo->Id, SPELLMOD_MULTIPLE_VALUE, multiplier);
|
||||
|
||||
new_damage = int32(new_damage*multiplier);
|
||||
m_caster->SpellNonMeleeDamageLog(unitTarget, m_spellInfo->Id, new_damage, m_IsTriggeredSpell, true);
|
||||
m_damage+=new_damage;
|
||||
}
|
||||
|
||||
void Spell::EffectHeal( uint32 /*i*/ )
|
||||
@@ -2415,27 +2361,7 @@ void Spell::EffectHeal( uint32 /*i*/ )
|
||||
else
|
||||
addhealth = caster->SpellHealingBonus(m_spellInfo, addhealth,HEAL, unitTarget);
|
||||
|
||||
bool crit = caster->isSpellCrit(unitTarget, m_spellInfo, m_spellSchoolMask, m_attackType);
|
||||
if (crit)
|
||||
addhealth = caster->SpellCriticalBonus(m_spellInfo, addhealth, unitTarget);
|
||||
caster->SendHealSpellLog(unitTarget, m_spellInfo->Id, addhealth, crit);
|
||||
|
||||
int32 gain = unitTarget->ModifyHealth( int32(addhealth) );
|
||||
unitTarget->getHostilRefManager().threatAssist(m_caster, float(gain) * 0.5f, m_spellInfo);
|
||||
|
||||
if(caster->GetTypeId()==TYPEID_PLAYER)
|
||||
if(BattleGround *bg = ((Player*)caster)->GetBattleGround())
|
||||
bg->UpdatePlayerScore(((Player*)caster), SCORE_HEALING_DONE, gain);
|
||||
|
||||
// ignore item heals
|
||||
if(m_CastItem)
|
||||
return;
|
||||
|
||||
uint32 procHealer = PROC_FLAG_HEAL;
|
||||
if (crit)
|
||||
procHealer |= PROC_FLAG_CRIT_HEAL;
|
||||
|
||||
m_caster->ProcDamageAndSpell(unitTarget,procHealer,PROC_FLAG_HEALED,addhealth,SPELL_SCHOOL_MASK_NONE,m_spellInfo,m_IsTriggeredSpell);
|
||||
m_healing+=addhealth;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2512,6 +2438,8 @@ void Spell::EffectHealthLeech(uint32 i)
|
||||
if(m_caster->GetTypeId() == TYPEID_PLAYER)
|
||||
m_caster->SendHealSpellLog(m_caster, m_spellInfo->Id, uint32(new_damage));
|
||||
}
|
||||
// m_healthLeech+=tmpvalue;
|
||||
// m_damage+=new_damage;
|
||||
}
|
||||
|
||||
void Spell::DoCreateItem(uint32 i, uint32 itemtype)
|
||||
@@ -4442,35 +4370,9 @@ void Spell::EffectWeaponDmg(uint32 i)
|
||||
// prevent negative damage
|
||||
uint32 eff_damage = uint32(bonus > 0 ? bonus : 0);
|
||||
|
||||
const uint32 nohitMask = HITINFO_ABSORB | HITINFO_RESIST | HITINFO_MISS;
|
||||
|
||||
uint32 hitInfo = 0;
|
||||
VictimState victimState = VICTIMSTATE_NORMAL;
|
||||
uint32 blocked_dmg = 0;
|
||||
uint32 absorbed_dmg = 0;
|
||||
uint32 resisted_dmg = 0;
|
||||
CleanDamage cleanDamage = CleanDamage(0, BASE_ATTACK, MELEE_HIT_NORMAL );
|
||||
|
||||
m_caster->DoAttackDamage(unitTarget, &eff_damage, &cleanDamage, &blocked_dmg, m_spellSchoolMask, &hitInfo, &victimState, &absorbed_dmg, &resisted_dmg, m_attackType, m_spellInfo, m_IsTriggeredSpell);
|
||||
|
||||
if ((hitInfo & nohitMask) && m_attackType != RANGED_ATTACK) // not send ranged miss/etc
|
||||
m_caster->SendAttackStateUpdate(hitInfo & nohitMask, unitTarget, 1, m_spellSchoolMask, eff_damage, absorbed_dmg, resisted_dmg, VICTIMSTATE_NORMAL, blocked_dmg);
|
||||
|
||||
bool criticalhit = (hitInfo & HITINFO_CRITICALHIT);
|
||||
m_caster->SendSpellNonMeleeDamageLog(unitTarget, m_spellInfo->Id, eff_damage, m_spellSchoolMask, absorbed_dmg, resisted_dmg, false, blocked_dmg, criticalhit);
|
||||
|
||||
if (eff_damage > (absorbed_dmg + resisted_dmg + blocked_dmg))
|
||||
{
|
||||
eff_damage -= (absorbed_dmg + resisted_dmg + blocked_dmg);
|
||||
}
|
||||
else
|
||||
{
|
||||
cleanDamage.damage += eff_damage;
|
||||
eff_damage = 0;
|
||||
}
|
||||
|
||||
// SPELL_SCHOOL_NORMAL use for weapon-like threat and rage calculation
|
||||
m_caster->DealDamage(unitTarget, eff_damage, &cleanDamage, SPELL_DIRECT_DAMAGE, SPELL_SCHOOL_MASK_NORMAL, NULL, true);
|
||||
// Add melee damage bonuses (also check for negative)
|
||||
m_caster->MeleeDamageBonus(unitTarget, &eff_damage, m_attackType, m_spellInfo);
|
||||
m_damage+= eff_damage;
|
||||
|
||||
// Hemorrhage
|
||||
if(m_spellInfo->SpellFamilyName==SPELLFAMILY_ROGUE && (m_spellInfo->SpellFamilyFlags & 0x2000000))
|
||||
@@ -4534,10 +4436,7 @@ void Spell::EffectHealMaxHealth(uint32 /*i*/)
|
||||
|
||||
uint32 heal = m_caster->GetMaxHealth();
|
||||
|
||||
int32 gain = unitTarget->ModifyHealth(heal);
|
||||
unitTarget->getHostilRefManager().threatAssist(m_caster, float(gain) * 0.5f, m_spellInfo);
|
||||
|
||||
m_caster->SendHealSpellLog(unitTarget, m_spellInfo->Id, heal);
|
||||
m_healing+=heal;
|
||||
}
|
||||
|
||||
void Spell::EffectInterruptCast(uint32 /*i*/)
|
||||
|
||||
+103
-11
@@ -547,6 +547,17 @@ bool IsSingleTargetSpells(SpellEntry const *spellInfo1, SpellEntry const *spellI
|
||||
return false;
|
||||
}
|
||||
|
||||
bool IsAuraAddedBySpell(uint32 auraType, uint32 spellId)
|
||||
{
|
||||
SpellEntry const *spellproto = sSpellStore.LookupEntry(spellId);
|
||||
if (!spellproto) return false;
|
||||
|
||||
for (int i = 0; i < 3; i++)
|
||||
if (spellproto->EffectApplyAuraName[i] == auraType)
|
||||
return true;
|
||||
return false;
|
||||
}
|
||||
|
||||
uint8 GetErrorAtShapeshiftedCast (SpellEntry const *spellInfo, uint32 form)
|
||||
{
|
||||
// talents that learn spells can have stance requirements that need ignore
|
||||
@@ -823,8 +834,8 @@ void SpellMgr::LoadSpellProcEvents()
|
||||
|
||||
uint32 count = 0;
|
||||
|
||||
// 0 1 2 3 4 5 6 7 8
|
||||
QueryResult *result = WorldDatabase.Query("SELECT entry, SchoolMask, Category, SkillID, SpellFamilyName, SpellFamilyMask, procFlags, ppmRate, cooldown FROM spell_proc_event");
|
||||
// 0 1 2 3 4 5 6 7 8
|
||||
QueryResult *result = WorldDatabase.Query("SELECT entry, SchoolMask, SpellFamilyName, SpellFamilyMask, procFlags, procEx, ppmRate, CustomChance, Cooldown FROM spell_proc_event");
|
||||
if( !result )
|
||||
{
|
||||
|
||||
@@ -838,7 +849,7 @@ void SpellMgr::LoadSpellProcEvents()
|
||||
}
|
||||
|
||||
barGoLink bar( result->GetRowCount() );
|
||||
|
||||
uint32 customProc = 0;
|
||||
do
|
||||
{
|
||||
Field *fields = result->Fetch();
|
||||
@@ -847,7 +858,8 @@ void SpellMgr::LoadSpellProcEvents()
|
||||
|
||||
uint16 entry = fields[0].GetUInt16();
|
||||
|
||||
if (!sSpellStore.LookupEntry(entry))
|
||||
const SpellEntry *spell = sSpellStore.LookupEntry(entry);
|
||||
if (!spell)
|
||||
{
|
||||
sLog.outErrorDb("Spell %u listed in `spell_proc_event` does not exist", entry);
|
||||
continue;
|
||||
@@ -856,23 +868,35 @@ void SpellMgr::LoadSpellProcEvents()
|
||||
SpellProcEventEntry spe;
|
||||
|
||||
spe.schoolMask = fields[1].GetUInt32();
|
||||
spe.category = fields[2].GetUInt32();
|
||||
spe.skillId = fields[3].GetUInt32();
|
||||
spe.spellFamilyName = fields[4].GetUInt32();
|
||||
spe.spellFamilyMask = fields[5].GetUInt64();
|
||||
spe.procFlags = fields[6].GetUInt32();
|
||||
spe.ppmRate = fields[7].GetFloat();
|
||||
spe.spellFamilyName = fields[2].GetUInt32();
|
||||
spe.spellFamilyMask = fields[3].GetUInt64();
|
||||
spe.procFlags = fields[4].GetUInt32();
|
||||
spe.procEx = fields[5].GetUInt32();
|
||||
spe.ppmRate = fields[6].GetFloat();
|
||||
spe.customChance = fields[7].GetFloat();
|
||||
spe.cooldown = fields[8].GetUInt32();
|
||||
|
||||
mSpellProcEventMap[entry] = spe;
|
||||
|
||||
if (spell->procFlags==0)
|
||||
{
|
||||
if (spe.procFlags == 0)
|
||||
{
|
||||
sLog.outErrorDb("Spell %u listed in `spell_proc_event` probally not triggered spell", entry);
|
||||
continue;
|
||||
}
|
||||
customProc++;
|
||||
}
|
||||
++count;
|
||||
} while( result->NextRow() );
|
||||
|
||||
delete result;
|
||||
|
||||
sLog.outString();
|
||||
sLog.outString( ">> Loaded %u spell proc event conditions", count );
|
||||
if (customProc)
|
||||
sLog.outString( ">> Loaded %u custom spell proc event conditions +%u custom", count, customProc );
|
||||
else
|
||||
sLog.outString( ">> Loaded %u spell proc event conditions", count );
|
||||
|
||||
/*
|
||||
// Commented for now, as it still produces many errors (still quite many spells miss spell_proc_event)
|
||||
@@ -904,6 +928,7 @@ void SpellMgr::LoadSpellProcEvents()
|
||||
*/
|
||||
}
|
||||
|
||||
/*
|
||||
bool SpellMgr::IsSpellProcEventCanTriggeredBy( SpellProcEventEntry const * spellProcEvent, SpellEntry const * procSpell, uint32 procFlags )
|
||||
{
|
||||
if((procFlags & spellProcEvent->procFlags) == 0)
|
||||
@@ -942,6 +967,73 @@ bool SpellMgr::IsSpellProcEventCanTriggeredBy( SpellProcEventEntry const * spell
|
||||
|
||||
return true;
|
||||
}
|
||||
*/
|
||||
|
||||
bool SpellMgr::IsSpellProcEventCanTriggeredBy(SpellProcEventEntry const * spellProcEvent, uint32 EventProcFlag, SpellEntry const * procSpell, uint32 procFlags, uint32 procExtra, bool active)
|
||||
{
|
||||
// No extra req need
|
||||
uint32 procEvent_procEx = PROC_EX_NONE;
|
||||
|
||||
// check prockFlags for condition
|
||||
if((procFlags & EventProcFlag) == 0)
|
||||
return false;
|
||||
|
||||
// Always trigger for this
|
||||
if (EventProcFlag & (PROC_FLAG_KILLED | PROC_FLAG_KILL_AND_GET_XP))
|
||||
return true;
|
||||
|
||||
if (spellProcEvent) // Exist event data
|
||||
{
|
||||
// Store extra req
|
||||
procEvent_procEx = spellProcEvent->procEx;
|
||||
|
||||
// For melee triggers
|
||||
if (procSpell == NULL)
|
||||
{
|
||||
// Check (if set) for school (melee attack have Normal school)
|
||||
if(spellProcEvent->schoolMask && (spellProcEvent->schoolMask & SPELL_SCHOOL_MASK_NORMAL) == 0)
|
||||
return false;
|
||||
}
|
||||
else // For spells need check school/spell family/family mask
|
||||
{
|
||||
// Check (if set) for school
|
||||
if(spellProcEvent->schoolMask && (spellProcEvent->schoolMask & procSpell->SchoolMask) == 0)
|
||||
return false;
|
||||
|
||||
// Check (if set) for spellFamilyName
|
||||
if(spellProcEvent->spellFamilyName && (spellProcEvent->spellFamilyName != procSpell->SpellFamilyName))
|
||||
return false;
|
||||
|
||||
// spellFamilyName is Ok need check for spellFamilyMask if present
|
||||
if(spellProcEvent->spellFamilyMask)
|
||||
{
|
||||
if ((spellProcEvent->spellFamilyMask & procSpell->SpellFamilyFlags) == 0)
|
||||
return false;
|
||||
active = true; // Spell added manualy -> so its active spell
|
||||
}
|
||||
}
|
||||
}
|
||||
// Check for extra req (if none) and hit/crit
|
||||
if (procEvent_procEx == PROC_EX_NONE)
|
||||
{
|
||||
// No extra req, so can trigger only for active (damage/healing present) and hit/crit
|
||||
if((procExtra & (PROC_EX_NORMAL_HIT|PROC_EX_CRITICAL_HIT)) && active)
|
||||
return true;
|
||||
}
|
||||
else // Passive spells hits here only if resist/reflect/immune/evade
|
||||
{
|
||||
// Exist req for PROC_EX_EX_TRIGGER_ALWAYS
|
||||
if (procEvent_procEx & PROC_EX_EX_TRIGGER_ALWAYS)
|
||||
return true;
|
||||
// Passive spells can`t trigger if need hit
|
||||
if ((procEvent_procEx & PROC_EX_NORMAL_HIT) && !active)
|
||||
return false;
|
||||
// Check Extra Requirement like (hit/crit/miss/resist/parry/dodge/block/immune/reflect/absorb and other)
|
||||
if (procEvent_procEx & procExtra)
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
void SpellMgr::LoadSpellElixirs()
|
||||
{
|
||||
|
||||
+74
-36
@@ -330,6 +330,8 @@ bool IsPositiveTarget(uint32 targetA, uint32 targetB);
|
||||
bool IsSingleTargetSpell(SpellEntry const *spellInfo);
|
||||
bool IsSingleTargetSpells(SpellEntry const *spellInfo1, SpellEntry const *spellInfo2);
|
||||
|
||||
bool IsAuraAddedBySpell(uint32 auraType, uint32 spellId);
|
||||
|
||||
bool IsSpellAllowedInLocation(SpellEntry const *spellInfo,uint32 map_id,uint32 zone_id,uint32 area_id);
|
||||
|
||||
inline bool IsAreaEffectTarget( Targets target )
|
||||
@@ -448,50 +450,86 @@ typedef std::map<uint32, uint64> SpellAffectMap;
|
||||
// Spell proc event related declarations (accessed using SpellMgr functions)
|
||||
enum ProcFlags
|
||||
{
|
||||
PROC_FLAG_NONE = 0x00000000, // None
|
||||
PROC_FLAG_HIT_MELEE = 0x00000001, // On melee hit
|
||||
PROC_FLAG_STRUCK_MELEE = 0x00000002, // On being struck melee
|
||||
PROC_FLAG_KILL_XP_GIVER = 0x00000004, // On kill target giving XP or honor
|
||||
PROC_FLAG_SPECIAL_DROP = 0x00000008, //
|
||||
PROC_FLAG_DODGE = 0x00000010, // On dodge melee attack
|
||||
PROC_FLAG_PARRY = 0x00000020, // On parry melee attack
|
||||
PROC_FLAG_BLOCK = 0x00000040, // On block attack
|
||||
PROC_FLAG_TOUCH = 0x00000080, // On being touched (for bombs, probably?)
|
||||
PROC_FLAG_TARGET_LOW_HEALTH = 0x00000100, // On deal damage to enemy with 20% or less health
|
||||
PROC_FLAG_LOW_HEALTH = 0x00000200, // On health dropped below 20%
|
||||
PROC_FLAG_STRUCK_RANGED = 0x00000400, // On being struck ranged
|
||||
PROC_FLAG_HIT_SPECIAL = 0x00000800, // (!)Removed, may be reassigned in future
|
||||
PROC_FLAG_CRIT_MELEE = 0x00001000, // On crit melee
|
||||
PROC_FLAG_STRUCK_CRIT_MELEE = 0x00002000, // On being critically struck in melee
|
||||
PROC_FLAG_CAST_SPELL = 0x00004000, // On cast spell
|
||||
PROC_FLAG_TAKE_DAMAGE = 0x00008000, // On take damage
|
||||
PROC_FLAG_CRIT_SPELL = 0x00010000, // On crit spell
|
||||
PROC_FLAG_HIT_SPELL = 0x00020000, // On hit spell
|
||||
PROC_FLAG_STRUCK_CRIT_SPELL = 0x00040000, // On being critically struck by a spell
|
||||
PROC_FLAG_HIT_RANGED = 0x00080000, // On getting ranged hit
|
||||
PROC_FLAG_STRUCK_SPELL = 0x00100000, // On being struck by a spell
|
||||
PROC_FLAG_TRAP = 0x00200000, // On trap activation (?)
|
||||
PROC_FLAG_CRIT_RANGED = 0x00400000, // On getting ranged crit
|
||||
PROC_FLAG_STRUCK_CRIT_RANGED = 0x00800000, // On being critically struck by a ranged attack
|
||||
PROC_FLAG_RESIST_SPELL = 0x01000000, // On resist enemy spell
|
||||
PROC_FLAG_TARGET_RESISTS = 0x02000000, // On enemy resisted spell
|
||||
PROC_FLAG_TARGET_DODGE_OR_PARRY = 0x04000000, // On enemy dodges/parries
|
||||
PROC_FLAG_HEAL = 0x08000000, // On heal
|
||||
PROC_FLAG_CRIT_HEAL = 0x10000000, // On critical healing effect
|
||||
PROC_FLAG_HEALED = 0x20000000, // On healing
|
||||
PROC_FLAG_TARGET_BLOCK = 0x40000000, // On enemy blocks
|
||||
PROC_FLAG_MISS = 0x80000000 // On miss melee attack
|
||||
PROC_FLAG_NONE = 0x00000000,
|
||||
|
||||
PROC_FLAG_KILLED = 0x00000001, // 00 Killed by agressor
|
||||
PROC_FLAG_KILL_AND_GET_XP = 0x00000002, // 01 Kill that yields experience or honor
|
||||
|
||||
PROC_FLAG_SUCCESSFUL_MILEE_HIT = 0x00000004, // 02 Successful melee attack
|
||||
PROC_FLAG_TAKEN_MELEE_HIT = 0x00000008, // 03 Taken damage from melee strike hit
|
||||
|
||||
PROC_FLAG_SUCCESSFUL_MELEE_SPELL_HIT = 0x00000010, // 04 Successful attack by Spell that use melee weapon
|
||||
PROC_FLAG_TAKEN_MELEE_SPELL_HIT = 0x00000020, // 05 Taken damage by Spell that use melee weapon
|
||||
|
||||
PROC_FLAG_SUCCESSFUL_RANGED_HIT = 0x00000040, // 06 Successful Ranged attack (all ranged attack deal as spell so newer set :( )
|
||||
PROC_FLAG_TAKEN_RANGED_HIT = 0x00000080, // 07 Taken damage from ranged attack (all ranged attack deal as spell so newer set :( )
|
||||
|
||||
PROC_FLAG_SUCCESSFUL_RANGED_SPELL_HIT = 0x00000100, // 08 Successful Ranged attack by Spell that use ranged weapon
|
||||
PROC_FLAG_TAKEN_RANGED_SPELL_HIT = 0x00000200, // 09 Taken damage by Spell that use ranged weapon
|
||||
|
||||
PROC_FLAG_SUCCESSFUL_POSITIVE_AOE_HIT = 0x00000400, // 10 Successful AoE (not 100% shure unused)
|
||||
PROC_FLAG_TAKEN_POSITIVE_AOE = 0x00000800, // 11 Taken AoE (not 100% shure unused)
|
||||
|
||||
PROC_FLAG_SUCCESSFUL_AOE_SPELL_HIT = 0x00001000, // 12 Successful AoE damage spell hit (not 100% shure unused)
|
||||
PROC_FLAG_TAKEN_AOE_SPELL_HIT = 0x00002000, // 13 Taken AoE damage spell hit (not 100% shure unused)
|
||||
|
||||
PROC_FLAG_SUCCESSFUL_POSITIVE_SPELL = 0x00004000, // 14 Successful cast positive spell (by default only on healing)
|
||||
PROC_FLAG_TAKEN_POSITIVE_SPELL = 0x00008000, // 15 Taken positive spell hit (by default only on healing)
|
||||
|
||||
PROC_FLAG_SUCCESSFUL_NEGATIVE_SPELL_HIT = 0x00010000, // 16 Successful negative spell cast (by default only on damage)
|
||||
PROC_FLAG_TAKEN_NEGATIVE_SPELL_HIT = 0x00020000, // 17 Taken negative spell (by default only on damage)
|
||||
|
||||
PROC_FLAG_ON_DO_PERIODIC = 0x00040000, // 18 Successful do periodic (damage / healing, determined from 14-17 flags)
|
||||
PROC_FLAG_ON_TAKE_PERIODIC = 0x00080000, // 19 Taken spell periodic (damage / healing, determined from 14-17 flags)
|
||||
|
||||
PROC_FLAG_TAKEN_ANY_DAMAGE = 0x00100000, // 20 Taken any damage
|
||||
PROC_FLAG_ON_TRAP_ACTIVATION = 0x00200000, // 21 On trap activation
|
||||
|
||||
PROC_FLAG_TAKEN_OFFHAND_HIT = 0x00400000, // 22 Taken off-hand melee attacks(not used)
|
||||
PROC_FLAG_SUCCESSFUL_OFFHAND_HIT = 0x00800000 // 23 Successful off-hand melee attacks
|
||||
};
|
||||
|
||||
#define MELEE_BASED_TRIGGER_MASK (PROC_FLAG_SUCCESSFUL_MILEE_HIT | \
|
||||
PROC_FLAG_TAKEN_MELEE_HIT | \
|
||||
PROC_FLAG_SUCCESSFUL_MELEE_SPELL_HIT | \
|
||||
PROC_FLAG_TAKEN_MELEE_SPELL_HIT | \
|
||||
PROC_FLAG_SUCCESSFUL_RANGED_HIT | \
|
||||
PROC_FLAG_TAKEN_RANGED_HIT | \
|
||||
PROC_FLAG_SUCCESSFUL_RANGED_SPELL_HIT | \
|
||||
PROC_FLAG_TAKEN_RANGED_SPELL_HIT)
|
||||
|
||||
enum ProcFlagsEx
|
||||
{
|
||||
PROC_EX_NONE = 0x0000000, // If none can tigger on Hit/Crit only (passive spells MUST defined by SpellFamily flag)
|
||||
PROC_EX_NORMAL_HIT = 0x0000001, // If set only from normal hit (only damage spells)
|
||||
PROC_EX_CRITICAL_HIT = 0x0000002,
|
||||
PROC_EX_MISS = 0x0000004,
|
||||
PROC_EX_RESIST = 0x0000008,
|
||||
PROC_EX_DODGE = 0x0000010,
|
||||
PROC_EX_PARRY = 0x0000020,
|
||||
PROC_EX_BLOCK = 0x0000040,
|
||||
PROC_EX_EVADE = 0x0000080,
|
||||
PROC_EX_IMMUNE = 0x0000100,
|
||||
PROC_EX_DEFLECT = 0x0000200,
|
||||
PROC_EX_ABSORB = 0x0000400,
|
||||
PROC_EX_REFLECT = 0x0000800,
|
||||
PROC_EX_INTERRUPT = 0x0001000, // Melle hit result can be Interrupt (not used)
|
||||
PROC_EX_RESERVED1 = 0x0002000,
|
||||
PROC_EX_RESERVED2 = 0x0004000,
|
||||
PROC_EX_RESERVED3 = 0x0008000,
|
||||
PROC_EX_EX_TRIGGER_ALWAYS = 0x0010000, // If set trigger always ( no matter another flags) used for drop charges
|
||||
PROC_EX_EX_ONE_TIME_TRIGGER = 0x0020000 // If set trigger always but only one time
|
||||
};
|
||||
|
||||
struct SpellProcEventEntry
|
||||
{
|
||||
uint32 schoolMask; // if nonzero - bit mask for matching proc condition based on spell candidate's school: Fire=2, Mask=1<<(2-1)=2
|
||||
uint32 category; // if nonzero - match proc condition based on candidate spell's category
|
||||
uint32 skillId; // if nonzero - for matching proc condition based on candidate spell's skillId from SkillLineAbility.dbc (Shadow Bolt = Destruction)
|
||||
uint32 spellFamilyName; // if nonzero - for matching proc condition based on candidate spell's SpellFamilyNamer value
|
||||
uint64 spellFamilyMask; // if nonzero - for matching proc condition based on candidate spell's SpellFamilyFlags (like auras 107 and 108 do)
|
||||
uint32 procFlags; // bitmask for matching proc event
|
||||
uint32 procEx; // proc Extend info (see ProcFlagsEx)
|
||||
float ppmRate; // for melee (ranged?) damage spells - proc rate per minute. if zero, falls back to flat chance from Spell.dbc
|
||||
float customChance; // Owerride chance (in most cases for debug only)
|
||||
uint32 cooldown; // hidden cooldown used for some spell proc events, applied to _triggered_spell_
|
||||
};
|
||||
|
||||
@@ -701,7 +739,7 @@ class SpellMgr
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static bool IsSpellProcEventCanTriggeredBy( SpellProcEventEntry const * spellProcEvent, SpellEntry const * procSpell, uint32 procFlags );
|
||||
static bool IsSpellProcEventCanTriggeredBy( SpellProcEventEntry const * spellProcEvent, uint32 EventProcFlag, SpellEntry const * procSpell, uint32 procFlags, uint32 procExtra, bool active);
|
||||
|
||||
// Spell target coordinates
|
||||
SpellTargetPosition const* GetSpellTargetPosition(uint32 spell_id) const
|
||||
|
||||
+1811
-217
File diff suppressed because it is too large
Load Diff
+68
-12
@@ -583,6 +583,50 @@ struct CleanDamage
|
||||
MeleeHitOutcome hitOutCome;
|
||||
};
|
||||
|
||||
// Struct for use in Unit::CalculateMeleeDamage
|
||||
// Need create structure like in SMSG_ATTACKERSTATEUPDATE opcode
|
||||
struct CalcDamageInfo
|
||||
{
|
||||
Unit *attacker; // Attacker
|
||||
Unit *target; // Target for damage
|
||||
uint32 damageSchoolMask;
|
||||
uint32 damage;
|
||||
uint32 absorb;
|
||||
uint32 resist;
|
||||
uint32 blocked_amount;
|
||||
uint32 HitInfo;
|
||||
uint32 TargetState;
|
||||
// Helper
|
||||
WeaponAttackType attackType; //
|
||||
uint32 procAttacker;
|
||||
uint32 procVictim;
|
||||
uint32 procEx;
|
||||
uint32 cleanDamage; // Used only fo rage calcultion
|
||||
MeleeHitOutcome hitOutCome; // TODO: remove this field (need use TargetState)
|
||||
};
|
||||
|
||||
// Spell damage info structure based on structure sending in SMSG_SPELLNONMELEEDAMAGELOG opcode
|
||||
struct SpellNonMeleeDamage{
|
||||
SpellNonMeleeDamage(Unit *_attacker, Unit *_target, uint32 _SpellID, uint32 _schoolMask) :
|
||||
attacker(_attacker), target(_target), SpellID(_SpellID), damage(0), schoolMask(_schoolMask),
|
||||
absorb(0), resist(0), phusicalLog(false), unused(false), blocked(0), HitInfo(0), cleanDamage(0) {}
|
||||
Unit *target;
|
||||
Unit *attacker;
|
||||
uint32 SpellID;
|
||||
uint32 damage;
|
||||
uint32 schoolMask;
|
||||
uint32 absorb;
|
||||
uint32 resist;
|
||||
bool phusicalLog;
|
||||
bool unused;
|
||||
uint32 blocked;
|
||||
uint32 HitInfo;
|
||||
// Used for help
|
||||
uint32 cleanDamage;
|
||||
};
|
||||
|
||||
uint32 createProcExtendMask(SpellNonMeleeDamage *damageInfo, SpellMissInfo missCondition);
|
||||
|
||||
struct UnitActionBarEntry
|
||||
{
|
||||
uint32 Type;
|
||||
@@ -692,6 +736,8 @@ enum ReactiveType
|
||||
// delay time next attack to prevent client attack animation problems
|
||||
#define ATTACK_DISPLAY_DELAY 200
|
||||
|
||||
struct SpellProcEventEntry; // used only privately
|
||||
|
||||
class TRINITY_DLL_SPEC Unit : public WorldObject
|
||||
{
|
||||
public:
|
||||
@@ -849,15 +895,23 @@ class TRINITY_DLL_SPEC Unit : public WorldObject
|
||||
uint16 GetMaxSkillValueForLevel(Unit const* target = NULL) const { return (target ? getLevelForTarget(target) : getLevel()) * 5; }
|
||||
void RemoveSpellbyDamageTaken(uint32 damage, uint32 spell);
|
||||
uint32 DealDamage(Unit *pVictim, uint32 damage, CleanDamage const* cleanDamage, DamageEffectType damagetype, SpellSchoolMask damageSchoolMask, SpellEntry const *spellProto, bool durabilityLoss);
|
||||
void DealFlatDamage(Unit *pVictim, SpellEntry const *spellInfo, uint32 *damage, CleanDamage *cleanDamage, bool *crit = false, bool isTriggeredSpell = false);
|
||||
void DoAttackDamage(Unit *pVictim, uint32 *damage, CleanDamage *cleanDamage, uint32 *blocked_amount, SpellSchoolMask damageSchoolMask, uint32 *hitInfo, VictimState *victimState, uint32 *absorbDamage, uint32 *resistDamage, WeaponAttackType attType, SpellEntry const *spellCasted = NULL, bool isTriggeredSpell = false);
|
||||
|
||||
void CastMeleeProcDamageAndSpell(Unit* pVictim, uint32 damage, SpellSchoolMask damageSchoolMask, WeaponAttackType attType, MeleeHitOutcome outcome, SpellEntry const *spellCasted = NULL, bool isTriggeredSpell = false);
|
||||
void ProcDamageAndSpell(Unit *pVictim, uint32 procAttacker, uint32 procVictim, uint32 damage = 0, SpellSchoolMask damageSchoolMask = SPELL_SCHOOL_MASK_NONE, SpellEntry const *procSpell = NULL, bool isTriggeredSpell = false, WeaponAttackType attType = BASE_ATTACK);
|
||||
void ProcDamageAndSpell(Unit *pVictim, uint32 procAttacker, uint32 procVictim, uint32 procEx, uint32 amount, WeaponAttackType attType = BASE_ATTACK, SpellEntry const *procSpell = NULL);
|
||||
void ProcDamageAndSpellFor( bool isVictim, Unit * pTarget, uint32 procFlag, uint32 procExtra, WeaponAttackType attType, SpellEntry const * procSpell, uint32 damage );
|
||||
|
||||
void HandleEmoteCommand(uint32 anim_id);
|
||||
void AttackerStateUpdate (Unit *pVictim, WeaponAttackType attType = BASE_ATTACK, bool extra = false );
|
||||
|
||||
float MeleeMissChanceCalc(const Unit *pVictim, WeaponAttackType attType) const;
|
||||
|
||||
void CalculateMeleeDamage(Unit *pVictim, uint32 damage, CalcDamageInfo *damageInfo, WeaponAttackType attackType = BASE_ATTACK);
|
||||
void DealMeleeDamage(CalcDamageInfo *damageInfo, bool durabilityLoss);
|
||||
|
||||
void CalculateSpellDamage(SpellNonMeleeDamage *damageInfo, int32 damage, SpellEntry const *spellInfo, WeaponAttackType attackType = BASE_ATTACK);
|
||||
void DealSpellDamage(SpellNonMeleeDamage *damageInfo, bool durabilityLoss);
|
||||
|
||||
float MeleeSpellMissChance(Unit *pVictim, WeaponAttackType attType, int32 skillDiff, SpellEntry const *spell);
|
||||
SpellMissInfo MeleeSpellHitResult(Unit *pVictim, SpellEntry const *spell);
|
||||
SpellMissInfo MagicSpellHitResult(Unit *pVictim, SpellEntry const *spell);
|
||||
SpellMissInfo SpellHitResult(Unit *pVictim, SpellEntry const *spell, bool canReflect = false);
|
||||
|
||||
@@ -872,7 +926,7 @@ class TRINITY_DLL_SPEC Unit : public WorldObject
|
||||
uint32 GetWeaponSkillValue(WeaponAttackType attType, Unit const* target = NULL) const;
|
||||
float GetWeaponProcChance() const;
|
||||
float GetPPMProcChance(uint32 WeaponSpeed, float PPM) const;
|
||||
MeleeHitOutcome RollPhysicalOutcomeAgainst (const Unit *pVictim, WeaponAttackType attType, SpellEntry const *spellInfo);
|
||||
|
||||
MeleeHitOutcome RollMeleeOutcomeAgainst (const Unit *pVictim, WeaponAttackType attType) const;
|
||||
MeleeHitOutcome RollMeleeOutcomeAgainst (const Unit *pVictim, WeaponAttackType attType, int32 crit_chance, int32 miss_chance, int32 dodge_chance, int32 parry_chance, int32 block_chance, bool SpellCasted ) const;
|
||||
|
||||
@@ -948,7 +1002,9 @@ class TRINITY_DLL_SPEC Unit : public WorldObject
|
||||
void DeMorph();
|
||||
|
||||
void SendAttackStart(Unit* pVictim);
|
||||
void SendAttackStateUpdate(CalcDamageInfo *damageInfo);
|
||||
void SendAttackStateUpdate(uint32 HitInfo, Unit *target, uint8 SwingType, SpellSchoolMask damageSchoolMask, uint32 Damage, uint32 AbsorbDamage, uint32 Resist, VictimState TargetState, uint32 BlockedAmount);
|
||||
void SendSpellNonMeleeDamageLog(SpellNonMeleeDamage *log);
|
||||
void SendSpellNonMeleeDamageLog(Unit *target,uint32 SpellID,uint32 Damage, SpellSchoolMask damageSchoolMask,uint32 AbsorbedDamage, uint32 Resist,bool PhysicalDamage, uint32 Blocked, bool CriticalHit = false);
|
||||
void SendSpellMiss(Unit *target, uint32 spellID, SpellMissInfo missInfo);
|
||||
|
||||
@@ -1228,7 +1284,8 @@ class TRINITY_DLL_SPEC Unit : public WorldObject
|
||||
int32 SpellBaseHealingBonusForVictim(SpellSchoolMask schoolMask, Unit *pVictim);
|
||||
uint32 SpellDamageBonus(Unit *pVictim, SpellEntry const *spellProto, uint32 damage, DamageEffectType damagetype);
|
||||
uint32 SpellHealingBonus(SpellEntry const *spellProto, uint32 healamount, DamageEffectType damagetype, Unit *pVictim);
|
||||
bool isSpellCrit(Unit *pVictim, SpellEntry const *spellProto, SpellSchoolMask schoolMask, WeaponAttackType attackType);
|
||||
bool isSpellBlocked(Unit *pVictim, SpellEntry const *spellProto, WeaponAttackType attackType = BASE_ATTACK);
|
||||
bool isSpellCrit(Unit *pVictim, SpellEntry const *spellProto, SpellSchoolMask schoolMask, WeaponAttackType attackType = BASE_ATTACK);
|
||||
uint32 SpellCriticalBonus(SpellEntry const *spellProto, uint32 damage, Unit *pVictim);
|
||||
|
||||
void SetLastManaUse(uint32 spellCastTime) { m_lastManaUse = spellCastTime; }
|
||||
@@ -1371,12 +1428,11 @@ class TRINITY_DLL_SPEC Unit : public WorldObject
|
||||
void SendAttackStop(Unit* victim); // only from AttackStop(Unit*)
|
||||
//void SendAttackStart(Unit* pVictim); // only from Unit::AttackStart(Unit*)
|
||||
|
||||
void ProcDamageAndSpellFor( bool isVictim, Unit * pTarget, uint32 procFlag, AuraTypeSet const& procAuraTypes, WeaponAttackType attType, SpellEntry const * procSpell, uint32 damage, SpellSchoolMask damageSchoolMask );
|
||||
bool IsTriggeredAtSpellProcEvent( SpellEntry const* spellProto, SpellEntry const* procSpell, uint32 procFlag, WeaponAttackType attType, bool isVictim, uint32& cooldown );
|
||||
bool HandleDummyAuraProc( Unit *pVictim, uint32 damage, Aura* triggeredByAura, SpellEntry const* procSpell, uint32 procFlag, uint32 cooldown);
|
||||
bool HandleProcTriggerSpell(Unit *pVictim, uint32 damage, Aura* triggeredByAura, SpellEntry const* procSpell, uint32 procFlag, WeaponAttackType attType, uint32 cooldown);
|
||||
bool HandleHasteAuraProc( Unit *pVictim, uint32 damage, Aura* triggeredByAura, SpellEntry const* procSpell, uint32 procFlag, uint32 cooldown);
|
||||
bool HandleOverrideClassScriptAuraProc(Unit *pVictim, Aura* triggeredByAura, SpellEntry const *procSpell, uint32 cooldown);
|
||||
bool IsTriggeredAtSpellProcEvent( Aura* aura, SpellEntry const* procSpell, uint32 procFlag, uint32 procExtra, WeaponAttackType attType, bool isVictim, bool active, SpellProcEventEntry const*& spellProcEvent );
|
||||
bool HandleDummyAuraProc( Unit *pVictim, uint32 damage, Aura* triggredByAura, SpellEntry const *procSpell, uint32 procFlag, uint32 procEx, uint32 cooldown);
|
||||
bool HandleHasteAuraProc( Unit *pVictim, uint32 damage, Aura* triggredByAura, SpellEntry const *procSpell, uint32 procFlag, uint32 procEx, uint32 cooldown);
|
||||
bool HandleProcTriggerSpell(Unit *pVictim, uint32 damage, Aura* triggredByAura, SpellEntry const *procSpell, uint32 procFlag, uint32 procEx, uint32 cooldown);
|
||||
bool HandleOverrideClassScriptAuraProc(Unit *pVictim, Aura* triggredByAura, SpellEntry const *procSpell, uint32 cooldown);
|
||||
bool HandleMeandingAuraProc(Aura* triggeredByAura);
|
||||
|
||||
uint32 m_state; // Even derived shouldn't modify
|
||||
|
||||
Reference in New Issue
Block a user