// Token: 0x06000385 RID: 901 RVA: 0x0001E770 File Offset: 0x0001C970 public void ApplyDamageMods(ref HitData.DamageModifiers mods) { foreach (StatusEffect statusEffect in this.m_statusEffects) { statusEffect.ModifyDamageMods(ref mods); } }
// 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; } }
public static void RPC_Damage_RP(this Character __instance, long sender, HitData hit) { if (__instance.IsDebugFlying() || !__instance.m_nview.IsOwner() || __instance.GetHealth() <= 0f || __instance.IsDead() || __instance.IsTeleporting() || __instance.InCutscene() || (hit.m_dodgeable && __instance.IsDodgeInvincible())) { return; } Character attacker = hit.GetAttacker(); if ((hit.HaveAttacker() && attacker == null) || (__instance.IsPlayer() && !__instance.IsPVPEnabled() && attacker != null && attacker.IsPlayer())) { return; } if (attacker != null && !attacker.IsPlayer()) { float difficultyDamageScale = Game.instance.GetDifficultyDamageScale(__instance.transform.position); hit.ApplyModifier(difficultyDamageScale); } __instance.m_seman.OnDamaged(hit, attacker); if (__instance.m_baseAI != null && !__instance.m_baseAI.IsAlerted() && hit.m_backstabBonus > 1f && Time.time - __instance.m_backstabTime > 300f) { __instance.m_backstabTime = Time.time; hit.ApplyModifier(hit.m_backstabBonus); __instance.m_backstabHitEffects.Create(hit.m_point, Quaternion.identity, __instance.transform); } if (__instance.IsStaggering() && !__instance.IsPlayer()) { hit.ApplyModifier(2f); __instance.m_critHitEffects.Create(hit.m_point, Quaternion.identity, __instance.transform); } if (hit.m_blockable && __instance.IsBlocking()) { __instance.BlockAttack(hit, attacker); } __instance.ApplyPushback(hit); if (!string.IsNullOrEmpty(hit.m_statusEffect)) { StatusEffect statusEffect = __instance.m_seman.GetStatusEffect(hit.m_statusEffect); if (statusEffect == null) { statusEffect = __instance.m_seman.AddStatusEffect(hit.m_statusEffect); } if (statusEffect != null && attacker != null) { statusEffect.SetAttacker(attacker); } } HitData.DamageModifiers damageModifiers = __instance.GetDamageModifiers(); hit.ApplyResistance(damageModifiers, out var significantModifier); if (__instance.IsPlayer()) { float bodyArmor = __instance.GetBodyArmor(); hit.ApplyArmor(bodyArmor); __instance.DamageArmorDurability(hit); } __instance.ApplyDamage(hit, showDamageText: true, triggerEffects: true, significantModifier); }
static void Postfix(Player __instance, ref HitData.DamageModifiers mods, ItemDrop.ItemData ___m_utilityItem) { if (!modEnabled.Value) { return; } var list = __instance.GetInventory().GetAllItems().FindAll(i => i.m_equiped && i.m_shared.m_itemType == ItemDrop.ItemData.ItemType.Utility && i != ___m_utilityItem); foreach (var item in list) { mods.Apply(item.m_shared.m_damageModifiers); } }
public override void Setup(Character character) { TTL = 5f; Log.LogMessage($"Hit {character.m_name} w/ vulnerable damage! Pinned!"); List <HitData.DamageModPair> mods = new List <HitData.DamageModPair>(); m_baseMods = character.m_damageModifiers; mods.Add(new HitData.DamageModPair() { m_type = HitData.DamageType.Blunt, m_modifier = HitData.DamageModifier.Weak }); mods.Add(new HitData.DamageModPair() { m_type = HitData.DamageType.Pierce, m_modifier = HitData.DamageModifier.Weak }); mods.Add(new HitData.DamageModPair() { m_type = HitData.DamageType.Slash, m_modifier = HitData.DamageModifier.Weak }); mods.Add(new HitData.DamageModPair() { m_type = HitData.DamageType.Fire, m_modifier = HitData.DamageModifier.Weak }); mods.Add(new HitData.DamageModPair() { m_type = HitData.DamageType.Frost, m_modifier = HitData.DamageModifier.Weak }); mods.Add(new HitData.DamageModPair() { m_type = HitData.DamageType.Lightning, m_modifier = HitData.DamageModifier.Weak }); mods.Add(new HitData.DamageModPair() { m_type = HitData.DamageType.Poison, m_modifier = HitData.DamageModifier.Weak }); mods.Add(new HitData.DamageModPair() { m_type = HitData.DamageType.Spirit, m_modifier = HitData.DamageModifier.Weak }); character.m_damageModifiers.Apply(mods); m_startEffects = new EffectList(); m_startEffects.m_effectPrefabs = new EffectList.EffectData[] { Data.VFXPinned }; base.Setup(character); }
public static void Postfix(Player __instance, ref HitData.DamageModifiers mods) { var damageMods = new List <HitData.DamageModPair>(); if (__instance.HasActiveMagicEffect(MagicEffectType.AddFireResistance)) { damageMods.Add(new HitData.DamageModPair() { m_type = HitData.DamageType.Fire, m_modifier = HitData.DamageModifier.Resistant }); } if (__instance.HasActiveMagicEffect(MagicEffectType.AddFrostResistance)) { damageMods.Add(new HitData.DamageModPair() { m_type = HitData.DamageType.Frost, m_modifier = HitData.DamageModifier.Resistant }); } if (__instance.HasActiveMagicEffect(MagicEffectType.AddLightningResistance)) { damageMods.Add(new HitData.DamageModPair() { m_type = HitData.DamageType.Lightning, m_modifier = HitData.DamageModifier.Resistant }); } if (__instance.HasActiveMagicEffect(MagicEffectType.AddPoisonResistance)) { damageMods.Add(new HitData.DamageModPair() { m_type = HitData.DamageType.Poison, m_modifier = HitData.DamageModifier.Resistant }); } if (__instance.HasActiveMagicEffect(MagicEffectType.AddSpiritResistance)) { damageMods.Add(new HitData.DamageModPair() { m_type = HitData.DamageType.Spirit, m_modifier = HitData.DamageModifier.Resistant }); } mods.Apply(damageMods); }
public void SetBaseMods(HitData.DamageModifiers baseMods) { List <HitData.DamageModPair> mods = new List <HitData.DamageModPair>(); mods.Add(new HitData.DamageModPair() { m_type = HitData.DamageType.Blunt, m_modifier = baseMods.m_blunt }); mods.Add(new HitData.DamageModPair() { m_type = HitData.DamageType.Pierce, m_modifier = baseMods.m_pierce }); mods.Add(new HitData.DamageModPair() { m_type = HitData.DamageType.Slash, m_modifier = baseMods.m_slash }); mods.Add(new HitData.DamageModPair() { m_type = HitData.DamageType.Fire, m_modifier = baseMods.m_fire }); mods.Add(new HitData.DamageModPair() { m_type = HitData.DamageType.Frost, m_modifier = baseMods.m_frost }); mods.Add(new HitData.DamageModPair() { m_type = HitData.DamageType.Lightning, m_modifier = baseMods.m_lightning }); mods.Add(new HitData.DamageModPair() { m_type = HitData.DamageType.Poison, m_modifier = baseMods.m_poison }); mods.Add(new HitData.DamageModPair() { m_type = HitData.DamageType.Spirit, m_modifier = baseMods.m_spirit }); m_character.m_damageModifiers.Apply(mods); }
// Token: 0x060003CD RID: 973 RVA: 0x0002013B File Offset: 0x0001E33B public override void ModifyDamageMods(ref HitData.DamageModifiers modifiers) { modifiers.Apply(this.m_mods); }
// Token: 0x060003EF RID: 1007 RVA: 0x000027E0 File Offset: 0x000009E0 public virtual void ModifyDamageMods(ref HitData.DamageModifiers modifiers) { }