*Prevent linked effects to apply area auras in Unit::RemoveAreaAurasDueToLeaveWorld, finally fix the update sql

--HG--
branch : trunk
This commit is contained in:
QAston
2010-01-29 18:51:06 +01:00
parent 04aff1dba8
commit 94e5e3970e
2 changed files with 129 additions and 125 deletions
+95 -101
View File
@@ -1,12 +1,3 @@
DROP TABLE IF EXISTS `spell_ranks`;
CREATE TABLE `spell_ranks` (
`first_spell_id` INT UNSIGNED NOT NULL DEFAULT 0,
`spell_id` INT UNSIGNED NOT NULL DEFAULT 0,
`rank` TINYINT UNSIGNED NOT NULL DEFAULT 0,
PRIMARY KEY (`first_spell_id`, `rank`),
UNIQUE (`spell_id`)
) ENGINE=MYISAM DEFAULT CHARSET=utf8 ROW_FORMAT=FIXED COMMENT='Spell Rank Data';
INSERT INTO spell_ranks (`first_spell_id`, `spell_id`, `rank`) VALUES INSERT INTO spell_ranks (`first_spell_id`, `spell_id`, `rank`) VALUES
-- Abomination's Might -- Abomination's Might
(53137, 53137, 1), (53137, 53137, 1),
@@ -55,12 +46,12 @@ INSERT INTO spell_ranks (`first_spell_id`, `spell_id`, `rank`) VALUES
(19434, 49049, 8), (19434, 49049, 8),
(19434, 49050, 9), (19434, 49050, 9),
-- Alchemy -- Alchemy
(3101, 3101, 1), (2259, 2259, 1),
(3101, 2259, 2), (2259, 3101, 2),
(3101, 3464, 3), (2259, 3464, 3),
(3101, 11611, 4), (2259, 11611, 4),
(3101, 28596, 5), (2259, 28596, 5),
(3101, 51304, 6), (2259, 51304, 6),
-- Ambush -- Ambush
(8676, 8676, 1), (8676, 8676, 1),
(8676, 8724, 2), (8676, 8724, 2),
@@ -424,12 +415,12 @@ INSERT INTO spell_ranks (`first_spell_id`, `spell_id`, `rank`) VALUES
(49140, 49663, 4), (49140, 49663, 4),
(49140, 49664, 5), (49140, 49664, 5),
-- Blacksmithing -- Blacksmithing
(3100, 3100, 1), (2018, 2018, 1),
(3100, 2018, 2), (2018, 3100, 2),
(3100, 3538, 3), (2018, 3538, 3),
(3100, 9785, 4), (2018, 9785, 4),
(3100, 29844, 5), (2018, 29844, 5),
(3100, 51300, 6), (2018, 51300, 6),
-- Blade Barrier -- Blade Barrier
(51789, 51789, 1), (51789, 51789, 1),
(51789, 64855, 2), (51789, 64855, 2),
@@ -850,12 +841,12 @@ INSERT INTO spell_ranks (`first_spell_id`, `spell_id`, `rank`) VALUES
(20117, 20120, 4), (20117, 20120, 4),
(20117, 20121, 5), (20117, 20121, 5),
-- Cooking -- Cooking
(3102, 3102, 1), (2550, 2550, 1),
(3102, 2550, 2), (2550, 3102, 2),
(3102, 3413, 3), (2550, 3413, 3),
(3102, 18260, 4), (2550, 18260, 4),
(3102, 33359, 5), (2550, 33359, 5),
(3102, 51296, 6), (2550, 51296, 6),
-- Cornered -- Cornered
(52234, 52234, 1), (52234, 52234, 1),
(52234, 53497, 2), (52234, 53497, 2),
@@ -1200,6 +1191,9 @@ INSERT INTO spell_ranks (`first_spell_id`, `spell_id`, `rank`) VALUES
(1160, 25202, 6), (1160, 25202, 6),
(1160, 25203, 7), (1160, 25203, 7),
(1160, 47437, 8), (1160, 47437, 8),
-- Desecration
(55666, 55666, 1),
(55666, 55667, 2),
-- Desperate Prayer -- Desperate Prayer
(19236, 19236, 1), (19236, 19236, 1),
(19236, 19238, 2), (19236, 19238, 2),
@@ -1496,12 +1490,12 @@ INSERT INTO spell_ranks (`first_spell_id`, `spell_id`, `rank`) VALUES
(33879, 33879, 1), (33879, 33879, 1),
(33879, 33880, 2), (33879, 33880, 2),
-- Enchanting -- Enchanting
(7412, 7412, 1), (7411, 7411, 1),
(7412, 7411, 2), (7411, 7412, 2),
(7412, 7413, 3), (7411, 7413, 3),
(7412, 13920, 4), (7411, 13920, 4),
(7412, 28029, 5), (7411, 28029, 5),
(7412, 51313, 6), (7411, 51313, 6),
-- Endless Winter -- Endless Winter
(49137, 49137, 1), (49137, 49137, 1),
(49137, 49657, 2), (49137, 49657, 2),
@@ -1519,12 +1513,12 @@ INSERT INTO spell_ranks (`first_spell_id`, `spell_id`, `rank`) VALUES
(44557, 44560, 2), (44557, 44560, 2),
(44557, 44561, 3), (44557, 44561, 3),
-- Engineering -- Engineering
(4037, 4037, 1), (4036, 4036, 1),
(4037, 4036, 2), (4036, 4037, 2),
(4037, 4038, 3), (4036, 4038, 3),
(4037, 12656, 4), (4036, 12656, 4),
(4037, 30350, 5), (4036, 30350, 5),
(4037, 51306, 6), (4036, 51306, 6),
-- Enhancing Totems -- Enhancing Totems
(16259, 16259, 1), (16259, 16259, 1),
(16259, 16295, 2), (16259, 16295, 2),
@@ -1864,12 +1858,12 @@ INSERT INTO spell_ranks (`first_spell_id`, `spell_id`, `rank`) VALUES
(44442, 44442, 1), (44442, 44442, 1),
(44442, 44443, 2), (44442, 44443, 2),
-- First Aid -- First Aid
(3274, 3274, 1), (3273, 3273, 1),
(3274, 3273, 2), (3273, 3274, 2),
(3274, 7924, 3), (3273, 7924, 3),
(3274, 10846, 4), (3273, 10846, 4),
(3274, 27028, 5), (3273, 27028, 5),
(3274, 45542, 6), (3273, 45542, 6),
-- Flame Shock -- Flame Shock
(8050, 8050, 1), (8050, 8050, 1),
(8050, 8052, 2), (8050, 8052, 2),
@@ -2462,12 +2456,12 @@ INSERT INTO spell_ranks (`first_spell_id`, `spell_id`, `rank`) VALUES
(16511, 26864, 4), (16511, 26864, 4),
(16511, 48660, 5), (16511, 48660, 5),
-- Herb Gathering -- Herb Gathering
(2368, 2368, 1), (2366, 2366, 1),
(2368, 2366, 2), (2366, 2368, 2),
(2368, 3570, 3), (2366, 3570, 3),
(2368, 11993, 4), (2366, 11993, 4),
(2368, 28695, 5), (2366, 28695, 5),
(2368, 50300, 6), (2366, 50300, 6),
-- Heroic Strike -- Heroic Strike
(78, 78, 1), (78, 78, 1),
(78, 284, 2), (78, 284, 2),
@@ -3152,12 +3146,12 @@ INSERT INTO spell_ranks (`first_spell_id`, `spell_id`, `rank`) VALUES
(588, 48040, 8), (588, 48040, 8),
(588, 48168, 9), (588, 48168, 9),
-- Inscription -- Inscription
(45358, 45358, 1), (45357, 45357, 1),
(45358, 45357, 2), (45357, 45358, 2),
(45358, 45359, 3), (45357, 45359, 3),
(45358, 45360, 4), (45357, 45360, 4),
(45358, 45361, 5), (45357, 45361, 5),
(45358, 45363, 6), (45357, 45363, 6),
-- Insect Swarm -- Insect Swarm
(5570, 5570, 1), (5570, 5570, 1),
(5570, 24974, 2), (5570, 24974, 2),
@@ -3197,12 +3191,12 @@ INSERT INTO spell_ranks (`first_spell_id`, `spell_id`, `rank`) VALUES
(12300, 12959, 2), (12300, 12959, 2),
(12300, 12960, 3), (12300, 12960, 3),
-- Jewelcrafting -- Jewelcrafting
(25230, 25230, 1), (25229, 25229, 1),
(25230, 25229, 2), (25229, 25230, 2),
(25230, 28894, 3), (25229, 28894, 3),
(25230, 28895, 4), (25229, 28895, 4),
(25230, 28897, 5), (25229, 28897, 5),
(25230, 51311, 6), (25229, 51311, 6),
-- Judgements of the Just -- Judgements of the Just
(53695, 53695, 1), (53695, 53695, 1),
(53695, 53696, 2), (53695, 53696, 2),
@@ -3283,12 +3277,12 @@ INSERT INTO spell_ranks (`first_spell_id`, `spell_id`, `rank`) VALUES
(633, 27154, 4), (633, 27154, 4),
(633, 48788, 5), (633, 48788, 5),
-- Leatherworking -- Leatherworking
(3104, 3104, 1), (2108, 2108, 1),
(3104, 2108, 2), (2108, 3104, 2),
(3104, 3811, 3), (2108, 3811, 3),
(3104, 10662, 4), (2108, 10662, 4),
(3104, 32549, 5), (2108, 32549, 5),
(3104, 51302, 6), (2108, 51302, 6),
-- Lesser Heal -- Lesser Heal
(2050, 2050, 1), (2050, 2050, 1),
(2050, 2052, 2), (2050, 2052, 2),
@@ -3403,9 +3397,9 @@ INSERT INTO spell_ranks (`first_spell_id`, `spell_id`, `rank`) VALUES
(56342, 56343, 2), (56342, 56343, 2),
(56342, 56344, 3), (56342, 56344, 3),
-- Lockpicking -- Lockpicking
(1810, 1810, 1), (1809, 1809, 1),
(1810, 1809, 2), (1809, 1810, 2),
(1810, 6460, 3), (1809, 6460, 3),
-- Longevity -- Longevity
(53262, 53262, 1), (53262, 53262, 1),
(53262, 53263, 2), (53262, 53263, 2),
@@ -3690,12 +3684,12 @@ INSERT INTO spell_ranks (`first_spell_id`, `spell_id`, `rank`) VALUES
(2096, 2096, 1), (2096, 2096, 1),
(2096, 10909, 2), (2096, 10909, 2),
-- Mining -- Mining
(2576, 2576, 1), (2575, 2575, 1),
(2576, 2575, 2), (2575, 2576, 2),
(2576, 3564, 3), (2575, 3564, 3),
(2576, 10248, 4), (2575, 10248, 4),
(2576, 29354, 5), (2575, 29354, 5),
(2576, 50310, 6), (2575, 50310, 6),
-- Missile Barrage -- Missile Barrage
(44404, 44404, 1), (44404, 44404, 1),
(44404, 54486, 2), (44404, 54486, 2),
@@ -4891,12 +4885,12 @@ INSERT INTO spell_ranks (`first_spell_id`, `spell_id`, `rank`) VALUES
(1752, 48637, 11), (1752, 48637, 11),
(1752, 48638, 12), (1752, 48638, 12),
-- Skinning -- Skinning
(8617, 8617, 1), (8613, 8613, 1),
(8617, 8613, 2), (8613, 8617, 2),
(8617, 8618, 3), (8613, 8618, 3),
(8617, 10768, 4), (8613, 10768, 4),
(8617, 32678, 5), (8613, 32678, 5),
(8617, 50305, 6), (8613, 50305, 6),
-- Slam -- Slam
(1464, 1464, 1), (1464, 1464, 1),
(1464, 8820, 2), (1464, 8820, 2),
@@ -5300,12 +5294,12 @@ INSERT INTO spell_ranks (`first_spell_id`, `spell_id`, `rank`) VALUES
(12295, 12676, 2), (12295, 12676, 2),
(12295, 12677, 3), (12295, 12677, 3),
-- Tailoring -- Tailoring
(3909, 3909, 1), (3908, 3908, 1),
(3909, 3908, 2), (3908, 3909, 2),
(3909, 3910, 3), (3908, 3910, 3),
(3909, 12180, 4), (3908, 12180, 4),
(3909, 26790, 5), (3908, 26790, 5),
(3909, 51309, 6), (3908, 51309, 6),
-- Taste for Blood -- Taste for Blood
(56636, 56636, 1), (56636, 56636, 1),
(56636, 56637, 2), (56636, 56637, 2),
@@ -6503,12 +6497,12 @@ INSERT INTO spell_ranks (`first_spell_id`, `spell_id`, `rank`) VALUES
(30165, 29177, 2), (30165, 29177, 2),
(30165, 29178, 3), (30165, 29178, 3),
-- Fishing -- Fishing
(7731, 7731, 1), (7620, 7620, 1),
(7731, 7620, 2), (7620, 7731, 2),
(7731, 7732, 3), (7620, 7732, 3),
(7731, 18248, 4), (7620, 18248, 4),
(7731, 33095, 5), (7620, 33095, 5),
(7731, 51294, 6), (7620, 51294, 6),
-- Icy Touch -- Icy Touch
(45477, 45477, 1), (45477, 45477, 1),
(45477, 49896, 2), (45477, 49896, 2),
@@ -6614,11 +6608,11 @@ INSERT INTO spell_ranks (`first_spell_id`, `spell_id`, `rank`) VALUES
-- Anesthetic Poison -- Anesthetic Poison
(26785, 26785, 1), (26785, 26785, 1),
(26785, 57982, 2), (26785, 57982, 2),
-- Journeyman Riding -- Apprentice Riding
(33391, 33391, 1), (33388, 33388, 1),
(33391, 33388, 2), (33388, 33391, 2),
(33391, 34090, 3), (33388, 34090, 3),
(33391, 34091, 4), (33388, 34091, 4),
-- Primal Fury -- Primal Fury
(16958, 16958, 1), (16958, 16958, 1),
(16958, 16961, 2), (16958, 16961, 2),
+10
View File
@@ -4300,6 +4300,10 @@ void Unit::RemoveAurasWithMechanic(uint32 mechanic_mask, AuraRemoveMode removemo
void Unit::RemoveAreaAurasDueToLeaveWorld() void Unit::RemoveAreaAurasDueToLeaveWorld()
{ {
bool cleanRun;
do
{
cleanRun = true;
// make sure that all area auras not applied on self are removed - prevent access to deleted pointer later // make sure that all area auras not applied on self are removed - prevent access to deleted pointer later
for (AuraMap::iterator iter = m_ownedAuras.begin(); iter != m_ownedAuras.end();) for (AuraMap::iterator iter = m_ownedAuras.begin(); iter != m_ownedAuras.end();)
{ {
@@ -4314,6 +4318,7 @@ void Unit::RemoveAreaAurasDueToLeaveWorld()
if (target == this) if (target == this)
continue; continue;
target->RemoveAura(aurApp); target->RemoveAura(aurApp);
cleanRun = false;
// things linked on aura remove may apply new area aura - so start from the beginning // things linked on aura remove may apply new area aura - so start from the beginning
iter = m_ownedAuras.begin(); iter = m_ownedAuras.begin();
} }
@@ -4323,10 +4328,15 @@ void Unit::RemoveAreaAurasDueToLeaveWorld()
for (AuraApplicationMap::iterator iter = m_appliedAuras.begin(); iter != m_appliedAuras.end();) for (AuraApplicationMap::iterator iter = m_appliedAuras.begin(); iter != m_appliedAuras.end();)
{ {
if (iter->second->GetBase()->GetOwner()!=this) if (iter->second->GetBase()->GetOwner()!=this)
{
RemoveAura(iter); RemoveAura(iter);
cleanRun = false;
}
else else
++iter; ++iter;
} }
}
while (!cleanRun);
} }
void Unit::RemoveAllAuras() void Unit::RemoveAllAuras()