Exemple #1
0
        public static void ApplyModifierToFloat(DamageTypeValues modifier, HitData.DamageType dmgType, ref float damage)
        {
            var resist = modifier.GetByType(dmgType);

            if (resist != 0)
            {
                damage -= damage * (resist / 100f);
            }
        }
Exemple #2
0
 public static void ApplyModifierToHit(DamageTypeValues modifier, ref HitData hit)
 {
     ApplyModifierToFloat(modifier, HitData.DamageType.Blunt, ref hit.m_damage.m_blunt);
     ApplyModifierToFloat(modifier, HitData.DamageType.Pierce, ref hit.m_damage.m_pierce);
     ApplyModifierToFloat(modifier, HitData.DamageType.Slash, ref hit.m_damage.m_slash);
     ApplyModifierToFloat(modifier, HitData.DamageType.Fire, ref hit.m_damage.m_fire);
     ApplyModifierToFloat(modifier, HitData.DamageType.Frost, ref hit.m_damage.m_frost);
     ApplyModifierToFloat(modifier, HitData.DamageType.Lightning, ref hit.m_damage.m_lightning);
     ApplyModifierToFloat(modifier, HitData.DamageType.Poison, ref hit.m_damage.m_poison);
     ApplyModifierToFloat(modifier, HitData.DamageType.Spirit, ref hit.m_damage.m_spirit);
 }
Exemple #3
0
        public void UpdateCaster()
        {
            if (caster == null)
            {
                return;
            }
            var dmg = caster.GetCurrentWeapon().GetDamage();

            casterWeaponDmg = dmg.GetTotalElementalDamage() + dmg.GetTotalPhysicalDamage();
            casterPowerMods = caster.ExtendedCharacter(false)?.runicPowerModifier ?? new DamageTypeValues();
        }
Exemple #4
0
 public void ModifyPower(ref DamageTypeValues mod)
 {
     if (data.effect == null)
     {
         return;
     }
     foreach (HitData.DamageType dmgType in dmgTypes)
     {
         var power = GetPower(dmgType);
         mod.AddByType(dmgType, power);
     }
 }
Exemple #5
0
 public void ModifyResist(ref DamageTypeValues mod)
 {
     if (data.effect == null)
     {
         return;
     }
     foreach (HitData.DamageType dmgType in dmgTypes)
     {
         var resist = GetResist(dmgType);
         var expose = GetExpose();
         mod.AddByType(dmgType, resist - expose);
     }
 }
Exemple #6
0
 public void AppendPower(ref DamageTypeValues power)           // TODO: stop using this, use ModifyPower
 {
     if (data.effect == null)
     {
         return;
     }
     // MULTIPLIERS
     foreach (HitData.DamageType dmgType in dmgTypes)
     {
         var value = GetPower(dmgType);
         if (value != 0)
         {
             power.AddByType(dmgType, value);
         }
     }
 }
Exemple #7
0
        public float GetSkilledTypedValue(DamageTypeValues source, HitData.DamageType dmgType, float skillMultiplier, float weaponMultiplier, float?capValue = null)
        {
            float skill = GetSkill();
            var   value = source.GetByType(dmgType) / 100f;

            if (value == 0)
            {
                return(0);
            }
            // each skill level increases damage by x
            var skilled = value * skillMultiplier * skill;
            // each skill level increases damage by +x% of weapon damage
            var weapon = casterWeaponDmg * skill * weaponMultiplier / 100f;
            // getting the total base value
            var total = skilled + weapon;

            // checking for cap values
            if (capValue != null && total > capValue)
            {
                total = (float)capValue;
            }
            // returning a rounded value
            return(total);
        }