Ejemplo n.º 1
0
        public Module(ModContentPack content) : base(content)
        {
            Log.Message("Frontier Developments Shields :: Loading Crash Landing support");

            var harmony = new HarmonyLib.Harmony("FrontierDevelopment.Shields.CrashLanding");

            harmony.PatchAll(Assembly.GetExecutingAssembly());

            Harmony_Projectile.BlacklistType(typeof(CrashPod));

            // var baseType = Type.GetType("CrashLanding.CrashPod, CrashLanding");
            // var types = baseType.AllSubclassesNonAbstract();
            // var blockingTypes = "";
            //
            // foreach (var current in types)
            // {
            //     blockingTypes += current.Name + " ";
            //
            //     if (current.Name.Contains("_part"))
            //     {
            //         harmony.Patch(
            //             current.GetMethod("Impact", BindingFlags.NonPublic | BindingFlags.Instance),
            //             new HarmonyMethod(typeof(CrashPodHandler).GetMethod(nameof(CrashPodHandler.CrashPod_Part_Impact_Prefix))));
            //     }
            //     else
            //     {
            //         harmony.Patch(
            //             current.GetMethod("Impact", BindingFlags.NonPublic | BindingFlags.Instance),
            //             new HarmonyMethod(typeof(CrashPodHandler).GetMethod(nameof(CrashPodHandler.CrashPod_Impact_Prefix))));
            //     }
            // }
        }
Ejemplo n.º 2
0
            static void Postfix()
            {
                try
                {
                    var toBlacklist = DefDatabase <ThingDef> .AllDefs
                                      .Where(thingDef => thingDef != null)
                                      .Where(thingDef =>
                    {
                        var fullName = thingDef.thingClass?.FullName;
                        var defName  = thingDef.defName;

                        if (fullName != null && defName != null)
                        {
                            return(fullName.Contains("CrashLanding") && defName.Contains("Bullet"));
                        }
                        return(false);
                    }).Select(def => def.defName)
                                      .ToList();

                    if (toBlacklist.Count > 0)
                    {
                        var blacklisted = "";
                        toBlacklist.ForEach(def =>
                        {
                            blacklisted += " " + def;
                            Harmony_Projectile.BlacklistDef(def);
                        });
                        Log.Message("Frontier Developments Shields :: Crash Landing blacklisting projectiles for (" +
                                    blacklisted + ")");
                    }
                }
                catch (Exception e)
                {
                    Log.Error(e.Message);
                }
            }