using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.Versioning;
using System.Security;
using System.Security.Permissions;
using BepInEx;
using BepInEx.Configuration;
using BepInEx.Logging;
using HarmonyLib;
[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)]
[assembly: TargetFramework(".NETFramework,Version=v4.7.2", FrameworkDisplayName = ".NET Framework 4.7.2")]
[assembly: AssemblyCompany("NoOrganicLife")]
[assembly: AssemblyConfiguration("Debug")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: AssemblyInformationalVersion("1.0.0")]
[assembly: AssemblyProduct("NoOrganicLife")]
[assembly: AssemblyTitle("NoOrganicLife")]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: AssemblyVersion("1.0.0.0")]
[module: UnverifiableCode]
namespace NoOrganicLife;
public class NOLConfig
{
public static ConfigEntry<bool> allowBlobs;
public static ConfigEntry<bool> allowLiving;
}
[BepInPlugin("Traveller.NoOrganicLife", "NoOrganicLife", "1.0.0")]
public class NoOrganicLife : BaseUnityPlugin
{
public static bool loaded;
private const string modID = "Traveller.NoOrganicLife";
private const string modName = "NoOrganicLife";
private const string modVersion = "1.0.0";
private readonly Harmony harmony = new Harmony("Traveller.NoOrganicLife");
private static NoOrganicLife Instance;
public static ManualLogSource mls;
private void Awake()
{
NOLConfig.allowBlobs = ((BaseUnityPlugin)this).Config.Bind<bool>("Extra Allowed Enemies", "Allow Blobs?", true, "Whether or not the game should prevent Hygroderes from spawning inside.");
NOLConfig.allowLiving = ((BaseUnityPlugin)this).Config.Bind<bool>("Extra Allowed Enemies", "Allow Gray-Area Enemies?", false, "Whether or not the game should prevent Coil Heads, Nutcrackers, and Jesters from spawning inside.");
mls = Logger.CreateLogSource("NoOrganicLife");
mls.LogInfo((object)"Loaded NoOrganicLife.");
harmony.PatchAll(typeof(NoOrganicLife));
}
[HarmonyPatch(typeof(RoundManager), "LoadNewLevel")]
[HarmonyPrefix]
private static bool NoMonstersSpawn(ref SelectableLevel newLevel)
{
if (StartOfRound.Instance.currentLevel.PlanetName != "5 Embrion")
{
return true;
}
mls.LogInfo((object)"Landed on Embrion.");
List<string> source = new List<string> { "Spring", "Nutcracker", "Jester" };
foreach (SpawnableEnemyWithRarity enemy in newLevel.Enemies)
{
string LoopEnemy = enemy.enemyType.enemyName;
if ((!LoopEnemy.Contains("Blob") || !NOLConfig.allowBlobs.Value) && (!source.Any((string variation) => LoopEnemy.Contains(variation)) || !NOLConfig.allowLiving.Value))
{
enemy.rarity = 0;
}
}
foreach (SpawnableEnemyWithRarity outsideEnemy in newLevel.OutsideEnemies)
{
if (!outsideEnemy.enemyType.enemyName.Contains("RadMech"))
{
outsideEnemy.rarity = 0;
}
}
mls.LogDebug((object)"NoOrganicLife: Removed All Configured Organic Entities.");
return true;
}
}