aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorQAston <none@none>2009-06-16 02:26:40 +0200
committerQAston <none@none>2009-06-16 02:26:40 +0200
commit32bbf26f23e4256817a1ed46d230445cef937247 (patch)
treeb11fe50315cabbcfd48c62c4a5e7e2a1e82240e8
parenta013b9b55c67cb3f15027d5ebedead3e4b456289 (diff)
*Update diminishing returns to 3.1.3
*Correct diminishing return for Entangling Roots and Frostbite - by Larva. --HG-- branch : trunk
-rw-r--r--src/game/SharedDefines.h37
-rw-r--r--src/game/SpellMgr.cpp89
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: