using System.Diagnostics;
using System.IO;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using System.Runtime.Versioning;
using BepInEx;
using BepInEx.Logging;
using HarmonyLib;
using UnityEngine;
[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)]
[assembly: AssemblyTitle("GreenStormMod")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("GreenStormMod")]
[assembly: AssemblyCopyright("Copyright © 2024")]
[assembly: AssemblyTrademark("")]
[assembly: ComVisible(false)]
[assembly: Guid("e11132f3-73eb-40cb-a241-76a6da26ae2a")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: TargetFramework(".NETFramework,Version=v4.7.2", FrameworkDisplayName = ".NET Framework 4.7.2")]
[assembly: AssemblyVersion("1.0.0.0")]
[HarmonyPatch(typeof(StartOfRound))]
internal class PlushieModelReplacement
{
[HarmonyPatch("Awake")]
[HarmonyPrefix]
public static void ReplaceModel(AllItemsList ___allItemsList)
{
RainbrewMod.ReplaceBottles(___allItemsList.itemsList.ToArray());
}
}
[BepInPlugin("GreenStorm.Rainbrew", "Rainbrew", "0.0.1")]
public class RainbrewMod : BaseUnityPlugin
{
private const string modGUID = "GreenStorm.Rainbrew";
private const string modName = "Rainbrew";
private const string modVersion = "0.0.1";
private readonly Harmony harmony = new Harmony("GreenStorm.Rainbrew");
public static ManualLogSource mls;
private static RainbrewMod instance;
public static AssetBundle assets;
public static string assetName = "rain.brew";
public static string meshName = "rainbrew_crate.mesh";
public static string capMat = "rainbrew_bottle_cap.mat";
public static string bottleMat = "rainbrew_bottle.mat";
public static string crateMat = "rainbrew_crate.mat";
public static string BottleName = "Bottles";
public static Mesh BottleMesh;
public static Material[] BottleMaterials;
public static float size = 8f;
private void Awake()
{
if ((Object)(object)instance == (Object)null)
{
instance = this;
}
mls = Logger.CreateLogSource("GreenStorm.Rainbrew");
string directoryName = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
string text = Path.Combine(directoryName, assetName).Replace("\\", "/");
assets = AssetBundle.LoadFromFile(text);
harmony.PatchAll();
mls.LogInfo((object)"Rainbrew has loaded");
}
public static void ReplaceBottles(Item[] items)
{
//IL_008c: Unknown result type (might be due to invalid IL or missing references)
//IL_0091: Unknown result type (might be due to invalid IL or missing references)
//IL_00a6: Unknown result type (might be due to invalid IL or missing references)
//IL_00ab: Unknown result type (might be due to invalid IL or missing references)
//IL_00c0: Unknown result type (might be due to invalid IL or missing references)
//IL_00c5: Unknown result type (might be due to invalid IL or missing references)
//IL_00f3: Unknown result type (might be due to invalid IL or missing references)
//IL_00f8: Unknown result type (might be due to invalid IL or missing references)
//IL_00fc: Unknown result type (might be due to invalid IL or missing references)
//IL_0101: Unknown result type (might be due to invalid IL or missing references)
//IL_010d: Unknown result type (might be due to invalid IL or missing references)
//IL_0113: Unknown result type (might be due to invalid IL or missing references)
//IL_0118: Unknown result type (might be due to invalid IL or missing references)
//IL_011a: Unknown result type (might be due to invalid IL or missing references)
//IL_0124: Unknown result type (might be due to invalid IL or missing references)
//IL_0129: 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_01d6: Unknown result type (might be due to invalid IL or missing references)
//IL_01dd: Expected O, but got Unknown
Item val = null;
mls.LogMessage((object)items.Length);
foreach (Item val2 in items)
{
mls.LogMessage((object)val2.itemName);
if (val2.itemName == BottleName)
{
val = val2;
break;
}
}
if ((Object)(object)val != (Object)null)
{
val.itemName = "Rainbrew";
val.spawnPrefab.GetComponentInChildren<ScanNodeProperties>().headerText = val.itemName;
val.restingRotation = Vector3.zero;
val.rotationOffset = new Vector3(95.3f, 111.9f, 10.25f);
val.positionOffset = new Vector3(-0.15f, 0.2f, -0.35f);
val.floorYOffset = 90;
Mesh val3 = Object.Instantiate<Mesh>(assets.LoadAsset<Mesh>(meshName));
Vector3[] vertices = val3.vertices;
Bounds bounds = val3.bounds;
Vector3 center = ((Bounds)(ref bounds)).center;
for (int j = 0; j < vertices.Length; j++)
{
vertices[j] = center + (vertices[j] - center) * size;
}
val3.vertices = vertices;
val3.RecalculateBounds();
((Renderer)val.spawnPrefab.GetComponent<MeshRenderer>()).materials = (Material[])(object)new Material[3]
{
assets.LoadAsset<Material>(capMat),
assets.LoadAsset<Material>(bottleMat),
assets.LoadAsset<Material>(crateMat)
};
val.spawnPrefab.GetComponent<MeshFilter>().mesh = val3;
foreach (Transform item in val.spawnPrefab.transform)
{
Transform val4 = item;
if (((Object)val4).name != "ScanNode")
{
Object.Destroy((Object)(object)((Component)val4).gameObject);
}
}
Object.Destroy((Object)(object)val.spawnPrefab.GetComponent<LODGroup>());
}
else
{
mls.LogMessage((object)"Bottles could not be found.");
}
}
}