*Fix lifebloom final heal coefficient - by nesocip
*Fix aura immunity dispel for spells like Resurrection sickness *Do not proc auras without spellfamilyflags required for totems. *Allow more auras to be displayed in client. *Fix some issues with Cut to the Chase. --HG-- branch : trunk
This commit is contained in:
@@ -249,7 +249,6 @@ enum SpellCategory
|
||||
#define SPELL_ATTR_UNAFFECTED_BY_INVULNERABILITY 0x20000000 // 29 unaffected by invulnerability (hmm possible not...)
|
||||
#define SPELL_ATTR_BREAKABLE_BY_DAMAGE 0x40000000 // 30 breakable by damage?
|
||||
#define SPELL_ATTR_CANT_CANCEL 0x80000000 // 31 positive aura can't be canceled
|
||||
|
||||
#define SPELL_ATTR_EX_DISMISS_PET 0x00000001 // 0 dismiss pet and not allow to summon new one?
|
||||
#define SPELL_ATTR_EX_DRAIN_ALL_POWER 0x00000002 // 1 use all power (Only paladin Lay of Hands and Bunyanize)
|
||||
#define SPELL_ATTR_EX_CHANNELED_1 0x00000004 // 2 channeled target
|
||||
|
||||
+13
-1
@@ -1229,8 +1229,13 @@ bool Aura::modStackAmount(int32 num)
|
||||
return false;
|
||||
}
|
||||
|
||||
void Aura::SetAuraDuration(int32 duration)
|
||||
void Aura::SetAuraDuration(int32 duration, bool withMods)
|
||||
{
|
||||
if (withMods)
|
||||
{
|
||||
if (Player * modOwner = m_target->GetSpellModOwner())
|
||||
modOwner->ApplySpellMod(GetId(), SPELLMOD_DURATION, duration);
|
||||
}
|
||||
m_duration = duration;
|
||||
//if (duration<0)
|
||||
//m_permanent=true;
|
||||
@@ -2483,6 +2488,13 @@ void AuraEffect::HandleAuraDummy(bool apply, bool Real, bool changeAmount)
|
||||
return;
|
||||
}
|
||||
|
||||
// Wrath of the Astromancer
|
||||
if (GetId()==42783)
|
||||
{
|
||||
m_target->CastSpell(m_target,m_amount,true,NULL,this);
|
||||
return;
|
||||
}
|
||||
|
||||
switch(m_spellProto->SpellFamilyName)
|
||||
{
|
||||
case SPELLFAMILY_WARLOCK:
|
||||
|
||||
@@ -68,7 +68,7 @@ class TRINITY_DLL_SPEC Aura
|
||||
int32 GetAuraMaxDuration() const { return m_maxduration; }
|
||||
void SetAuraMaxDuration(int32 duration) { m_maxduration = duration; }
|
||||
int32 GetAuraDuration() const { return m_duration; }
|
||||
void SetAuraDuration(int32 duration);
|
||||
void SetAuraDuration(int32 duration, bool withMods = false);
|
||||
void RefreshAura() { SetAuraDuration(m_maxduration); }
|
||||
bool IsExpired() const { return !GetAuraDuration() && !(IsPermanent() || IsPassive()); }
|
||||
|
||||
|
||||
@@ -2649,10 +2649,6 @@ bool SpellMgr::IsNoStackSpellDueToSpell(uint32 spellId_1, uint32 spellId_2, bool
|
||||
//if spells have exactly the same effect they cannot stack
|
||||
for(uint32 i = 0; i < 3; ++i)
|
||||
if(spellInfo_1->Effect[i] != spellInfo_2->Effect[i]
|
||||
// Overkill and master of subtlety need this
|
||||
|| spellInfo_1->EffectApplyAuraName[i] == SPELL_AURA_DUMMY
|
||||
|| spellInfo_1->EffectApplyAuraName[i] == SPELL_AURA_PERIODIC_DUMMY
|
||||
|
||||
|| spellInfo_1->EffectApplyAuraName[i] != spellInfo_2->EffectApplyAuraName[i]
|
||||
|| spellInfo_1->EffectMiscValue[i] != spellInfo_2->EffectMiscValue[i]) // paladin resist aura
|
||||
return false; // need itemtype check? need an example to add that check
|
||||
@@ -2666,6 +2662,9 @@ bool IsDispelableBySpell(SpellEntry const * dispelSpell, uint32 spellId, bool de
|
||||
SpellEntry const *spellproto = sSpellStore.LookupEntry(spellId);
|
||||
if (!spellproto) return false;
|
||||
|
||||
if (spellproto->Attributes & SPELL_ATTR_UNAFFECTED_BY_INVULNERABILITY)
|
||||
return false;
|
||||
|
||||
if(dispelSpell->Attributes & SPELL_ATTR_UNAFFECTED_BY_INVULNERABILITY)
|
||||
return true;
|
||||
|
||||
|
||||
+6
-4
@@ -5910,7 +5910,7 @@ bool Unit::HandleDummyAuraProc(Unit *pVictim, uint32 damage, AuraEffect* trigger
|
||||
// lookup Slice and Dice
|
||||
if (AuraEffect * aur = GetAura(SPELL_AURA_MOD_HASTE, SPELLFAMILY_ROGUE,0x40000, 0, 0))
|
||||
{
|
||||
aur->GetParentAura()->SetAuraDuration(GetSpellMaxDuration(aur->GetSpellProto()));
|
||||
aur->GetParentAura()->SetAuraDuration(GetSpellMaxDuration(aur->GetSpellProto()), true);
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
@@ -12812,6 +12812,11 @@ bool Unit::IsTriggeredAtSpellProcEvent(Unit *pVictim, Aura * aura, SpellEntry co
|
||||
if (!EventProcFlag)
|
||||
return false;
|
||||
|
||||
// Do not proc spells for totem if aura does not require family to proc
|
||||
if (GetTypeId()==TYPEID_UNIT && isTotem() && ((*Totem)this)->target->IsControlledByPlayer())
|
||||
if (!spellProcEvent || !spellProcEvent->spellFamilyFlags)
|
||||
return false;
|
||||
|
||||
// Additional checks for triggered spells
|
||||
if (procExtra & PROC_EX_INTERNAL_TRIGGERED)
|
||||
{
|
||||
@@ -12922,9 +12927,6 @@ bool Unit::HandleAuraRaidProcFromChargeWithValue( AuraEffect* triggeredByAura )
|
||||
CastCustomSpell(target,spellProto->Id,&heal,NULL,NULL,true,NULL,triggeredByAura,caster->GetGUID());
|
||||
if (Aura * aur = target->GetAura(spellProto->Id, caster->GetGUID()))
|
||||
aur->SetAuraCharges(jumps);
|
||||
|
||||
//bonus must be applied after aura cast on target
|
||||
heal = caster->SpellHealingBonus(this, spellProto, heal, HEAL);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user