* Merge.
--HG-- branch : trunk
This commit is contained in:
+1
-1
@@ -7289,7 +7289,7 @@ void Player::CastItemCombatSpell(Item *item,Unit* Target, WeaponAttackType attTy
|
||||
if(spellData.SpellPPMRate)
|
||||
{
|
||||
uint32 WeaponSpeed = GetAttackTime(attType);
|
||||
chance = GetPPMProcChance(WeaponSpeed, spellData.SpellPPMRate);
|
||||
chance = GetPPMProcChance(WeaponSpeed, spellData.SpellPPMRate, spellInfo);
|
||||
}
|
||||
else if(chance > 100.0f)
|
||||
{
|
||||
|
||||
+2
-2
@@ -2252,9 +2252,9 @@ void Spell::cast(bool skipCheck)
|
||||
|
||||
if(m_spellInfo->SpellFamilyName)
|
||||
{
|
||||
if (m_spellInfo->excludeCasterAuraSpell)
|
||||
if (m_spellInfo->excludeCasterAuraSpell && !IsPositiveSpell(m_spellInfo->excludeCasterAuraSpell))
|
||||
m_preCastSpell = m_spellInfo->excludeCasterAuraSpell;
|
||||
else if (m_spellInfo->excludeTargetAuraSpell)
|
||||
else if (m_spellInfo->excludeTargetAuraSpell && !IsPositiveSpell(m_spellInfo->excludeTargetAuraSpell))
|
||||
m_preCastSpell = m_spellInfo->excludeTargetAuraSpell;
|
||||
}
|
||||
switch (m_spellInfo->SpellFamilyName)
|
||||
|
||||
@@ -2078,6 +2078,14 @@ void Aura::HandleAuraDummy(bool apply, bool Real)
|
||||
caster->CastSpell(m_target, GetModifier()->m_amount, true);
|
||||
return;
|
||||
}
|
||||
// Focused Magic
|
||||
if(m_spellProto->Id == 54646)
|
||||
{
|
||||
// only on remove by crit
|
||||
if(caster && m_removeMode == AURA_REMOVE_BY_DEFAULT && GetAuraDuration()>0)
|
||||
caster->CastSpell(caster,54648, true);
|
||||
return;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -534,7 +534,7 @@ bool IsPositiveEffect(uint32 spellId, uint32 effIndex, bool deep)
|
||||
|
||||
switch(spellproto->Mechanic)
|
||||
{
|
||||
case MECHANIC_SHIELD:
|
||||
case MECHANIC_IMMUNE_SHIELD:
|
||||
return true;
|
||||
default:
|
||||
break;
|
||||
|
||||
+8
-4
@@ -5620,7 +5620,7 @@ bool Unit::HandleDummyAuraProc(Unit *pVictim, uint32 damage, Aura* triggeredByAu
|
||||
return true;
|
||||
}
|
||||
// Seed of Corruption (Mobs cast) - no die req
|
||||
if (dummySpell->SpellFamilyFlags == 0x00LL && dummySpell->SpellIconID == 1932)
|
||||
if (dummySpell->SpellFamilyFlags.IsEqual(0,0,0) && dummySpell->SpellIconID == 1932)
|
||||
{
|
||||
Modifier* mod = triggeredByAura->GetModifier();
|
||||
// if damage is more than need deal finish spell
|
||||
@@ -9820,10 +9820,15 @@ float Unit::GetWeaponProcChance() const
|
||||
return 0;
|
||||
}
|
||||
|
||||
float Unit::GetPPMProcChance(uint32 WeaponSpeed, float PPM) const
|
||||
float Unit::GetPPMProcChance(uint32 WeaponSpeed, float PPM, const SpellEntry * spellProto) const
|
||||
{
|
||||
// proc per minute chance calculation
|
||||
if (PPM <= 0) return 0.0f;
|
||||
// Apply chance modifer aura
|
||||
if (spellProto)
|
||||
if(Player* modOwner = GetSpellModOwner())
|
||||
modOwner->ApplySpellMod(spellProto->Id,SPELLMOD_PROC_PER_MINUTE,PPM);
|
||||
|
||||
uint32 result = uint32((WeaponSpeed * PPM) / 600.0f); // result is chance in percents (probability = Speed_in_sec * (PPM / 60))
|
||||
return result;
|
||||
}
|
||||
@@ -12694,13 +12699,12 @@ bool Unit::IsTriggeredAtSpellProcEvent(Unit *pVictim, Aura* aura, SpellEntry con
|
||||
if(!isVictim && spellProcEvent && spellProcEvent->ppmRate != 0)
|
||||
{
|
||||
uint32 WeaponSpeed = GetAttackTime(attType);
|
||||
chance = GetPPMProcChance(WeaponSpeed, spellProcEvent->ppmRate);
|
||||
chance = GetPPMProcChance(WeaponSpeed, spellProcEvent->ppmRate, spellProto);
|
||||
}
|
||||
// Apply chance modifer aura
|
||||
if(Player* modOwner = GetSpellModOwner())
|
||||
{
|
||||
modOwner->ApplySpellMod(spellProto->Id,SPELLMOD_CHANCE_OF_SUCCESS,chance);
|
||||
modOwner->ApplySpellMod(spellProto->Id,SPELLMOD_PROC_PER_MINUTE,chance);
|
||||
}
|
||||
|
||||
return roll_chance_f(chance);
|
||||
|
||||
+1
-1
@@ -1057,7 +1057,7 @@ class TRINITY_DLL_SPEC Unit : public WorldObject
|
||||
uint32 GetDefenseSkillValue(Unit const* target = NULL) const;
|
||||
uint32 GetWeaponSkillValue(WeaponAttackType attType, Unit const* target = NULL) const;
|
||||
float GetWeaponProcChance() const;
|
||||
float GetPPMProcChance(uint32 WeaponSpeed, float PPM) const;
|
||||
float GetPPMProcChance(uint32 WeaponSpeed, float PPM, const SpellEntry * spellProto) const;
|
||||
|
||||
MeleeHitOutcome RollMeleeOutcomeAgainst (const Unit *pVictim, WeaponAttackType attType) const;
|
||||
MeleeHitOutcome RollMeleeOutcomeAgainst (const Unit *pVictim, WeaponAttackType attType, int32 crit_chance, int32 miss_chance, int32 dodge_chance, int32 parry_chance, int32 block_chance) const;
|
||||
|
||||
Reference in New Issue
Block a user