diff --git a/Source/Game/Achievements/CriteriaHandler.cs b/Source/Game/Achievements/CriteriaHandler.cs index f0325c72d..872948e2c 100644 --- a/Source/Game/Achievements/CriteriaHandler.cs +++ b/Source/Game/Achievements/CriteriaHandler.cs @@ -2611,6 +2611,9 @@ namespace Game.Achievements _criteriaTreeByCriteria.Add(pair.Value.Entry.CriteriaID, pair.Value); } + for (var i = 0; i < (int)CriteriaCondition.Max; ++i) + _criteriasByFailEvent[i] = new MultiMap(); + // Load criteria uint criterias = 0; uint guildCriterias = 0; diff --git a/Source/Game/Entities/Player/Player.DB.cs b/Source/Game/Entities/Player/Player.DB.cs index d5780f899..07e179277 100644 --- a/Source/Game/Entities/Player/Player.DB.cs +++ b/Source/Game/Entities/Player/Player.DB.cs @@ -1696,12 +1696,13 @@ namespace Game.Entities } if (spell.Value.State == PlayerSpellState.Removed) - m_spells.Remove(spell.Key); - else { - spell.Value.State = PlayerSpellState.Unchanged; + m_spells.Remove(spell.Key); continue; } + + if (spell.Value.State != PlayerSpellState.Temporary) + spell.Value.State = PlayerSpellState.Unchanged; } } void _SaveAuras(SQLTransaction trans) diff --git a/Source/Game/Entities/Player/Player.Items.cs b/Source/Game/Entities/Player/Player.Items.cs index 7f82bdf13..1bf112c56 100644 --- a/Source/Game/Entities/Player/Player.Items.cs +++ b/Source/Game/Entities/Player/Player.Items.cs @@ -3912,11 +3912,12 @@ namespace Game.Entities pItem.RemoveFromWorld(); if (del) { - pItem.SetState(ItemUpdateState.Removed, this); ItemTemplate itemTemplate = pItem.GetTemplate(); if (itemTemplate != null) if (itemTemplate.GetFlags().HasAnyFlag(ItemFlags.HasLoot)) Global.LootItemStorage.RemoveStoredLootForContainer(pItem.GetGUID().GetCounter()); + + pItem.SetState(ItemUpdateState.Removed, this); } } diff --git a/Source/Game/Spells/SpellInfo.cs b/Source/Game/Spells/SpellInfo.cs index 493ada45c..26c836ab6 100644 --- a/Source/Game/Spells/SpellInfo.cs +++ b/Source/Game/Spells/SpellInfo.cs @@ -3417,6 +3417,7 @@ namespace Game.Spells case AuraType.ModStalked: case AuraType.PeriodicDamagePercent: case AuraType.PreventResurrection: + case AuraType.Empathy: return false; case AuraType.PeriodicDamage: // used in positive spells also. // part of negative spell if casted at self (prevent cancel)