rjw-rbse/Source/Main.cs

86 lines
3.4 KiB
C#

using System;
using System.Collections.Generic;
using System.Reflection;
using System.Linq;
using HarmonyLib;
using RimWorld;
using Verse;
namespace RJW_RBSE
{
[StaticConstructorOnStartup]
internal static class Startup
{
//Quick check to see if an another mod is loaded.
private static bool IsLoaded(string mod)
{
return LoadedModManager.RunningModsListForReading.Any(x => x.Name == mod);
}
private static void Fix_rjw_rbse_recipes()
{
//Log.Message("[RJW-RBSE] Startup::fix_recipes");
if (!IsLoaded("RimJobWorld"))
{
Log.Warning("[RJW-RBSE] RJW is not loaded!");
return;
}
if (!IsLoaded("Rah's Bionics and Surgery Expansion"))
{
Log.Warning("[RJW-RBSE] RBSE is not loaded!");
return;
}
try
{
//Vanilla bench
var fab_ben = DefDatabase<ThingDef>.GetNamed("FabricationBench");
//EPOE bench
var bio_ben = DefDatabase<ThingDef>.GetNamed("TableBionics", false);
//RBSE benches
var rbse_bio = DefDatabase<ThingDef>.GetNamed("BionicWorkbench", false);
var rbse_adv = DefDatabase<ThingDef>.GetNamed("AdvancedMedicalStation", false);
// Remove existing Bionic recipes
(bio_ben ?? fab_ben).AllRecipes.Remove(DefDatabase<RecipeDef>.GetNamed("MakeBionicAnus"));
(bio_ben ?? fab_ben).AllRecipes.Remove(DefDatabase<RecipeDef>.GetNamed("MakeBionicBreasts"));
(bio_ben ?? fab_ben).AllRecipes.Remove(DefDatabase<RecipeDef>.GetNamed("MakeBionicPenis"));
(bio_ben ?? fab_ben).AllRecipes.Remove(DefDatabase<RecipeDef>.GetNamed("MakeBionicVagina"));
// Add recipes to RBSE bionics bench
rbse_bio.AllRecipes.Add(DefDatabase<RecipeDef>.GetNamed("MakeBionicAnus"));
rbse_bio.AllRecipes.Add(DefDatabase<RecipeDef>.GetNamed("MakeBionicBreasts"));
rbse_bio.AllRecipes.Add(DefDatabase<RecipeDef>.GetNamed("MakeBionicPenis"));
rbse_bio.AllRecipes.Add(DefDatabase<RecipeDef>.GetNamed("MakeBionicVagina"));
// Add recipes to RBSE Advanced Medical bench
rbse_adv.AllRecipes.Add(DefDatabase<RecipeDef>.GetNamed("MakeAdvancedBionicJaw"));
rbse_adv.AllRecipes.Add(DefDatabase<RecipeDef>.GetNamed("MakeSyntheticUterus"));
rbse_adv.AllRecipes.Add(DefDatabase<RecipeDef>.GetNamed("MakeSyntheticTesticles"));
rbse_adv.AllRecipes.Add(DefDatabase<RecipeDef>.GetNamed("MakeAdvancedBionicPenis"));
rbse_adv.AllRecipes.Add(DefDatabase<RecipeDef>.GetNamed("MakeAdvancedBionicVagina"));
rbse_adv.AllRecipes.Add(DefDatabase<RecipeDef>.GetNamed("MakeAdvancedBionicBreasts"));
rbse_adv.AllRecipes.Add(DefDatabase<RecipeDef>.GetNamed("MakeAdvancedBionicAnus"));
}
catch
{
Log.Warning("[RJW-RBSE] Unable to fix RJW/RBSE recipes.");
}
}
static Startup()
{
//Log.Message("[RJW-RBSE] Startup::Startup() called");
Fix_rjw_rbse_recipes();
var har = new Harmony("rjw-rbse");
har.PatchAll(Assembly.GetExecutingAssembly());
}
}
}