D:\ValheimDev\Dumps\Old\assembly_valheim\HitData.cs D:\ValheimDev\Dumps\Latest\assembly_valheim\HitData.cs
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Runtime.CompilerServices; using System.Runtime.CompilerServices;
.  using System.Text;
using UnityEngine; using UnityEngine;
   
public class HitData public class HitData
{ {
.      public HitData()
      {
      }
   
      public HitData(float damage)
      {
          this.m_damage.m_damage = damage;
      }
   
    public HitData Clone()     public HitData Clone()
    {     {
        return (HitData)base.MemberwiseClone();         return (HitData)base.MemberwiseClone();
    }     }
   
    public void Serialize(ref ZPackage pkg)     public void Serialize(ref ZPackage pkg)
    {     {
        HitData.HitDefaults.SerializeFlags serializeFlags = HitData.HitDefaults.SerializeFlags.None;         HitData.HitDefaults.SerializeFlags serializeFlags = HitData.HitDefaults.SerializeFlags.None;
        serializeFlags |= ((!this.m_damage.m_damage.Equals(0f)) ? HitData.HitDefaults.SerializeFlags.Damage : HitData.HitDefaults.SerializeFlags.None);         serializeFlags |= ((!this.m_damage.m_damage.Equals(0f)) ? HitData.HitDefaults.SerializeFlags.Damage : HitData.HitDefaults.SerializeFlags.None);
        serializeFlags |= ((!this.m_damage.m_blunt.Equals(0f)) ? HitData.HitDefaults.SerializeFlags.DamageBlunt : HitData.HitDefaults.SerializeFlags.None);         serializeFlags |= ((!this.m_damage.m_blunt.Equals(0f)) ? HitData.HitDefaults.SerializeFlags.DamageBlunt : HitData.HitDefaults.SerializeFlags.None);
        serializeFlags |= ((!this.m_damage.m_slash.Equals(0f)) ? HitData.HitDefaults.SerializeFlags.DamageSlash : HitData.HitDefaults.SerializeFlags.None);         serializeFlags |= ((!this.m_damage.m_slash.Equals(0f)) ? HitData.HitDefaults.SerializeFlags.DamageSlash : HitData.HitDefaults.SerializeFlags.None);
        serializeFlags |= ((!this.m_damage.m_pierce.Equals(0f)) ? HitData.HitDefaults.SerializeFlags.DamagePierce : HitData.HitDefaults.SerializeFlags.None);         serializeFlags |= ((!this.m_damage.m_pierce.Equals(0f)) ? HitData.HitDefaults.SerializeFlags.DamagePierce : HitData.HitDefaults.SerializeFlags.None);
        serializeFlags |= ((!this.m_damage.m_chop.Equals(0f)) ? HitData.HitDefaults.SerializeFlags.DamageChop : HitData.HitDefaults.SerializeFlags.None);         serializeFlags |= ((!this.m_damage.m_chop.Equals(0f)) ? HitData.HitDefaults.SerializeFlags.DamageChop : HitData.HitDefaults.SerializeFlags.None);
        serializeFlags |= ((!this.m_damage.m_pickaxe.Equals(0f)) ? HitData.HitDefaults.SerializeFlags.DamagePickaxe : HitData.HitDefaults.SerializeFlags.None);         serializeFlags |= ((!this.m_damage.m_pickaxe.Equals(0f)) ? HitData.HitDefaults.SerializeFlags.DamagePickaxe : HitData.HitDefaults.SerializeFlags.None);
        serializeFlags |= ((!this.m_damage.m_fire.Equals(0f)) ? HitData.HitDefaults.SerializeFlags.DamageFire : HitData.HitDefaults.SerializeFlags.None);         serializeFlags |= ((!this.m_damage.m_fire.Equals(0f)) ? HitData.HitDefaults.SerializeFlags.DamageFire : HitData.HitDefaults.SerializeFlags.None);
        serializeFlags |= ((!this.m_damage.m_frost.Equals(0f)) ? HitData.HitDefaults.SerializeFlags.DamageFrost : HitData.HitDefaults.SerializeFlags.None);         serializeFlags |= ((!this.m_damage.m_frost.Equals(0f)) ? HitData.HitDefaults.SerializeFlags.DamageFrost : HitData.HitDefaults.SerializeFlags.None);
        serializeFlags |= ((!this.m_damage.m_lightning.Equals(0f)) ? HitData.HitDefaults.SerializeFlags.DamageLightning : HitData.HitDefaults.SerializeFlags.None);         serializeFlags |= ((!this.m_damage.m_lightning.Equals(0f)) ? HitData.HitDefaults.SerializeFlags.DamageLightning : HitData.HitDefaults.SerializeFlags.None);
        serializeFlags |= ((!this.m_damage.m_poison.Equals(0f)) ? HitData.HitDefaults.SerializeFlags.DamagePoison : HitData.HitDefaults.SerializeFlags.None);         serializeFlags |= ((!this.m_damage.m_poison.Equals(0f)) ? HitData.HitDefaults.SerializeFlags.DamagePoison : HitData.HitDefaults.SerializeFlags.None);
        serializeFlags |= ((!this.m_damage.m_spirit.Equals(0f)) ? HitData.HitDefaults.SerializeFlags.DamageSpirit : HitData.HitDefaults.SerializeFlags.None);         serializeFlags |= ((!this.m_damage.m_spirit.Equals(0f)) ? HitData.HitDefaults.SerializeFlags.DamageSpirit : HitData.HitDefaults.SerializeFlags.None);
        serializeFlags |= ((!this.m_pushForce.Equals(0f)) ? HitData.HitDefaults.SerializeFlags.PushForce : HitData.HitDefaults.SerializeFlags.None);         serializeFlags |= ((!this.m_pushForce.Equals(0f)) ? HitData.HitDefaults.SerializeFlags.PushForce : HitData.HitDefaults.SerializeFlags.None);
        serializeFlags |= ((!this.m_backstabBonus.Equals(1f)) ? HitData.HitDefaults.SerializeFlags.BackstabBonus : HitData.HitDefaults.SerializeFlags.None);         serializeFlags |= ((!this.m_backstabBonus.Equals(1f)) ? HitData.HitDefaults.SerializeFlags.BackstabBonus : HitData.HitDefaults.SerializeFlags.None);
        serializeFlags |= ((!this.m_staggerMultiplier.Equals(1f)) ? HitData.HitDefaults.SerializeFlags.StaggerMultiplier : HitData.HitDefaults.SerializeFlags.None);         serializeFlags |= ((!this.m_staggerMultiplier.Equals(1f)) ? HitData.HitDefaults.SerializeFlags.StaggerMultiplier : HitData.HitDefaults.SerializeFlags.None);
        serializeFlags |= ((this.m_attacker != ZDOID.None) ? HitData.HitDefaults.SerializeFlags.Attacker : HitData.HitDefaults.SerializeFlags.None);         serializeFlags |= ((this.m_attacker != ZDOID.None) ? HitData.HitDefaults.SerializeFlags.Attacker : HitData.HitDefaults.SerializeFlags.None);
        serializeFlags |= ((!this.m_skillRaiseAmount.Equals(1f)) ? HitData.HitDefaults.SerializeFlags.SkillRaiseAmount : HitData.HitDefaults.SerializeFlags.None);         serializeFlags |= ((!this.m_skillRaiseAmount.Equals(1f)) ? HitData.HitDefaults.SerializeFlags.SkillRaiseAmount : HitData.HitDefaults.SerializeFlags.None);
        pkg.Write((ushort)serializeFlags);         pkg.Write((ushort)serializeFlags);
        if ((serializeFlags & HitData.HitDefaults.SerializeFlags.Damage) != HitData.HitDefaults.SerializeFlags.None)         if ((serializeFlags & HitData.HitDefaults.SerializeFlags.Damage) != HitData.HitDefaults.SerializeFlags.None)
        {         {
            pkg.Write(this.m_damage.m_damage);             pkg.Write(this.m_damage.m_damage);
        }         }
        if ((serializeFlags & HitData.HitDefaults.SerializeFlags.DamageBlunt) != HitData.HitDefaults.SerializeFlags.None)         if ((serializeFlags & HitData.HitDefaults.SerializeFlags.DamageBlunt) != HitData.HitDefaults.SerializeFlags.None)
        {         {
            pkg.Write(this.m_damage.m_blunt);             pkg.Write(this.m_damage.m_blunt);
        }         }
        if ((serializeFlags & HitData.HitDefaults.SerializeFlags.DamageSlash) != HitData.HitDefaults.SerializeFlags.None)         if ((serializeFlags & HitData.HitDefaults.SerializeFlags.DamageSlash) != HitData.HitDefaults.SerializeFlags.None)
        {         {
            pkg.Write(this.m_damage.m_slash);             pkg.Write(this.m_damage.m_slash);
        }         }
        if ((serializeFlags & HitData.HitDefaults.SerializeFlags.DamagePierce) != HitData.HitDefaults.SerializeFlags.None)         if ((serializeFlags & HitData.HitDefaults.SerializeFlags.DamagePierce) != HitData.HitDefaults.SerializeFlags.None)
        {         {
            pkg.Write(this.m_damage.m_pierce);             pkg.Write(this.m_damage.m_pierce);
        }         }
        if ((serializeFlags & HitData.HitDefaults.SerializeFlags.DamageChop) != HitData.HitDefaults.SerializeFlags.None)         if ((serializeFlags & HitData.HitDefaults.SerializeFlags.DamageChop) != HitData.HitDefaults.SerializeFlags.None)
        {         {
            pkg.Write(this.m_damage.m_chop);             pkg.Write(this.m_damage.m_chop);
        }         }
        if ((serializeFlags & HitData.HitDefaults.SerializeFlags.DamagePickaxe) != HitData.HitDefaults.SerializeFlags.None)         if ((serializeFlags & HitData.HitDefaults.SerializeFlags.DamagePickaxe) != HitData.HitDefaults.SerializeFlags.None)
        {         {
            pkg.Write(this.m_damage.m_pickaxe);             pkg.Write(this.m_damage.m_pickaxe);
        }         }
        if ((serializeFlags & HitData.HitDefaults.SerializeFlags.DamageFire) != HitData.HitDefaults.SerializeFlags.None)         if ((serializeFlags & HitData.HitDefaults.SerializeFlags.DamageFire) != HitData.HitDefaults.SerializeFlags.None)
        {         {
            pkg.Write(this.m_damage.m_fire);             pkg.Write(this.m_damage.m_fire);
        }         }
        if ((serializeFlags & HitData.HitDefaults.SerializeFlags.DamageFrost) != HitData.HitDefaults.SerializeFlags.None)         if ((serializeFlags & HitData.HitDefaults.SerializeFlags.DamageFrost) != HitData.HitDefaults.SerializeFlags.None)
        {         {
            pkg.Write(this.m_damage.m_frost);             pkg.Write(this.m_damage.m_frost);
        }         }
        if ((serializeFlags & HitData.HitDefaults.SerializeFlags.DamageLightning) != HitData.HitDefaults.SerializeFlags.None)         if ((serializeFlags & HitData.HitDefaults.SerializeFlags.DamageLightning) != HitData.HitDefaults.SerializeFlags.None)
        {         {
            pkg.Write(this.m_damage.m_lightning);             pkg.Write(this.m_damage.m_lightning);
        }         }
        if ((serializeFlags & HitData.HitDefaults.SerializeFlags.DamagePoison) != HitData.HitDefaults.SerializeFlags.None)         if ((serializeFlags & HitData.HitDefaults.SerializeFlags.DamagePoison) != HitData.HitDefaults.SerializeFlags.None)
        {         {
            pkg.Write(this.m_damage.m_poison);             pkg.Write(this.m_damage.m_poison);
        }         }
        if ((serializeFlags & HitData.HitDefaults.SerializeFlags.DamageSpirit) != HitData.HitDefaults.SerializeFlags.None)         if ((serializeFlags & HitData.HitDefaults.SerializeFlags.DamageSpirit) != HitData.HitDefaults.SerializeFlags.None)
        {         {
            pkg.Write(this.m_damage.m_spirit);             pkg.Write(this.m_damage.m_spirit);
        }         }
        pkg.Write(this.m_toolTier);         pkg.Write(this.m_toolTier);
        if ((serializeFlags & HitData.HitDefaults.SerializeFlags.PushForce) != HitData.HitDefaults.SerializeFlags.None)         if ((serializeFlags & HitData.HitDefaults.SerializeFlags.PushForce) != HitData.HitDefaults.SerializeFlags.None)
        {         {
            pkg.Write(this.m_pushForce);             pkg.Write(this.m_pushForce);
        }         }
        if ((serializeFlags & HitData.HitDefaults.SerializeFlags.BackstabBonus) != HitData.HitDefaults.SerializeFlags.None)         if ((serializeFlags & HitData.HitDefaults.SerializeFlags.BackstabBonus) != HitData.HitDefaults.SerializeFlags.None)
        {         {
            pkg.Write(this.m_backstabBonus);             pkg.Write(this.m_backstabBonus);
        }         }
        if ((serializeFlags & HitData.HitDefaults.SerializeFlags.StaggerMultiplier) != HitData.HitDefaults.SerializeFlags.None)         if ((serializeFlags & HitData.HitDefaults.SerializeFlags.StaggerMultiplier) != HitData.HitDefaults.SerializeFlags.None)
        {         {
            pkg.Write(this.m_staggerMultiplier);             pkg.Write(this.m_staggerMultiplier);
        }         }
        byte b = 0;         byte b = 0;
        if (this.m_dodgeable)         if (this.m_dodgeable)
        {         {
            b |= 1;             b |= 1;
        }         }
        if (this.m_blockable)         if (this.m_blockable)
        {         {
            b |= 2;             b |= 2;
        }         }
        if (this.m_ranged)         if (this.m_ranged)
        {         {
            b |= 4;             b |= 4;
        }         }
        if (this.m_ignorePVP)         if (this.m_ignorePVP)
        {         {
            b |= 8;             b |= 8;
        }         }
        pkg.Write(b);         pkg.Write(b);
        pkg.Write(this.m_point);         pkg.Write(this.m_point);
        pkg.Write(this.m_dir);         pkg.Write(this.m_dir);
        pkg.Write(this.m_statusEffectHash);         pkg.Write(this.m_statusEffectHash);
        if ((serializeFlags & HitData.HitDefaults.SerializeFlags.Attacker) != HitData.HitDefaults.SerializeFlags.None)         if ((serializeFlags & HitData.HitDefaults.SerializeFlags.Attacker) != HitData.HitDefaults.SerializeFlags.None)
        {         {
            pkg.Write(this.m_attacker);             pkg.Write(this.m_attacker);
        }         }
        pkg.Write((short)this.m_skill);         pkg.Write((short)this.m_skill);
        if ((serializeFlags & HitData.HitDefaults.SerializeFlags.SkillRaiseAmount) != HitData.HitDefaults.SerializeFlags.None)         if ((serializeFlags & HitData.HitDefaults.SerializeFlags.SkillRaiseAmount) != HitData.HitDefaults.SerializeFlags.None)
        {         {
            pkg.Write(this.m_skillRaiseAmount);             pkg.Write(this.m_skillRaiseAmount);
        }         }
        pkg.Write((char)this.m_weakSpot);         pkg.Write((char)this.m_weakSpot);
        pkg.Write(this.m_skillLevel);         pkg.Write(this.m_skillLevel);
        pkg.Write(this.m_itemLevel);         pkg.Write(this.m_itemLevel);
        pkg.Write(this.m_itemWorldLevel);         pkg.Write(this.m_itemWorldLevel);
        pkg.Write((byte)this.m_hitType);         pkg.Write((byte)this.m_hitType);
.          pkg.Write(this.m_healthReturn);
          pkg.Write(this.m_radius);
    }     }
   
    public void Deserialize(ref ZPackage pkg)     public void Deserialize(ref ZPackage pkg)
    {     {
        HitData.HitDefaults.SerializeFlags serializeFlags = (HitData.HitDefaults.SerializeFlags)pkg.ReadUShort();         HitData.HitDefaults.SerializeFlags serializeFlags = (HitData.HitDefaults.SerializeFlags)pkg.ReadUShort();
        this.m_damage.m_damage = (((serializeFlags & HitData.HitDefaults.SerializeFlags.Damage) != HitData.HitDefaults.SerializeFlags.None) ? pkg.ReadSingle() : 0f);         this.m_damage.m_damage = (((serializeFlags & HitData.HitDefaults.SerializeFlags.Damage) != HitData.HitDefaults.SerializeFlags.None) ? pkg.ReadSingle() : 0f);
        this.m_damage.m_blunt = (((serializeFlags & HitData.HitDefaults.SerializeFlags.DamageBlunt) != HitData.HitDefaults.SerializeFlags.None) ? pkg.ReadSingle() : 0f);         this.m_damage.m_blunt = (((serializeFlags & HitData.HitDefaults.SerializeFlags.DamageBlunt) != HitData.HitDefaults.SerializeFlags.None) ? pkg.ReadSingle() : 0f);
        this.m_damage.m_slash = (((serializeFlags & HitData.HitDefaults.SerializeFlags.DamageSlash) != HitData.HitDefaults.SerializeFlags.None) ? pkg.ReadSingle() : 0f);         this.m_damage.m_slash = (((serializeFlags & HitData.HitDefaults.SerializeFlags.DamageSlash) != HitData.HitDefaults.SerializeFlags.None) ? pkg.ReadSingle() : 0f);
        this.m_damage.m_pierce = (((serializeFlags & HitData.HitDefaults.SerializeFlags.DamagePierce) != HitData.HitDefaults.SerializeFlags.None) ? pkg.ReadSingle() : 0f);         this.m_damage.m_pierce = (((serializeFlags & HitData.HitDefaults.SerializeFlags.DamagePierce) != HitData.HitDefaults.SerializeFlags.None) ? pkg.ReadSingle() : 0f);
        this.m_damage.m_chop = (((serializeFlags & HitData.HitDefaults.SerializeFlags.DamageChop) != HitData.HitDefaults.SerializeFlags.None) ? pkg.ReadSingle() : 0f);         this.m_damage.m_chop = (((serializeFlags & HitData.HitDefaults.SerializeFlags.DamageChop) != HitData.HitDefaults.SerializeFlags.None) ? pkg.ReadSingle() : 0f);
        this.m_damage.m_pickaxe = (((serializeFlags & HitData.HitDefaults.SerializeFlags.DamagePickaxe) != HitData.HitDefaults.SerializeFlags.None) ? pkg.ReadSingle() : 0f);         this.m_damage.m_pickaxe = (((serializeFlags & HitData.HitDefaults.SerializeFlags.DamagePickaxe) != HitData.HitDefaults.SerializeFlags.None) ? pkg.ReadSingle() : 0f);
        this.m_damage.m_fire = (((serializeFlags & HitData.HitDefaults.SerializeFlags.DamageFire) != HitData.HitDefaults.SerializeFlags.None) ? pkg.ReadSingle() : 0f);         this.m_damage.m_fire = (((serializeFlags & HitData.HitDefaults.SerializeFlags.DamageFire) != HitData.HitDefaults.SerializeFlags.None) ? pkg.ReadSingle() : 0f);
        this.m_damage.m_frost = (((serializeFlags & HitData.HitDefaults.SerializeFlags.DamageFrost) != HitData.HitDefaults.SerializeFlags.None) ? pkg.ReadSingle() : 0f);         this.m_damage.m_frost = (((serializeFlags & HitData.HitDefaults.SerializeFlags.DamageFrost) != HitData.HitDefaults.SerializeFlags.None) ? pkg.ReadSingle() : 0f);
        this.m_damage.m_lightning = (((serializeFlags & HitData.HitDefaults.SerializeFlags.DamageLightning) != HitData.HitDefaults.SerializeFlags.None) ? pkg.ReadSingle() : 0f);         this.m_damage.m_lightning = (((serializeFlags & HitData.HitDefaults.SerializeFlags.DamageLightning) != HitData.HitDefaults.SerializeFlags.None) ? pkg.ReadSingle() : 0f);
        this.m_damage.m_poison = (((serializeFlags & HitData.HitDefaults.SerializeFlags.DamagePoison) != HitData.HitDefaults.SerializeFlags.None) ? pkg.ReadSingle() : 0f);         this.m_damage.m_poison = (((serializeFlags & HitData.HitDefaults.SerializeFlags.DamagePoison) != HitData.HitDefaults.SerializeFlags.None) ? pkg.ReadSingle() : 0f);
        this.m_damage.m_spirit = (((serializeFlags & HitData.HitDefaults.SerializeFlags.DamageSpirit) != HitData.HitDefaults.SerializeFlags.None) ? pkg.ReadSingle() : 0f);         this.m_damage.m_spirit = (((serializeFlags & HitData.HitDefaults.SerializeFlags.DamageSpirit) != HitData.HitDefaults.SerializeFlags.None) ? pkg.ReadSingle() : 0f);
        this.m_toolTier = pkg.ReadShort();         this.m_toolTier = pkg.ReadShort();
        this.m_pushForce = (((serializeFlags & HitData.HitDefaults.SerializeFlags.PushForce) != HitData.HitDefaults.SerializeFlags.None) ? pkg.ReadSingle() : 0f);         this.m_pushForce = (((serializeFlags & HitData.HitDefaults.SerializeFlags.PushForce) != HitData.HitDefaults.SerializeFlags.None) ? pkg.ReadSingle() : 0f);
        this.m_backstabBonus = (((serializeFlags & HitData.HitDefaults.SerializeFlags.BackstabBonus) != HitData.HitDefaults.SerializeFlags.None) ? pkg.ReadSingle() : 1f);         this.m_backstabBonus = (((serializeFlags & HitData.HitDefaults.SerializeFlags.BackstabBonus) != HitData.HitDefaults.SerializeFlags.None) ? pkg.ReadSingle() : 1f);
        this.m_staggerMultiplier = (((serializeFlags & HitData.HitDefaults.SerializeFlags.StaggerMultiplier) != HitData.HitDefaults.SerializeFlags.None) ? pkg.ReadSingle() : 1f);         this.m_staggerMultiplier = (((serializeFlags & HitData.HitDefaults.SerializeFlags.StaggerMultiplier) != HitData.HitDefaults.SerializeFlags.None) ? pkg.ReadSingle() : 1f);
        byte b = pkg.ReadByte();         byte b = pkg.ReadByte();
        this.m_dodgeable = (b & 1) > 0;         this.m_dodgeable = (b & 1) > 0;
        this.m_blockable = (b & 2) > 0;         this.m_blockable = (b & 2) > 0;
        this.m_ranged = (b & 4) > 0;         this.m_ranged = (b & 4) > 0;
        this.m_ignorePVP = (b & 8) > 0;         this.m_ignorePVP = (b & 8) > 0;
        this.m_point = pkg.ReadVector3();         this.m_point = pkg.ReadVector3();
        this.m_dir = pkg.ReadVector3();         this.m_dir = pkg.ReadVector3();
        this.m_statusEffectHash = pkg.ReadInt();         this.m_statusEffectHash = pkg.ReadInt();
        this.m_attacker = (((serializeFlags & HitData.HitDefaults.SerializeFlags.Attacker) != HitData.HitDefaults.SerializeFlags.None) ? pkg.ReadZDOID() : HitData.HitDefaults.s_attackerDefault);         this.m_attacker = (((serializeFlags & HitData.HitDefaults.SerializeFlags.Attacker) != HitData.HitDefaults.SerializeFlags.None) ? pkg.ReadZDOID() : HitData.HitDefaults.s_attackerDefault);
        this.m_skill = (Skills.SkillType)pkg.ReadShort();         this.m_skill = (Skills.SkillType)pkg.ReadShort();
        this.m_skillRaiseAmount = (((serializeFlags & HitData.HitDefaults.SerializeFlags.SkillRaiseAmount) != HitData.HitDefaults.SerializeFlags.None) ? pkg.ReadSingle() : 1f);         this.m_skillRaiseAmount = (((serializeFlags & HitData.HitDefaults.SerializeFlags.SkillRaiseAmount) != HitData.HitDefaults.SerializeFlags.None) ? pkg.ReadSingle() : 1f);
        this.m_weakSpot = (short)pkg.ReadChar();         this.m_weakSpot = (short)pkg.ReadChar();
        this.m_skillLevel = pkg.ReadSingle();         this.m_skillLevel = pkg.ReadSingle();
        this.m_itemLevel = pkg.ReadShort();         this.m_itemLevel = pkg.ReadShort();
        this.m_itemWorldLevel = pkg.ReadByte();         this.m_itemWorldLevel = pkg.ReadByte();
        this.m_hitType = (HitData.HitType)pkg.ReadByte();         this.m_hitType = (HitData.HitType)pkg.ReadByte();
.          this.m_healthReturn = pkg.ReadSingle();
          this.m_radius = pkg.ReadSingle();
    }     }
   
    public float GetTotalPhysicalDamage()     public float GetTotalPhysicalDamage()
    {     {
        return this.m_damage.GetTotalPhysicalDamage();         return this.m_damage.GetTotalPhysicalDamage();
    }     }
   
    public float GetTotalElementalDamage()     public float GetTotalElementalDamage()
    {     {
        return this.m_damage.GetTotalElementalDamage();         return this.m_damage.GetTotalElementalDamage();
    }     }
   
    public float GetTotalDamage()     public float GetTotalDamage()
    {     {
.          Character attacker = this.GetAttacker();
          if (attacker != null && Game.m_worldLevel > 0 && !attacker.IsPlayer())
          {
              return this.m_damage.GetTotalDamage() + (float)(Game.m_worldLevel * Game.instance.m_worldLevelEnemyBaseDamage);
          }
        return this.m_damage.GetTotalDamage();         return this.m_damage.GetTotalDamage();
    }     }
   
    private float ApplyModifier(float baseDamage, HitData.DamageModifier mod, ref float normalDmg, ref float resistantDmg, ref float weakDmg, ref float immuneDmg)     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)         if (mod == HitData.DamageModifier.Ignore)
        {         {
            return 0f;             return 0f;
        }         }
        float num = baseDamage;         float num = baseDamage;
        switch (mod)         switch (mod)
        {         {
        case HitData.DamageModifier.Resistant:         case HitData.DamageModifier.Resistant:
            num /= 2f;             num /= 2f;
            resistantDmg += baseDamage;             resistantDmg += baseDamage;
            return num;             return num;
        case HitData.DamageModifier.Weak:         case HitData.DamageModifier.Weak:
            num *= 1.5f;             num *= 1.5f;
            weakDmg += baseDamage;             weakDmg += baseDamage;
            return num;             return num;
        case HitData.DamageModifier.Immune:         case HitData.DamageModifier.Immune:
            num = 0f;             num = 0f;
            immuneDmg += baseDamage;             immuneDmg += baseDamage;
            return num;             return num;
        case HitData.DamageModifier.VeryResistant:         case HitData.DamageModifier.VeryResistant:
            num /= 4f;             num /= 4f;
            resistantDmg += baseDamage;             resistantDmg += baseDamage;
            return num;             return num;
        case HitData.DamageModifier.VeryWeak:         case HitData.DamageModifier.VeryWeak:
            num *= 2f;             num *= 2f;
            weakDmg += baseDamage;             weakDmg += baseDamage;
            return num;             return num;
        }         }
        normalDmg += baseDamage;         normalDmg += baseDamage;
        return num;         return num;
    }     }
   
    public void ApplyResistance(HitData.DamageModifiers modifiers, out HitData.DamageModifier significantModifier)     public void ApplyResistance(HitData.DamageModifiers modifiers, out HitData.DamageModifier significantModifier)
    {     {
        float damage = this.m_damage.m_damage;         float damage = this.m_damage.m_damage;
        float num = 0f;         float num = 0f;
        float num2 = 0f;         float num2 = 0f;
        float num3 = 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_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_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_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_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_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_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_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_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_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);         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;         significantModifier = HitData.DamageModifier.Immune;
        if (num3 >= num && num3 >= num2 && num3 >= damage)         if (num3 >= num && num3 >= num2 && num3 >= damage)
        {         {
            significantModifier = HitData.DamageModifier.Immune;             significantModifier = HitData.DamageModifier.Immune;
        }         }
        if (damage >= num && damage >= num2 && damage >= num3)         if (damage >= num && damage >= num2 && damage >= num3)
        {         {
            significantModifier = HitData.DamageModifier.Normal;             significantModifier = HitData.DamageModifier.Normal;
        }         }
        if (num >= num2 && num >= num3 && num >= damage)         if (num >= num2 && num >= num3 && num >= damage)
        {         {
            significantModifier = HitData.DamageModifier.Resistant;             significantModifier = HitData.DamageModifier.Resistant;
        }         }
        if (num2 >= num && num2 >= num3 && num2 >= damage)         if (num2 >= num && num2 >= num3 && num2 >= damage)
        {         {
            significantModifier = HitData.DamageModifier.Weak;             significantModifier = HitData.DamageModifier.Weak;
        }         }
    }     }
   
    public void ApplyArmor(float ac)     public void ApplyArmor(float ac)
    {     {
        this.m_damage.ApplyArmor(ac);         this.m_damage.ApplyArmor(ac);
    }     }
   
    public void ApplyModifier(float multiplier)     public void ApplyModifier(float multiplier)
    {     {
        this.m_damage.m_blunt = this.m_damage.m_blunt * multiplier;         this.m_damage.m_blunt = this.m_damage.m_blunt * multiplier;
        this.m_damage.m_slash = this.m_damage.m_slash * multiplier;         this.m_damage.m_slash = this.m_damage.m_slash * multiplier;
        this.m_damage.m_pierce = this.m_damage.m_pierce * multiplier;         this.m_damage.m_pierce = this.m_damage.m_pierce * multiplier;
        this.m_damage.m_chop = this.m_damage.m_chop * multiplier;         this.m_damage.m_chop = this.m_damage.m_chop * multiplier;
        this.m_damage.m_pickaxe = this.m_damage.m_pickaxe * multiplier;         this.m_damage.m_pickaxe = this.m_damage.m_pickaxe * multiplier;
        this.m_damage.m_fire = this.m_damage.m_fire * multiplier;         this.m_damage.m_fire = this.m_damage.m_fire * multiplier;
        this.m_damage.m_frost = this.m_damage.m_frost * multiplier;         this.m_damage.m_frost = this.m_damage.m_frost * multiplier;
        this.m_damage.m_lightning = this.m_damage.m_lightning * multiplier;         this.m_damage.m_lightning = this.m_damage.m_lightning * multiplier;
        this.m_damage.m_poison = this.m_damage.m_poison * multiplier;         this.m_damage.m_poison = this.m_damage.m_poison * multiplier;
        this.m_damage.m_spirit = this.m_damage.m_spirit * multiplier;         this.m_damage.m_spirit = this.m_damage.m_spirit * multiplier;
    }     }
   
    public float GetTotalBlockableDamage()     public float GetTotalBlockableDamage()
    {     {
        return this.m_damage.GetTotalBlockableDamage();         return this.m_damage.GetTotalBlockableDamage();
    }     }
   
    public void BlockDamage(float damage)     public void BlockDamage(float damage)
    {     {
        float totalBlockableDamage = this.GetTotalBlockableDamage();         float totalBlockableDamage = this.GetTotalBlockableDamage();
        float num = Mathf.Max(0f, totalBlockableDamage - damage);         float num = Mathf.Max(0f, totalBlockableDamage - damage);
        if (totalBlockableDamage <= 0f)         if (totalBlockableDamage <= 0f)
        {         {
            return;             return;
        }         }
        float num2 = num / totalBlockableDamage;         float num2 = num / totalBlockableDamage;
        this.m_damage.m_blunt = this.m_damage.m_blunt * num2;         this.m_damage.m_blunt = this.m_damage.m_blunt * num2;
        this.m_damage.m_slash = this.m_damage.m_slash * num2;         this.m_damage.m_slash = this.m_damage.m_slash * num2;
        this.m_damage.m_pierce = this.m_damage.m_pierce * num2;         this.m_damage.m_pierce = this.m_damage.m_pierce * num2;
        this.m_damage.m_fire = this.m_damage.m_fire * num2;         this.m_damage.m_fire = this.m_damage.m_fire * num2;
        this.m_damage.m_frost = this.m_damage.m_frost * num2;         this.m_damage.m_frost = this.m_damage.m_frost * num2;
        this.m_damage.m_lightning = this.m_damage.m_lightning * num2;         this.m_damage.m_lightning = this.m_damage.m_lightning * num2;
        this.m_damage.m_poison = this.m_damage.m_poison * num2;         this.m_damage.m_poison = this.m_damage.m_poison * num2;
        this.m_damage.m_spirit = this.m_damage.m_spirit * num2;         this.m_damage.m_spirit = this.m_damage.m_spirit * num2;
    }     }
   
    public bool HaveAttacker()     public bool HaveAttacker()
    {     {
        return !this.m_attacker.IsNone();         return !this.m_attacker.IsNone();
    }     }
   
    public Character GetAttacker()     public Character GetAttacker()
    {     {
        if (this.m_attacker.IsNone())         if (this.m_attacker.IsNone())
        {         {
            return null;             return null;
        }         }
        if (ZNetScene.instance == null)         if (ZNetScene.instance == null)
        {         {
            return null;             return null;
        }         }
        GameObject gameObject = ZNetScene.instance.FindInstance(this.m_attacker);         GameObject gameObject = ZNetScene.instance.FindInstance(this.m_attacker);
        if (gameObject == null)         if (gameObject == null)
        {         {
            return null;             return null;
        }         }
        return gameObject.GetComponent<Character>();         return gameObject.GetComponent<Character>();
    }     }
   
    public void SetAttacker(Character attacker)     public void SetAttacker(Character attacker)
    {     {
        if (attacker)         if (attacker)
        {         {
            this.m_attacker = attacker.GetZDOID();             this.m_attacker = attacker.GetZDOID();
            return;             return;
        }         }
        this.m_attacker = ZDOID.None;         this.m_attacker = ZDOID.None;
    }     }
   
.      public bool CheckToolTier(int minToolTier, bool alwaysAllowTierZero = false)
      {
          return ((int)this.m_itemWorldLevel >= Game.m_worldLevel || !ZoneSystem.instance.GetGlobalKey(GlobalKeys.WorldLevelLockedTools) || (minToolTier <= 0 && alwaysAllowTierZero)) && (int)this.m_toolTier >= minToolTier;
      }
   
      public override string ToString()
      {
          HitData.m_sb.Clear();
          HitData.m_sb.Append(string.Format("Hit: {0}, {1}", this.m_hitType, this.m_damage));
          if (this.m_toolTier > 0)
          {
              HitData.m_sb.Append(string.Format(", Tooltier: {0}", this.m_toolTier));
          }
          if (this.m_itemLevel > 0)
          {
              HitData.m_sb.Append(string.Format(", ItemLevel: {0}", this.m_itemLevel));
          }
          if (this.m_skill != Skills.SkillType.None)
          {
              HitData.m_sb.Append(string.Format(", Skill: {0}", this.m_skill));
          }
          if (this.m_statusEffectHash > 0)
          {
              HitData.m_sb.Append(string.Format(", Statushash: {0}", this.m_statusEffectHash));
          }
          Character attacker = this.GetAttacker();
          if (attacker != null)
          {
              HitData.m_sb.Append(", Attacker: " + attacker.m_name);
          }
          return HitData.m_sb.ToString();
      }
   
      private static StringBuilder m_sb = new StringBuilder();
   
    public HitData.DamageTypes m_damage;     public HitData.DamageTypes m_damage;
   
    public bool m_dodgeable;     public bool m_dodgeable;
   
    public bool m_blockable;     public bool m_blockable;
   
    public bool m_ranged;     public bool m_ranged;
   
    public bool m_ignorePVP;     public bool m_ignorePVP;
   
    public short m_toolTier;     public short m_toolTier;
   
    public float m_pushForce;     public float m_pushForce;
   
    public float m_backstabBonus = 1f;     public float m_backstabBonus = 1f;
   
    public float m_staggerMultiplier = 1f;     public float m_staggerMultiplier = 1f;
   
    public Vector3 m_point = Vector3.zero;     public Vector3 m_point = Vector3.zero;
   
    public Vector3 m_dir = Vector3.zero;     public Vector3 m_dir = Vector3.zero;
   
    public int m_statusEffectHash;     public int m_statusEffectHash;
   
    public ZDOID m_attacker = ZDOID.None;     public ZDOID m_attacker = ZDOID.None;
   
    public Skills.SkillType m_skill;     public Skills.SkillType m_skill;
   
    public float m_skillRaiseAmount = 1f;     public float m_skillRaiseAmount = 1f;
   
    public float m_skillLevel;     public float m_skillLevel;
   
    public short m_itemLevel;     public short m_itemLevel;
   
    public byte m_itemWorldLevel;     public byte m_itemWorldLevel;
   
    public HitData.HitType m_hitType;     public HitData.HitType m_hitType;
   
.      public float m_healthReturn;
   
      public float m_radius;
   
    public short m_weakSpot = -1;     public short m_weakSpot = -1;
   
    public Collider m_hitCollider;     public Collider m_hitCollider;
   
    private struct HitDefaults     private struct HitDefaults
    {     {
        public const float c_DamageDefault = 0f;         public const float c_DamageDefault = 0f;
   
        public const float c_PushForceDefault = 0f;         public const float c_PushForceDefault = 0f;
   
        public const float c_BackstabBonusDefault = 1f;         public const float c_BackstabBonusDefault = 1f;
   
        public const float c_StaggerMultiplierDefault = 1f;         public const float c_StaggerMultiplierDefault = 1f;
   
        public static readonly ZDOID s_attackerDefault = ZDOID.None;         public static readonly ZDOID s_attackerDefault = ZDOID.None;
   
        public const float c_SkillRaiseAmountDefault = 1f;         public const float c_SkillRaiseAmountDefault = 1f;
   
        [Flags]         [Flags]
        public enum SerializeFlags         public enum SerializeFlags
        {         {
            None = 0,             None = 0,
            Damage = 1,             Damage = 1,
            DamageBlunt = 2,             DamageBlunt = 2,
            DamageSlash = 4,             DamageSlash = 4,
            DamagePierce = 8,             DamagePierce = 8,
            DamageChop = 16,             DamageChop = 16,
            DamagePickaxe = 32,             DamagePickaxe = 32,
            DamageFire = 64,             DamageFire = 64,
            DamageFrost = 128,             DamageFrost = 128,
            DamageLightning = 256,             DamageLightning = 256,
            DamagePoison = 512,             DamagePoison = 512,
            DamageSpirit = 1024,             DamageSpirit = 1024,
            PushForce = 2048,             PushForce = 2048,
            BackstabBonus = 4096,             BackstabBonus = 4096,
            StaggerMultiplier = 8192,             StaggerMultiplier = 8192,
            Attacker = 16384,             Attacker = 16384,
            SkillRaiseAmount = 32768             SkillRaiseAmount = 32768
        }         }
    }     }
   
    [Flags]     [Flags]
    public enum DamageType     public enum DamageType
    {     {
        Blunt = 1,         Blunt = 1,
        Slash = 2,         Slash = 2,
        Pierce = 4,         Pierce = 4,
        Chop = 8,         Chop = 8,
        Pickaxe = 16,         Pickaxe = 16,
        Fire = 32,         Fire = 32,
        Frost = 64,         Frost = 64,
        Lightning = 128,         Lightning = 128,
        Poison = 256,         Poison = 256,
        Spirit = 512,         Spirit = 512,
.          Damage = 1024,
        Physical = 31,         Physical = 31,
        Elemental = 224         Elemental = 224
    }     }
   
    public enum DamageModifier     public enum DamageModifier
    {     {
        Normal,         Normal,
        Resistant,         Resistant,
        Weak,         Weak,
        Immune,         Immune,
        Ignore,         Ignore,
        VeryResistant,         VeryResistant,
        VeryWeak         VeryWeak
    }     }
   
    public enum HitType : byte     public enum HitType : byte
    {     {
        Undefined,         Undefined,
        EnemyHit,         EnemyHit,
        PlayerHit,         PlayerHit,
        Fall,         Fall,
        Drowning,         Drowning,
        Burning,         Burning,
        Freezing,         Freezing,
        Poisoned,         Poisoned,
        Water,         Water,
        Smoke,         Smoke,
        EdgeOfWorld,         EdgeOfWorld,
        Impact,         Impact,
        Cart,         Cart,
        Tree,         Tree,
        Self,         Self,
        Structural,         Structural,
        Turret,         Turret,
        Boat,         Boat,
.        Stalagtite          Stalagtite, 
          Catapult, 
          CinderFire, 
          AshlandsOcean 
    }     }
   
    [Serializable]     [Serializable]
    public struct DamageModPair     public struct DamageModPair
    {     {
        public HitData.DamageType m_type;         public HitData.DamageType m_type;
   
        public HitData.DamageModifier m_modifier;         public HitData.DamageModifier m_modifier;
    }     }
   
    [Serializable]     [Serializable]
    public struct DamageModifiers     public struct DamageModifiers
    {     {
        public HitData.DamageModifiers Clone()         public HitData.DamageModifiers Clone()
        {         {
            return (HitData.DamageModifiers)base.MemberwiseClone();             return (HitData.DamageModifiers)base.MemberwiseClone();
        }         }
   
        public void Apply(List<HitData.DamageModPair> modifiers)         public void Apply(List<HitData.DamageModPair> modifiers)
        {         {
            foreach (HitData.DamageModPair damageModPair in modifiers)             foreach (HitData.DamageModPair damageModPair in modifiers)
            {             {
                HitData.DamageType type = damageModPair.m_type;                 HitData.DamageType type = damageModPair.m_type;
                if (type <= HitData.DamageType.Fire)                 if (type <= HitData.DamageType.Fire)
                {                 {
                    if (type <= HitData.DamageType.Chop)                     if (type <= HitData.DamageType.Chop)
                    {                     {
                        switch (type)                         switch (type)
                        {                         {
                        case HitData.DamageType.Blunt:                         case HitData.DamageType.Blunt:
                            this.ApplyIfBetter(ref this.m_blunt, damageModPair.m_modifier);                             this.ApplyIfBetter(ref this.m_blunt, damageModPair.m_modifier);
                            break;                             break;
                        case HitData.DamageType.Slash:                         case HitData.DamageType.Slash:
                            this.ApplyIfBetter(ref this.m_slash, damageModPair.m_modifier);                             this.ApplyIfBetter(ref this.m_slash, damageModPair.m_modifier);
                            break;                             break;
                        case HitData.DamageType.Blunt | HitData.DamageType.Slash:                         case HitData.DamageType.Blunt | HitData.DamageType.Slash:
                            break;                             break;
                        case HitData.DamageType.Pierce:                         case HitData.DamageType.Pierce:
                            this.ApplyIfBetter(ref this.m_pierce, damageModPair.m_modifier);                             this.ApplyIfBetter(ref this.m_pierce, damageModPair.m_modifier);
                            break;                             break;
                        default:                         default:
                            if (type == HitData.DamageType.Chop)                             if (type == HitData.DamageType.Chop)
                            {                             {
                                this.ApplyIfBetter(ref this.m_chop, damageModPair.m_modifier);                                 this.ApplyIfBetter(ref this.m_chop, damageModPair.m_modifier);
                            }                             }
                            break;                             break;
                        }                         }
                    }                     }
                    else if (type != HitData.DamageType.Pickaxe)                     else if (type != HitData.DamageType.Pickaxe)
                    {                     {
                        if (type == HitData.DamageType.Fire)                         if (type == HitData.DamageType.Fire)
                        {                         {
                            this.ApplyIfBetter(ref this.m_fire, damageModPair.m_modifier);                             this.ApplyIfBetter(ref this.m_fire, damageModPair.m_modifier);
                        }                         }
                    }                     }
                    else                     else
                    {                     {
                        this.ApplyIfBetter(ref this.m_pickaxe, damageModPair.m_modifier);                         this.ApplyIfBetter(ref this.m_pickaxe, damageModPair.m_modifier);
                    }                     }
                }                 }
                else if (type <= HitData.DamageType.Lightning)                 else if (type <= HitData.DamageType.Lightning)
                {                 {
                    if (type != HitData.DamageType.Frost)                     if (type != HitData.DamageType.Frost)
                    {                     {
                        if (type == HitData.DamageType.Lightning)                         if (type == HitData.DamageType.Lightning)
                        {                         {
                            this.ApplyIfBetter(ref this.m_lightning, damageModPair.m_modifier);                             this.ApplyIfBetter(ref this.m_lightning, damageModPair.m_modifier);
                        }                         }
                    }                     }
                    else                     else
                    {                     {
                        this.ApplyIfBetter(ref this.m_frost, damageModPair.m_modifier);                         this.ApplyIfBetter(ref this.m_frost, damageModPair.m_modifier);
                    }                     }
                }                 }
                else if (type != HitData.DamageType.Poison)                 else if (type != HitData.DamageType.Poison)
                {                 {
                    if (type == HitData.DamageType.Spirit)                     if (type == HitData.DamageType.Spirit)
                    {                     {
                        this.ApplyIfBetter(ref this.m_spirit, damageModPair.m_modifier);                         this.ApplyIfBetter(ref this.m_spirit, damageModPair.m_modifier);
                    }                     }
                }                 }
                else                 else
                {                 {
                    this.ApplyIfBetter(ref this.m_poison, damageModPair.m_modifier);                     this.ApplyIfBetter(ref this.m_poison, damageModPair.m_modifier);
                }                 }
            }             }
        }         }
   
        public HitData.DamageModifier GetModifier(HitData.DamageType type)         public HitData.DamageModifier GetModifier(HitData.DamageType type)
        {         {
            if (type <= HitData.DamageType.Fire)             if (type <= HitData.DamageType.Fire)
            {             {
                if (type <= HitData.DamageType.Chop)                 if (type <= HitData.DamageType.Chop)
                {                 {
                    switch (type)                     switch (type)
                    {                     {
                    case HitData.DamageType.Blunt:                     case HitData.DamageType.Blunt:
                        return this.m_blunt;                         return this.m_blunt;
                    case HitData.DamageType.Slash:                     case HitData.DamageType.Slash:
                        return this.m_slash;                         return this.m_slash;
                    case HitData.DamageType.Blunt | HitData.DamageType.Slash:                     case HitData.DamageType.Blunt | HitData.DamageType.Slash:
                        break;                         break;
                    case HitData.DamageType.Pierce:                     case HitData.DamageType.Pierce:
                        return this.m_pierce;                         return this.m_pierce;
                    default:                     default:
                        if (type == HitData.DamageType.Chop)                         if (type == HitData.DamageType.Chop)
                        {                         {
                            return this.m_chop;                             return this.m_chop;
                        }                         }
                        break;                         break;
                    }                     }
                }                 }
                else                 else
                {                 {
                    if (type == HitData.DamageType.Pickaxe)                     if (type == HitData.DamageType.Pickaxe)
                    {                     {
                        return this.m_pickaxe;                         return this.m_pickaxe;
                    }                     }
                    if (type == HitData.DamageType.Fire)                     if (type == HitData.DamageType.Fire)
                    {                     {
                        return this.m_fire;                         return this.m_fire;
                    }                     }
                }                 }
            }             }
            else if (type <= HitData.DamageType.Lightning)             else if (type <= HitData.DamageType.Lightning)
            {             {
                if (type == HitData.DamageType.Frost)                 if (type == HitData.DamageType.Frost)
                {                 {
                    return this.m_frost;                     return this.m_frost;
                }                 }
                if (type == HitData.DamageType.Lightning)                 if (type == HitData.DamageType.Lightning)
                {                 {
                    return this.m_lightning;                     return this.m_lightning;
                }                 }
            }             }
            else             else
            {             {
                if (type == HitData.DamageType.Poison)                 if (type == HitData.DamageType.Poison)
                {                 {
                    return this.m_poison;                     return this.m_poison;
                }                 }
                if (type == HitData.DamageType.Spirit)                 if (type == HitData.DamageType.Spirit)
                {                 {
                    return this.m_spirit;                     return this.m_spirit;
                }                 }
            }             }
            return HitData.DamageModifier.Normal;             return HitData.DamageModifier.Normal;
        }         }
   
        private void ApplyIfBetter(ref HitData.DamageModifier original, HitData.DamageModifier mod)         private void ApplyIfBetter(ref HitData.DamageModifier original, HitData.DamageModifier mod)
        {         {
            if (this.ShouldOverride(original, mod))             if (this.ShouldOverride(original, mod))
            {             {
                original = mod;                 original = mod;
            }             }
        }         }
   
        private bool ShouldOverride(HitData.DamageModifier a, HitData.DamageModifier b)         private 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) && ((a != HitData.DamageModifier.Resistant && a != HitData.DamageModifier.VeryResistant && a != HitData.DamageModifier.Immune) || (b != HitData.DamageModifier.Weak && b != HitData.DamageModifier.VeryWeak))));             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) && ((a != HitData.DamageModifier.Resistant && a != HitData.DamageModifier.VeryResistant && a != HitData.DamageModifier.Immune) || (b != HitData.DamageModifier.Weak && b != HitData.DamageModifier.VeryWeak))));
        }         }
   
        public void Print()         public void Print()
        {         {
            ZLog.Log("m_blunt " + this.m_blunt.ToString());             ZLog.Log("m_blunt " + this.m_blunt.ToString());
            ZLog.Log("m_slash " + this.m_slash.ToString());             ZLog.Log("m_slash " + this.m_slash.ToString());
            ZLog.Log("m_pierce " + this.m_pierce.ToString());             ZLog.Log("m_pierce " + this.m_pierce.ToString());
            ZLog.Log("m_chop " + this.m_chop.ToString());             ZLog.Log("m_chop " + this.m_chop.ToString());
            ZLog.Log("m_pickaxe " + this.m_pickaxe.ToString());             ZLog.Log("m_pickaxe " + this.m_pickaxe.ToString());
            ZLog.Log("m_fire " + this.m_fire.ToString());             ZLog.Log("m_fire " + this.m_fire.ToString());
            ZLog.Log("m_frost " + this.m_frost.ToString());             ZLog.Log("m_frost " + this.m_frost.ToString());
            ZLog.Log("m_lightning " + this.m_lightning.ToString());             ZLog.Log("m_lightning " + this.m_lightning.ToString());
            ZLog.Log("m_poison " + this.m_poison.ToString());             ZLog.Log("m_poison " + this.m_poison.ToString());
            ZLog.Log("m_spirit " + this.m_spirit.ToString());             ZLog.Log("m_spirit " + this.m_spirit.ToString());
        }         }
   
        public HitData.DamageModifier m_blunt;         public HitData.DamageModifier m_blunt;
   
        public HitData.DamageModifier m_slash;         public HitData.DamageModifier m_slash;
   
        public HitData.DamageModifier m_pierce;         public HitData.DamageModifier m_pierce;
   
        public HitData.DamageModifier m_chop;         public HitData.DamageModifier m_chop;
   
        public HitData.DamageModifier m_pickaxe;         public HitData.DamageModifier m_pickaxe;
   
        public HitData.DamageModifier m_fire;         public HitData.DamageModifier m_fire;
   
        public HitData.DamageModifier m_frost;         public HitData.DamageModifier m_frost;
   
        public HitData.DamageModifier m_lightning;         public HitData.DamageModifier m_lightning;
   
        public HitData.DamageModifier m_poison;         public HitData.DamageModifier m_poison;
   
        public HitData.DamageModifier m_spirit;         public HitData.DamageModifier m_spirit;
    }     }
   
    [Serializable]     [Serializable]
    public struct DamageTypes     public struct DamageTypes
    {     {
        public bool HaveDamage()         public bool HaveDamage()
        {         {
            return this.m_damage > 0f || this.m_blunt > 0f || this.m_slash > 0f || this.m_pierce > 0f || this.m_chop > 0f || this.m_pickaxe > 0f || this.m_fire > 0f || this.m_frost > 0f || this.m_lightning > 0f || this.m_poison > 0f || this.m_spirit > 0f;             return this.m_damage > 0f || this.m_blunt > 0f || this.m_slash > 0f || this.m_pierce > 0f || this.m_chop > 0f || this.m_pickaxe > 0f || this.m_fire > 0f || this.m_frost > 0f || this.m_lightning > 0f || this.m_poison > 0f || this.m_spirit > 0f;
        }         }
   
        public float GetTotalPhysicalDamage()         public float GetTotalPhysicalDamage()
        {         {
            return this.m_blunt + this.m_slash + this.m_pierce;             return this.m_blunt + this.m_slash + this.m_pierce;
        }         }
   
        public float GetTotalStaggerDamage()         public float GetTotalStaggerDamage()
        {         {
            return this.m_blunt + this.m_slash + this.m_pierce + this.m_lightning;             return this.m_blunt + this.m_slash + this.m_pierce + this.m_lightning;
        }         }
   
        public float GetTotalBlockableDamage()         public float GetTotalBlockableDamage()
        {         {
            return this.m_blunt + this.m_slash + this.m_pierce + this.m_fire + this.m_frost + this.m_lightning + this.m_poison + this.m_spirit;             return this.m_blunt + this.m_slash + this.m_pierce + this.m_fire + this.m_frost + this.m_lightning + this.m_poison + this.m_spirit;
        }         }
   
        public float GetTotalElementalDamage()         public float GetTotalElementalDamage()
        {         {
            return this.m_fire + this.m_frost + this.m_lightning;             return this.m_fire + this.m_frost + this.m_lightning;
        }         }
   
        public float GetTotalDamage()         public float GetTotalDamage()
        {         {
            return this.m_damage + this.m_blunt + this.m_slash + this.m_pierce + this.m_chop + this.m_pickaxe + this.m_fire + this.m_frost + this.m_lightning + this.m_poison + this.m_spirit;             return this.m_damage + this.m_blunt + this.m_slash + this.m_pierce + this.m_chop + this.m_pickaxe + this.m_fire + this.m_frost + this.m_lightning + this.m_poison + this.m_spirit;
        }         }
   
        public HitData.DamageTypes Clone()         public HitData.DamageTypes Clone()
        {         {
            return (HitData.DamageTypes)base.MemberwiseClone();             return (HitData.DamageTypes)base.MemberwiseClone();
        }         }
   
        public void Add(HitData.DamageTypes other, int multiplier = 1)         public void Add(HitData.DamageTypes other, int multiplier = 1)
        {         {
            this.m_damage += other.m_damage * (float)multiplier;             this.m_damage += other.m_damage * (float)multiplier;
            this.m_blunt += other.m_blunt * (float)multiplier;             this.m_blunt += other.m_blunt * (float)multiplier;
            this.m_slash += other.m_slash * (float)multiplier;             this.m_slash += other.m_slash * (float)multiplier;
            this.m_pierce += other.m_pierce * (float)multiplier;             this.m_pierce += other.m_pierce * (float)multiplier;
            this.m_chop += other.m_chop * (float)multiplier;             this.m_chop += other.m_chop * (float)multiplier;
            this.m_pickaxe += other.m_pickaxe * (float)multiplier;             this.m_pickaxe += other.m_pickaxe * (float)multiplier;
            this.m_fire += other.m_fire * (float)multiplier;             this.m_fire += other.m_fire * (float)multiplier;
            this.m_frost += other.m_frost * (float)multiplier;             this.m_frost += other.m_frost * (float)multiplier;
            this.m_lightning += other.m_lightning * (float)multiplier;             this.m_lightning += other.m_lightning * (float)multiplier;
            this.m_poison += other.m_poison * (float)multiplier;             this.m_poison += other.m_poison * (float)multiplier;
            this.m_spirit += other.m_spirit * (float)multiplier;             this.m_spirit += other.m_spirit * (float)multiplier;
        }         }
   
        public void Modify(float multiplier)         public void Modify(float multiplier)
        {         {
            this.m_damage *= multiplier;             this.m_damage *= multiplier;
            this.m_blunt *= multiplier;             this.m_blunt *= multiplier;
            this.m_slash *= multiplier;             this.m_slash *= multiplier;
            this.m_pierce *= multiplier;             this.m_pierce *= multiplier;
            this.m_chop *= multiplier;             this.m_chop *= multiplier;
            this.m_pickaxe *= multiplier;             this.m_pickaxe *= multiplier;
            this.m_fire *= multiplier;             this.m_fire *= multiplier;
            this.m_frost *= multiplier;             this.m_frost *= multiplier;
            this.m_lightning *= multiplier;             this.m_lightning *= multiplier;
            this.m_poison *= multiplier;             this.m_poison *= multiplier;
            this.m_spirit *= multiplier;             this.m_spirit *= multiplier;
        }         }
   
.          public void Modify(HitData.DamageTypes multipliers)
          {
              this.m_damage *= 1f + multipliers.m_damage;
              this.m_blunt *= 1f + multipliers.m_blunt;
              this.m_slash *= 1f + multipliers.m_slash;
              this.m_pierce *= 1f + multipliers.m_pierce;
              this.m_chop *= 1f + multipliers.m_chop;
              this.m_pickaxe *= 1f + multipliers.m_pickaxe;
              this.m_fire *= 1f + multipliers.m_fire;
              this.m_frost *= 1f + multipliers.m_frost;
              this.m_lightning *= 1f + multipliers.m_lightning;
              this.m_poison *= 1f + multipliers.m_poison;
              this.m_spirit *= 1f + multipliers.m_spirit;
          }
   
        public void IncreaseEqually(float totalDamageIncrease, bool seperateUtilityDamage = false)         public void IncreaseEqually(float totalDamageIncrease, bool seperateUtilityDamage = false)
        {         {
.            HitData.DamageTypes.<>c__DisplayClass20_0 CS$<>8__locals1;             HitData.DamageTypes.<>c__DisplayClass21_0 CS$<>8__locals1;
            CS$<>8__locals1.totalDamageIncrease = totalDamageIncrease;             CS$<>8__locals1.totalDamageIncrease = totalDamageIncrease;
            CS$<>8__locals1.total = this.GetTotalDamage();             CS$<>8__locals1.total = this.GetTotalDamage();
            if (CS$<>8__locals1.total <= 0f)             if (CS$<>8__locals1.total <= 0f)
            {             {
                return;                 return;
            }             }
            if (seperateUtilityDamage)             if (seperateUtilityDamage)
            {             {
                float chop = this.m_chop;                 float chop = this.m_chop;
                this.m_chop += this.m_chop / CS$<>8__locals1.total * CS$<>8__locals1.totalDamageIncrease;                 this.m_chop += this.m_chop / CS$<>8__locals1.total * CS$<>8__locals1.totalDamageIncrease;
                CS$<>8__locals1.total -= chop;                 CS$<>8__locals1.total -= chop;
            }             }
            else             else
            {             {
.                HitData.DamageTypes.<IncreaseEqually>g__increase|20_0(ref this.m_chop, ref CS$<>8__locals1);                 HitData.DamageTypes.<IncreaseEqually>g__increase|21_0(ref this.m_chop, ref CS$<>8__locals1);
            }             }
.            HitData.DamageTypes.<IncreaseEqually>g__increase|20_0(ref this.m_damage, ref CS$<>8__locals1);             HitData.DamageTypes.<IncreaseEqually>g__increase|21_0(ref this.m_damage, ref CS$<>8__locals1);
            HitData.DamageTypes.<IncreaseEqually>g__increase|20_0(ref this.m_blunt, ref CS$<>8__locals1);             HitData.DamageTypes.<IncreaseEqually>g__increase|21_0(ref this.m_blunt, ref CS$<>8__locals1);
            HitData.DamageTypes.<IncreaseEqually>g__increase|20_0(ref this.m_slash, ref CS$<>8__locals1);             HitData.DamageTypes.<IncreaseEqually>g__increase|21_0(ref this.m_slash, ref CS$<>8__locals1);
            HitData.DamageTypes.<IncreaseEqually>g__increase|20_0(ref this.m_pierce, ref CS$<>8__locals1);             HitData.DamageTypes.<IncreaseEqually>g__increase|21_0(ref this.m_pierce, ref CS$<>8__locals1);
            HitData.DamageTypes.<IncreaseEqually>g__increase|20_0(ref this.m_pickaxe, ref CS$<>8__locals1);             HitData.DamageTypes.<IncreaseEqually>g__increase|21_0(ref this.m_pickaxe, ref CS$<>8__locals1);
            HitData.DamageTypes.<IncreaseEqually>g__increase|20_0(ref this.m_fire, ref CS$<>8__locals1);             HitData.DamageTypes.<IncreaseEqually>g__increase|21_0(ref this.m_fire, ref CS$<>8__locals1);
            HitData.DamageTypes.<IncreaseEqually>g__increase|20_0(ref this.m_frost, ref CS$<>8__locals1);             HitData.DamageTypes.<IncreaseEqually>g__increase|21_0(ref this.m_frost, ref CS$<>8__locals1);
            HitData.DamageTypes.<IncreaseEqually>g__increase|20_0(ref this.m_lightning, ref CS$<>8__locals1);             HitData.DamageTypes.<IncreaseEqually>g__increase|21_0(ref this.m_lightning, ref CS$<>8__locals1);
            HitData.DamageTypes.<IncreaseEqually>g__increase|20_0(ref this.m_poison, ref CS$<>8__locals1);             HitData.DamageTypes.<IncreaseEqually>g__increase|21_0(ref this.m_poison, ref CS$<>8__locals1);
            HitData.DamageTypes.<IncreaseEqually>g__increase|20_0(ref this.m_spirit, ref CS$<>8__locals1);             HitData.DamageTypes.<IncreaseEqually>g__increase|21_0(ref this.m_spirit, ref CS$<>8__locals1);
        }         }
   
        public static float ApplyArmor(float dmg, float ac)         public static float ApplyArmor(float dmg, float ac)
        {         {
            float num = Mathf.Clamp01(dmg / (ac * 4f)) * dmg;             float num = Mathf.Clamp01(dmg / (ac * 4f)) * dmg;
            if (ac < dmg / 2f)             if (ac < dmg / 2f)
            {             {
                num = dmg - ac;                 num = dmg - ac;
            }             }
            return num;             return num;
        }         }
   
        public void ApplyArmor(float ac)         public void ApplyArmor(float ac)
        {         {
            if (ac <= 0f)             if (ac <= 0f)
            {             {
                return;                 return;
            }             }
            float num = this.m_blunt + this.m_slash + this.m_pierce + this.m_fire + this.m_frost + this.m_lightning + this.m_poison + this.m_spirit;             float num = this.m_blunt + this.m_slash + this.m_pierce + this.m_fire + this.m_frost + this.m_lightning + this.m_poison + this.m_spirit;
            if (num <= 0f)             if (num <= 0f)
            {             {
                return;                 return;
            }             }
            float num2 = HitData.DamageTypes.ApplyArmor(num, ac) / num;             float num2 = HitData.DamageTypes.ApplyArmor(num, ac) / num;
            this.m_blunt *= num2;             this.m_blunt *= num2;
            this.m_slash *= num2;             this.m_slash *= num2;
            this.m_pierce *= num2;             this.m_pierce *= num2;
            this.m_fire *= num2;             this.m_fire *= num2;
            this.m_frost *= num2;             this.m_frost *= num2;
            this.m_lightning *= num2;             this.m_lightning *= num2;
            this.m_poison *= num2;             this.m_poison *= num2;
            this.m_spirit *= num2;             this.m_spirit *= num2;
        }         }
   
.        private string DamageRange(float damage, float minFactor, float maxFactor)         public HitData.DamageType GetMajorityDamageType()
        {         {
.            int num = Mathf.RoundToInt(damage * minFactor);             float num;
            int num2 = Mathf.RoundToInt(damage * maxFactor);             return this.GetMajorityDamageType(out num);
            return string.Concat(new string[]          } 
            {   
                "<color=orange>",          public HitData.DamageType GetMajorityDamageType(out float damage) 
                Mathf.RoundToInt(damage).ToString(),          { 
                "</color> <color=yellow>(",              damage = this.m_damage; 
                num.ToString(),              HitData.DamageType damageType = HitData.DamageType.Damage; 
                "-",              if (this.m_slash > damage) 
                num2.ToString(),              { 
                ") </color>"                  damage = this.m_slash; 
            });                 damageType = HitData.DamageType.Slash;
              } 
              if (this.m_pierce > damage) 
              { 
                  damage = this.m_pierce; 
                  damageType = HitData.DamageType.Pierce; 
              } 
              if (this.m_chop > damage) 
              { 
                  damage = this.m_chop; 
                  damageType = HitData.DamageType.Chop; 
              } 
              if (this.m_pickaxe > damage) 
              { 
                  damage = this.m_pickaxe; 
                  damageType = HitData.DamageType.Pickaxe; 
              } 
              if (this.m_fire > damage) 
              { 
                  damage = this.m_fire; 
                  damageType = HitData.DamageType.Fire; 
              } 
              if (this.m_frost > damage) 
              { 
                  damage = this.m_frost; 
                  damageType = HitData.DamageType.Frost; 
              } 
              if (this.m_lightning > damage) 
              { 
                  damage = this.m_lightning; 
                  damageType = HitData.DamageType.Lightning; 
              } 
              if (this.m_poison > damage) 
              { 
                  damage = this.m_poison; 
                  damageType = HitData.DamageType.Poison; 
              } 
              if (this.m_spirit > damage) 
              { 
                  damage = this.m_spirit; 
                  damageType = HitData.DamageType.Spirit; 
              } 
              return damageType; 
        }         }
   
        public string GetTooltipString(Skills.SkillType skillType = Skills.SkillType.None)         public string GetTooltipString(Skills.SkillType skillType = Skills.SkillType.None)
        {         {
            if (Player.m_localPlayer == null)             if (Player.m_localPlayer == null)
            {             {
                return "";                 return "";
            }             }
            float num;             float num;
            float num2;             float num2;
            Player.m_localPlayer.GetSkills().GetRandomSkillRange(out num, out num2, skillType);             Player.m_localPlayer.GetSkills().GetRandomSkillRange(out num, out num2, skillType);
.            string text = "";             HitData.DamageTypes.m_sb.Clear();
            if (this.m_damage != 0f)             if (this.m_damage != 0f)
            {             {
.                text = text + "\n$inventory_damage: " + this.DamageRange(this.m_damage, num, num2);                 HitData.DamageTypes.m_sb.Append(string.Format("\n$inventory_damage: <color=orange>{0}</color> <color=yellow>({1}-{2}) </color>", Mathf.RoundToInt(this.m_damage), Mathf.RoundToInt(this.m_damage * num), Mathf.RoundToInt(this.m_damage * num2)));
            }             }
            if (this.m_blunt != 0f)             if (this.m_blunt != 0f)
            {             {
.                text = text + "\n$inventory_blunt: " + this.DamageRange(this.m_blunt, num, num2);                 HitData.DamageTypes.m_sb.Append(string.Format("\n$inventory_blunt: <color=orange>{0}</color> <color=yellow>({1}-{2}) </color>", Mathf.RoundToInt(this.m_blunt), Mathf.RoundToInt(this.m_blunt * num), Mathf.RoundToInt(this.m_blunt * num2)));
            }             }
            if (this.m_slash != 0f)             if (this.m_slash != 0f)
            {             {
.                text = text + "\n$inventory_slash: " + this.DamageRange(this.m_slash, num, num2);                 HitData.DamageTypes.m_sb.Append(string.Format("\n$inventory_slash: <color=orange>{0}</color> <color=yellow>({1}-{2}) </color>", Mathf.RoundToInt(this.m_slash), Mathf.RoundToInt(this.m_slash * num), Mathf.RoundToInt(this.m_slash * num2)));
            }             }
            if (this.m_pierce != 0f)             if (this.m_pierce != 0f)
            {             {
.                text = text + "\n$inventory_pierce: " + this.DamageRange(this.m_pierce, num, num2);                 HitData.DamageTypes.m_sb.Append(string.Format("\n$inventory_pierce: <color=orange>{0}</color> <color=yellow>({1}-{2}) </color>", Mathf.RoundToInt(this.m_pierce), Mathf.RoundToInt(this.m_pierce * num), Mathf.RoundToInt(this.m_pierce * num2)));
            }             }
            if (this.m_fire != 0f)             if (this.m_fire != 0f)
            {             {
.                text = text + "\n$inventory_fire: " + this.DamageRange(this.m_fire, num, num2);                 HitData.DamageTypes.m_sb.Append(string.Format("\n$inventory_fire: <color=orange>{0}</color> <color=yellow>({1}-{2}) </color>", Mathf.RoundToInt(this.m_fire), Mathf.RoundToInt(this.m_fire * num), Mathf.RoundToInt(this.m_fire * num2)));
            }             }
            if (this.m_frost != 0f)             if (this.m_frost != 0f)
            {             {
.                text = text + "\n$inventory_frost: " + this.DamageRange(this.m_frost, num, num2);                 HitData.DamageTypes.m_sb.Append(string.Format("\n$inventory_frost: <color=orange>{0}</color> <color=yellow>({1}-{2}) </color>", Mathf.RoundToInt(this.m_frost), Mathf.RoundToInt(this.m_frost * num), Mathf.RoundToInt(this.m_frost * num2)));
            }             }
            if (this.m_lightning != 0f)             if (this.m_lightning != 0f)
            {             {
.                text = text + "\n$inventory_lightning: " + this.DamageRange(this.m_lightning, num, num2);                 HitData.DamageTypes.m_sb.Append(string.Format("\n$inventory_lightning: <color=orange>{0}</color> <color=yellow>({1}-{2}) </color>", Mathf.RoundToInt(this.m_lightning), Mathf.RoundToInt(this.m_lightning * num), Mathf.RoundToInt(this.m_lightning * num2)));
            }             }
            if (this.m_poison != 0f)             if (this.m_poison != 0f)
            {             {
.                text = text + "\n$inventory_poison: " + this.DamageRange(this.m_poison, num, num2);                 HitData.DamageTypes.m_sb.Append(string.Format("\n$inventory_poison: <color=orange>{0}</color> <color=yellow>({1}-{2}) </color>", Mathf.RoundToInt(this.m_poison), Mathf.RoundToInt(this.m_poison * num), Mathf.RoundToInt(this.m_poison * num2)));
            }             }
            if (this.m_spirit != 0f)             if (this.m_spirit != 0f)
            {             {
.                text = text + "\n$inventory_spirit: " + this.DamageRange(this.m_spirit, num, num2);                 HitData.DamageTypes.m_sb.Append(string.Format("\n$inventory_spirit: <color=orange>{0}</color> <color=yellow>({1}-{2}) </color>", Mathf.RoundToInt(this.m_spirit), Mathf.RoundToInt(this.m_spirit * num), Mathf.RoundToInt(this.m_spirit * num2)));
            }             }
.            return text;             return HitData.DamageTypes.m_sb.ToString();
        }         }
   
        public string GetTooltipString()         public string GetTooltipString()
        {         {
.            string text = "";             HitData.DamageTypes.m_sb.Clear();
            if (this.m_damage != 0f)             if (this.m_damage != 0f)
            {             {
.                text = text + "\n$inventory_damage: <color=yellow>" + this.m_damage.ToString() + "</color>";                 HitData.DamageTypes.m_sb.Append(string.Format("\n$inventory_damage: <color=yellow>{0}</color>", this.m_damage));
            }             }
            if (this.m_blunt != 0f)             if (this.m_blunt != 0f)
            {             {
.                text = text + "\n$inventory_blunt: <color=yellow>" + this.m_blunt.ToString() + "</color>";                 HitData.DamageTypes.m_sb.Append(string.Format("\n$inventory_blunt: <color=yellow>{0}</color>", this.m_blunt));
            }             }
            if (this.m_slash != 0f)             if (this.m_slash != 0f)
            {             {
.                text = text + "\n$inventory_slash: <color=yellow>" + this.m_slash.ToString() + "</color>";                 HitData.DamageTypes.m_sb.Append(string.Format("\n$inventory_slash: <color=yellow>{0}</color>", this.m_slash));
            }             }
            if (this.m_pierce != 0f)             if (this.m_pierce != 0f)
            {             {
.                text = text + "\n$inventory_pierce: <color=yellow>" + this.m_pierce.ToString() + "</color>";                 HitData.DamageTypes.m_sb.Append(string.Format("\n$inventory_pierce: <color=yellow>{0}</color>", this.m_pierce));
            }             }
            if (this.m_fire != 0f)             if (this.m_fire != 0f)
            {             {
.                text = text + "\n$inventory_fire: <color=yellow>" + this.m_fire.ToString() + "</color>";                 HitData.DamageTypes.m_sb.Append(string.Format("\n$inventory_fire: <color=yellow>{0}</color>", this.m_fire));
            }             }
            if (this.m_frost != 0f)             if (this.m_frost != 0f)
            {             {
.                text = text + "\n$inventory_frost: <color=yellow>" + this.m_frost.ToString() + "</color>";                 HitData.DamageTypes.m_sb.Append(string.Format("\n$inventory_frost: <color=yellow>{0}</color>", this.m_frost));
            }             }
            if (this.m_lightning != 0f)             if (this.m_lightning != 0f)
            {             {
.                text = text + "\n$inventory_lightning: <color=yellow>" + this.m_frost.ToString() + "</color>";                 HitData.DamageTypes.m_sb.Append(string.Format("\n$inventory_lightning: <color=yellow>{0}</color>", this.m_frost));
            }             }
            if (this.m_poison != 0f)             if (this.m_poison != 0f)
            {             {
.                text = text + "\n$inventory_poison: <color=yellow>" + this.m_poison.ToString() + "</color>";                 HitData.DamageTypes.m_sb.Append(string.Format("\n$inventory_poison: <color=yellow>{0}</color>", this.m_poison));
            }             }
            if (this.m_spirit != 0f)             if (this.m_spirit != 0f)
            {             {
.                text = text + "\n$inventory_spirit: <color=yellow>" + this.m_spirit.ToString() + "</color>";                 HitData.DamageTypes.m_sb.Append(string.Format("\n$inventory_spirit: <color=yellow>{0}</color>", this.m_spirit));
            }             }
.            return text;             return HitData.DamageTypes.m_sb.ToString();
          } 
   
          public override string ToString() 
          { 
              HitData.DamageTypes.m_sb.Clear(); 
              if (this.m_damage != 0f) 
              { 
                  HitData.DamageTypes.m_sb.Append(string.Format("Damage: {0} ", this.m_damage)); 
              } 
              if (this.m_blunt != 0f) 
              { 
                  HitData.DamageTypes.m_sb.Append(string.Format("Blunt: {0} ", this.m_blunt)); 
              } 
              if (this.m_slash != 0f) 
              { 
                  HitData.DamageTypes.m_sb.Append(string.Format("Slash: {0} ", this.m_slash)); 
              } 
              if (this.m_pierce != 0f) 
              { 
                  HitData.DamageTypes.m_sb.Append(string.Format("Pierce: {0} ", this.m_pierce)); 
              } 
              if (this.m_fire != 0f) 
              { 
                  HitData.DamageTypes.m_sb.Append(string.Format("Fire: {0} ", this.m_fire)); 
              } 
              if (this.m_frost != 0f) 
              { 
                  HitData.DamageTypes.m_sb.Append(string.Format("Frost: {0} ", this.m_frost)); 
              } 
              if (this.m_lightning != 0f) 
              { 
                  HitData.DamageTypes.m_sb.Append(string.Format("Lightning: {0} ", this.m_frost)); 
              } 
              if (this.m_poison != 0f) 
              { 
                  HitData.DamageTypes.m_sb.Append(string.Format("Poison: {0} ", this.m_poison)); 
              } 
              if (this.m_spirit != 0f) 
              { 
                  HitData.DamageTypes.m_sb.Append(string.Format("Spirit: {0} ", this.m_spirit)); 
              } 
              if (this.m_chop != 0f) 
              { 
                  HitData.DamageTypes.m_sb.Append(string.Format("Chop: {0} ", this.m_chop)); 
              } 
              if (this.m_pickaxe != 0f) 
              { 
                  HitData.DamageTypes.m_sb.Append(string.Format("Pickaxe: {0} ", this.m_pickaxe)); 
              } 
              return HitData.DamageTypes.m_sb.ToString(); 
        }         }
   
        [CompilerGenerated]         [CompilerGenerated]
.        internal static void <IncreaseEqually>g__increase|20_0(ref float damage, ref HitData.DamageTypes.<>c__DisplayClass20_0 A_1)         internal static void <IncreaseEqually>g__increase|21_0(ref float damage, ref HitData.DamageTypes.<>c__DisplayClass21_0 A_1)
        {         {
            damage += damage / A_1.total * A_1.totalDamageIncrease;             damage += damage / A_1.total * A_1.totalDamageIncrease;
        }         }
   
        public float m_damage;         public float m_damage;
   
        public float m_blunt;         public float m_blunt;
   
        public float m_slash;         public float m_slash;
   
        public float m_pierce;         public float m_pierce;
   
        public float m_chop;         public float m_chop;
   
        public float m_pickaxe;         public float m_pickaxe;
   
        public float m_fire;         public float m_fire;
   
        public float m_frost;         public float m_frost;
   
        public float m_lightning;         public float m_lightning;
   
        public float m_poison;         public float m_poison;
   
        public float m_spirit;         public float m_spirit;
.   
          private static StringBuilder m_sb = new StringBuilder();
    }     }
} }