diff options
author | QAston <none@none> | 2009-06-16 02:26:40 +0200 |
---|---|---|
committer | QAston <none@none> | 2009-06-16 02:26:40 +0200 |
commit | 32bbf26f23e4256817a1ed46d230445cef937247 (patch) | |
tree | b11fe50315cabbcfd48c62c4a5e7e2a1e82240e8 /src | |
parent | a013b9b55c67cb3f15027d5ebedead3e4b456289 (diff) |
*Update diminishing returns to 3.1.3
*Correct diminishing return for Entangling Roots and Frostbite - by Larva.
--HG--
branch : trunk
Diffstat (limited to 'src')
-rw-r--r-- | src/game/SharedDefines.h | 37 | ||||
-rw-r--r-- | src/game/SpellMgr.cpp | 89 |
2 files changed, 72 insertions, 54 deletions
diff --git a/src/game/SharedDefines.h b/src/game/SharedDefines.h index b6ac8054ce2..cebd9c07e5d 100644 --- a/src/game/SharedDefines.h +++ b/src/game/SharedDefines.h @@ -2384,30 +2384,23 @@ enum DiminishingGroup { // Common Groups DIMINISHING_NONE, - DIMINISHING_CONTROL_STUN, // Player Controlled stuns - DIMINISHING_TRIGGER_STUN, // By aura proced stuns, usualy chance on hit talents - DIMINISHING_SLEEP, - DIMINISHING_CONTROL_ROOT, // Immobilizing effects from casted spells - DIMINISHING_TRIGGER_ROOT, // Immobilizing effects from triggered spells like Frostbite - DIMINISHING_FEAR, // Non-warlock fears + DIMINISHING_CONTROL_STUN, // Player Controlled stuns + DIMINISHING_TRIGGER_STUN, // By aura proced stuns, usualy chance on hit talents + DIMINISHING_CONTROL_ROOT, // Immobilizing effects from casted spells + DIMINISHING_TRIGGER_ROOT, // Immobilizing effects from triggered spells like Frostbite DIMINISHING_CHARM, - // Mage Specific - DIMINISHING_POLYMORPH, - // Rogue Specific - DIMINISHING_KIDNEYSHOT, // Kidney Shot is not diminished with Cheap Shot - // Warlock Specific - DIMINISHING_DEATHCOIL, // Death Coil Diminish only with another Death Coil - DIMINISHING_WARLOCK_FEAR, // Also with Sedduction - // Shared Class Specific - DIMINISHING_BLIND_CYCLONE, // From 2.3.0 - DIMINISHING_DISARM, // From 2.3.0 - DIMINISHING_SILENCE, // From 2.3.0 - DIMINISHING_FREEZE, // Hunter's Freezing Trap - DIMINISHING_KNOCKOUT, // Also with Sap, all Knockout mechanics are here + DIMINISHING_SLEEP_FREEZE, + DIMINISHING_POLYMORPH, // Also: Gouge, Sap, Repentance, Hungering Cold + DIMINISHING_CHEAPSHOT_POUNCE, + DIMINISHING_DEATHCOIL, // Death Coil Diminish only with another Death Coil + DIMINISHING_SILENCE, + DIMINISHING_KNOCKOUT, // Sap, Knockout mechanics + DIMINISHING_DISARM, + DIMINISHING_FEAR_BLIND, // Intimidating Shout, Howl of Terror, Blind + DIMINISHING_FEAR, DIMINISHING_BANISH, - // Other - // Don't Diminish, but limit duration to 10s - DIMINISHING_LIMITONLY + DIMINISHING_TAUNT, + DIMINISHING_LIMITONLY // Don't Diminish, but limit duration to 10s }; enum DungeonDifficulties diff --git a/src/game/SpellMgr.cpp b/src/game/SpellMgr.cpp index 5998933afc1..a522d8c051a 100644 --- a/src/game/SpellMgr.cpp +++ b/src/game/SpellMgr.cpp @@ -2547,25 +2547,18 @@ DiminishingGroup GetDiminishingReturnsGroupForSpell(SpellEntry const* spellproto { case SPELLFAMILY_ROGUE: { - // Kidney Shot - if (spellproto->SpellFamilyFlags[0] & 0x200000) - return DIMINISHING_KIDNEYSHOT; // Sap - else if (spellproto->SpellFamilyFlags[0] & 0x80) + if (spellproto->SpellFamilyFlags[0] & 0x80) return DIMINISHING_POLYMORPH; // Gouge else if (spellproto->SpellFamilyFlags[0] & 0x8) return DIMINISHING_POLYMORPH; // Blind else if (spellproto->SpellFamilyFlags[0] & 0x1000000) - return DIMINISHING_BLIND_CYCLONE; - break; - } - case SPELLFAMILY_HUNTER: - { - // Freezing trap - if (spellproto->SpellFamilyFlags[0] & 0x8) - return DIMINISHING_FREEZE; + return DIMINISHING_FEAR_BLIND; + // Cheap Shot + else if (spellproto->SpellFamilyFlags[0] & 0x400) + return DIMINISHING_CHEAPSHOT_POUNCE; break; } case SPELLFAMILY_WARLOCK: @@ -2573,19 +2566,30 @@ DiminishingGroup GetDiminishingReturnsGroupForSpell(SpellEntry const* spellproto // Death Coil if (spellproto->SpellFamilyFlags[0] & 0x80000) return DIMINISHING_DEATHCOIL; - // Seduction - else if (spellproto->SpellFamilyFlags[0] & 0x40000000) - return DIMINISHING_FEAR; // Curses/etc else if (spellproto->SpellFamilyFlags[0] & 0x80000000) return DIMINISHING_LIMITONLY; + // Howl of Terror + else if (spellproto->SpellFamilyFlags[1] & 0x8) + return DIMINISHING_FEAR_BLIND; break; } case SPELLFAMILY_DRUID: { - // Cyclone - if (spellproto->SpellFamilyFlags[1] & 0x20) - return DIMINISHING_BLIND_CYCLONE; + // Pounce + if (spellproto->SpellFamilyFlags[0] & 0x20000) + return DIMINISHING_CHEAPSHOT_POUNCE; + + //Entangling Roots: to force natures grasp proc to be control root + else if (spellproto->SpellFamilyFlags[0] & 0x00000200) + return DIMINISHING_CONTROL_ROOT; + break; + } + case SPELLFAMILY_MAGE: + { + // Frostbite + if (spellproto->SpellFamilyFlags[1] & 0x80000000) + return DIMINISHING_TRIGGER_ROOT; break; } case SPELLFAMILY_WARRIOR: @@ -2593,6 +2597,26 @@ DiminishingGroup GetDiminishingReturnsGroupForSpell(SpellEntry const* spellproto // Hamstring - limit duration to 10s in PvP if (spellproto->SpellFamilyFlags[0] & 0x2) return DIMINISHING_LIMITONLY; + // Intimidating Shout + else if (spellproto->SpellFamilyFlags[0] & 0x40000) + return DIMINISHING_FEAR_BLIND; + // Charge + else if (spellproto->SpellFamilyFlags[0] & 0x1) + return DIMINISHING_NONE; + break; + } + case SPELLFAMILY_PALADIN: + { + // Repentance + if (spellproto->SpellFamilyFlags[0] & 0x4) + return DIMINISHING_POLYMORPH; + break; + } + case SPELLFAMILY_DEATHKNIGHT: + { + // Hungering Cold + if (spellproto->SpellIconID == 2797) + return DIMINISHING_POLYMORPH; break; } default: @@ -2603,19 +2627,23 @@ DiminishingGroup GetDiminishingReturnsGroupForSpell(SpellEntry const* spellproto uint32 mechanic = GetAllSpellMechanicMask(spellproto); if (mechanic == MECHANIC_NONE) return DIMINISHING_NONE; if (mechanic & (1<<MECHANIC_STUN)) return triggered ? DIMINISHING_TRIGGER_STUN : DIMINISHING_CONTROL_STUN; - if (mechanic & (1<<MECHANIC_SLEEP)) return DIMINISHING_SLEEP; + if (mechanic & ((1<<MECHANIC_SLEEP) | (1<<MECHANIC_FREEZE))) return DIMINISHING_SLEEP_FREEZE; if (mechanic & (1<<MECHANIC_POLYMORPH)) return DIMINISHING_POLYMORPH; if (mechanic & (1<<MECHANIC_ROOT)) return triggered ? DIMINISHING_TRIGGER_ROOT : DIMINISHING_CONTROL_ROOT; if (mechanic & (1<<MECHANIC_FEAR)) return DIMINISHING_FEAR; if (mechanic & (1<<MECHANIC_CHARM)) return DIMINISHING_CHARM; if (mechanic & (1<<MECHANIC_SILENCE)) return DIMINISHING_SILENCE; if (mechanic & (1<<MECHANIC_DISARM)) return DIMINISHING_DISARM; - if (mechanic & (1<<MECHANIC_FREEZE)) return DIMINISHING_FREEZE; if (mechanic & ((1<<MECHANIC_KNOCKOUT) | (1<<MECHANIC_SAPPED))) return DIMINISHING_KNOCKOUT; if (mechanic & (1<<MECHANIC_BANISH)) return DIMINISHING_BANISH; if (mechanic & (1<<MECHANIC_HORROR)) return DIMINISHING_DEATHCOIL; - + // Get by effect + for (uint8 i = 0 ; i < MAX_SPELL_EFFECTS; ++i) + { + if (spellproto->EffectApplyAuraName[i] == SPELL_AURA_MOD_TAUNT) + return DIMINISHING_TAUNT; + } return DIMINISHING_NONE; } @@ -2625,19 +2653,17 @@ bool IsDiminishingReturnsGroupDurationLimited(DiminishingGroup group) { case DIMINISHING_CONTROL_STUN: case DIMINISHING_TRIGGER_STUN: - case DIMINISHING_KIDNEYSHOT: - case DIMINISHING_SLEEP: + case DIMINISHING_SLEEP_FREEZE: case DIMINISHING_CONTROL_ROOT: case DIMINISHING_TRIGGER_ROOT: case DIMINISHING_FEAR: - case DIMINISHING_WARLOCK_FEAR: + case DIMINISHING_FEAR_BLIND: case DIMINISHING_CHARM: case DIMINISHING_POLYMORPH: - case DIMINISHING_FREEZE: case DIMINISHING_KNOCKOUT: - case DIMINISHING_BLIND_CYCLONE: case DIMINISHING_BANISH: case DIMINISHING_LIMITONLY: + case DIMINISHING_CHEAPSHOT_POUNCE: return true; default: return false; @@ -2649,12 +2675,13 @@ DiminishingReturnsType GetDiminishingReturnsGroupType(DiminishingGroup group) { switch(group) { - case DIMINISHING_BLIND_CYCLONE: + case DIMINISHING_TAUNT: case DIMINISHING_CONTROL_STUN: case DIMINISHING_TRIGGER_STUN: - case DIMINISHING_KIDNEYSHOT: + case DIMINISHING_CHEAPSHOT_POUNCE: + case DIMINISHING_FEAR_BLIND: return DRTYPE_ALL; - case DIMINISHING_SLEEP: + case DIMINISHING_BANISH: case DIMINISHING_CONTROL_ROOT: case DIMINISHING_TRIGGER_ROOT: case DIMINISHING_FEAR: @@ -2663,9 +2690,7 @@ DiminishingReturnsType GetDiminishingReturnsGroupType(DiminishingGroup group) case DIMINISHING_SILENCE: case DIMINISHING_DISARM: case DIMINISHING_DEATHCOIL: - case DIMINISHING_FREEZE: - case DIMINISHING_BANISH: - case DIMINISHING_WARLOCK_FEAR: + case DIMINISHING_SLEEP_FREEZE: case DIMINISHING_KNOCKOUT: return DRTYPE_PLAYER; default: |