using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using System.Runtime.Versioning;
using System.Threading;
using BepInEx;
using BepInEx.Logging;
using BetterRCompany.Patches;
using HarmonyLib;
using LethalLib;
using RealCompany.Patches;
using UnityEngine;
[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)]
[assembly: AssemblyTitle("BetterRCompany")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("BetterRCompany")]
[assembly: AssemblyCopyright("Copyright © 2024")]
[assembly: AssemblyTrademark("")]
[assembly: ComVisible(false)]
[assembly: Guid("a5af0ca3-92a7-42ed-be96-79c90bed5da0")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: TargetFramework(".NETFramework,Version=v4.8", FrameworkDisplayName = ".NET Framework 4.8")]
[assembly: AssemblyVersion("1.0.0.0")]
namespace RealCompany.Patches
{
internal class EnemyPatches : Plugin
{
public static List<int> rn = new List<int>();
private static int randomNumberGen()
{
int item = new Random().Next(1, 11);
rn.Add(item);
return rn[rn.Count - 1];
}
[HarmonyPatch(typeof(ForestGiantAI), "Update")]
[HarmonyPostfix]
private static void ForestGiantPatch(ForestGiantAI __instance)
{
((EnemyAI)__instance).agent.speed = 3f;
}
[HarmonyPatch(typeof(Landmine), "PressMineServerRpc")]
[HarmonyPostfix]
private static void LandmineTPatch(Landmine __instance)
{
if (randomNumberGen() < 2)
{
__instance.ToggleMine(false);
}
else
{
__instance.ToggleMine(true);
}
}
}
internal class PlayerPatches : Plugin
{
}
}
namespace BetterRCompany
{
[BepInPlugin("BetterRCompany.Teku", "BetterRCompany", "1.2.2")]
public class MainPlugin : BaseUnityPlugin
{
private const string modGUID = "BetterRCompany.Teku";
private const string modName = "BetterRCompany";
private const string modVersion = "1.2.2";
private readonly Harmony harmony = new Harmony("BetterRCompany.Teku");
private static MainPlugin Instance;
public static ManualLogSource mls;
public static Dictionary<string, Dictionary<(float, float), string>> MapEvents = new Dictionary<string, Dictionary<(float, float), string>>
{
{
"41 Experimentation",
new Dictionary<(float, float), string>
{
{
(0f, 0.15f),
"LandmineEvent"
},
{
(0.15f, 0.23f),
"BrackenEvent"
},
{
(0.23f, 0.38f),
"TimeTravelEvent"
},
{
(0.38f, 0.48f),
"CockroachPartyEvent"
},
{
(0.48f, 0.56f),
"ClownFiestaEvent"
},
{
(0.56f, 0.6f),
"FakeFreeRoamEvent"
},
{
(0.6f, 0.64f),
"RealFreeRoamEvent"
},
{
(0.64f, 0.79f),
"ArachnophobiaEvent"
},
{
(0.79f, 0.83f),
"BankRollEvent"
},
{
(0.83f, 1f),
"TaxEvent"
}
}
},
{
"220 Assurance",
new Dictionary<(float, float), string>
{
{
(0f, 0.15f),
"LandmineEvent"
},
{
(0.15f, 0.23f),
"BrackenEvent"
},
{
(0.23f, 0.38f),
"TimeTravelEvent"
},
{
(0.38f, 0.48f),
"CockroachPartyEvent"
},
{
(0.48f, 0.56f),
"ClownFiestaEvent"
},
{
(0.56f, 0.6f),
"FakeFreeRoamEvent"
},
{
(0.6f, 0.64f),
"RealFreeRoamEvent"
},
{
(0.64f, 0.79f),
"ArachnophobiaEvent"
},
{
(0.79f, 0.83f),
"BankRollEvent"
},
{
(0.83f, 1f),
"TaxEvent"
}
}
},
{
"56 Vow",
new Dictionary<(float, float), string>
{
{
(0f, 0.15f),
"LandmineEvent"
},
{
(0.15f, 0.23f),
"BrackenEvent"
},
{
(0.23f, 0.38f),
"TimeTravelEvent"
},
{
(0.38f, 0.48f),
"CockroachPartyEvent"
},
{
(0.48f, 0.56f),
"ClownFiestaEvent"
},
{
(0.56f, 0.6f),
"FakeFreeRoamEvent"
},
{
(0.6f, 0.64f),
"RealFreeRoamEvent"
},
{
(0.64f, 0.79f),
"ArachnophobiaEvent"
},
{
(0.79f, 0.83f),
"BankRollEvent"
},
{
(0.83f, 1f),
"TaxEvent"
}
}
},
{
"21 Offense",
new Dictionary<(float, float), string>
{
{
(0f, 0.15f),
"LandmineEvent"
},
{
(0.15f, 0.23f),
"BrackenEvent"
},
{
(0.23f, 0.38f),
"TimeTravelEvent"
},
{
(0.38f, 0.48f),
"CockroachPartyEvent"
},
{
(0.48f, 0.56f),
"ClownFiestaEvent"
},
{
(0.56f, 0.6f),
"FakeFreeRoamEvent"
},
{
(0.6f, 0.64f),
"RealFreeRoamEvent"
},
{
(0.64f, 0.79f),
"ArachnophobiaEvent"
},
{
(0.79f, 0.83f),
"BankRollEvent"
},
{
(0.83f, 1f),
"TaxEvent"
}
}
},
{
"61 March",
new Dictionary<(float, float), string>
{
{
(0f, 0.15f),
"LandmineEvent"
},
{
(0.15f, 0.23f),
"BrackenEvent"
},
{
(0.23f, 0.38f),
"TimeTravelEvent"
},
{
(0.38f, 0.48f),
"CockroachPartyEvent"
},
{
(0.48f, 0.56f),
"ClownFiestaEvent"
},
{
(0.56f, 0.6f),
"FakeFreeRoamEvent"
},
{
(0.6f, 0.64f),
"RealFreeRoamEvent"
},
{
(0.64f, 0.79f),
"ArachnophobiaEvent"
},
{
(0.79f, 0.83f),
"BankRollEvent"
},
{
(0.83f, 1f),
"TaxEvent"
}
}
},
{
"20 Adamance",
new Dictionary<(float, float), string>
{
{
(0f, 0.15f),
"LandmineEvent"
},
{
(0.15f, 0.23f),
"BrackenEvent"
},
{
(0.23f, 0.38f),
"TimeTravelEvent"
},
{
(0.38f, 0.48f),
"CockroachPartyEvent"
},
{
(0.48f, 0.56f),
"ClownFiestaEvent"
},
{
(0.56f, 0.6f),
"FakeFreeRoamEvent"
},
{
(0.6f, 0.64f),
"RealFreeRoamEvent"
},
{
(0.64f, 0.79f),
"ArachnophobiaEvent"
},
{
(0.79f, 0.83f),
"BankRollEvent"
},
{
(0.83f, 1f),
"TaxEvent"
}
}
},
{
"85 Rend",
new Dictionary<(float, float), string>
{
{
(0f, 0.07f),
"LandmineEvent"
},
{
(0.07f, 0.12f),
"BrackenEvent"
},
{
(0.12f, 0.19f),
"TimeTravelEvent"
},
{
(0.19f, 0.25f),
"CockroachPartyEvent"
},
{
(0.25f, 0.32f),
"ClownFiestaEvent"
},
{
(0.32f, 0.34f),
"FakeFreeRoamEvent"
},
{
(0.34f, 0.36f),
"RealFreeRoamEvent"
},
{
(0.36f, 0.43f),
"ArachnophobiaEvent"
},
{
(0.43f, 0.91f),
"NutBlasterEvent"
},
{
(0.91f, 0.93f),
"BankRollEvent"
},
{
(0.93f, 1f),
"TaxEvent"
}
}
},
{
"7 Dine",
new Dictionary<(float, float), string>
{
{
(0f, 0.07f),
"LandmineEvent"
},
{
(0.07f, 0.12f),
"BrackenEvent"
},
{
(0.12f, 0.19f),
"TimeTravelEvent"
},
{
(0.19f, 0.25f),
"CockroachPartyEvent"
},
{
(0.25f, 0.32f),
"ClownFiestaEvent"
},
{
(0.32f, 0.34f),
"FakeFreeRoamEvent"
},
{
(0.34f, 0.36f),
"RealFreeRoamEvent"
},
{
(0.36f, 0.43f),
"ArachnophobiaEvent"
},
{
(0.43f, 0.91f),
"NutBlasterEvent"
},
{
(0.91f, 0.93f),
"BankRollEvent"
},
{
(0.93f, 1f),
"TaxEvent"
}
}
},
{
"5 Embrion",
new Dictionary<(float, float), string>
{
{
(0f, 0.07f),
"LandmineEvent"
},
{
(0.07f, 0.12f),
"BrackenEvent"
},
{
(0.12f, 0.19f),
"TimeTravelEvent"
},
{
(0.19f, 0.25f),
"CockroachPartyEvent"
},
{
(0.25f, 0.32f),
"ClownFiestaEvent"
},
{
(0.32f, 0.34f),
"FakeFreeRoamEvent"
},
{
(0.34f, 0.36f),
"RealFreeRoamEvent"
},
{
(0.36f, 0.43f),
"ArachnophobiaEvent"
},
{
(0.43f, 0.91f),
"NutBlasterEvent"
},
{
(0.91f, 0.93f),
"BankRollEvent"
},
{
(0.93f, 1f),
"TaxEvent"
}
}
},
{
"68 Artifice",
new Dictionary<(float, float), string>
{
{
(0f, 0.07f),
"LandmineEvent"
},
{
(0.07f, 0.12f),
"BrackenEvent"
},
{
(0.12f, 0.19f),
"TimeTravelEvent"
},
{
(0.19f, 0.25f),
"CockroachPartyEvent"
},
{
(0.25f, 0.32f),
"ClownFiestaEvent"
},
{
(0.32f, 0.34f),
"FakeFreeRoamEvent"
},
{
(0.34f, 0.36f),
"RealFreeRoamEvent"
},
{
(0.36f, 0.43f),
"ArachnophobiaEvent"
},
{
(0.43f, 0.91f),
"NutBlasterEvent"
},
{
(0.91f, 0.93f),
"BankRollEvent"
},
{
(0.93f, 1f),
"TaxEvent"
}
}
},
{
"8 Titan",
new Dictionary<(float, float), string>
{
{
(0f, 0.15f),
"LandmineEvent"
},
{
(0.15f, 0.23f),
"BrackenEvent"
},
{
(0.23f, 0.38f),
"TimeTravelEvent"
},
{
(0.38f, 0.48f),
"CockroachPartyEvent"
},
{
(0.48f, 0.56f),
"ClownFiestaEvent"
},
{
(0.56f, 0.6f),
"FakeFreeRoamEvent"
},
{
(0.6f, 0.64f),
"RealFreeRoamEvent"
},
{
(0.64f, 0.79f),
"ArachnophobiaEvent"
},
{
(0.79f, 0.83f),
"BankRollEvent"
},
{
(0.83f, 1f),
"TaxEvent"
}
}
}
};
public static Item ShotgunAmmo;
public static Item MyShotgun;
public static bool EventActive = false;
public static bool eventTpd = false;
public static string currentPlanetName;
public static string currentEventName;
public static int BunkerSpiderIndex;
public static int BrackenIndex;
public static EnemyVent[] EnemyVents;
public static Timer timer;
public static int HoardingBugIndex;
public static AnimationCurve DefaultLandmineSpawnRate = new AnimationCurve((Keyframe[])(object)new Keyframe[1]
{
new Keyframe(0f, 2.5f)
});
public static bool ModifiedLootPool = false;
public static List<SpawnableItemWithRarity> OriginalLootPool = new List<SpawnableItemWithRarity>();
public static double EventIDRolled;
public static double currentChance = 0.7;
public static List<string> ClownItems = new List<string> { "Clown horn", "Large axle", "Toy robot", "Airhorn", "Clownhorn", "Dentures", "Cash register" };
public static List<string> LandmineMessages = new List<string>
{
"Footstep Frenzy", "Watch Your Step", "Explosive trails", "Minefield Madness", "Boom Tango", "Explosive Ballet", "Toe Tapper Trap", "Stompocalypse", "Minesweeper's Nightmare", "Explosion Elegance",
"Mambo No. Mines"
};
public static List<string> BrackenMessages = new List<string> { "Phantom Prowlers", "Nightmare Stalkers", "White Eyes of Despair", "Full-Moon Eyes", "Wraith Gaze", "They Are Watching", "Terror Stare", "Terrorising Eyes" };
public static List<string> TimeTravelMessages = new List<string> { "Paradox Playtime", "Quantum Gambit", "Temporal Turbulence", "Temporal Dillema", "Time Roulette" };
public static List<string> CockroachPartyMessages = new List<string> { "Insect Insurgence", "Roach Rampage", "Bug Bash Bash", "Cockroach Party", "Pest Party Parade", "Critter Convention", "Roach Rave" };
public static List<string> ClownFiestaMessages = new List<string> { "Havoc Honk", "Circus Attendees", "Clown Fiesta", "The Jokes On You" };
public static List<string> ArachnophobiaMessages = new List<string> { "Big Ass Spiders" };
public static List<string> NutBlasterMessages = new List<string> { "Blast-Away", "Nutblaster" };
public static List<string> BankRollMessages = new List<string> { "Big money", "Bankroll" };
public static List<string> TaxMessages = new List<string> { "Get Taxed", "Poland income tax", "Romanian income tax" };
public static List<string> RandomTPMessages = new List<string> { "Get Inverse TP'd" };
private void Awake()
{
if ((Object)(object)Instance == (Object)null)
{
Instance = this;
}
mls = Logger.CreateLogSource("BetterRCompany.Teku");
mls.LogInfo((object)"================================");
mls.LogInfo((object)"= MOD ONLINE STARTED =");
mls.LogInfo((object)"================================");
harmony.PatchAll(typeof(MainPlugin));
harmony.PatchAll(typeof(MoonEventsPatch));
harmony.PatchAll(typeof(GeneratingNumbers));
harmony.PatchAll(typeof(PlayerPatches));
harmony.PatchAll(typeof(EnemyPatches));
}
}
}
namespace BetterRCompany.Patches
{
internal class GeneratingNumbers
{
public static Random GenRandomNumber = new Random();
public static double EventChanceRoll()
{
return GenRandomNumber.NextDouble();
}
}
internal class MoonEventsPatch : MainPlugin
{
private static void AnnounceEvent()
{
try
{
Terminal val = Object.FindObjectOfType<Terminal>();
string text = MainPlugin.currentEventName;
if (text == null)
{
return;
}
switch (text.Length)
{
case 13:
switch (text[0])
{
case 'L':
if (text == "LandmineEvent")
{
HUDManager.Instance.AddTextToChatOnServer("<color=yellow>[The Company]:</color> " + MainPlugin.LandmineMessages[GeneratingNumbers.GenRandomNumber.Next(0, MainPlugin.LandmineMessages.Count())] + ".", -1);
LandmineSpawnRate(RoundManager.Instance.currentLevel);
}
break;
case 'B':
if (text == "BankRollEvent")
{
HUDManager.Instance.AddTextToChatOnServer("<color=yellow>[The Company]:</color> " + MainPlugin.BankRollMessages[GeneratingNumbers.GenRandomNumber.Next(0, MainPlugin.BankRollMessages.Count())], -1);
if (MainPlugin.currentPlanetName == "85 Rend" || MainPlugin.currentPlanetName == "7 Dine" || MainPlugin.currentPlanetName == "8 Titan")
{
val.groupCredits += GeneratingNumbers.GenRandomNumber.Next(220, 341);
}
else
{
val.groupCredits += GeneratingNumbers.GenRandomNumber.Next(80, 221);
}
val.SyncGroupCreditsServerRpc(val.groupCredits, val.numberOfItemsInDropship);
HUDManager.Instance.AddTextToChatOnServer($"Romanian government gave you a small bonus for your Romanian Vlone. Your new balance is: {val.groupCredits}", -1);
}
break;
}
break;
case 15:
switch (text[0])
{
case 'T':
if (text == "TimeTravelEvent")
{
HUDManager.Instance.AddTextToChatOnServer("<color=yellow>[The Company]:</color> " + MainPlugin.TimeTravelMessages[GeneratingNumbers.GenRandomNumber.Next(0, MainPlugin.TimeTravelMessages.Count())] + ".", -1);
MainPlugin.timer = new Timer(MoonTimeTimer, null, 0, 10000);
}
break;
case 'N':
if (text == "NutBlasterEvent")
{
HUDManager.Instance.AddTextToChatOnServer("<color=yellow>[The Company]:</color> " + MainPlugin.NutBlasterMessages[GeneratingNumbers.GenRandomNumber.Next(0, MainPlugin.NutBlasterMessages.Count())], -1);
ShotgunDeliver();
}
break;
}
break;
case 17:
switch (text[0])
{
case 'F':
if (text == "FakeFreeRoamEvent")
{
HUDManager.Instance.AddTextToChatOnServer("<color=yellow>[The Company]:</color> Enjoy your hard-earned free day.", -1);
}
break;
case 'R':
if (text == "RealFreeRoamEvent")
{
HUDManager.Instance.AddTextToChatOnServer("<color=yellow>[The Company]:</color> Enjoy your hard-earned free day.", -1);
}
break;
}
break;
case 12:
if (text == "BrackenEvent")
{
HUDManager.Instance.AddTextToChatOnServer("<color=yellow>[The Company]:</color> " + MainPlugin.BrackenMessages[GeneratingNumbers.GenRandomNumber.Next(0, MainPlugin.BrackenMessages.Count())] + ".", -1);
}
break;
case 19:
if (text == "CockroachPartyEvent")
{
HUDManager.Instance.AddTextToChatOnServer("<color=yellow>[The Company]:</color> " + MainPlugin.CockroachPartyMessages[GeneratingNumbers.GenRandomNumber.Next(0, MainPlugin.CockroachPartyMessages.Count())] + ".", -1);
}
break;
case 16:
if (text == "ClownFiestaEvent")
{
HUDManager.Instance.AddTextToChatOnServer("<color=yellow>[The Company]:</color> " + MainPlugin.ClownFiestaMessages[GeneratingNumbers.GenRandomNumber.Next(0, MainPlugin.ClownFiestaMessages.Count())] + ".", -1);
}
break;
case 18:
if (text == "ArachnophobiaEvent")
{
HUDManager.Instance.AddTextToChatOnServer("<color=yellow>[The Company]:</color> " + MainPlugin.ArachnophobiaMessages[GeneratingNumbers.GenRandomNumber.Next(0, MainPlugin.ArachnophobiaMessages.Count())], -1);
}
break;
case 8:
if (text == "TaxEvent")
{
HUDManager.Instance.AddTextToChatOnServer("<color=yellow>[The Company]:</color> " + MainPlugin.TaxMessages[GeneratingNumbers.GenRandomNumber.Next(0, MainPlugin.TaxMessages.Count())], -1);
val.groupCredits -= val.groupCredits * 20 / 100;
val.SyncGroupCreditsServerRpc(val.groupCredits, val.numberOfItemsInDropship);
HUDManager.Instance.AddTextToChatOnServer($"Tax paid to the Polish Government. Your new balance is: {val.groupCredits}", -1);
}
break;
case 9:
case 10:
case 11:
case 14:
break;
}
}
catch (Exception ex)
{
MainPlugin.mls.LogError((object)ex);
}
}
public static Item GetItem(string myItem)
{
Item[] array = Resources.FindObjectsOfTypeAll<Item>();
foreach (Item val in array)
{
if (((Object)val).name == myItem)
{
return val;
}
}
return null;
}
private static void ShotgunDeliver()
{
try
{
Terminal val = Object.FindObjectOfType<Terminal>();
List<Item> list = val.buyableItemsList.ToList();
MainPlugin.MyShotgun = Object.Instantiate<Item>(GetItem("Shotgun"));
MainPlugin.ShotgunAmmo = Object.Instantiate<Item>(GetItem("GunAmmo"));
list.Add(MainPlugin.MyShotgun);
list.Add(MainPlugin.ShotgunAmmo);
val.buyableItemsList = list.ToArray();
val.orderedItemsFromTerminal.Add(val.buyableItemsList.Count() - 1);
val.orderedItemsFromTerminal.Add(val.buyableItemsList.Count() - 1);
val.orderedItemsFromTerminal.Add(val.buyableItemsList.Count() - 1);
val.orderedItemsFromTerminal.Add(val.buyableItemsList.Count() - 1);
val.orderedItemsFromTerminal.Add(val.buyableItemsList.Count() - 1);
val.orderedItemsFromTerminal.Add(val.buyableItemsList.Count() - 1);
val.orderedItemsFromTerminal.Add(val.buyableItemsList.Count() - 2);
val.orderedItemsFromTerminal.Add(val.buyableItemsList.Count() - 2);
}
catch (Exception ex)
{
MainPlugin.mls.LogError((object)ex);
}
}
private static void MoonTimeTimer(object state)
{
try
{
if (MainPlugin.EventActive && MainPlugin.currentEventName == "TimeTravelEvent" && StartOfRound.Instance.shipHasLanded)
{
if (GeneratingNumbers.GenRandomNumber.Next(0, 2) == 0)
{
TimeOfDay.Instance.globalTimeSpeedMultiplier = 4.5f;
}
else
{
TimeOfDay.Instance.globalTimeSpeedMultiplier = -2.2f;
}
}
}
catch (Exception ex)
{
MainPlugin.mls.LogError((object)ex);
}
}
private static void LandmineSpawnRate(SelectableLevel currentPlayingLevel)
{
//IL_0030: Unknown result type (might be due to invalid IL or missing references)
//IL_0035: Unknown result type (might be due to invalid IL or missing references)
//IL_0046: Unknown result type (might be due to invalid IL or missing references)
//IL_004b: Unknown result type (might be due to invalid IL or missing references)
//IL_0050: Unknown result type (might be due to invalid IL or missing references)
//IL_0056: Expected O, but got Unknown
try
{
if (!MainPlugin.EventActive || !(MainPlugin.currentEventName == "LandmineEvent"))
{
return;
}
AnimationCurve numberToSpawn = new AnimationCurve((Keyframe[])(object)new Keyframe[2]
{
new Keyframe(0f, 150f),
new Keyframe(1f, 50f)
});
SpawnableMapObject[] spawnableMapObjects = currentPlayingLevel.spawnableMapObjects;
foreach (SpawnableMapObject val in spawnableMapObjects)
{
Landmine componentInChildren = val.prefabToSpawn.GetComponentInChildren<Landmine>();
if ((Object)(object)componentInChildren != (Object)null && ((Object)componentInChildren).name == ((Object)val.prefabToSpawn).name)
{
val.numberToSpawn = numberToSpawn;
}
}
}
catch (Exception ex)
{
MainPlugin.mls.LogError((object)ex);
}
}
[HarmonyPatch(typeof(ItemDropship), "ShipLeave")]
[HarmonyPostfix]
private static void ItemDropShipLeave()
{
try
{
if (MainPlugin.EventActive && MainPlugin.currentEventName == "NutBlasterEvent")
{
Terminal obj = Object.FindObjectOfType<Terminal>();
List<Item> list = obj.buyableItemsList.ToList();
list.Remove(MainPlugin.MyShotgun);
list.Remove(MainPlugin.ShotgunAmmo);
obj.buyableItemsList = list.ToArray();
}
}
catch (Exception ex)
{
MainPlugin.mls.LogError((object)ex);
}
}
[HarmonyPatch(typeof(EnemyAI), "KillEnemyServerRpc")]
[HarmonyPostfix]
private static void EnemyBounty(EnemyAI __instance)
{
try
{
if (MainPlugin.EventActive && !__instance.enemyType.isOutsideEnemy)
{
Terminal val = Object.FindObjectOfType<Terminal>();
val.groupCredits += 30;
val.SyncGroupCreditsServerRpc(val.groupCredits, val.numberOfItemsInDropship);
}
}
catch (Exception ex)
{
MainPlugin.mls.LogError((object)ex);
}
}
[HarmonyPatch(typeof(StartOfRound), "ShipHasLeft")]
[HarmonyPostfix]
private static void ResetValues(StartOfRound __instance)
{
try
{
TimeOfDay.Instance.globalTimeSpeedMultiplier = 1f;
SpawnableMapObject[] spawnableMapObjects = RoundManager.Instance.currentLevel.spawnableMapObjects;
foreach (SpawnableMapObject val in spawnableMapObjects)
{
Landmine componentInChildren = val.prefabToSpawn.GetComponentInChildren<Landmine>();
if ((Object)(object)componentInChildren != (Object)null && ((Object)componentInChildren).name == ((Object)val.prefabToSpawn).name)
{
val.numberToSpawn = MainPlugin.DefaultLandmineSpawnRate;
}
}
MainPlugin.EventActive = false;
if (!MainPlugin.ModifiedLootPool)
{
return;
}
RoundManager.Instance.currentLevel.spawnableScrap.Clear();
foreach (SpawnableItemWithRarity item in MainPlugin.OriginalLootPool)
{
RoundManager.Instance.currentLevel.spawnableScrap.Add(item);
}
MainPlugin.ModifiedLootPool = false;
}
catch (Exception ex)
{
MainPlugin.mls.LogError((object)ex.Message);
}
}
[HarmonyPatch(typeof(RoundManager), "SpawnScrapInLevel")]
[HarmonyPrefix]
private static void SpawnCustomScrapPool(RoundManager __instance)
{
try
{
if (!MainPlugin.ModifiedLootPool)
{
foreach (SpawnableItemWithRarity item in __instance.currentLevel.spawnableScrap)
{
MainPlugin.OriginalLootPool.Add(item);
}
}
if (!MainPlugin.EventActive || !(MainPlugin.currentEventName == "ClownFiestaEvent"))
{
return;
}
__instance.currentLevel.spawnableScrap.RemoveAll((SpawnableItemWithRarity item) => !MainPlugin.ClownItems.Contains(item.spawnableItem.itemName));
MainPlugin.ModifiedLootPool = true;
foreach (SpawnableItemWithRarity item2 in __instance.currentLevel.spawnableScrap.Where((SpawnableItemWithRarity item) => MainPlugin.ClownItems.Contains(item.spawnableItem.itemName)))
{
item2.rarity = 100;
}
}
catch (Exception ex)
{
MainPlugin.mls.LogError((object)ex.Message);
}
}
[HarmonyPatch(typeof(RoundManager), "LoadNewLevel")]
[HarmonyPostfix]
private static void EventGen(RoundManager __instance)
{
//IL_0038: Unknown result type (might be due to invalid IL or missing references)
//IL_003d: Unknown result type (might be due to invalid IL or missing references)
//IL_0042: Unknown result type (might be due to invalid IL or missing references)
//IL_0048: Expected O, but got Unknown
//IL_012e: Unknown result type (might be due to invalid IL or missing references)
//IL_0133: Unknown result type (might be due to invalid IL or missing references)
//IL_0138: Unknown result type (might be due to invalid IL or missing references)
//IL_013e: Expected O, but got Unknown
//IL_015e: Unknown result type (might be due to invalid IL or missing references)
//IL_0163: Unknown result type (might be due to invalid IL or missing references)
//IL_0168: Unknown result type (might be due to invalid IL or missing references)
//IL_016f: Expected O, but got Unknown
try
{
MainPlugin.currentPlanetName = __instance.currentLevel.PlanetName;
if (MainPlugin.currentPlanetName == "71 Gordion")
{
return;
}
AnimationCurve enemySpawnChanceThroughoutDay = new AnimationCurve((Keyframe[])(object)new Keyframe[1]
{
new Keyframe(0f, 100f)
});
__instance.currentLevel.enemySpawnChanceThroughoutDay = enemySpawnChanceThroughoutDay;
MainPlugin.currentEventName = "";
if (!(GeneratingNumbers.EventChanceRoll() <= MainPlugin.currentChance))
{
return;
}
MainPlugin.EventActive = true;
MainPlugin.EventIDRolled = GeneratingNumbers.EventChanceRoll();
foreach (KeyValuePair<(float, float), string> item in MainPlugin.MapEvents[MainPlugin.currentPlanetName])
{
if (MainPlugin.EventIDRolled >= (double)item.Key.Item1 && MainPlugin.EventIDRolled <= (double)item.Key.Item2)
{
MainPlugin.currentEventName = item.Value;
}
}
if (MainPlugin.currentEventName == "BrackenEvent" || MainPlugin.currentEventName == "CockroachPartyEvent" || MainPlugin.currentEventName == "FakeFreeRoamEvent")
{
AnimationCurve enemySpawnChanceThroughoutDay2 = new AnimationCurve((Keyframe[])(object)new Keyframe[1]
{
new Keyframe(0f, 0f)
});
__instance.currentLevel.enemySpawnChanceThroughoutDay = enemySpawnChanceThroughoutDay2;
}
else
{
AnimationCurve enemySpawnChanceThroughoutDay3 = new AnimationCurve((Keyframe[])(object)new Keyframe[1]
{
new Keyframe(0f, 100f)
});
__instance.currentLevel.enemySpawnChanceThroughoutDay = enemySpawnChanceThroughoutDay3;
}
AnnounceEvent();
}
catch (Exception ex)
{
MainPlugin.mls.LogError((object)ex.Message);
}
}
[HarmonyPatch(typeof(RoundManager), "SpawnEnemyOnServer")]
[HarmonyPrefix]
private static void StopEnemySpawnOnEvent(RoundManager __instance)
{
try
{
if (MainPlugin.EventActive && !(MainPlugin.currentEventName == "BrackenEvent") && !(MainPlugin.currentEventName == "CockroachPartyEvent"))
{
_ = MainPlugin.currentEventName == "FakeFreeRoamEvent";
}
}
catch (Exception ex)
{
MainPlugin.mls.LogError((object)ex);
}
}
[HarmonyPatch(typeof(RoundManager), "RefreshEnemyVents")]
[HarmonyPostfix]
private static void SpawnEventEnemies(RoundManager __instance)
{
//IL_00e5: Unknown result type (might be due to invalid IL or missing references)
//IL_00f0: Unknown result type (might be due to invalid IL or missing references)
//IL_0100: Unknown result type (might be due to invalid IL or missing references)
//IL_0167: Unknown result type (might be due to invalid IL or missing references)
//IL_0172: Unknown result type (might be due to invalid IL or missing references)
//IL_0182: Unknown result type (might be due to invalid IL or missing references)
//IL_01a0: Unknown result type (might be due to invalid IL or missing references)
//IL_01ab: Unknown result type (might be due to invalid IL or missing references)
//IL_01bb: Unknown result type (might be due to invalid IL or missing references)
//IL_0123: Unknown result type (might be due to invalid IL or missing references)
//IL_012e: Unknown result type (might be due to invalid IL or missing references)
//IL_013e: Unknown result type (might be due to invalid IL or missing references)
try
{
MainPlugin.EnemyVents = Object.FindObjectsOfType<EnemyVent>();
if (!MainPlugin.EventActive)
{
return;
}
for (int i = 0; i < __instance.currentLevel.Enemies.Count; i++)
{
if (__instance.currentLevel.Enemies[i].enemyType.enemyName == "Flowerman")
{
MainPlugin.BrackenIndex = i;
}
if (__instance.currentLevel.Enemies[i].enemyType.enemyName == "Hoarding bug")
{
MainPlugin.HoardingBugIndex = i;
}
if (__instance.currentLevel.Enemies[i].enemyType.enemyName == "Bunker Spider")
{
MainPlugin.BunkerSpiderIndex = i;
}
}
EnemyVent[] enemyVents = MainPlugin.EnemyVents;
foreach (EnemyVent val in enemyVents)
{
if (MainPlugin.currentEventName == "BrackenEvent")
{
__instance.SpawnEnemyGameObject(val.floorNode.position, val.floorNode.eulerAngles.y, MainPlugin.BrackenIndex, (EnemyType)null);
}
if (MainPlugin.currentEventName == "CockroachPartyEvent")
{
for (int k = 0; k < 2; k++)
{
__instance.SpawnEnemyGameObject(val.floorNode.position, val.floorNode.eulerAngles.y, MainPlugin.HoardingBugIndex, (EnemyType)null);
}
}
if (MainPlugin.currentEventName == "ArachnophobiaEvent")
{
__instance.SpawnEnemyGameObject(val.floorNode.position, val.floorNode.eulerAngles.y, MainPlugin.BunkerSpiderIndex, (EnemyType)null);
}
if (MainPlugin.currentEventName == "FakeFreeRoamEvent")
{
__instance.SpawnEnemyGameObject(val.floorNode.position, val.floorNode.eulerAngles.y, MainPlugin.BrackenIndex, (EnemyType)null);
break;
}
}
}
catch (Exception ex)
{
MainPlugin.mls.LogError((object)ex);
}
}
}
}