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 BepInEx;
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("EmoteWheel")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("EmoteWheel")]
[assembly: AssemblyCopyright("Copyright © 2024")]
[assembly: AssemblyTrademark("")]
[assembly: ComVisible(false)]
[assembly: Guid("b404dec9-2569-4583-8089-1bae71ce6300")]
[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")]
namespace InWorldDrops;
[BepInPlugin("com.Playboy.InWorldDrops", "InWorldDrops", "1.0.0")]
public class Main : BaseUnityPlugin
{
[HarmonyPatch(/*Could not decode attribute arguments.*/)]
private class Patch_Shop_1
{
public static FieldInfo m_CategoryItemDicFieldInfo = typeof(ShopHandler).GetField("m_CategoryItemDic", BindingFlags.Instance | BindingFlags.NonPublic);
private static void Postfix(ref ShopHandler __instance)
{
if (shopItemsDictionary.Count <= 0)
{
Dictionary<ShopItemCategory, List<ShopItem>> categoryItemDic = GetCategoryItemDic(__instance);
AddDictionaryItems(categoryItemDic, (ShopItemCategory)1);
AddDictionaryItems(categoryItemDic, (ShopItemCategory)2);
AddDictionaryItems(categoryItemDic, (ShopItemCategory)3);
AddDictionaryItems(categoryItemDic, (ShopItemCategory)7);
}
}
private static void AddDictionaryItems(Dictionary<ShopItemCategory, List<ShopItem>> dictionary, ShopItemCategory category)
{
//IL_0002: Unknown result type (might be due to invalid IL or missing references)
//IL_0014: Unknown result type (might be due to invalid IL or missing references)
if (dictionary.TryGetValue(category, out var value))
{
shopItemsDictionary[category] = value.ToList();
}
}
public static Dictionary<ShopItemCategory, List<ShopItem>> GetCategoryItemDic(ShopHandler inst)
{
if (m_CategoryItemDicFieldInfo == null)
{
return null;
}
return (Dictionary<ShopItemCategory, List<ShopItem>>)m_CategoryItemDicFieldInfo.GetValue(inst);
}
}
[HarmonyPatch(/*Could not decode attribute arguments.*/)]
private class Patch_Spawn_1
{
public static float lastSpawnTime = 0f;
private static readonly Random random = new Random();
private static void Postfix(ref RoundArtifactSpawner __instance)
{
//IL_0122: Unknown result type (might be due to invalid IL or missing references)
//IL_0135: Unknown result type (might be due to invalid IL or missing references)
//IL_013a: Unknown result type (might be due to invalid IL or missing references)
//IL_013f: Unknown result type (might be due to invalid IL or missing references)
//IL_0144: Unknown result type (might be due to invalid IL or missing references)
//IL_018b: Unknown result type (might be due to invalid IL or missing references)
//IL_0199: Unknown result type (might be due to invalid IL or missing references)
//IL_01b9: Unknown result type (might be due to invalid IL or missing references)
//IL_01d5: Unknown result type (might be due to invalid IL or missing references)
//IL_01da: Unknown result type (might be due to invalid IL or missing references)
//IL_01e8: Unknown result type (might be due to invalid IL or missing references)
//IL_01ef: Unknown result type (might be due to invalid IL or missing references)
//IL_01f6: Unknown result type (might be due to invalid IL or missing references)
//IL_01fb: Unknown result type (might be due to invalid IL or missing references)
//IL_0200: Unknown result type (might be due to invalid IL or missing references)
//IL_020a: Expected O, but got Unknown
//IL_020f: Unknown result type (might be due to invalid IL or missing references)
if (Time.time - lastSpawnTime < 10f)
{
return;
}
lastSpawnTime = Time.time;
ShopItemCategory[] array = new ShopItemCategory[4];
RuntimeHelpers.InitializeArray(array, (RuntimeFieldHandle)/*OpCode not supported: LdMemberToken*/);
ShopItemCategory[] eligibleCategories = (ShopItemCategory[])(object)array;
Dictionary<ShopItemCategory, List<ShopItem>> dictionary = shopItemsDictionary.Where((KeyValuePair<ShopItemCategory, List<ShopItem>> kvp) => eligibleCategories.Contains(kvp.Key) && kvp.Value.Count > 0).ToDictionary((KeyValuePair<ShopItemCategory, List<ShopItem>> kvp) => kvp.Key, (KeyValuePair<ShopItemCategory, List<ShopItem>> kvp) => kvp.Value);
if (dictionary.Count == 0)
{
return;
}
List<PatrolGroup> list = new List<PatrolGroup>();
list.Add((PatrolGroup)4);
list.Add((PatrolGroup)0);
List<PatrolPoint> pointsInGroups = Level.currentLevel.GetPointsInGroups(list);
List<Vector3> list2 = new List<Vector3>();
float num = 60f;
int num2 = 0;
foreach (PatrolPoint item in pointsInGroups)
{
Transform transform = ((Component)item).transform;
ShopItemCategory key = eligibleCategories[random.Next(eligibleCategories.Length)];
bool flag = true;
foreach (Vector3 item2 in list2)
{
float num3 = Vector3.Distance(transform.position, item2);
if (num3 < num)
{
flag = false;
break;
}
}
if (flag && shopItemsDictionary.ContainsKey(key) && shopItemsDictionary[key].Count != 0)
{
List<ShopItem> list3 = shopItemsDictionary[key];
ShopItem val = list3[random.Next(list3.Count)];
PickupHandler.CreatePickup(((ShopItem)(ref val)).ItemID, new ItemInstanceData(Guid.NewGuid()), transform.position, transform.rotation, Vector3.zero, Vector3.zero);
list2.Add(transform.position);
num2++;
}
}
}
}
public static Harmony harmony;
public static Dictionary<ShopItemCategory, List<ShopItem>> shopItemsDictionary = new Dictionary<ShopItemCategory, List<ShopItem>>();
private void Awake()
{
//IL_0006: Unknown result type (might be due to invalid IL or missing references)
//IL_0010: Expected O, but got Unknown
harmony = new Harmony("Playboy.InWorldDrops");
harmony.PatchAll();
}
}