*Fix amount of paladin's spells damage.

*Fix problems with aurastate remove.

--HG--
branch : trunk
This commit is contained in:
QAston
2009-03-06 18:52:39 +01:00
parent 81782e3470
commit ab2fa2e52c
3 changed files with 23 additions and 25 deletions

View File

@@ -940,19 +940,20 @@ void Aura::_RemoveAura()
if(slot >= MAX_AURAS) // slot not set
return;
bool lastaura=true;
AuraSlotEntry *entry = m_target->GetVisibleAura(slot);
if(!entry) //slot already removed-shouldn't happen
return;
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
if (entry)
{
if(entry->m_slotAuras[i])
entry->m_slotAuras[GetEffIndex()]=NULL; //unregister aura
for(uint8 i = 0; i < 3; ++i) //check slot for more auras of the spell
{
lastaura = false;
break;
if(entry->m_slotAuras[i])
{
lastaura = false;
break;
}
}
}
@@ -977,7 +978,7 @@ void Aura::_RemoveAura()
foundMask|=(*i).second->GetAuraStateMask();
}
// Remove only aurastates which were not found
foundMask&=~GetAuraStateMask();
foundMask = GetAuraStateMask() &~foundMask;
if (foundMask)
m_target->ApplyModFlag(UNIT_FIELD_AURASTATE, foundMask, false);
}

View File

@@ -620,7 +620,7 @@ void Spell::SpellDamageSchoolDmg(uint32 effect_idx)
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
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);
int32 holy = m_caster->SpellBaseDamageBonus(GetSpellSchoolMask(m_spellInfo)) +
@@ -639,21 +639,17 @@ void Spell::SpellDamageSchoolDmg(uint32 effect_idx)
if(stacks)
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)
{
float ap = m_caster->GetTotalAttackPowerValue(BASE_ATTACK);
int32 holy = m_caster->SpellBaseDamageBonus(GetSpellSchoolMask(m_spellInfo)) +
m_caster->SpellBaseDamageBonusForVictim(GetSpellSchoolMask(m_spellInfo), unitTarget);
damage += int32(ap * 0.07f) + int32(holy * 7 / 100);
damage += int32(ap * 0.07f);
}
// 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)
{
float ap = m_caster->GetTotalAttackPowerValue(BASE_ATTACK);
int32 holy = m_caster->SpellBaseDamageBonus(GetSpellSchoolMask(m_spellInfo)) +
m_caster->SpellBaseDamageBonusForVictim(GetSpellSchoolMask(m_spellInfo), unitTarget);
damage += int32(ap * 0.15f) + int32(holy * 15 / 100);
damage += int32(ap * 0.15f);
}
// Hammer of the Righteous
else if(m_spellInfo->SpellFamilyFlags[1]&0x00040000)
@@ -5148,26 +5144,26 @@ void Spell::EffectScriptEffect(uint32 effIndex)
if (aura->GetCasterGUID() != m_caster->GetGUID())
continue;
// Search only Serpent Sting, Viper Sting, Scorpid Sting auras
uint64 familyFlag = aura->GetSpellProto()->SpellFamilyFlags;
if (!(familyFlag & 0x000000800000C000LL))
flag96 familyFlag = aura->GetSpellProto()->SpellFamilyFlags;
if (!(familyFlag[1] & 0x00000080 || familyFlag[0] & 0x0000C000))
continue;
// Refresh aura duration
aura->RefreshAura();
// 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
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.
if (familyFlag & 0x0000008000000000LL && aura->GetEffIndex() == 0)
if (familyFlag[1] & 0x00000080 && aura->GetEffIndex() == 0)
{
spellId = 53358; // 53358 Chimera Shot - Viper
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.
if (familyFlag & 0x0000000000008000LL)
if (familyFlag[0] & 0x00008000)
spellId = 53359; // 53359 Chimera Shot - Scorpid
// ?? nothing say in spell desc (possibly need addition check)
//if (familyFlag & 0x0000010000000000LL || // dot

View File

@@ -573,6 +573,7 @@ enum ProcFlags
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_DEATH = 0x01000000
};
#define MELEE_BASED_TRIGGER_MASK (PROC_FLAG_SUCCESSFUL_MILEE_HIT | \