diff options
| author | Aaron126 <world_of_warcraft@ymail.com> | 2015-01-17 15:04:31 -0600 |
|---|---|---|
| committer | Aaron126 <world_of_warcraft@ymail.com> | 2015-01-17 15:04:31 -0600 |
| commit | f0e5c8b78fb1d345e5b34997d76c8065bd1991e0 (patch) | |
| tree | 826049402a781b607d4f962915a86c1dc73d8a71 /src/server/game/Entities/Unit | |
| parent | e23d95c4c6dfd3cbeadc807bc402b543b7b7b6a4 (diff) | |
Core/Spells: Update DR's for WoD
thx @fatalaim for doing some of the spells
Diffstat (limited to 'src/server/game/Entities/Unit')
| -rw-r--r-- | src/server/game/Entities/Unit/Unit.cpp | 81 |
1 files changed, 51 insertions, 30 deletions
diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp index f9ed7acb3eb..85c3744b63f 100644 --- a/src/server/game/Entities/Unit/Unit.cpp +++ b/src/server/game/Entities/Unit/Unit.cpp @@ -10912,8 +10912,8 @@ DiminishingLevels Unit::GetDiminishing(DiminishingGroup group) if (!i->hitTime) return DIMINISHING_LEVEL_1; - // If last spell was cast more than 15 seconds ago - reset the count. - if (i->stack == 0 && getMSTimeDiff(i->hitTime, getMSTime()) > 15000) + // If last spell was cast more than 18 seconds ago - reset the count. + if (i->stack == 0 && getMSTimeDiff(i->hitTime, getMSTime()) > 18 * IN_MILLISECONDS) { i->hitCount = DIMINISHING_LEVEL_1; return DIMINISHING_LEVEL_1; @@ -10945,53 +10945,74 @@ float Unit::ApplyDiminishingToDuration(DiminishingGroup group, int32 &duration, return 1.0f; // test pet/charm masters instead pets/charmeds - Unit const* tarGetOwner = GetCharmerOrOwner(); + Unit const* targetOwner = GetCharmerOrOwner(); Unit const* casterOwner = caster->GetCharmerOrOwner(); - // Duration of crowd control abilities on pvp target is limited by 10 sec. (2.2.0) if (limitduration > 0 && duration > limitduration) { - Unit const* target = tarGetOwner ? tarGetOwner : this; + Unit const* target = targetOwner ? targetOwner : this; Unit const* source = casterOwner ? casterOwner : caster; if ((target->GetTypeId() == TYPEID_PLAYER - || target->ToCreature()->GetCreatureTemplate()->flags_extra & CREATURE_FLAG_EXTRA_ALL_DIMINISH) + || (target->ToCreature()->GetCreatureTemplate()->flags_extra & CREATURE_FLAG_EXTRA_ALL_DIMINISH)) && source->GetTypeId() == TYPEID_PLAYER) duration = limitduration; } float mod = 1.0f; - if (group == DIMINISHING_TAUNT) + switch (group) { - if (GetTypeId() == TYPEID_UNIT && (ToCreature()->GetCreatureTemplate()->flags_extra & CREATURE_FLAG_EXTRA_TAUNT_DIMINISH)) + case DIMINISHING_TAUNT: { - DiminishingLevels diminish = Level; - switch (diminish) + if (GetTypeId() == TYPEID_UNIT && (ToCreature()->GetCreatureTemplate()->flags_extra & CREATURE_FLAG_EXTRA_TAUNT_DIMINISH)) { - case DIMINISHING_LEVEL_1: break; - case DIMINISHING_LEVEL_2: mod = 0.65f; break; - case DIMINISHING_LEVEL_3: mod = 0.4225f; break; - case DIMINISHING_LEVEL_4: mod = 0.274625f; break; - case DIMINISHING_LEVEL_TAUNT_IMMUNE: mod = 0.0f; break; - default: break; + DiminishingLevels diminish = Level; + switch (diminish) + { + case DIMINISHING_LEVEL_1: break; + case DIMINISHING_LEVEL_2: mod = 0.65f; break; + case DIMINISHING_LEVEL_3: mod = 0.4225f; break; + case DIMINISHING_LEVEL_4: mod = 0.274625f; break; + case DIMINISHING_LEVEL_TAUNT_IMMUNE: mod = 0.0f; break; + default: break; + } } + break; } - } - // Some diminishings applies to mobs too (for example, Stun) - else if ((GetDiminishingReturnsGroupType(group) == DRTYPE_PLAYER - && ((tarGetOwner ? (tarGetOwner->GetTypeId() == TYPEID_PLAYER) : (GetTypeId() == TYPEID_PLAYER)) - || (GetTypeId() == TYPEID_UNIT && ToCreature()->GetCreatureTemplate()->flags_extra & CREATURE_FLAG_EXTRA_ALL_DIMINISH))) - || GetDiminishingReturnsGroupType(group) == DRTYPE_ALL) - { - DiminishingLevels diminish = Level; - switch (diminish) + case DIMINISHING_AOE_KNOCKBACK: + { + if ((GetDiminishingReturnsGroupType(group) == DRTYPE_PLAYER && (((targetOwner ? targetOwner : this)->ToPlayer()) + || (ToCreature() && (ToCreature()->GetCreatureTemplate()->flags_extra & CREATURE_FLAG_EXTRA_ALL_DIMINISH)))) + || GetDiminishingReturnsGroupType(group) == DRTYPE_ALL) + { + DiminishingLevels diminish = Level; + switch (diminish) + { + case DIMINISHING_LEVEL_1: break; + case DIMINISHING_LEVEL_2: mod = 0.0f; break; + default: break; + } + } + break; + } + default: { - case DIMINISHING_LEVEL_1: break; - case DIMINISHING_LEVEL_2: mod = 0.5f; break; - case DIMINISHING_LEVEL_3: mod = 0.25f; break; - case DIMINISHING_LEVEL_IMMUNE: mod = 0.0f; break; - default: break; + if ((GetDiminishingReturnsGroupType(group) == DRTYPE_PLAYER && (((targetOwner ? targetOwner : this)->ToPlayer()) + || (ToCreature() && (ToCreature()->GetCreatureTemplate()->flags_extra & CREATURE_FLAG_EXTRA_ALL_DIMINISH)))) + || GetDiminishingReturnsGroupType(group) == DRTYPE_ALL) + { + DiminishingLevels diminish = Level; + switch (diminish) + { + case DIMINISHING_LEVEL_1: break; + case DIMINISHING_LEVEL_2: mod = 0.5f; break; + case DIMINISHING_LEVEL_3: mod = 0.25f; break; + case DIMINISHING_LEVEL_IMMUNE: mod = 0.0f; break; + default: break; + } + } + break; } } |
