*Fix diminishing returns for spells casted on a pet.
--HG-- branch : trunk
This commit is contained in:
+1
-1
@@ -1186,7 +1186,7 @@ void Spell::DoSpellHitOnUnit(Unit *unit, const uint32 effectMask)
|
|||||||
m_diminishLevel = unit->GetDiminishing(m_diminishGroup);
|
m_diminishLevel = unit->GetDiminishing(m_diminishGroup);
|
||||||
DiminishingReturnsType type = GetDiminishingReturnsGroupType(m_diminishGroup);
|
DiminishingReturnsType type = GetDiminishingReturnsGroupType(m_diminishGroup);
|
||||||
// Increase Diminishing on unit, current informations for actually casts will use values above
|
// Increase Diminishing on unit, current informations for actually casts will use values above
|
||||||
if((type == DRTYPE_PLAYER && unit->GetTypeId() == TYPEID_PLAYER) || type == DRTYPE_ALL)
|
if((type == DRTYPE_PLAYER && (unit->GetTypeId() == TYPEID_PLAYER || ((Creature*)unit)->isPet() || ((Creature*)unit)->isPossessedByPlayer())) || type == DRTYPE_ALL)
|
||||||
unit->IncrDiminishing(m_diminishGroup);
|
unit->IncrDiminishing(m_diminishGroup);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+5
-5
@@ -10659,13 +10659,13 @@ void Unit::ApplyDiminishingToDuration(DiminishingGroup group, int32 &duration,Un
|
|||||||
if(duration == -1 || group == DIMINISHING_NONE || caster->IsFriendlyTo(this) )
|
if(duration == -1 || group == DIMINISHING_NONE || caster->IsFriendlyTo(this) )
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
// test pet/charm masters instead pets/charmeds
|
||||||
|
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)
|
// Duration of crowd control abilities on pvp target is limited by 10 sec. (2.2.0)
|
||||||
if(duration > 10000 && IsDiminishingReturnsGroupDurationLimited(group))
|
if(duration > 10000 && IsDiminishingReturnsGroupDurationLimited(group))
|
||||||
{
|
{
|
||||||
// test pet/charm masters instead pets/charmeds
|
|
||||||
Unit const* targetOwner = GetCharmerOrOwner();
|
|
||||||
Unit const* casterOwner = caster->GetCharmerOrOwner();
|
|
||||||
|
|
||||||
Unit const* target = targetOwner ? targetOwner : this;
|
Unit const* target = targetOwner ? targetOwner : this;
|
||||||
Unit const* source = casterOwner ? casterOwner : caster;
|
Unit const* source = casterOwner ? casterOwner : caster;
|
||||||
|
|
||||||
@@ -10676,7 +10676,7 @@ void Unit::ApplyDiminishingToDuration(DiminishingGroup group, int32 &duration,Un
|
|||||||
float mod = 1.0f;
|
float mod = 1.0f;
|
||||||
|
|
||||||
// Some diminishings applies to mobs too (for example, Stun)
|
// Some diminishings applies to mobs too (for example, Stun)
|
||||||
if((GetDiminishingReturnsGroupType(group) == DRTYPE_PLAYER && GetTypeId() == TYPEID_PLAYER) || GetDiminishingReturnsGroupType(group) == DRTYPE_ALL)
|
if((GetDiminishingReturnsGroupType(group) == DRTYPE_PLAYER && (targetOwner ? targetOwner->GetTypeId():GetTypeId()) == TYPEID_PLAYER) || GetDiminishingReturnsGroupType(group) == DRTYPE_ALL)
|
||||||
{
|
{
|
||||||
DiminishingLevels diminish = Level;
|
DiminishingLevels diminish = Level;
|
||||||
switch(diminish)
|
switch(diminish)
|
||||||
|
|||||||
Reference in New Issue
Block a user