Core/Unit: added GetTotalAuraXXX overloads taking a predicate - Redefined existing overloads to use the predicate logic, avoids code duplication and not checking same stack rules

This commit is contained in:
hondacrx
2018-03-12 14:00:18 -04:00
parent 53efa9224f
commit 237580ab50
3 changed files with 166 additions and 166 deletions
-53
View File
@@ -1688,59 +1688,6 @@ namespace Game.Entities
{
m_auraModifiersGroup[(int)unitMod][(int)modifierType] = value;
}
public float GetTotalAuraMultiplierByMiscValue(AuraType auratype, int miscValue)
{
Dictionary<SpellGroup, int> SameEffectSpellGroup = new Dictionary<SpellGroup, int>();
float multiplier = 1.0f;
var mTotalAuraList = GetAuraEffectsByType(auratype);
foreach (var i in mTotalAuraList)
{
if (i.GetMiscValue() == miscValue)
if (!Global.SpellMgr.AddSameEffectStackRuleSpellGroups(i.GetSpellInfo(), i.GetAmount(), out SameEffectSpellGroup))
MathFunctions.AddPct(ref multiplier, i.GetAmount());
}
foreach (var pair in SameEffectSpellGroup)
MathFunctions.AddPct(ref multiplier, pair.Value);
return multiplier;
}
public int GetTotalAuraModifierByMiscValue(AuraType auratype, int miscValue)
{
Dictionary<SpellGroup, int> SameEffectSpellGroup = new Dictionary<SpellGroup, int>();
int modifier = 0;
var mTotalAuraList = GetAuraEffectsByType(auratype);
foreach (var i in mTotalAuraList)
{
if (i.GetMiscValue() == miscValue)
if (!Global.SpellMgr.AddSameEffectStackRuleSpellGroups(i.GetSpellInfo(), i.GetAmount(), out SameEffectSpellGroup))
modifier += i.GetAmount();
}
foreach (var pair in SameEffectSpellGroup)
modifier += pair.Value;
return modifier;
}
public int GetTotalAuraModifierByMiscMask(AuraType auratype, int miscMask)
{
Dictionary<SpellGroup, int> SameEffectSpellGroup = new Dictionary<SpellGroup, int>();
int modifier = 0;
var mTotalAuraList = GetAuraEffectsByType(auratype);
foreach (var i in mTotalAuraList)
if (Convert.ToBoolean(i.GetMiscValue() & miscMask))
if (!Global.SpellMgr.AddSameEffectStackRuleSpellGroups(i.GetSpellInfo(), i.GetAmount(), out SameEffectSpellGroup))
modifier += i.GetAmount();
foreach (var pair in SameEffectSpellGroup)
modifier += pair.Value;
return modifier;
}
public int CalcSpellDuration(SpellInfo spellProto)
{
sbyte comboPoints = (sbyte)(m_playerMovingMe != null ? m_playerMovingMe.GetComboPoints() : 0);