コード例 #1
0
        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];
                }
            }
        }
コード例 #2
0
    public static bool Convert(string[] names, out DamageTypeFlags flags)
    {
        DamageTypeIndex damageTypeIndex;

        for (int i = 0; i < (int)names.Length; i++)
        {
            if (DamageTypeNames.Values.TryGetValue(names[i], out damageTypeIndex))
            {
                flags = (DamageTypeFlags)((int)DamageTypeIndex.damage_bullet << (int)(damageTypeIndex & (DamageTypeIndex.damage_bullet | DamageTypeIndex.damage_melee | DamageTypeIndex.damage_explosion | DamageTypeIndex.damage_radiation | DamageTypeIndex.damage_cold | DamageTypeIndex.damage_last)));
                while (true)
                {
                    int num = i + 1;
                    i = num;
                    if (num >= (int)names.Length)
                    {
                        break;
                    }
                    if (DamageTypeNames.Values.TryGetValue(names[i], out damageTypeIndex))
                    {
                        flags = (DamageTypeFlags)((int)flags | (int)DamageTypeIndex.damage_bullet << (int)(damageTypeIndex & (DamageTypeIndex.damage_bullet | DamageTypeIndex.damage_melee | DamageTypeIndex.damage_explosion | DamageTypeIndex.damage_radiation | DamageTypeIndex.damage_cold | DamageTypeIndex.damage_last)));
                    }
                }
                return(true);
            }
        }
        flags = (DamageTypeFlags)0;
        return(false);
    }
コード例 #3
0
    public static bool Convert(string name, out DamageTypeFlags flags)
    {
        DamageTypeIndex damageTypeIndex;

        if (DamageTypeNames.Values.TryGetValue(name, out damageTypeIndex))
        {
            flags = (DamageTypeFlags)((int)DamageTypeIndex.damage_bullet << (int)(damageTypeIndex & (DamageTypeIndex.damage_bullet | DamageTypeIndex.damage_melee | DamageTypeIndex.damage_explosion | DamageTypeIndex.damage_radiation | DamageTypeIndex.damage_cold | DamageTypeIndex.damage_last)));
            return(true);
        }
        if (name.Length == 0 || name == "none")
        {
            flags = (DamageTypeFlags)0;
            return(true);
        }
        return(DamageTypeNames.Convert(name.Split(DamageTypeNames.SplitCharacters, StringSplitOptions.RemoveEmptyEntries), out flags));
    }
コード例 #4
0
    public static bool Convert(string name, out DamageTypeFlags flags)
    {
        DamageTypeIndex index;

        if (Values.TryGetValue(name, out index))
        {
            flags = (DamageTypeFlags)(((int)1) << index);
            return(true);
        }
        if ((name.Length != 0) && !(name == "none"))
        {
            return(Convert(name.Split(SplitCharacters, StringSplitOptions.RemoveEmptyEntries), out flags));
        }
        flags = 0;
        return(true);
    }
コード例 #5
0
    static DamageTypeNames()
    {
        for (DamageTypeIndex index = DamageTypeIndex.damage_generic; index < DamageTypeIndex.damage_last; index += 1)
        {
            string str2;
            Strings[(int)index] = str2 = index.ToString().Substring("damage_".Length);
            Values.Add(str2, index);
        }
        uint num = 0x3f;

        Mask     = (DamageTypeFlags)num;
        Flags    = new string[num];
        Flags[0] = "none";
        for (uint i = 1; i < num; i++)
        {
            uint num3 = i;
            for (int j = 0; j < 6; j++)
            {
                if ((i & (((int)1) << j)) == (((int)1) << j))
                {
                    string str = Strings[j];
                    num3 &= (uint)~(((int)1) << j);
                    if (num3 != 0)
                    {
                        while (++j < 6L)
                        {
                            if ((i & (((int)1) << j)) == (((int)1) << j))
                            {
                                str   = str + "|" + Strings[j];
                                num3 &= (uint)~(((int)1) << j);
                                if (num3 == 0)
                                {
                                    break;
                                }
                            }
                        }
                    }
                    break;
                }
            }
        }
    }
コード例 #6
0
 public static bool Convert(string[] names, out DamageTypeFlags flags)
 {
     for (int i = 0; i < names.Length; i++)
     {
         DamageTypeIndex index;
         if (Values.TryGetValue(names[i], out index))
         {
             flags = (DamageTypeFlags)(((int)1) << index);
             while (++i < names.Length)
             {
                 if (Values.TryGetValue(names[i], out index))
                 {
                     flags |= ((int)1) << index;
                 }
             }
             return(true);
         }
     }
     flags = 0;
     return(false);
 }
コード例 #7
0
    static DamageTypeNames()
    {
        DamageTypeNames.SplitCharacters = new char[] { '|' };
        DamageTypeNames.Strings         = new string[6];
        DamageTypeNames.Values          = new Dictionary <string, DamageTypeIndex>(6);
        for (DamageTypeIndex i = DamageTypeIndex.damage_generic; i < DamageTypeIndex.damage_last; i = (DamageTypeIndex)((int)i + (int)DamageTypeIndex.damage_bullet))
        {
            Dictionary <string, DamageTypeIndex> values = DamageTypeNames.Values;
            string[] strings = DamageTypeNames.Strings;
            string   str     = i.ToString().Substring("damage_".Length);
            string   str1    = str;
            strings[(int)i] = str;
            values.Add(str1, i);
        }
        uint num = 63;

        DamageTypeNames.Mask     = (DamageTypeFlags)num;
        DamageTypeNames.Flags    = new string[num];
        DamageTypeNames.Flags[0] = "none";
        for (uint j = 1; j < num; j++)
        {
            uint num1 = j;
            int  num2 = 0;
            while (num2 < 6)
            {
                if ((j & 1 << (num2 & 31)) != 1 << (num2 & 31))
                {
                    num2++;
                }
                else
                {
                    string strings1 = DamageTypeNames.Strings[num2];
                    UInt32 num3     = num1 & ~(1 << (num2 & 31 & 31));
                    num1 = num3;
                    if (num3 != 0)
                    {
                        while (true)
                        {
                            int num4 = num2 + 1;
                            num2 = num4;
                            if ((long)num4 >= (long)6)
                            {
                                break;
                            }
                            if ((j & 1 << (num2 & 31)) == 1 << (num2 & 31))
                            {
                                strings1 = string.Concat(strings1, "|", DamageTypeNames.Strings[num2]);
                                num1     = num1 & ~(1 << (num2 & 31 & 31));
                                if (num1 == 0)
                                {
                                    break;
                                }
                            }
                        }
                        break;
                    }
                    else
                    {
                        break;
                    }
                }
            }
        }
    }
コード例 #8
0
 public static bool Convert(DamageTypeIndex index, out DamageTypeFlags flags)
 {
     flags = (DamageTypeFlags)((int)DamageTypeIndex.damage_bullet << (int)(index & (DamageTypeIndex.damage_bullet | DamageTypeIndex.damage_melee | DamageTypeIndex.damage_explosion | DamageTypeIndex.damage_radiation | DamageTypeIndex.damage_cold | DamageTypeIndex.damage_last)));
     return(((int)flags & (int)DamageTypeNames.Mask) == (int)flags);
 }
コード例 #9
0
 public static bool Convert(DamageTypeIndex index, out DamageTypeFlags flags)
 {
     flags = (DamageTypeFlags)(((int)1) << index);
     return((flags & Mask) == flags);
 }
コード例 #10
0
ファイル: DamageTypeNames.cs プロジェクト: HexHash/LegacyRust
 public static bool Convert(string[] names, out DamageTypeFlags flags)
 {
     DamageTypeIndex damageTypeIndex;
     for (int i = 0; i < (int)names.Length; i++)
     {
         if (DamageTypeNames.Values.TryGetValue(names[i], out damageTypeIndex))
         {
             flags = (DamageTypeFlags)((int)DamageTypeIndex.damage_bullet << (int)(damageTypeIndex & (DamageTypeIndex.damage_bullet | DamageTypeIndex.damage_melee | DamageTypeIndex.damage_explosion | DamageTypeIndex.damage_radiation | DamageTypeIndex.damage_cold | DamageTypeIndex.damage_last)));
             while (true)
             {
                 int num = i + 1;
                 i = num;
                 if (num >= (int)names.Length)
                 {
                     break;
                 }
                 if (DamageTypeNames.Values.TryGetValue(names[i], out damageTypeIndex))
                 {
                     flags = (DamageTypeFlags)((int)flags | (int)DamageTypeIndex.damage_bullet << (int)(damageTypeIndex & (DamageTypeIndex.damage_bullet | DamageTypeIndex.damage_melee | DamageTypeIndex.damage_explosion | DamageTypeIndex.damage_radiation | DamageTypeIndex.damage_cold | DamageTypeIndex.damage_last)));
                 }
             }
             return true;
         }
     }
     flags = (DamageTypeFlags)0;
     return false;
 }
コード例 #11
0
ファイル: DamageTypeNames.cs プロジェクト: HexHash/LegacyRust
 static DamageTypeNames()
 {
     DamageTypeNames.SplitCharacters = new char[] { '|' };
     DamageTypeNames.Strings = new string[6];
     DamageTypeNames.Values = new Dictionary<string, DamageTypeIndex>(6);
     for (DamageTypeIndex i = DamageTypeIndex.damage_generic; i < DamageTypeIndex.damage_last; i = (DamageTypeIndex)((int)i + (int)DamageTypeIndex.damage_bullet))
     {
         Dictionary<string, DamageTypeIndex> values = DamageTypeNames.Values;
         string[] strings = DamageTypeNames.Strings;
         string str = i.ToString().Substring("damage_".Length);
         string str1 = str;
         strings[(int)i] = str;
         values.Add(str1, i);
     }
     uint num = 63;
     DamageTypeNames.Mask = (DamageTypeFlags)num;
     DamageTypeNames.Flags = new string[num];
     DamageTypeNames.Flags[0] = "none";
     for (uint j = 1; j < num; j++)
     {
         uint num1 = j;
         int num2 = 0;
         while (num2 < 6)
         {
             if ((j & 1 << (num2 & 31)) != 1 << (num2 & 31))
             {
                 num2++;
             }
             else
             {
                 string strings1 = DamageTypeNames.Strings[num2];
                 UInt32 num3 = num1 & ~(1 << (num2 & 31 & 31));
                 num1 = num3;
                 if (num3 != 0)
                 {
                     while (true)
                     {
                         int num4 = num2 + 1;
                         num2 = num4;
                         if ((long)num4 >= (long)6)
                         {
                             break;
                         }
                         if ((j & 1 << (num2 & 31)) == 1 << (num2 & 31))
                         {
                             strings1 = string.Concat(strings1, "|", DamageTypeNames.Strings[num2]);
                             num1 = num1 & ~(1 << (num2 & 31 & 31));
                             if (num1 == 0)
                             {
                                 break;
                             }
                         }
                     }
                     break;
                 }
                 else
                 {
                     break;
                 }
             }
         }
     }
 }
コード例 #12
0
ファイル: DamageTypeNames.cs プロジェクト: HexHash/LegacyRust
 public static bool Convert(DamageTypeIndex index, out DamageTypeFlags flags)
 {
     flags = (DamageTypeFlags)((int)DamageTypeIndex.damage_bullet << (int)(index & (DamageTypeIndex.damage_bullet | DamageTypeIndex.damage_melee | DamageTypeIndex.damage_explosion | DamageTypeIndex.damage_radiation | DamageTypeIndex.damage_cold | DamageTypeIndex.damage_last)));
     return ((int)flags & (int)DamageTypeNames.Mask) == (int)flags;
 }
コード例 #13
0
ファイル: DamageTypeNames.cs プロジェクト: HexHash/LegacyRust
 public static bool Convert(string name, out DamageTypeFlags flags)
 {
     DamageTypeIndex damageTypeIndex;
     if (DamageTypeNames.Values.TryGetValue(name, out damageTypeIndex))
     {
         flags = (DamageTypeFlags)((int)DamageTypeIndex.damage_bullet << (int)(damageTypeIndex & (DamageTypeIndex.damage_bullet | DamageTypeIndex.damage_melee | DamageTypeIndex.damage_explosion | DamageTypeIndex.damage_radiation | DamageTypeIndex.damage_cold | DamageTypeIndex.damage_last)));
         return true;
     }
     if (name.Length == 0 || name == "none")
     {
         flags = (DamageTypeFlags)0;
         return true;
     }
     return DamageTypeNames.Convert(name.Split(DamageTypeNames.SplitCharacters, StringSplitOptions.RemoveEmptyEntries), out flags);
 }