private static PerkObject[] GetAllPerks()
            {
                var perks = new HashSet <PerkObject>();

                try
                {
                    var all_po = PerkObject.All;
                    if (all_po != null)
                    {
                        perks.AddRange(all_po, true);
                    }
                }
                catch (NullReferenceException)
                {
                }
                try
                {
                    var all_def = DefaultPerks.GetAllPerks();
                    if (all_def != null)
                    {
                        perks.AddRange(all_def, true);
                    }
                }
                catch (NullReferenceException)
                {
                }
                var typeDefaultPerks = typeof(DefaultPerks);
                var typePerkObject   = typeof(PerkObject);
                var classs           = typeDefaultPerks.GetNestedTypes().Where(x => !x.IsGenericType && x.IsClass && x.IsAbstract && x.IsSealed);
                var fields           = classs.SelectMany(x => x.GetProperties(BindingFlags.Public | BindingFlags.Static).Where(y => y.PropertyType == typePerkObject)).ToArray();

                foreach (var item in fields)
                {
                    object value;
                    try
                    {
                        value = item.GetValue(null);
                    }
                    catch (TargetInvocationException e)
                    {
                        if (e.InnerException != null && e.InnerException is NullReferenceException)
                        {
                            continue;
                        }
                        throw e;
                    }
                    catch (NullReferenceException)
                    {
                        continue;
                    }
                    if (value != null && value is PerkObject perkObject)
                    {
                        perks.Add(perkObject);
                    }
                }
                return(perks.ToArray());
            }
 public static void InitializePerksPostfix(DefaultPerks __instance)
 {
     //PerkFixesHelper.FixPerkBonus(__instance, "OneHandedToBeBlunt", 5f, 0.5f, SkillEffect.EffectIncrementType.AddFactor);
     //PerkFixesHelper.FixPerkBonus(__instance, "OneHandedShieldWall", -20f, 5f, SkillEffect.EffectIncrementType.AddFactor);
     //PerkFixesHelper.FixPerkBonus(__instance, "OneHandedArrowCatcher", 5f, 5f, SkillEffect.EffectIncrementType.AddFactor);
     PerkFixesHelper.FixPerkBonus(__instance, "TwoHandedTerror", 20f, 10f, SkillEffect.EffectIncrementType.AddFactor);
     PerkFixesHelper.FixPerkBonus(__instance, "TwoHandedHope", 30f, 5f, SkillEffect.EffectIncrementType.AddFactor);
     //PerkFixesHelper.FixPerkBonus(__instance, "TwoHandedWayOfTheGreatAxe", 0.5f, 0.2f, SkillEffect.EffectIncrementType.AddFactor);
     PerkFixesHelper.FixPerkBonus(__instance, "PolearmStandardBearer", 20f, 20f, SkillEffect.EffectIncrementType.AddFactor);
     //PerkFixesHelper.FixPerkBonus(__instance, "PolearmSteadKiller", 70f, 0f, SkillEffect.EffectIncrementType.AddFactor);
     //PerkFixesHelper.FixPerkBonus(__instance, "PolearmFootwork", 2f, 0f, SkillEffect.EffectIncrementType.AddFactor);
     //PerkFixesHelper.FixPerkBonus(__instance, "PolearmLancer", 30f, 0f, SkillEffect.EffectIncrementType.AddFactor);
     //PerkFixesHelper.FixPerkBonus(__instance, "ThrowingSkullCrusher", 20f, 0f, SkillEffect.EffectIncrementType.AddFactor);
 }
Beispiel #3
0
        public static void FixPerkBonus(DefaultPerks dpobj, string perkID, float primaryBonus, float secondaryBonus, SkillEffect.EffectIncrementType incrementType)
        {
            bool      flag  = false;
            FieldInfo field = typeof(DefaultPerks).GetField(perkID, BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic);

            if (field != null)
            {
                PerkObject perkObject = field.GetValue(dpobj) as PerkObject;
                if (perkObject != null)
                {
                    perkObject.Initialize(perkObject.Name.ToString(), perkObject.Description.ToString(), perkObject.Skill, (int)perkObject.RequiredSkillValue, perkObject.AlternativePerk, perkObject.PrimaryRole, primaryBonus, perkObject.SecondaryRole, secondaryBonus, incrementType, "");
                    flag = true;
                }
            }
            if (!flag)
            {
                InformationManager.DisplayMessage(new InformationMessage("Patch Failed:" + perkID, new Color(0.8f, 0f, 0f, 1f)));
            }
        }
Beispiel #4
0
        static PerkObject[] GetAllPerks()
        {
            var perks  = new HashSet <PerkObject>();
            var all_po = PerkObject.All;

            if (all_po != null)
            {
                foreach (var item in all_po)
                {
                    perks.Add(item);
                }
            }
            var all_def = DefaultPerks.GetAllPerks();

            if (all_def != null)
            {
                foreach (var item in all_def)
                {
                    perks.Add(item);
                }
            }
            var typeDefaultPerks = typeof(DefaultPerks);
            var typePerkObject   = typeof(PerkObject);
            var classs           = typeDefaultPerks.GetNestedTypes().Where(x => !x.IsGenericType && x.IsClass && x.IsAbstract && x.IsSealed);
            var fields           = classs.SelectMany(x => x.GetProperties(BindingFlags.Public | BindingFlags.Static).Where(y => y.PropertyType == typePerkObject)).ToArray();

            foreach (var item in fields)
            {
                var value = item.GetValue(null);
                if (value != null && value is PerkObject perkObject)
                {
                    perks.Add(perkObject);
                }
            }
            return(perks.ToArray());
        }