rendered paste bodyIndex: game/Unit.cpp
===================================================================
--- game/Unit.cpp (revision 5407)
+++ game/Unit.cpp (working copy)
@@ -6519,7 +6519,15 @@
if(!Channeled) DotFactor = DotDuration / 15000.0f;
int x = 0;
for(int j = 0; j < 3; j++)
- if(spellProto->Effect[j] == 6) x = j;
+ {
+ if(spellProto->Effect[j] == SPELL_EFFECT_APPLY_AURA &&
+ (spellProto->EffectApplyAuraName[j] == SPELL_AURA_PERIODIC_DAMAGE ||
+ spellProto->EffectApplyAuraName[j] == SPELL_AURA_PERIODIC_LEECH) )
+ {
+ x = j;
+ break;
+ }
+ }
int DotTicks = 6;
if(spellProto->EffectAmplitude[x] != 0)
DotTicks = DotDuration / spellProto->EffectAmplitude[x];
@@ -6692,9 +6700,9 @@
float wspeed = GetAttackTime(BASE_ATTACK)/1000;
if( item && item->GetProto()->InventoryType == INVTYPE_2HWEAPON)
- CastingTime = (uint32)wspeed*3500*0.102f;
+ CastingTime = uint32(wspeed*3500*0.102f);
else
- CastingTime = (uint32)wspeed*3500*0.098f;
+ CastingTime = uint32(wspeed*3500*0.098f);
}
// Judgement of Righteousness - 73%
else if ((spellProto->SpellFamilyFlags & 1024) && spellProto->SpellIconID == 25)
@@ -6704,7 +6712,7 @@
// Seal of Vengeance - 17% per Fully Stacked Tick - 5 Applications
else if ((spellProto->SpellFamilyFlags & 0x80000000000LL) && spellProto->SpellIconID == 2040)
{
- DotFactor = 0.136;
+ DotFactor = 0.17f;
CastingTime = 3500;
}
// Holy shield - 5% of Holy Damage
@@ -6980,9 +6988,10 @@
int32 AdvertisedBenefit = SpellBaseHealingBonus(1<<spellProto->School);
uint32 CastingTime = GetSpellCastTime(sCastTimesStore.LookupEntry(spellProto->CastingTimeIndex));
+ bool Channeled = IsChanneledSpell(spellProto);
if (CastingTime > 7000) CastingTime = 7000;
if (CastingTime < 1500) CastingTime = 1500;
- if (spellProto->Effect[0] == SPELL_EFFECT_APPLY_AURA) CastingTime = 3500;
+ if (spellProto->Effect[0] == SPELL_EFFECT_APPLY_AURA && !Channeled) CastingTime = 3500;
// Healing Taken
AdvertisedBenefit += SpellBaseHealingBonusForVictim(1<<spellProto->School, pVictim);
@@ -7015,10 +7024,18 @@
{
// 200% limit
if(DotDuration > 30000) DotDuration = 30000;
- DotFactor = DotDuration / 15000.0f;
+ if(!Channeled)DotFactor = DotDuration / 15000.0f;
int x = 0;
for(int j = 0; j < 3; j++)
- if(spellProto->Effect[j] == 6) x = j;
+ {
+ if(spellProto->Effect[j] == SPELL_EFFECT_APPLY_AURA &&
+ (spellProto->EffectApplyAuraName[j] == SPELL_AURA_PERIODIC_HEAL ||
+ spellProto->EffectApplyAuraName[j] == SPELL_AURA_PERIODIC_LEECH) )
+ {
+ x = j;
+ break;
+ }
+ }
int DotTicks = 6;
if(spellProto->EffectAmplitude[x] != 0)
DotTicks = DotDuration / spellProto->EffectAmplitude[x];
@@ -7045,6 +7062,9 @@
// Lifebloom final heal
if (spellProto->SpellFamilyFlags & 0x1000000000LL && damagetype != DOT)
CastingTime = 1500;
+ // Tranquilitiy triggered spell
+ if (spellProto->SpellFamilyFlags & 0x80LL)
+ CastingTime = 500;
break;
case SPELLFAMILY_WARRIOR:
case SPELLFAMILY_HUNTER: