*Fix amount of paladin's spells damage.
*Fix problems with aurastate remove. --HG-- branch : trunk
This commit is contained in:
@@ -940,13 +940,12 @@ void Aura::_RemoveAura()
|
|||||||
if(slot >= MAX_AURAS) // slot not set
|
if(slot >= MAX_AURAS) // slot not set
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
bool lastaura=true;
|
||||||
|
|
||||||
AuraSlotEntry *entry = m_target->GetVisibleAura(slot);
|
AuraSlotEntry *entry = m_target->GetVisibleAura(slot);
|
||||||
if(!entry) //slot already removed-shouldn't happen
|
if (entry)
|
||||||
return;
|
{
|
||||||
|
|
||||||
entry->m_slotAuras[GetEffIndex()]=NULL; //unregister aura
|
entry->m_slotAuras[GetEffIndex()]=NULL; //unregister aura
|
||||||
|
|
||||||
bool lastaura = true;
|
|
||||||
for(uint8 i = 0; i < 3; ++i) //check slot for more auras of the spell
|
for(uint8 i = 0; i < 3; ++i) //check slot for more auras of the spell
|
||||||
{
|
{
|
||||||
if(entry->m_slotAuras[i])
|
if(entry->m_slotAuras[i])
|
||||||
@@ -954,6 +953,8 @@ void Aura::_RemoveAura()
|
|||||||
lastaura = false;
|
lastaura = false;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// only remove icon when the last aura of the spell is removed (current aura already removed from list)
|
// only remove icon when the last aura of the spell is removed (current aura already removed from list)
|
||||||
@@ -977,7 +978,7 @@ void Aura::_RemoveAura()
|
|||||||
foundMask|=(*i).second->GetAuraStateMask();
|
foundMask|=(*i).second->GetAuraStateMask();
|
||||||
}
|
}
|
||||||
// Remove only aurastates which were not found
|
// Remove only aurastates which were not found
|
||||||
foundMask&=~GetAuraStateMask();
|
foundMask = GetAuraStateMask() &~foundMask;
|
||||||
if (foundMask)
|
if (foundMask)
|
||||||
m_target->ApplyModFlag(UNIT_FIELD_AURASTATE, foundMask, false);
|
m_target->ApplyModFlag(UNIT_FIELD_AURASTATE, foundMask, false);
|
||||||
}
|
}
|
||||||
|
|||||||
+10
-14
@@ -620,7 +620,7 @@ void Spell::SpellDamageSchoolDmg(uint32 effect_idx)
|
|||||||
case SPELLFAMILY_PALADIN:
|
case SPELLFAMILY_PALADIN:
|
||||||
{
|
{
|
||||||
// Judgement of Vengeance/Corruption ${1+0.22*$SPH+0.14*$AP} + 10% for each application of Holy Vengeance/Blood Corruption on the target
|
// Judgement of Vengeance/Corruption ${1+0.22*$SPH+0.14*$AP} + 10% for each application of Holy Vengeance/Blood Corruption on the target
|
||||||
if((m_spellInfo->SpellFamilyFlags[1] & 0x800) && m_spellInfo->SpellIconID==2292)
|
if((m_spellInfo->SpellFamilyFlags[1] & 0x400000) && m_spellInfo->SpellIconID==2292)
|
||||||
{
|
{
|
||||||
float ap = m_caster->GetTotalAttackPowerValue(BASE_ATTACK);
|
float ap = m_caster->GetTotalAttackPowerValue(BASE_ATTACK);
|
||||||
int32 holy = m_caster->SpellBaseDamageBonus(GetSpellSchoolMask(m_spellInfo)) +
|
int32 holy = m_caster->SpellBaseDamageBonus(GetSpellSchoolMask(m_spellInfo)) +
|
||||||
@@ -639,21 +639,17 @@ void Spell::SpellDamageSchoolDmg(uint32 effect_idx)
|
|||||||
if(stacks)
|
if(stacks)
|
||||||
damage += damage * stacks * 10 /100;
|
damage += damage * stacks * 10 /100;
|
||||||
}
|
}
|
||||||
// Avenger's Shield ($m1+0.07*$SPH+0.07*$AP) - ranged sdb for future
|
// Avenger's Shield ($m1+0.07*$SPH+0.07*$AP)
|
||||||
else if(m_spellInfo->SpellFamilyFlags[0] & 0x4000)
|
else if(m_spellInfo->SpellFamilyFlags[0] & 0x4000)
|
||||||
{
|
{
|
||||||
float ap = m_caster->GetTotalAttackPowerValue(BASE_ATTACK);
|
float ap = m_caster->GetTotalAttackPowerValue(BASE_ATTACK);
|
||||||
int32 holy = m_caster->SpellBaseDamageBonus(GetSpellSchoolMask(m_spellInfo)) +
|
damage += int32(ap * 0.07f);
|
||||||
m_caster->SpellBaseDamageBonusForVictim(GetSpellSchoolMask(m_spellInfo), unitTarget);
|
|
||||||
damage += int32(ap * 0.07f) + int32(holy * 7 / 100);
|
|
||||||
}
|
}
|
||||||
// Hammer of Wrath ($m1+0.15*$SPH+0.15*$AP) - ranged type sdb future fix
|
// Hammer of Wrath ($m1+0.15*$SPH+0.15*$AP)
|
||||||
else if(m_spellInfo->SpellFamilyFlags[1] & 0x00000080)
|
else if(m_spellInfo->SpellFamilyFlags[1] & 0x00000080)
|
||||||
{
|
{
|
||||||
float ap = m_caster->GetTotalAttackPowerValue(BASE_ATTACK);
|
float ap = m_caster->GetTotalAttackPowerValue(BASE_ATTACK);
|
||||||
int32 holy = m_caster->SpellBaseDamageBonus(GetSpellSchoolMask(m_spellInfo)) +
|
damage += int32(ap * 0.15f);
|
||||||
m_caster->SpellBaseDamageBonusForVictim(GetSpellSchoolMask(m_spellInfo), unitTarget);
|
|
||||||
damage += int32(ap * 0.15f) + int32(holy * 15 / 100);
|
|
||||||
}
|
}
|
||||||
// Hammer of the Righteous
|
// Hammer of the Righteous
|
||||||
else if(m_spellInfo->SpellFamilyFlags[1]&0x00040000)
|
else if(m_spellInfo->SpellFamilyFlags[1]&0x00040000)
|
||||||
@@ -5148,26 +5144,26 @@ void Spell::EffectScriptEffect(uint32 effIndex)
|
|||||||
if (aura->GetCasterGUID() != m_caster->GetGUID())
|
if (aura->GetCasterGUID() != m_caster->GetGUID())
|
||||||
continue;
|
continue;
|
||||||
// Search only Serpent Sting, Viper Sting, Scorpid Sting auras
|
// Search only Serpent Sting, Viper Sting, Scorpid Sting auras
|
||||||
uint64 familyFlag = aura->GetSpellProto()->SpellFamilyFlags;
|
flag96 familyFlag = aura->GetSpellProto()->SpellFamilyFlags;
|
||||||
if (!(familyFlag & 0x000000800000C000LL))
|
if (!(familyFlag[1] & 0x00000080 || familyFlag[0] & 0x0000C000))
|
||||||
continue;
|
continue;
|
||||||
// Refresh aura duration
|
// Refresh aura duration
|
||||||
aura->RefreshAura();
|
aura->RefreshAura();
|
||||||
|
|
||||||
// Serpent Sting - Instantly deals 40% of the damage done by your Serpent Sting.
|
// Serpent Sting - Instantly deals 40% of the damage done by your Serpent Sting.
|
||||||
if (familyFlag & 0x0000000000004000LL && aura->GetEffIndex() == 0)
|
if (familyFlag[0] & 0x4000 && aura->GetEffIndex() == 0)
|
||||||
{
|
{
|
||||||
spellId = 53353; // 53353 Chimera Shot - Serpent
|
spellId = 53353; // 53353 Chimera Shot - Serpent
|
||||||
basePoint = aura->GetModifier()->m_amount * 5 * 40 / 100;
|
basePoint = aura->GetModifier()->m_amount * 5 * 40 / 100;
|
||||||
}
|
}
|
||||||
// Viper Sting - Instantly restores mana to you equal to 60% of the total amount drained by your Viper Sting.
|
// Viper Sting - Instantly restores mana to you equal to 60% of the total amount drained by your Viper Sting.
|
||||||
if (familyFlag & 0x0000008000000000LL && aura->GetEffIndex() == 0)
|
if (familyFlag[1] & 0x00000080 && aura->GetEffIndex() == 0)
|
||||||
{
|
{
|
||||||
spellId = 53358; // 53358 Chimera Shot - Viper
|
spellId = 53358; // 53358 Chimera Shot - Viper
|
||||||
basePoint = aura->GetModifier()->m_amount * 4 * 60 / 100;
|
basePoint = aura->GetModifier()->m_amount * 4 * 60 / 100;
|
||||||
}
|
}
|
||||||
// Scorpid Sting - Attempts to Disarm the target for 10 sec. This effect cannot occur more than once per 1 minute.
|
// Scorpid Sting - Attempts to Disarm the target for 10 sec. This effect cannot occur more than once per 1 minute.
|
||||||
if (familyFlag & 0x0000000000008000LL)
|
if (familyFlag[0] & 0x00008000)
|
||||||
spellId = 53359; // 53359 Chimera Shot - Scorpid
|
spellId = 53359; // 53359 Chimera Shot - Scorpid
|
||||||
// ?? nothing say in spell desc (possibly need addition check)
|
// ?? nothing say in spell desc (possibly need addition check)
|
||||||
//if (familyFlag & 0x0000010000000000LL || // dot
|
//if (familyFlag & 0x0000010000000000LL || // dot
|
||||||
|
|||||||
@@ -573,6 +573,7 @@ enum ProcFlags
|
|||||||
|
|
||||||
PROC_FLAG_TAKEN_OFFHAND_HIT = 0x00400000, // 22 Taken off-hand melee attacks(not used)
|
PROC_FLAG_TAKEN_OFFHAND_HIT = 0x00400000, // 22 Taken off-hand melee attacks(not used)
|
||||||
PROC_FLAG_SUCCESSFUL_OFFHAND_HIT = 0x00800000 // 23 Successful off-hand melee attacks
|
PROC_FLAG_SUCCESSFUL_OFFHAND_HIT = 0x00800000 // 23 Successful off-hand melee attacks
|
||||||
|
// PROC_FLAG_DEATH = 0x01000000
|
||||||
};
|
};
|
||||||
|
|
||||||
#define MELEE_BASED_TRIGGER_MASK (PROC_FLAG_SUCCESSFUL_MILEE_HIT | \
|
#define MELEE_BASED_TRIGGER_MASK (PROC_FLAG_SUCCESSFUL_MILEE_HIT | \
|
||||||
|
|||||||
Reference in New Issue
Block a user