*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:
@@ -0,0 +1 @@
|
|||||||
|
UPDATE `spell_bonus_data` SET `direct_bonus` = '0.6453' WHERE `spell_bonus_data`.`entry` =33763;
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
DELETE FROM `spell_linked_spell` WHERE spell_trigger = 33206;
|
||||||
|
INSERT INTO `spell_linked_spell` (`spell_trigger`, `spell_effect`, `type`, `comment`) VALUES
|
||||||
|
( 33206, 44416, 2, 'Pain Suppression (threat)');
|
||||||
@@ -249,7 +249,6 @@ enum SpellCategory
|
|||||||
#define SPELL_ATTR_UNAFFECTED_BY_INVULNERABILITY 0x20000000 // 29 unaffected by invulnerability (hmm possible not...)
|
#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_BREAKABLE_BY_DAMAGE 0x40000000 // 30 breakable by damage?
|
||||||
#define SPELL_ATTR_CANT_CANCEL 0x80000000 // 31 positive aura can't be canceled
|
#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_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_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
|
#define SPELL_ATTR_EX_CHANNELED_1 0x00000004 // 2 channeled target
|
||||||
|
|||||||
+13
-1
@@ -1229,8 +1229,13 @@ bool Aura::modStackAmount(int32 num)
|
|||||||
return false;
|
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;
|
m_duration = duration;
|
||||||
//if (duration<0)
|
//if (duration<0)
|
||||||
//m_permanent=true;
|
//m_permanent=true;
|
||||||
@@ -2483,6 +2488,13 @@ void AuraEffect::HandleAuraDummy(bool apply, bool Real, bool changeAmount)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Wrath of the Astromancer
|
||||||
|
if (GetId()==42783)
|
||||||
|
{
|
||||||
|
m_target->CastSpell(m_target,m_amount,true,NULL,this);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
switch(m_spellProto->SpellFamilyName)
|
switch(m_spellProto->SpellFamilyName)
|
||||||
{
|
{
|
||||||
case SPELLFAMILY_WARLOCK:
|
case SPELLFAMILY_WARLOCK:
|
||||||
|
|||||||
@@ -68,7 +68,7 @@ class TRINITY_DLL_SPEC Aura
|
|||||||
int32 GetAuraMaxDuration() const { return m_maxduration; }
|
int32 GetAuraMaxDuration() const { return m_maxduration; }
|
||||||
void SetAuraMaxDuration(int32 duration) { m_maxduration = duration; }
|
void SetAuraMaxDuration(int32 duration) { m_maxduration = duration; }
|
||||||
int32 GetAuraDuration() const { return m_duration; }
|
int32 GetAuraDuration() const { return m_duration; }
|
||||||
void SetAuraDuration(int32 duration);
|
void SetAuraDuration(int32 duration, bool withMods = false);
|
||||||
void RefreshAura() { SetAuraDuration(m_maxduration); }
|
void RefreshAura() { SetAuraDuration(m_maxduration); }
|
||||||
bool IsExpired() const { return !GetAuraDuration() && !(IsPermanent() || IsPassive()); }
|
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
|
//if spells have exactly the same effect they cannot stack
|
||||||
for(uint32 i = 0; i < 3; ++i)
|
for(uint32 i = 0; i < 3; ++i)
|
||||||
if(spellInfo_1->Effect[i] != spellInfo_2->Effect[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->EffectApplyAuraName[i] != spellInfo_2->EffectApplyAuraName[i]
|
||||||
|| spellInfo_1->EffectMiscValue[i] != spellInfo_2->EffectMiscValue[i]) // paladin resist aura
|
|| spellInfo_1->EffectMiscValue[i] != spellInfo_2->EffectMiscValue[i]) // paladin resist aura
|
||||||
return false; // need itemtype check? need an example to add that check
|
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);
|
SpellEntry const *spellproto = sSpellStore.LookupEntry(spellId);
|
||||||
if (!spellproto) return false;
|
if (!spellproto) return false;
|
||||||
|
|
||||||
|
if (spellproto->Attributes & SPELL_ATTR_UNAFFECTED_BY_INVULNERABILITY)
|
||||||
|
return false;
|
||||||
|
|
||||||
if(dispelSpell->Attributes & SPELL_ATTR_UNAFFECTED_BY_INVULNERABILITY)
|
if(dispelSpell->Attributes & SPELL_ATTR_UNAFFECTED_BY_INVULNERABILITY)
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
|
|||||||
+6
-4
@@ -5910,7 +5910,7 @@ bool Unit::HandleDummyAuraProc(Unit *pVictim, uint32 damage, AuraEffect* trigger
|
|||||||
// lookup Slice and Dice
|
// lookup Slice and Dice
|
||||||
if (AuraEffect * aur = GetAura(SPELL_AURA_MOD_HASTE, SPELLFAMILY_ROGUE,0x40000, 0, 0))
|
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 true;
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
@@ -12812,6 +12812,11 @@ bool Unit::IsTriggeredAtSpellProcEvent(Unit *pVictim, Aura * aura, SpellEntry co
|
|||||||
if (!EventProcFlag)
|
if (!EventProcFlag)
|
||||||
return false;
|
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
|
// Additional checks for triggered spells
|
||||||
if (procExtra & PROC_EX_INTERNAL_TRIGGERED)
|
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());
|
CastCustomSpell(target,spellProto->Id,&heal,NULL,NULL,true,NULL,triggeredByAura,caster->GetGUID());
|
||||||
if (Aura * aur = target->GetAura(spellProto->Id, caster->GetGUID()))
|
if (Aura * aur = target->GetAura(spellProto->Id, caster->GetGUID()))
|
||||||
aur->SetAuraCharges(jumps);
|
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