public void AddModifier(IStatsModifier modifier) { if (AbilityPower.ApplyStatModificator(modifier.AbilityPower)) { appendStat(_updatedStats, MasterMask.MM_Two, FieldMask.FM2_Base_Ap, AbilityPower.BaseValue); appendStat(_updatedStats, MasterMask.MM_Two, FieldMask.FM2_Bonus_Ap_Flat, AbilityPower.FlatBonus); appendStat(_updatedStats, MasterMask.MM_Two, FieldMask.FM2_Bonus_Ap_Pct, AbilityPower.PercentBonus); } if (Armor.ApplyStatModificator(modifier.Armor)) { appendStat(_updatedStats, MasterMask.MM_Two, FieldMask.FM2_Armor, Armor.Total); } if (ArmorPenetration.ApplyStatModificator(modifier.ArmorPenetration)) { appendStat(_updatedStats, MasterMask.MM_Two, FieldMask.FM2_Armor_Pen_Flat, ArmorPenetration.FlatBonus); appendStat(_updatedStats, MasterMask.MM_Two, FieldMask.FM2_Armor_Pen_Pct, ArmorPenetration.PercentBonus); } if (AttackDamage.ApplyStatModificator(modifier.AttackDamage)) { appendStat(_updatedStats, MasterMask.MM_Two, FieldMask.FM2_Base_Ad, AttackDamage.BaseValue); appendStat(_updatedStats, MasterMask.MM_Two, FieldMask.FM2_Bonus_Ad_Flat, AttackDamage.FlatBonus); appendStat(_updatedStats, MasterMask.MM_Two, FieldMask.FM2_Bonus_Ad_Pct, AttackDamage.PercentBonus); } if (AttackSpeedMultiplier.ApplyStatModificator(modifier.AttackSpeed)) { appendStat(_updatedStats, MasterMask.MM_Two, FieldMask.FM2_Atks_multiplier, AttackSpeedMultiplier.Total); } if (CriticalChance.ApplyStatModificator(modifier.CriticalChance)) { appendStat(_updatedStats, MasterMask.MM_Two, FieldMask.FM2_Crit_Chance, CriticalChance.Total); } GoldPerSecond.ApplyStatModificator(modifier.GoldPerSecond); if (HealthPoints.ApplyStatModificator(modifier.HealthPoints)) { appendStat(_updatedStats, MasterMask.MM_Four, FieldMask.FM4_MaxHp, HealthPoints.Total); } if (HealthRegeneration.ApplyStatModificator(modifier.HealthRegeneration)) { appendStat(_updatedStats, MasterMask.MM_Two, FieldMask.FM2_Hp5, HealthRegeneration.Total); } if (LifeSteal.ApplyStatModificator(modifier.LifeSteel)) { appendStat(_updatedStats, MasterMask.MM_Two, FieldMask.FM2_LifeSteal, LifeSteal.Total); } if (MagicResist.ApplyStatModificator(modifier.MagicResist)) { appendStat(_updatedStats, MasterMask.MM_Two, FieldMask.FM2_Magic_Armor, MagicResist.Total); } if (MagicPenetration.ApplyStatModificator(modifier.MagicPenetration)) { appendStat(_updatedStats, MasterMask.MM_Two, FieldMask.FM2_Magic_Pen_Flat, MagicPenetration.FlatBonus); appendStat(_updatedStats, MasterMask.MM_Two, FieldMask.FM2_Magic_Pen_Pct, MagicPenetration.PercentBonus); } if (ManaPoints.ApplyStatModificator(modifier.ManaPoints)) { appendStat(_updatedStats, MasterMask.MM_Four, FieldMask.FM4_MaxMp, ManaPoints.Total); } if (ManaRegeneration.ApplyStatModificator(modifier.ManaRegeneration)) { appendStat(_updatedStats, MasterMask.MM_Two, FieldMask.FM2_Mp5, ManaRegeneration.Total); } if (MoveSpeed.ApplyStatModificator(modifier.MoveSpeed)) { appendStat(_updatedStats, MasterMask.MM_Four, FieldMask.FM4_Speed, MoveSpeed.Total); } if (Range.ApplyStatModificator(modifier.Range)) { appendStat(_updatedStats, MasterMask.MM_Two, FieldMask.FM2_Range, Range.Total); } if (Size.ApplyStatModificator(modifier.Size)) { appendStat(_updatedStats, MasterMask.MM_Four, FieldMask.FM4_ModelSize, Size.Total); } if (SpellVamp.ApplyStatModificator(modifier.SpellVamp)) { appendStat(_updatedStats, MasterMask.MM_Two, FieldMask.FM2_SpellVamp, SpellVamp.Total); } if (Tenacity.ApplyStatModificator(modifier.Tenacity)) { appendStat(_updatedStats, MasterMask.MM_Two, FieldMask.FM2_Tenacity, Tenacity.Total); } }