diff options
| author | robinsch <robin.schriever.hude@web.de> | 2015-06-01 07:31:30 +0200 |
|---|---|---|
| committer | tkrokli <tkrokli@hotmail.com> | 2015-11-10 05:33:53 +0100 |
| commit | 5f24fd6c51350b391bb30b53bd813c1ec25f3248 (patch) | |
| tree | 651c19859092fc800db4f6c133ce809e437e5559 /src/server/game/Spells/Spell.cpp | |
| parent | 52692c3f9d09dc781add9cfee043d6f6ec80291a (diff) | |
[3.3.5] Core/Spells: break Stealth and modify Stand State
by @robinsch; closes #14819
Currently (562da2e), only harmful CC spells will break stealth and modify the unit stand state.
This behaviour is wrong. Any harmful spell hit should break stealth and modify the stand state.
There are a few exceptions for this mechanic, such as:
- Mass Dispel (priest spell ID 32375, 32592, 39897)
- Earthbind Totem (Pulse) (spell ID 3600)
- Distract (rogue spell ID 1725)
Diffstat (limited to 'src/server/game/Spells/Spell.cpp')
| -rw-r--r-- | src/server/game/Spells/Spell.cpp | 9 |
1 files changed, 4 insertions, 5 deletions
diff --git a/src/server/game/Spells/Spell.cpp b/src/server/game/Spells/Spell.cpp index 76eefa0bb0e..98267346234 100644 --- a/src/server/game/Spells/Spell.cpp +++ b/src/server/game/Spells/Spell.cpp @@ -2428,9 +2428,8 @@ void Spell::DoAllEffectOnTarget(TargetInfo* target) { m_caster->CombatStart(unit, !m_spellInfo->HasAttribute(SPELL_ATTR3_NO_INITIAL_AGGRO)); - if (m_spellInfo->HasAttribute(SPELL_ATTR0_CU_AURA_CC)) - if (!unit->IsStandState()) - unit->SetStandState(UNIT_STAND_STATE_STAND); + if (!unit->IsStandState()) + unit->SetStandState(UNIT_STAND_STATE_STAND); } if (spellHitTarget) @@ -2514,8 +2513,8 @@ SpellMissInfo Spell::DoSpellHitOnUnit(Unit* unit, uint32 effectMask, bool scaleA if (m_caster->_IsValidAttackTarget(unit, m_spellInfo)) { unit->RemoveAurasWithInterruptFlags(AURA_INTERRUPT_FLAG_HITBYSPELL); - /// @todo This is a hack. But we do not know what types of stealth should be interrupted by CC - if (m_spellInfo->HasAttribute(SPELL_ATTR0_CU_AURA_CC) && unit->IsControlledByPlayer()) + + if (!m_spellInfo->HasAttribute(SPELL_ATTR0_CU_DONT_BREAK_STEALTH)) unit->RemoveAurasByType(SPELL_AURA_MOD_STEALTH); } else if (m_caster->IsFriendlyTo(unit)) |
