Example #1
0
    // 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);
    }
Example #2
0
 // 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;
     }
 }
Example #3
0
    // 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;
        }
    }
Example #4
0
            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);
                    }
                }
            }
Example #5
0
    // 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);
     }
 }
Example #7
0
 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);
 }