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; } }
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)); }
public static void ApplyModifierToFloat(DamageTypeValues modifier, HitData.DamageType dmgType, ref float damage) { var resist = modifier.GetByType(dmgType); if (resist != 0) { damage -= damage * (resist / 100f); } }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
// 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); }
public void AddByType(HitData.DamageType dmgType, float value) { SetByType(dmgType, GetByType(dmgType) + value); }
// 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); }
// 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); } } }