// Token: 0x060004DB RID: 1243 RVA: 0x00028464 File Offset: 0x00026664 public void ShowText(HitData.DamageModifier type, Vector3 pos, float dmg, bool player = false) { DamageText.TextType type2 = DamageText.TextType.Normal; switch (type) { case HitData.DamageModifier.Normal: type2 = DamageText.TextType.Normal; break; case HitData.DamageModifier.Resistant: type2 = DamageText.TextType.Resistant; break; case HitData.DamageModifier.Weak: type2 = DamageText.TextType.Weak; break; case HitData.DamageModifier.Immune: type2 = DamageText.TextType.Immune; break; case HitData.DamageModifier.VeryResistant: type2 = DamageText.TextType.Resistant; break; case HitData.DamageModifier.VeryWeak: type2 = DamageText.TextType.Weak; break; } this.ShowText(type2, pos, dmg, player); }
// Token: 0x060011A6 RID: 4518 RVA: 0x000795E0 File Offset: 0x000777E0 private void ApplyIfBetter(ref HitData.DamageModifier original, HitData.DamageModifier mod) { if (this.ShouldOverride(original, mod)) { original = mod; } }
// Token: 0x06000DC1 RID: 3521 RVA: 0x00062640 File Offset: 0x00060840 public void ApplyResistance(HitData.DamageModifiers modifiers, out HitData.DamageModifier significantModifier) { float damage = this.m_damage.m_damage; float num = 0f; float num2 = 0f; float num3 = 0f; this.m_damage.m_blunt = this.ApplyModifier(this.m_damage.m_blunt, modifiers.m_blunt, ref damage, ref num, ref num2, ref num3); this.m_damage.m_slash = this.ApplyModifier(this.m_damage.m_slash, modifiers.m_slash, ref damage, ref num, ref num2, ref num3); this.m_damage.m_pierce = this.ApplyModifier(this.m_damage.m_pierce, modifiers.m_pierce, ref damage, ref num, ref num2, ref num3); this.m_damage.m_chop = this.ApplyModifier(this.m_damage.m_chop, modifiers.m_chop, ref damage, ref num, ref num2, ref num3); this.m_damage.m_pickaxe = this.ApplyModifier(this.m_damage.m_pickaxe, modifiers.m_pickaxe, ref damage, ref num, ref num2, ref num3); this.m_damage.m_fire = this.ApplyModifier(this.m_damage.m_fire, modifiers.m_fire, ref damage, ref num, ref num2, ref num3); this.m_damage.m_frost = this.ApplyModifier(this.m_damage.m_frost, modifiers.m_frost, ref damage, ref num, ref num2, ref num3); this.m_damage.m_lightning = this.ApplyModifier(this.m_damage.m_lightning, modifiers.m_lightning, ref damage, ref num, ref num2, ref num3); this.m_damage.m_poison = this.ApplyModifier(this.m_damage.m_poison, modifiers.m_poison, ref damage, ref num, ref num2, ref num3); this.m_damage.m_spirit = this.ApplyModifier(this.m_damage.m_spirit, modifiers.m_spirit, ref damage, ref num, ref num2, ref num3); significantModifier = HitData.DamageModifier.Immune; if (num3 >= num && num3 >= num2 && num3 >= damage) { significantModifier = HitData.DamageModifier.Immune; } if (damage >= num && damage >= num2 && damage >= num3) { significantModifier = HitData.DamageModifier.Normal; } if (num >= num2 && num >= num3 && num >= damage) { significantModifier = HitData.DamageModifier.Resistant; } if (num2 >= num && num2 >= num3 && num2 >= damage) { significantModifier = HitData.DamageModifier.Weak; } }
static void Postfix(float dt, Player __instance, ItemDrop.ItemData ___m_chestItem, ItemDrop.ItemData ___m_legItem, ItemDrop.ItemData ___m_helmetItem, ItemDrop.ItemData ___m_shoulderItem, SEMan ___m_seman) { if (!modEnabled.Value) { return; } if (___m_seman.HaveStatusEffect("Wet")) { HitData.DamageModifier water = GetNewDamageTypeMod(NewDamageTypes.Water, ___m_chestItem, ___m_legItem, ___m_helmetItem, ___m_shoulderItem); var wet = ___m_seman.GetStatusEffect("Wet"); var t = Traverse.Create(wet); if (water == HitData.DamageModifier.Ignore || water == HitData.DamageModifier.Immune) { ___m_seman.RemoveStatusEffect("Wet", true); } else if (water == HitData.DamageModifier.VeryResistant && !__instance.InLiquidSwimDepth()) { ___m_seman.RemoveStatusEffect("Wet", true); } else if (water == HitData.DamageModifier.Resistant) { t.Field("m_time").SetValue(t.Field("m_time").GetValue <float>() + dt); ___m_seman.RemoveStatusEffect("Wet", true); ___m_seman.AddStatusEffect(wet); } else if (water == HitData.DamageModifier.Weak) { t.Field("m_time").SetValue(t.Field("m_time").GetValue <float>() - dt / 3); ___m_seman.RemoveStatusEffect("Wet", true); ___m_seman.AddStatusEffect(wet); } else if (water == HitData.DamageModifier.VeryWeak) { t.Field("m_time").SetValue(t.Field("m_time").GetValue <float>() - dt * 2 / 3); ___m_seman.RemoveStatusEffect("Wet", true); ___m_seman.AddStatusEffect(wet); } } }
// Token: 0x06000DC0 RID: 3520 RVA: 0x000625A4 File Offset: 0x000607A4 private float ApplyModifier(float baseDamage, HitData.DamageModifier mod, ref float normalDmg, ref float resistantDmg, ref float weakDmg, ref float immuneDmg) { if (mod == HitData.DamageModifier.Ignore) { return(0f); } float num = baseDamage; switch (mod) { case HitData.DamageModifier.Resistant: num /= 2f; resistantDmg += baseDamage; return(num); case HitData.DamageModifier.Weak: num *= 1.5f; weakDmg += baseDamage; return(num); case HitData.DamageModifier.Immune: num = 0f; immuneDmg += baseDamage; return(num); case HitData.DamageModifier.VeryResistant: num /= 4f; resistantDmg += baseDamage; return(num); case HitData.DamageModifier.VeryWeak: num *= 2f; weakDmg += baseDamage; return(num); } normalDmg += baseDamage; return(num); }
public static void PlayerTamedWolfDamageReduction(Character targetCharacter, ref HitData hit, ref bool showDamageText, ref bool triggerEffects, ref HitData.DamageModifier damageMod) { try { if (!AnimalConditionals.IsCharacterAWolf(targetCharacter)) { return; } var wolf = new Wolf(targetCharacter); if (!wolf.IsTamed()) { return; } var attacker = hit.GetAttacker(); if (attacker == null || attacker.m_name .Contains(PlayerIdentifiers.Player[PlayerIdentifiers.PlayerType.PlayerNormal])) { hit.m_damage.Modify(1f - KeezyBetterWolves.ConfigTamedWolfPlayerDamageReduction.Value / 100f); } else { hit.m_damage.Modify(1f - KeezyBetterWolves.ConfigTamedWolfDamageReduction.Value / 100f); } } catch (Exception exception) { throw new Exception(ExceptionMessages.TamedWolfDamageReduce); } }
private static bool ShouldOverride(HitData.DamageModifier a, HitData.DamageModifier b) { return(a != HitData.DamageModifier.Ignore && (b == HitData.DamageModifier.Immune || ((a != HitData.DamageModifier.VeryResistant || b != HitData.DamageModifier.Resistant) && (a != HitData.DamageModifier.VeryWeak || b != HitData.DamageModifier.Weak)))); }
private static bool Prefix(ref Character __instance, ref HitData hit, ref bool showDamageText, ref bool triggerEffects, ref HitData.DamageModifier mod) { CharacterApplyDamageEvent?.Invoke(__instance, ref hit, ref showDamageText, ref triggerEffects, ref mod); return(true); }