using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.Versioning;
using System.Security;
using System.Security.Permissions;
using BepInEx;
using Inventory;
using Skins;
using TMPro;
using UI;
using Unity.Mathematics;
using UnityEngine;
using UnityEngine.Events;
using UnityEngine.SceneManagement;
[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)]
[assembly: TargetFramework(".NETStandard,Version=v2.0", FrameworkDisplayName = "")]
[assembly: AssemblyCompany("WWAG_RandomPotato")]
[assembly: AssemblyConfiguration("Debug")]
[assembly: AssemblyDescription("My first plugin")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: AssemblyInformationalVersion("1.0.0")]
[assembly: AssemblyProduct("WWAG_RandomPotato")]
[assembly: AssemblyTitle("WWAG_RandomPotato")]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: AssemblyVersion("1.0.0.0")]
[module: UnverifiableCode]
namespace WWAG_RandomPotato;
[BepInPlugin("org.NikoTheFox.RandomPotato", "WWAG Random Main Menu Wizard", "1.0.1")]
public class Plugin : BaseUnityPlugin
{
private void Awake()
{
Debug.Log((object)"Plugin WWAG_RandomPotato is loaded!");
}
private void OnSceneLoaded(Scene scene, LoadSceneMode mode)
{
//IL_00a7: Unknown result type (might be due to invalid IL or missing references)
//IL_00c8: Unknown result type (might be due to invalid IL or missing references)
//IL_00e5: Unknown result type (might be due to invalid IL or missing references)
//IL_00ef: Unknown result type (might be due to invalid IL or missing references)
//IL_0140: Unknown result type (might be due to invalid IL or missing references)
//IL_015d: 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_01bf: Unknown result type (might be due to invalid IL or missing references)
//IL_01c9: Expected O, but got Unknown
if (((Scene)(ref scene)).name == "title-screen")
{
Debug.Log((object)"Found scene, randomizing Wiz");
GameObject val = GameObject.Find("background-canvas/player-animation");
val.AddComponent<PluginRandomWiz>();
val.AddComponent<BoxCollider>();
}
if (!(((Scene)(ref scene)).name == "core-simple-all"))
{
return;
}
Debug.Log((object)"Found customizestuff");
GameObject val2 = GameObject.Find("ui/cross-world-ui(Clone)/customize-wizard-ui/window/item-selection-panel/finalize-selectable-button");
if ((Object)(object)val2 == (Object)null)
{
Debug.Log((object)"Couldnt find the object to copy");
return;
}
val2.transform.position = new Vector3(490f, 150f, 0f);
val2.transform.localPosition = new Vector3(-500f, -410f, 0f);
RectTransform component = val2.GetComponent<RectTransform>();
component.sizeDelta = new Vector2(200f, component.sizeDelta.y);
GameObject val3 = Object.Instantiate<GameObject>(val2);
val3.transform.SetParent(val2.transform.parent, false);
((Object)val3).name = "randomize";
val3.transform.localPosition = new Vector3(-290f, -410f, 0f);
RectTransform component2 = val3.GetComponent<RectTransform>();
component2.sizeDelta = new Vector2(220f, component.sizeDelta.y);
GameObject gameObject = ((Component)val3.transform.Find("Text")).gameObject;
TextMeshProUGUI component3 = gameObject.GetComponent<TextMeshProUGUI>();
((TMP_Text)component3).text = "Randomize";
SelectableButton component4 = val3.GetComponent<SelectableButton>();
PluginRandomCustomizeWiz plugin = val3.AddComponent<PluginRandomCustomizeWiz>();
component4.SetClickAction((UnityAction)delegate
{
plugin.ChangeWizard();
});
}
private void OnEnable()
{
Debug.Log((object)"Plugin enabled");
SceneManager.sceneLoaded += OnSceneLoaded;
}
}
public class PluginRandomWiz : MonoBehaviour
{
private void Awake()
{
ChangeWizard();
}
private void ChangeWizard()
{
GameObject gameObject = ((Component)this).gameObject;
PlayerSkins component = gameObject.GetComponent<PlayerSkins>();
SkinGroup[] array = Resources.FindObjectsOfTypeAll<SkinGroup>();
List<SkinGroup> list = new List<SkinGroup>();
List<SkinGroup> list2 = new List<SkinGroup>();
List<SkinGroup> list3 = new List<SkinGroup>();
List<SkinGroup> list4 = new List<SkinGroup>();
List<SkinGroup> list5 = new List<SkinGroup>();
Random random = new Random();
string[] array2 = new string[7] { "crimson", "warlock", "mustard", "engineer", "magus", "oakley", "azure" };
string[] array3 = new string[14]
{
"alchemist", "warlock", "mustard", "engineer", "magus", "oakley", "azure", "calamity", "corsair", "crimson",
"farmhand", "necromancer", "occultist", "maninblack"
};
SkinGroup[] array4 = array;
foreach (SkinGroup val in array4)
{
string[] array5 = array2;
foreach (string text in array5)
{
if (((Object)val).name == "sg-hat-" + text)
{
list.Add(val);
}
if (((Object)val).name == "sg-robes-" + text)
{
list3.Add(val);
}
if (((Object)val).name == "sg-gloves-" + text)
{
list2.Add(val);
}
if (((Object)val).name == "sg-boots-" + text)
{
list4.Add(val);
}
}
string[] array6 = array3;
foreach (string text2 in array6)
{
if (((Object)val).name == "sg-eyes-" + text2)
{
list5.Add(val);
}
}
}
if (list.Count > 0)
{
SkinGroup val2 = list[random.Next(list.Count)];
component.SetEquipSlot(val2, (EquipSlot)0);
}
if (list2.Count > 0)
{
SkinGroup val3 = list2[random.Next(list2.Count)];
component.SetEquipSlot(val3, (EquipSlot)3);
}
if (list3.Count > 0)
{
SkinGroup val4 = list3[random.Next(list3.Count)];
component.SetEquipSlot(val4, (EquipSlot)4);
}
if (list4.Count > 0)
{
SkinGroup val5 = list4[random.Next(list4.Count)];
component.SetEquipSlot(val5, (EquipSlot)5);
}
if (list5.Count > 1)
{
SkinGroup val6 = list5[random.Next(list5.Count)];
component.SetEquipSlot(val6, (EquipSlot)7);
}
}
private void Update()
{
//IL_0011: Unknown result type (might be due to invalid IL or missing references)
//IL_0016: Unknown result type (might be due to invalid IL or missing references)
//IL_001b: Unknown result type (might be due to invalid IL or missing references)
//IL_001c: Unknown result type (might be due to invalid IL or missing references)
if (Input.GetMouseButtonDown(0))
{
Ray val = Camera.main.ScreenPointToRay(Input.mousePosition);
RaycastHit val2 = default(RaycastHit);
if (Physics.Raycast(val, ref val2) && (Object)(object)((RaycastHit)(ref val2)).transform == (Object)(object)((Component)this).transform)
{
OnObjectClicked();
}
}
}
private void OnObjectClicked()
{
ChangeWizard();
}
}
public class PluginRandomCustomizeWiz : MonoBehaviour
{
private PlayerSpawnGameData _spawnGameData;
private Dictionary<ItemType, ItemAssetHandle> _currentEquipmentItems = new Dictionary<ItemType, ItemAssetHandle>();
private SkinGroup _currentEyeShape;
private Color _currentEyeColor;
public PlayerSkins wizardPreview;
private void Awake()
{
GameObject gameObject = ((Component)((Component)this).transform.Find("Text")).gameObject;
if ((Object)(object)gameObject == (Object)null)
{
Debug.Log((object)"Couldnt find the text object.");
return;
}
TextMeshProUGUI component = gameObject.GetComponent<TextMeshProUGUI>();
((TMP_Text)component).text = "Randomize";
}
public void ChangeWizard()
{
//IL_0042: Unknown result type (might be due to invalid IL or missing references)
//IL_00f5: Unknown result type (might be due to invalid IL or missing references)
//IL_00fa: Unknown result type (might be due to invalid IL or missing references)
//IL_0103: 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_0143: Unknown result type (might be due to invalid IL or missing references)
//IL_0148: Unknown result type (might be due to invalid IL or missing references)
//IL_014b: Unknown result type (might be due to invalid IL or missing references)
//IL_0152: Unknown result type (might be due to invalid IL or missing references)
//IL_0154: Invalid comparison between Unknown and I4
//IL_015f: Unknown result type (might be due to invalid IL or missing references)
//IL_017b: Unknown result type (might be due to invalid IL or missing references)
//IL_0194: Unknown result type (might be due to invalid IL or missing references)
//IL_01b1: Unknown result type (might be due to invalid IL or missing references)
//IL_01bf: Unknown result type (might be due to invalid IL or missing references)
//IL_01c3: Unknown result type (might be due to invalid IL or missing references)
Debug.Log((object)"Randomizing Wiz");
GameObject val = GameObject.Find("ui/cross-world-ui(Clone)/customize-wizard-ui/window/item-selection-panel/player-animation");
GameObject val2 = GameObject.Find("ui/cross-world-ui(Clone)/customize-wizard-ui");
CustomizeWizardUI component = val2.GetComponent<CustomizeWizardUI>();
wizardPreview = val.GetComponent<PlayerSkins>();
_spawnGameData = GameDataCache.GetGameData<PlayerSpawnGameData>();
Random val3 = default(Random);
((Random)(ref val3)).InitState((uint)DateTimeOffset.UtcNow.ToUnixTimeMilliseconds());
if (_spawnGameData.eyeShapeItems.Length != 0)
{
StaticItemEquipmentComponent component2 = _spawnGameData.eyeShapeItems[((Random)(ref val3)).NextInt(0, _spawnGameData.eyeShapeItems.Length)].GetComponent<StaticItemEquipmentComponent>();
wizardPreview.SetEquipSlot(component2.skinGroup, (EquipSlot)7);
_currentEyeShape = component2.skinGroup;
}
if (_spawnGameData.eyeColorOptions.Length != 0)
{
Color val4 = _spawnGameData.eyeColorOptions[((Random)(ref val3)).NextInt(0, _spawnGameData.eyeColorOptions.Length)];
wizardPreview.SetSlotColor((ColorSlot)2, val4);
wizardPreview.SetAllColors();
_currentEyeColor = val4;
}
Dictionary<ItemType, List<GameObject>> allEquipmentOptions = _spawnGameData.GetAllEquipmentOptions();
EquipSlot val6 = default(EquipSlot);
foreach (ItemType key in allEquipmentOptions.Keys)
{
if ((key & 0x1FC0) > 0)
{
int count = allEquipmentOptions[key].Count;
int index = ((Random)(ref val3)).NextInt(0, count);
GameObject val5 = allEquipmentOptions[key][index];
StaticItemEquipmentComponent component3 = val5.GetComponent<StaticItemEquipmentComponent>();
if (SkinsUtil.TryGetEquipSlot(key, ref val6))
{
wizardPreview.SetEquipSlot(component3.skinGroup, val6);
_currentEquipmentItems[key] = new ItemAssetHandle(val5);
}
}
}
FieldInfo field = typeof(CustomizeWizardUI).GetField("_currentEyeShape", BindingFlags.Instance | BindingFlags.NonPublic);
field.SetValue(component, _currentEyeShape);
FieldInfo field2 = typeof(CustomizeWizardUI).GetField("_currentEquipmentItems", BindingFlags.Instance | BindingFlags.NonPublic);
field2.SetValue(component, _currentEquipmentItems);
}
}
public static class PluginInfo
{
public const string PLUGIN_GUID = "WWAG_RandomPotato";
public const string PLUGIN_NAME = "WWAG_RandomPotato";
public const string PLUGIN_VERSION = "1.0.0";
}