示例#1
0
    public void ForceUpdate()
    {
        DamageTypeList      armorValues;
        HumanBodyTakeDamage damage;

        if (RPOS.GetObservedPlayerComponent <HumanBodyTakeDamage>(out damage))
        {
            armorValues = damage.GetArmorValues();
        }
        else
        {
            armorValues = new DamageTypeList();
        }
        this.leftText.text  = string.Empty;
        this.rightText.text = string.Empty;
        for (int i = 0; i < 6; i++)
        {
            if (armorValues[i] != 0f)
            {
                this.leftText.text = this.leftText.text + TakeDamage.DamageIndexToString((DamageTypeIndex)i) + "\n";
                string   text      = this.rightText.text;
                object[] objArray1 = new object[] { text, "+", (int)armorValues[i], "\n" };
                this.rightText.text = string.Concat(objArray1);
            }
        }
    }
示例#2
0
    public void CalculateArmor()
    {
        IInventoryItem       inventoryItem;
        InventoryHolder      inventoryHolder      = this.inventoryHolder;
        ProtectionTakeDamage protectionTakeDamage = this.takeDamage;

        if (inventoryHolder && protectionTakeDamage)
        {
            DamageTypeList damageTypeList = new DamageTypeList();
            for (int i = 36; i < 40; i++)
            {
                if (inventoryHolder.inventory.GetItem(i, out inventoryItem))
                {
                    ArmorDataBlock armorDataBlock  = inventoryItem.datablock as ArmorDataBlock;
                    ArmorDataBlock armorDataBlock1 = armorDataBlock;
                    if (armorDataBlock)
                    {
                        armorDataBlock1.AddToDamageTypeList(damageTypeList);
                    }
                }
            }
            if (protectionTakeDamage)
            {
                protectionTakeDamage.SetArmorValues(damageTypeList);
            }
        }
    }
示例#3
0
 public DamageTypeList(DamageTypeList copyFrom) : this()
 {
     if (copyFrom == null || copyFrom.damageArray == null)
     {
         this.damageArray = new float[6];
     }
     else if ((int)copyFrom.damageArray.Length != 6)
     {
         this.damageArray = new float[6];
         if ((int)copyFrom.damageArray.Length <= 6)
         {
             for (int i = 0; i < (int)copyFrom.damageArray.Length; i++)
             {
                 this.damageArray[i] = copyFrom.damageArray[i];
             }
         }
         else
         {
             for (int j = 0; j < 6; j++)
             {
                 this.damageArray[j] = copyFrom.damageArray[j];
             }
         }
     }
     else
     {
         this.damageArray = (float[])copyFrom.damageArray.Clone();
     }
 }
        public static void ApplyDamageTypeList(TakeDamage takeDamage, ref DamageEvent damage, DamageTypeList damageType)
        {
            ProtectionTakeDamage damage2 = takeDamage as ProtectionTakeDamage;
            string str = damage.victim.idMain.name.Replace("(Clone)", "");

            for (int i = 0; i < 6; i++)
            {
                DamageTypeFlags flags  = (DamageTypeFlags)(((int)1) << i);
                float           result = (damage2 != null) ? damage2.GetArmorValue(i) : 0f;
                string          key    = str + "." + flags.ToString().Replace("damage_", "");
                if (!(damage.victim.idMain is Character))
                {
                    Config.Get("OVERRIDE.ARMOR", key, ref result, true);
                }
                if ((result > 0f) && (damageType[i] > 0f))
                {
                    DamageTypeList list;
                    int            num3;
                    (list = damageType)[num3 = i] = list[num3] * Mathf.Clamp01(1f - (result / 200f));
                }
                if (!Mathf.Approximately(damageType[i], 0f))
                {
                    damage.damageTypes |= flags;
                    damage.amount      += damageType[i];
                }
            }
        }
示例#5
0
 public DamageTypeList(DamageTypeList copyFrom)
     : this()
 {
     if (copyFrom == null || copyFrom.damageArray == null)
     {
         this.damageArray = new float[6];
     }
     else if ((int)copyFrom.damageArray.Length != 6)
     {
         this.damageArray = new float[6];
         if ((int)copyFrom.damageArray.Length <= 6)
         {
             for (int i = 0; i < (int)copyFrom.damageArray.Length; i++)
             {
                 this.damageArray[i] = copyFrom.damageArray[i];
             }
         }
         else
         {
             for (int j = 0; j < 6; j++)
             {
                 this.damageArray[j] = copyFrom.damageArray[j];
             }
         }
     }
     else
     {
         this.damageArray = (float[])copyFrom.damageArray.Clone();
     }
 }
示例#6
0
 public void CalculateArmor()
 {
     IInventoryItem inventoryItem;
     InventoryHolder inventoryHolder = this.inventoryHolder;
     ProtectionTakeDamage protectionTakeDamage = this.takeDamage;
     if (inventoryHolder && protectionTakeDamage)
     {
         DamageTypeList damageTypeList = new DamageTypeList();
         for (int i = 36; i < 40; i++)
         {
             if (inventoryHolder.inventory.GetItem(i, out inventoryItem))
             {
                 ArmorDataBlock armorDataBlock = inventoryItem.datablock as ArmorDataBlock;
                 ArmorDataBlock armorDataBlock1 = armorDataBlock;
                 if (armorDataBlock)
                 {
                     armorDataBlock1.AddToDamageTypeList(damageTypeList);
                 }
             }
         }
         if (protectionTakeDamage)
         {
             protectionTakeDamage.SetArmorValues(damageTypeList);
         }
     }
 }
 public void Scale(DamageTypeList damageList, float ProtectionAmount = 1f)
 {
     for (int index = 0; index < this.amounts.Length; ++index)
     {
         if ((double)this.amounts[index] != 0.0)
         {
             damageList.Scale((DamageType)index, (float)(1.0 - (double)this.amounts[index] * (double)ProtectionAmount));
         }
     }
 }
 /////////////////////////////////////////
 // OnServerInitialized()
 // Called when the server is initialized
 /////////////////////////////////////////
 void OnServerInitialized()
 {
     allZoneFields   = typeof(ZoneDefinition).GetFields(BindingFlags.Public | BindingFlags.Static | BindingFlags.Instance | BindingFlags.NonPublic);
     emptyDamageType = new DamageTypeList();
     emptyDamageList = new List <DamageTypeEntry>();
     foreach (KeyValuePair <string, ZoneDefinition> pair in zonedefinitions)
     {
         NewZone(pair.Value);
     }
 }
示例#9
0
 public void AddToDamageTypeList(DamageTypeList damageList)
 {
     for (int i = 0; i < 6; i++)
     {
         DamageTypeList list;
         int            num2;
         float          num3 = list[num2];
         (list = damageList)[num2 = i] = num3 + this.armorValues[i];
     }
 }
示例#10
0
 protected virtual void ApplyDamageTypeList(ref DamageEvent damage, DamageTypeList damageTypes)
 {
     for (int i = 0; i < 6; i++)
     {
         if (!Mathf.Approximately(damageTypes[i], 0f))
         {
             damage.damageTypes = (DamageTypeFlags)((int)damage.damageTypes | 1 << (i & 31));
             damage.amount      = damage.amount + damageTypes[i];
         }
     }
 }
        private void WriteDamageTypes(DamageTypeList damageInfo)
        {
            Dictionary <DamageType, float> damages = new Dictionary <DamageType, float>();

            for (int i = 0; i < (int)DamageType.LAST; ++i)
            {
                damages.Add((DamageType)i, damageInfo.types[i]);
            }

            Debug.Log(String.Join("\n", damages.Select(d => d.Key.ToString() + ": " + d.Value).ToArray()));
        }
示例#12
0
 protected virtual void ApplyDamageTypeList(ref DamageEvent damage, DamageTypeList damageTypes)
 {
     for (int i = 0; i < 6; i++)
     {
         if (!Mathf.Approximately(damageTypes[i], 0f))
         {
             damage.damageTypes |= ((int)1) << i;
             damage.amount      += damageTypes[i];
         }
     }
 }
示例#13
0
 public void AddToDamageTypeList(DamageTypeList damageList)
 {
     for (int i = 0; i < 6; i++)
     {
         DamageTypeList item           = damageList;
         DamageTypeList damageTypeList = item;
         int            num            = i;
         float          single         = damageTypeList[num];
         item[num] = single + this.armorValues[i];
     }
 }
示例#14
0
 public virtual void SetArmorValues(DamageTypeList armor)
 {
     if (this.initializedArmor)
     {
         this._armorValues.SetArmorValues(armor);
     }
     else
     {
         this._armorValues     = new DamageTypeList(armor);
         this.initializedArmor = true;
     }
 }
示例#15
0
 protected sealed override void ApplyDamageTypeList(ref DamageEvent damage, DamageTypeList damageTypes)
 {
     for (int i = 0; i < 6; i++)
     {
         if ((this._armorValues[i] > 0f) && (damageTypes[i] > 0f))
         {
             DamageTypeList list;
             int            num2;
             float          num3 = list[num2];
             (list = damageTypes)[num2 = i] = num3 * Mathf.Clamp01(1f - (this._armorValues[i] / 200f));
         }
     }
     base.ApplyDamageTypeList(ref damage, damageTypes);
 }
示例#16
0
 protected sealed override void ApplyDamageTypeList(ref DamageEvent damage, DamageTypeList damageTypes)
 {
     for (int i = 0; i < 6; i++)
     {
         if (this._armorValues[i] > 0f && damageTypes[i] > 0f)
         {
             DamageTypeList damageTypeList  = damageTypes;
             DamageTypeList damageTypeList1 = damageTypeList;
             int            num             = i;
             float          item            = damageTypeList1[num];
             damageTypeList[num] = item * Mathf.Clamp01(1f - this._armorValues[i] / 200f);
         }
     }
     base.ApplyDamageTypeList(ref damage, damageTypes);
 }
示例#17
0
    protected void ArmorData(byte[] data)
    {
        DamageTypeList armor  = new DamageTypeList();
        BitStream      stream = new BitStream(data, false);

        for (int i = 0; i < 6; i++)
        {
            armor[i] = stream.ReadSingle();
        }
        ProtectionTakeDamage takeDamage = this.takeDamage;

        if (takeDamage != null)
        {
            takeDamage.SetArmorValues(armor);
        }
        if (base.localPlayerControlled)
        {
            RPOS.SetEquipmentDirty();
        }
    }
示例#18
0
    protected void ArmorData(byte[] data)
    {
        DamageTypeList damageTypeList = new DamageTypeList();

        uLink.BitStream bitStream = new uLink.BitStream(data, false);
        for (int i = 0; i < 6; i++)
        {
            damageTypeList[i] = bitStream.ReadSingle();
        }
        ProtectionTakeDamage protectionTakeDamage = this.takeDamage;

        if (protectionTakeDamage)
        {
            protectionTakeDamage.SetArmorValues(damageTypeList);
        }
        if (base.localPlayerControlled)
        {
            RPOS.SetEquipmentDirty();
        }
    }
示例#19
0
    public void CalculateArmor()
    {
        InventoryHolder      inventoryHolder = this.inventoryHolder;
        ProtectionTakeDamage takeDamage      = this.takeDamage;

        if ((inventoryHolder != null) && (takeDamage != null))
        {
            DamageTypeList damageList = new DamageTypeList();
            for (int i = 0x24; i < 40; i++)
            {
                ArmorDataBlock block;
                IInventoryItem item;
                if (inventoryHolder.inventory.GetItem(i, out item) && ((block = item.datablock as ArmorDataBlock) != null))
                {
                    block.AddToDamageTypeList(damageList);
                }
            }
            if (takeDamage != null)
            {
                takeDamage.SetArmorValues(damageList);
            }
        }
    }
示例#20
0
 protected virtual void ApplyDamageTypeList(ref DamageEvent damage, DamageTypeList damageTypes)
 {
     for (int i = 0; i < 6; i++)
     {
         if (!Mathf.Approximately(damageTypes[i], 0f))
         {
             damage.damageTypes = (DamageTypeFlags)((int)damage.damageTypes | 1 << (i & 31));
             damage.amount = damage.amount + damageTypes[i];
         }
     }
 }
示例#21
0
 private Quantity(TakeDamage.Unit Measurement, DamageTypeList DamageTypeList, float Value)
 {
     this.Unit   = Measurement;
     this.list   = DamageTypeList;
     this.@value = Value;
 }
示例#22
0
    public void SetArmorValues(DamageTypeList copyFrom)
    {
        int j;

        if (this.damageArray != null && (int)this.damageArray.Length == 6)
        {
            if (copyFrom.damageArray == null)
            {
                if (this.damageArray == null || (int)this.damageArray.Length != 6)
                {
                    this.damageArray = new float[6];
                }
                else
                {
                    for (int i = 0; i < 6; i++)
                    {
                        this.damageArray[i] = 0f;
                    }
                }
            }
            else if ((int)copyFrom.damageArray.Length < 6)
            {
                for (j = 0; j < (int)copyFrom.damageArray.Length; j++)
                {
                    this.damageArray[j] = copyFrom.damageArray[j];
                }
                while (j < 6)
                {
                    int num = j;
                    j = num + 1;
                    this.damageArray[num] = 0f;
                }
            }
            else
            {
                for (int k = 0; k < 6; k++)
                {
                    this.damageArray[k] = copyFrom.damageArray[k];
                }
            }
        }
        else if (copyFrom == null || copyFrom.damageArray == null)
        {
            this.damageArray = new float[6];
        }
        else if ((int)copyFrom.damageArray.Length != 6)
        {
            this.damageArray = new float[6];
            if ((int)copyFrom.damageArray.Length <= 6)
            {
                for (int l = 0; l < (int)copyFrom.damageArray.Length; l++)
                {
                    this.damageArray[l] = copyFrom.damageArray[l];
                }
            }
            else
            {
                for (int m = 0; m < 6; m++)
                {
                    this.damageArray[m] = copyFrom.damageArray[m];
                }
            }
        }
        else
        {
            this.damageArray = (float[])copyFrom.damageArray.Clone();
        }
    }
示例#23
0
 /////////////////////////////////////////
 // OnServerInitialized()
 // Called when the server is initialized
 /////////////////////////////////////////
 void OnServerInitialized()
 {
     allZoneFields = typeof(ZoneDefinition).GetFields(BindingFlags.Public | BindingFlags.Static | BindingFlags.Instance | BindingFlags.NonPublic);
     emptyDamageType = new DamageTypeList();
     emptyDamageList = new List<DamageTypeEntry>();
     foreach (KeyValuePair<string, ZoneDefinition> pair in zonedefinitions)
     {
         NewZone(pair.Value);
     }
 }
示例#24
0
 private void None_Click(object sender, RoutedEventArgs e)
 {
     DamageTypeList.UnselectAll();
 }
示例#25
0
 private void All_Click(object sender, RoutedEventArgs e)
 {
     DamageTypeList.SelectAll();
 }
示例#26
0
 private void InitializeArmorValues()
 {
     this._armorValues     = new DamageTypeList(this._startArmorValues);
     this.initializedArmor = true;
 }
示例#27
0
 void Loaded()
 {
     emptyDamageType = new DamageTypeList();
     serverinput     = typeof(BasePlayer).GetField("serverInput", (BindingFlags.Public | BindingFlags.Static | BindingFlags.Instance | BindingFlags.NonPublic));
     LoadData();
 }
示例#28
0
 private Quantity(TakeDamage.Unit Measurement, DamageTypeList DamageTypeList, float Value)
 {
     this.Unit = Measurement;
     this.list = DamageTypeList;
     this.@value = Value;
 }
 public static bool DamageOverride(TakeDamage take, ref DamageEvent damage, ref TakeDamage.Quantity quantity)
 {
     if (damage.attacker.idMain != damage.victim.idMain)
     {
         if (!Core.OverrideDamage || float.IsInfinity(damage.amount))
         {
             return(true);
         }
         if ((damage.victim.id.GetComponent <Character>() == null) && (damage.attacker.client != null))
         {
             ulong ownerID = (damage.victim.client != null) ? damage.victim.client.userID : ((ulong)0L);
             if (damage.victim.idMain is DeployableObject)
             {
                 ownerID = (damage.victim.idMain as DeployableObject).ownerID;
             }
             if (damage.victim.idMain is StructureComponent)
             {
                 ownerID = (damage.victim.idMain as StructureComponent)._master.ownerID;
             }
             ulong num2 = (damage.attacker.client != null) ? damage.attacker.client.userID : ((ulong)0L);
             if (damage.attacker.idMain is DeployableObject)
             {
                 num2 = (damage.attacker.idMain as DeployableObject).ownerID;
             }
             if (damage.attacker.idMain is StructureComponent)
             {
                 num2 = (damage.attacker.idMain as StructureComponent)._master.ownerID;
             }
             if (((ownerID == num2) || Users.SharedGet(ownerID, num2)) && (Core.OwnershipDestroy || Core.DestoryOwnership.ContainsKey(damage.attacker.client.userID)))
             {
                 Config.Get("OVERRIDE.DAMAGE", damage.attacker.idMain.name.Replace("(Clone)", "") + ".DAMAGE", ref damage.amount, true);
                 return(true);
             }
         }
         bool result = true;
         if ((damage.attacker.client != null) && (damage.attacker.idMain is Character))
         {
             WeaponImpact extraData = damage.extraData as WeaponImpact;
             string       str       = (extraData != null) ? extraData.dataBlock.name : "Hunting Bow";
             string       str2      = str.Replace(" ", "") + ".DAMAGE";
             string       key       = str2 + "." + damage.victim.idMain.name.Replace("(Clone)", "");
             string       str4      = str2 + ".HEADSHOT";
             if (Config.Get("OVERRIDE.DAMAGE", key, ref result, true) && !result)
             {
                 return(false);
             }
             float[] numArray = (extraData != null) ? new float[] { extraData.dataBlock.damageMin, extraData.dataBlock.damageMax } : new float[] { 75f, 75f };
             Config.Get("OVERRIDE.DAMAGE", (damage.bodyPart == BodyPart.Head) ? str4 : str2, ref numArray, true);
             damage.amount = UnityEngine.Random.Range(Math.Min(numArray[0], numArray[1]), Math.Max(numArray[0], numArray[1]));
             if ((extraData != null) && (damage.extraData is BulletWeaponDataBlock))
             {
                 damage.amount *= (damage.extraData as BulletWeaponDataBlock).IsSilenced(extraData.itemRep) ? 0.8f : 1f;
             }
             if ((extraData != null) && (damage.extraData is BulletWeaponImpact))
             {
                 quantity = new DamageTypeList(0f, damage.amount, 0f, 0f, 0f, 0f);
             }
             else
             {
                 quantity = new DamageTypeList(0f, 0f, damage.amount, 0f, 0f, 0f);
             }
             damage.amount = 0f;
             if (quantity.Unit == TakeDamage.Unit.List)
             {
                 ApplyDamageTypeList(take, ref damage, quantity.DamageTypeList);
             }
             Helper.Log(string.Concat(new object[] {
                 "Damage: ", damage.attacker.idMain, "[", damage.attacker.networkViewID, "] from ", str, " hit ", damage.victim.idMain, "[", damage.victim.networkViewID, "] on ", damage.amount, "(", numArray[0], "-", numArray[1],
                 ") pts."
             }), false);
         }
         else if (!(damage.attacker.idMain is Character))
         {
             float baseReturnDmg   = 0f;
             float explosionRadius = 0f;
             if (damage.attacker.id is TimedGrenade)
             {
                 baseReturnDmg   = (damage.attacker.id as TimedGrenade).damage;
                 explosionRadius = (damage.attacker.id as TimedGrenade).explosionRadius;
             }
             if (damage.attacker.id is TimedExplosive)
             {
                 baseReturnDmg   = (damage.attacker.id as TimedExplosive).damage;
                 explosionRadius = (damage.attacker.id as TimedExplosive).explosionRadius;
             }
             if (damage.attacker.id is SpikeWall)
             {
                 baseReturnDmg   = (damage.attacker.id as SpikeWall).baseReturnDmg;
                 explosionRadius = 0f;
             }
             if (baseReturnDmg > 0f)
             {
                 string str5 = damage.attacker.idMain.name.Replace("(Clone)", "") + ".DAMAGE";
                 string str6 = str5 + "." + damage.victim.idMain.name.Replace("(Clone)", "");
                 if (Config.Get("OVERRIDE.DAMAGE", str6, ref result, true) && !result)
                 {
                     return(false);
                 }
                 Config.Get("OVERRIDE.DAMAGE", str5, ref baseReturnDmg, true);
                 if (explosionRadius > 0f)
                 {
                     RaycastHit        hit;
                     bool              flag2;
                     MeshBatchInstance instance;
                     Vector3           center    = damage.victim.idMain.collider.bounds.center;
                     Vector3           a         = damage.attacker.idMain.collider.bounds.center;
                     Vector3           direction = center - a;
                     float             distance  = Vector3.Distance(a, center);
                     if (Facepunch.MeshBatch.MeshBatchPhysics.Raycast(a, direction, out hit, distance, 0x10360401, out flag2, out instance))
                     {
                         IDMain     main = flag2 ? instance.idMain : IDBase.GetMain(hit.collider);
                         GameObject obj2 = (main != null) ? main.gameObject : hit.collider.gameObject;
                         if (obj2 != damage.victim.idMain.gameObject)
                         {
                             damage.amount = (1f - Mathf.Clamp01(distance / explosionRadius)) * baseReturnDmg;
                             if (flag2)
                             {
                                 damage.amount *= 0.1f;
                             }
                         }
                     }
                 }
                 if (damage.attacker.id is SpikeWall)
                 {
                     quantity = new DamageTypeList(0f, 0f, damage.amount, 0f, 0f, 0f);
                 }
                 else
                 {
                     quantity = new DamageTypeList(0f, 0f, 0f, damage.amount, 0f, 0f);
                 }
                 damage.amount = 0f;
                 if (quantity.Unit == TakeDamage.Unit.List)
                 {
                     ApplyDamageTypeList(take, ref damage, quantity.DamageTypeList);
                 }
             }
             Helper.Log(string.Concat(new object[] { "Damage: ", damage.attacker.idMain, "[", damage.attacker.networkViewID, "] owned ", damage.attacker.client, " hit ", damage.victim.idMain, "[", damage.victim.networkViewID, "] on ", damage.amount, "(", baseReturnDmg, ") pts." }), false);
         }
     }
     return(true);
 }
示例#30
0
 public void SetArmorValues(DamageTypeList copyFrom)
 {
     int j;
     if (this.damageArray != null && (int)this.damageArray.Length == 6)
     {
         if (copyFrom.damageArray == null)
         {
             if (this.damageArray == null || (int)this.damageArray.Length != 6)
             {
                 this.damageArray = new float[6];
             }
             else
             {
                 for (int i = 0; i < 6; i++)
                 {
                     this.damageArray[i] = 0f;
                 }
             }
         }
         else if ((int)copyFrom.damageArray.Length < 6)
         {
             for (j = 0; j < (int)copyFrom.damageArray.Length; j++)
             {
                 this.damageArray[j] = copyFrom.damageArray[j];
             }
             while (j < 6)
             {
                 int num = j;
                 j = num + 1;
                 this.damageArray[num] = 0f;
             }
         }
         else
         {
             for (int k = 0; k < 6; k++)
             {
                 this.damageArray[k] = copyFrom.damageArray[k];
             }
         }
     }
     else if (copyFrom == null || copyFrom.damageArray == null)
     {
         this.damageArray = new float[6];
     }
     else if ((int)copyFrom.damageArray.Length != 6)
     {
         this.damageArray = new float[6];
         if ((int)copyFrom.damageArray.Length <= 6)
         {
             for (int l = 0; l < (int)copyFrom.damageArray.Length; l++)
             {
                 this.damageArray[l] = copyFrom.damageArray[l];
             }
         }
         else
         {
             for (int m = 0; m < 6; m++)
             {
                 this.damageArray[m] = copyFrom.damageArray[m];
             }
         }
     }
     else
     {
         this.damageArray = (float[])copyFrom.damageArray.Clone();
     }
 }
示例#31
0
 protected void ArmorData(byte[] data)
 {
     DamageTypeList damageTypeList = new DamageTypeList();
     uLink.BitStream bitStream = new uLink.BitStream(data, false);
     for (int i = 0; i < 6; i++)
     {
         damageTypeList[i] = bitStream.ReadSingle();
     }
     ProtectionTakeDamage protectionTakeDamage = this.takeDamage;
     if (protectionTakeDamage)
     {
         protectionTakeDamage.SetArmorValues(damageTypeList);
     }
     if (base.localPlayerControlled)
     {
         RPOS.SetEquipmentDirty();
     }
 }
示例#32
0
 void Loaded()
 {
     emptyDamageType = new DamageTypeList();
     serverinput = typeof(BasePlayer).GetField("serverInput", (BindingFlags.Public | BindingFlags.Static | BindingFlags.Instance | BindingFlags.NonPublic));
     LoadData();
 }
示例#33
0
 public void SetArmorValues(DamageTypeList copyFrom)
 {
     if ((this.damageArray == null) || (this.damageArray.Length != 6))
     {
         if ((copyFrom == null) || (copyFrom.damageArray == null))
         {
             this.damageArray = new float[6];
         }
         else if (copyFrom.damageArray.Length == 6)
         {
             this.damageArray = (float[])copyFrom.damageArray.Clone();
         }
         else
         {
             this.damageArray = new float[6];
             if (copyFrom.damageArray.Length > 6)
             {
                 for (int i = 0; i < 6; i++)
                 {
                     this.damageArray[i] = copyFrom.damageArray[i];
                 }
             }
             else
             {
                 for (int j = 0; j < copyFrom.damageArray.Length; j++)
                 {
                     this.damageArray[j] = copyFrom.damageArray[j];
                 }
             }
         }
     }
     else if (copyFrom.damageArray == null)
     {
         if ((this.damageArray == null) || (this.damageArray.Length != 6))
         {
             this.damageArray = new float[6];
         }
         else
         {
             for (int k = 0; k < 6; k++)
             {
                 this.damageArray[k] = 0f;
             }
         }
     }
     else if (copyFrom.damageArray.Length >= 6)
     {
         for (int m = 0; m < 6; m++)
         {
             this.damageArray[m] = copyFrom.damageArray[m];
         }
     }
     else
     {
         int index = 0;
         while (index < copyFrom.damageArray.Length)
         {
             this.damageArray[index] = copyFrom.damageArray[index];
             index++;
         }
         while (index < 6)
         {
             this.damageArray[index++] = 0f;
         }
     }
 }