Example #1
0
 public void SetByType(HitData.DamageType dmgType, float value)
 {
     if (dmgType is HitData.DamageType.Blunt)
     {
         m_blunt = value;
     }
     if (dmgType is HitData.DamageType.Pierce)
     {
         m_pierce = value;
     }
     if (dmgType is HitData.DamageType.Slash)
     {
         m_slash = value;
     }
     if (dmgType is HitData.DamageType.Fire)
     {
         m_fire = value;
     }
     if (dmgType is HitData.DamageType.Frost)
     {
         m_frost = value;
     }
     if (dmgType is HitData.DamageType.Lightning)
     {
         m_lightning = value;
     }
     if (dmgType is HitData.DamageType.Poison)
     {
         m_poison = value;
     }
     if (dmgType is HitData.DamageType.Spirit)
     {
         m_spirit = value;
     }
 }
Example #2
0
 private float GetDamage(HitData.DamageType dmgType)
 {
     // level 1: 3f + 5% of weapon
     // level 10: 30f + 20% of weapon
     // level 100: 300f + 200% of weapon
     return(GetSkilledTypedValue(data.effect.doDamage, dmgType, 2f, 2f));
 }
Example #3
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);
            }
        }
Example #4
0
        private float GetHealST(HitData.DamageType dmgType)
        {
            // level 1: 7f + 2% of weapon
            // level 10: 70f + 20% of weapon
            // level 100: 700f + 200% of weapon
            var heal = GetSkilledTypedValue(data.effect.doHealST, dmgType, 6f, 1f);

            ApplyModifierToFloat(casterPowerMods, dmgType, ref heal);
            return(heal);
        }
Example #5
0
        public bool TooltipAppendResist(ref StringBuilder text, HitData.DamageType dmgType, string label = null)
        {
            var resist = GetResist(dmgType);

            if (label == null)
            {
                label = dmgType.ToString();
            }
            if (resist != 0)
            {
                text.AppendFormat("Increases <color=orange>{1}</color> resistance by <color=orange>{0}%</color>\n", resist, label);
            }
            return(resist != 0);
        }
Example #6
0
        public bool TooltipAppendPower(ref StringBuilder text, HitData.DamageType dmgType, string label = null)
        {
            var power = GetPower(dmgType);

            if (label == null)
            {
                label = dmgType.ToString();
            }
            if (power != 0)
            {
                text.AppendFormat("Increases <color=orange>{1}</color> power by <color=orange>{0}%</color>\n", power, label);
            }
            return(power != 0);
        }
Example #7
0
        private static HitData.DamageType ConvertToBitmask(List <string> damageTypes)
        {
            HitData.DamageType result = 0;

            foreach (var type in damageTypes)
            {
                if (Enum.TryParse(type, true, out HitData.DamageType damageType))
                {
                    result |= damageType;
                }
            }

            return(result);
        }
Example #8
0
        private float GetResist(HitData.DamageType dmgType)
        {
            var vfixed = GetFixed("resist." + dmgType);

            if (vfixed != 0)
            {
                return(Mathf.RoundToInt(vfixed));
            }

            // level 1: +2%
            // level 2: +4%
            // level 10: +20%
            // level 50: +100%
            return(GetSkilledTypedValue(data.effect.doResist, dmgType, 2f, 0f, 100f));
        }
        public static HitData.DamageType GetCombinedDamageType(this HitData hit)
        {
            HitData.DamageType result = 0;

            if (hit.m_damage.m_blunt > 0)
            {
                result |= HitData.DamageType.Blunt;
            }
            if (hit.m_damage.m_slash > 0)
            {
                result |= HitData.DamageType.Slash;
            }
            if (hit.m_damage.m_pierce > 0)
            {
                result |= HitData.DamageType.Pierce;
            }
            if (hit.m_damage.m_chop > 0)
            {
                result |= HitData.DamageType.Chop;
            }
            if (hit.m_damage.m_pickaxe > 0)
            {
                result |= HitData.DamageType.Pickaxe;
            }
            if (hit.m_damage.m_fire > 0)
            {
                result |= HitData.DamageType.Fire;
            }
            if (hit.m_damage.m_frost > 0)
            {
                result |= HitData.DamageType.Frost;
            }
            if (hit.m_damage.m_lightning > 0)
            {
                result |= HitData.DamageType.Lightning;
            }
            if (hit.m_damage.m_poison > 0)
            {
                result |= HitData.DamageType.Poison;
            }
            if (hit.m_damage.m_spirit > 0)
            {
                result |= HitData.DamageType.Spirit;
            }

            return(result);
        }
Example #10
0
 public float GetByType(HitData.DamageType dmgType)
 {
     if (dmgType is HitData.DamageType.Blunt)
     {
         return(m_blunt);
     }
     if (dmgType is HitData.DamageType.Pierce)
     {
         return(m_pierce);
     }
     if (dmgType is HitData.DamageType.Slash)
     {
         return(m_slash);
     }
     if (dmgType is HitData.DamageType.Fire)
     {
         return(m_fire);
     }
     if (dmgType is HitData.DamageType.Frost)
     {
         return(m_frost);
     }
     if (dmgType is HitData.DamageType.Lightning)
     {
         return(m_lightning);
     }
     if (dmgType is HitData.DamageType.Poison)
     {
         return(m_poison);
     }
     if (dmgType is HitData.DamageType.Spirit)
     {
         return(m_spirit);
     }
     return(0);
 }
Example #11
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);
        }
Example #12
0
    // Token: 0x060003D6 RID: 982 RVA: 0x00020424 File Offset: 0x0001E624
    public static string GetDamageModifiersTooltipString(List <HitData.DamageModPair> mods)
    {
        if (mods.Count == 0)
        {
            return("");
        }
        string text = "";

        foreach (HitData.DamageModPair damageModPair in mods)
        {
            if (damageModPair.m_modifier != HitData.DamageModifier.Ignore && damageModPair.m_modifier != HitData.DamageModifier.Normal)
            {
                switch (damageModPair.m_modifier)
                {
                case HitData.DamageModifier.Resistant:
                    text += "\n$inventory_dmgmod: <color=orange>$inventory_resistant</color> VS ";
                    break;

                case HitData.DamageModifier.Weak:
                    text += "\n$inventory_dmgmod: <color=orange>$inventory_weak</color> VS ";
                    break;

                case HitData.DamageModifier.Immune:
                    text += "\n$inventory_dmgmod: <color=orange>$inventory_immune</color> VS ";
                    break;

                case HitData.DamageModifier.VeryResistant:
                    text += "\n$inventory_dmgmod: <color=orange>$inventory_veryresistant</color> VS ";
                    break;

                case HitData.DamageModifier.VeryWeak:
                    text += "\n$inventory_dmgmod: <color=orange>$inventory_veryweak</color> VS ";
                    break;
                }
                text += "<color=orange>";
                HitData.DamageType type = damageModPair.m_type;
                if (type <= HitData.DamageType.Fire)
                {
                    if (type <= HitData.DamageType.Chop)
                    {
                        switch (type)
                        {
                        case HitData.DamageType.Blunt:
                            text += "$inventory_blunt";
                            break;

                        case HitData.DamageType.Slash:
                            text += "$inventory_slash";
                            break;

                        case HitData.DamageType.Blunt | HitData.DamageType.Slash:
                            break;

                        case HitData.DamageType.Pierce:
                            text += "$inventory_pierce";
                            break;

                        default:
                            if (type == HitData.DamageType.Chop)
                            {
                                text += "$inventory_chop";
                            }
                            break;
                        }
                    }
                    else if (type != HitData.DamageType.Pickaxe)
                    {
                        if (type == HitData.DamageType.Fire)
                        {
                            text += "$inventory_fire";
                        }
                    }
                    else
                    {
                        text += "$inventory_pickaxe";
                    }
                }
                else if (type <= HitData.DamageType.Lightning)
                {
                    if (type != HitData.DamageType.Frost)
                    {
                        if (type == HitData.DamageType.Lightning)
                        {
                            text += "$inventory_lightning";
                        }
                    }
                    else
                    {
                        text += "$inventory_frost";
                    }
                }
                else if (type != HitData.DamageType.Poison)
                {
                    if (type == HitData.DamageType.Spirit)
                    {
                        text += "$inventory_spirit";
                    }
                }
                else
                {
                    text += "$inventory_poison";
                }
                text += "</color>";
            }
        }
        return(text);
    }
Example #13
0
 public void AddByType(HitData.DamageType dmgType, float value)
 {
     SetByType(dmgType, GetByType(dmgType) + value);
 }
Example #14
0
        // Token: 0x060011A5 RID: 4517 RVA: 0x00079530 File Offset: 0x00077730
        public HitData.DamageModifier GetModifier(HitData.DamageType type)
        {
            if (type <= HitData.DamageType.Fire)
            {
                if (type <= HitData.DamageType.Chop)
                {
                    switch (type)
                    {
                    case HitData.DamageType.Blunt:
                        return(this.m_blunt);

                    case HitData.DamageType.Slash:
                        return(this.m_slash);

                    case HitData.DamageType.Blunt | HitData.DamageType.Slash:
                        break;

                    case HitData.DamageType.Pierce:
                        return(this.m_pierce);

                    default:
                        if (type == HitData.DamageType.Chop)
                        {
                            return(this.m_chop);
                        }
                        break;
                    }
                }
                else
                {
                    if (type == HitData.DamageType.Pickaxe)
                    {
                        return(this.m_pickaxe);
                    }
                    if (type == HitData.DamageType.Fire)
                    {
                        return(this.m_fire);
                    }
                }
            }
            else if (type <= HitData.DamageType.Lightning)
            {
                if (type == HitData.DamageType.Frost)
                {
                    return(this.m_frost);
                }
                if (type == HitData.DamageType.Lightning)
                {
                    return(this.m_lightning);
                }
            }
            else
            {
                if (type == HitData.DamageType.Poison)
                {
                    return(this.m_poison);
                }
                if (type == HitData.DamageType.Spirit)
                {
                    return(this.m_spirit);
                }
            }
            return(HitData.DamageModifier.Normal);
        }
Example #15
0
        // Token: 0x060011A4 RID: 4516 RVA: 0x00079384 File Offset: 0x00077584
        public void Apply(List <HitData.DamageModPair> modifiers)
        {
            foreach (HitData.DamageModPair damageModPair in modifiers)
            {
                HitData.DamageType type = damageModPair.m_type;
                if (type <= HitData.DamageType.Fire)
                {
                    if (type <= HitData.DamageType.Chop)
                    {
                        switch (type)
                        {
                        case HitData.DamageType.Blunt:
                            this.ApplyIfBetter(ref this.m_blunt, damageModPair.m_modifier);
                            break;

                        case HitData.DamageType.Slash:
                            this.ApplyIfBetter(ref this.m_slash, damageModPair.m_modifier);
                            break;

                        case HitData.DamageType.Blunt | HitData.DamageType.Slash:
                            break;

                        case HitData.DamageType.Pierce:
                            this.ApplyIfBetter(ref this.m_pierce, damageModPair.m_modifier);
                            break;

                        default:
                            if (type == HitData.DamageType.Chop)
                            {
                                this.ApplyIfBetter(ref this.m_chop, damageModPair.m_modifier);
                            }
                            break;
                        }
                    }
                    else if (type != HitData.DamageType.Pickaxe)
                    {
                        if (type == HitData.DamageType.Fire)
                        {
                            this.ApplyIfBetter(ref this.m_fire, damageModPair.m_modifier);
                        }
                    }
                    else
                    {
                        this.ApplyIfBetter(ref this.m_pickaxe, damageModPair.m_modifier);
                    }
                }
                else if (type <= HitData.DamageType.Lightning)
                {
                    if (type != HitData.DamageType.Frost)
                    {
                        if (type == HitData.DamageType.Lightning)
                        {
                            this.ApplyIfBetter(ref this.m_lightning, damageModPair.m_modifier);
                        }
                    }
                    else
                    {
                        this.ApplyIfBetter(ref this.m_frost, damageModPair.m_modifier);
                    }
                }
                else if (type != HitData.DamageType.Poison)
                {
                    if (type == HitData.DamageType.Spirit)
                    {
                        this.ApplyIfBetter(ref this.m_spirit, damageModPair.m_modifier);
                    }
                }
                else
                {
                    this.ApplyIfBetter(ref this.m_poison, damageModPair.m_modifier);
                }
            }
        }