Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System.Collections.Generic;
- using System.Reflection;
- using System.Linq;
- using System.Text;
- using RimWorld;
- using Harmony;
- using System;
- using Verse;
- namespace RustyWorld
- {
- [StaticConstructorOnStartup]
- public class HarmonyBoot
- {
- static HarmonyBoot()
- {
- var harmony = HarmonyInstance.Create("com.Cenbes.patches");
- harmony.PatchAll();
- var harmony = HarmonyInstance.Create("rimworld.Cenbes.patches");
- harmony.Patch(
- typeof(SymbolResolver_RandomMechanoidGroup).GetMethods(BindingFlags.NonPublic | BindingFlags.Static)
- .First(mi =>
- mi.HasAttribute<CompilerGeneratedAttribute>() && mi.ReturnType == typeof(bool) &&
- mi.GetParameters().Count() == 1 && mi.GetParameters()[0].ParameterType == typeof(PawnKindDef)),
- null, new HarmonyMethod(typeof(YourType),
- nameof(MechanoidsFixerAncient)));
- harmony.Patch(
- typeof(CompSpawnerMechanoidsOnDamaged).GetMethods(BindingFlags.NonPublic | BindingFlags.Instance).First(
- mi => mi.HasAttribute<CompilerGeneratedAttribute>() && mi.ReturnType == typeof(bool) &&
- mi.GetParameters().Count() == 1 &&
- mi.GetParameters()[0].ParameterType == typeof(PawnKindDef)), null, new HarmonyMethod(
- typeof(YourType),
- nameof(MechanoidsFixer)));
- }
- public static void MechanoidsFixerAncient(ref bool __result, PawnKindDef kind)
- {
- if (kind == Defs.ScientistMechPawn_BunkerBuster ||
- kind == Defs.ScientistMechPawn_TankTypeA ||
- kind == Defs.ScientistMechPawn_TankTypeB)
- __result = false;
- }
- public static void MechanoidsFixer(ref bool __result, PawnKindDef kind)
- {
- if (kind == Defs.ScientistMechPawn_BunkerBuster ||
- kind == Defs.ScientistMechPawn_TankTypeA ||
- kind == Defs.ScientistMechPawn_TankTypeB)
- __result = false;
- }
- }
- [DefOf]
- public static class Defs
- {
- public static PawnKindDef ScientistMechPawn_BunkerBuster;
- public static PawnKindDef ScientistMechPawn_TankTypeA;
- public static PawnKindDef ScientistMechPawn_TankTypeB;
- }
- private static FieldInfo fleshTypeField = AccessTools.Field(typeof(RaceProperties), "fleshType");
- [HarmonyPatch(typeof(CompSpawnerMechanoidsOnDamaged))]
- [HarmonyPatch(nameof(CompSpawnerMechanoidsOnDamaged.TrySpawnMechanoids))]
- public static class Harmony_TrySpawnMechanoids
- {
- public static void Prefix()
- {
- fleshTypeField.SetValue(Defs.ScientistMechPawn_BunkerBuster.RaceProps, FleshTypeDefOf.Normal);
- fleshTypeField.SetValue(Defs.ScientistMechPawn_TankTypeA.RaceProps, FleshTypeDefOf.Normal);
- fleshTypeField.SetValue(Defs.ScientistMechPawn_TankTypeB.RaceProps, FleshTypeDefOf.Normal);
- }
- public static void Postfix()
- {
- fleshTypeField.SetValue(Defs.ScientistMechPawn_BunkerBuster.RaceProps, FleshTypeDefOf.Mechanoid);
- fleshTypeField.SetValue(Defs.ScientistMechPawn_TankTypeA.RaceProps, FleshTypeDefOf.Mechanoid);
- fleshTypeField.SetValue(Defs.ScientistMechPawn_TankTypeB.RaceProps, FleshTypeDefOf.Mechanoid);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement