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 | |
| 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)
| -rw-r--r-- | sql/updates/world/2015_mm_dd_nn_world.sql | 22 | ||||
| -rw-r--r-- | src/server/game/Spells/Spell.cpp | 9 | ||||
| -rw-r--r-- | src/server/game/Spells/SpellInfo.h | 2 | ||||
| -rw-r--r-- | src/server/game/Spells/SpellMgr.cpp | 24 |
4 files changed, 27 insertions, 30 deletions
diff --git a/sql/updates/world/2015_mm_dd_nn_world.sql b/sql/updates/world/2015_mm_dd_nn_world.sql new file mode 100644 index 00000000000..9470f810fb2 --- /dev/null +++ b/sql/updates/world/2015_mm_dd_nn_world.sql @@ -0,0 +1,22 @@ +DELETE FROM `spell_custom_attr` WHERE `entry` IN (1130,1725,3600,14323,14324,14325,32375,32592,39897,42650,43263,43264,53338,58831,58832,58833,58834,58838); +INSERT INTO `spell_custom_attr` (`entry`, `attributes`) VALUES +(1130, 64), -- Hunter spell 1130, Hunter's Mark Rank 1 +(1725, 64), -- Rogue spell 1725, Distract +(3600, 64), -- Greater Earthbind Totem spell 3600, Earthbind +(14323, 64), -- Hunter spell 14323, Hunter's Mark Rank 2 +(14324, 64), -- Hunter spell 14324, Hunter's Mark Rank 3 +(14325, 64), -- Hunter spell 14325, Hunter's Mark Rank 4 +(32375, 64), -- Priest Discipline spell 32375, Mass Dispel +(32592, 64), -- Priest Discipline spell 32592, Mass Dispel +-- Spell ID 35009 - Server-side - Invisibility - Reducing threat +(35009, 64), -- Triggered by Mage Invisibility (Level 68), spells 66 & 67765 +(39897, 64), -- Priest Discipline spell 39897, Mass Dispel +(42650, 64), -- Death Knight Unholy spell 42650, Army of the Dead +(43263, 64), -- Ghoul level 66 spell 43263, Ghoul Taunt +(43264, 64), -- Periodic Taunt, Trigger for Ghoul Taunt +(53338, 64), -- Hunter spell 53338, Hunter's Mark Rank 5 +(58831, 64), -- Mirror Image, spawns left Mirror Image NPC +(58832, 64), -- Mirror Image, Triggers 58831,58833,58834 +(58833, 64), -- Mirror Image, spawns center Mirror Image NPC +(58834, 64), -- Mirror Image, spawns right Mirror Image NPC +(58838, 64); -- Inherit Master's Threat List 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)) diff --git a/src/server/game/Spells/SpellInfo.h b/src/server/game/Spells/SpellInfo.h index 241e7df9544..d042f926d02 100644 --- a/src/server/game/Spells/SpellInfo.h +++ b/src/server/game/Spells/SpellInfo.h @@ -176,7 +176,7 @@ enum SpellCustomAttributes SPELL_ATTR0_CU_CONE_LINE = 0x00000004, SPELL_ATTR0_CU_SHARE_DAMAGE = 0x00000008, SPELL_ATTR0_CU_NO_INITIAL_THREAT = 0x00000010, - SPELL_ATTR0_CU_AURA_CC = 0x00000040, + SPELL_ATTR0_CU_DONT_BREAK_STEALTH = 0x00000040, SPELL_ATTR0_CU_DIRECT_DAMAGE = 0x00000100, SPELL_ATTR0_CU_CHARGE = 0x00000200, SPELL_ATTR0_CU_PICKPOCKET = 0x00000400, diff --git a/src/server/game/Spells/SpellMgr.cpp b/src/server/game/Spells/SpellMgr.cpp index 6305d0a456f..019b9e6f4d5 100644 --- a/src/server/game/Spells/SpellMgr.cpp +++ b/src/server/game/Spells/SpellMgr.cpp @@ -2801,14 +2801,6 @@ void SpellMgr::LoadSpellInfoCustomAttributes() { switch (spellInfo->Effects[j].ApplyAuraName) { - case SPELL_AURA_MOD_POSSESS: - case SPELL_AURA_MOD_CONFUSE: - case SPELL_AURA_MOD_CHARM: - case SPELL_AURA_AOE_CHARM: - case SPELL_AURA_MOD_FEAR: - case SPELL_AURA_MOD_STUN: - spellInfo->AttributesCu |= SPELL_ATTR0_CU_AURA_CC; - break; case SPELL_AURA_PERIODIC_HEAL: case SPELL_AURA_PERIODIC_DAMAGE: case SPELL_AURA_PERIODIC_DAMAGE_PERCENT: @@ -2901,22 +2893,6 @@ void SpellMgr::LoadSpellInfoCustomAttributes() if (spellInfo->SpellVisual[0] == 3879) spellInfo->AttributesCu |= SPELL_ATTR0_CU_CONE_BACK; - switch (spellInfo->SpellFamilyName) - { - case SPELLFAMILY_WARRIOR: - // Shout - if (spellInfo->SpellFamilyFlags[0] & 0x20000 || spellInfo->SpellFamilyFlags[1] & 0x20) - spellInfo->AttributesCu |= SPELL_ATTR0_CU_AURA_CC; - break; - case SPELLFAMILY_DRUID: - // Roar - if (spellInfo->SpellFamilyFlags[0] & 0x8) - spellInfo->AttributesCu |= SPELL_ATTR0_CU_AURA_CC; - break; - default: - break; - } - spellInfo->_InitializeExplicitTargetMask(); } |
