using System;
using System.Collections;
using System.Collections.Generic;
using System.Diagnostics;
using System.Globalization;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using System.Runtime.Versioning;
using CustomHoward;
using Il2CppInterop.Runtime.InteropTypes.Arrays;
using Il2CppRUMBLE.Environment.Howard;
using Il2CppRUMBLE.Interactions.InteractionBase;
using Il2CppRUMBLE.MoveSystem;
using Il2CppSystem;
using Il2CppSystem.Collections.Generic;
using Il2CppTMPro;
using MelonLoader;
using MelonLoader.Utils;
using RumbleModUI;
using UnityEngine;
using UnityEngine.Events;
[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)]
[assembly: MelonInfo(typeof(CustomHowardClass), "CustomHoward", "1.1.0", "Baumritter", null)]
[assembly: MelonGame("Buckethead Entertainment", "RUMBLE")]
[assembly: VerifyLoaderVersion(0, 6, 4, true)]
[assembly: MelonColor(200, 0, 200, 0)]
[assembly: MelonAuthorColor(200, 0, 200, 0)]
[assembly: AssemblyTitle("CustomHoward")]
[assembly: AssemblyDescription("Makes Howard do scary things")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("CustomHoward")]
[assembly: AssemblyCopyright("Copyright © 2024")]
[assembly: AssemblyTrademark("")]
[assembly: ComVisible(false)]
[assembly: Guid("119ab8f3-317c-4577-b08c-ba93dd1bbd2c")]
[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 CustomHoward;
internal class General
{
internal class Delay
{
private readonly bool debug = false;
private DateTime debugTime;
private object CRObj;
public string name;
private bool Running = false;
public bool Done = false;
private DateTime StartTime;
private double Wait;
public void Delay_Start(double WaitTime, bool AllowRetrigger = false)
{
if (!Running || AllowRetrigger)
{
if (Running)
{
MelonCoroutines.Stop(CRObj);
}
Done = false;
Wait = WaitTime;
StartTime = DateTime.Now;
debugTime = DateTime.Now;
CRObj = MelonCoroutines.Start(WaitLoop());
if (debug)
{
MelonLogger.Msg(name + " - Started");
}
}
}
public void Delay_Stop(bool Done = false)
{
if (Done)
{
this.Done = true;
}
if (Running)
{
MelonCoroutines.Stop(CRObj);
}
Running = false;
if (debug && Done)
{
MelonLogger.Msg(name + " - Done");
}
if (debug && !Done)
{
MelonLogger.Msg(name + " - Stopped");
}
TimeSpan timeSpan = DateTime.Now - debugTime;
if (debug && Done)
{
MelonLogger.Msg(name + " - " + timeSpan.TotalMilliseconds);
}
}
private IEnumerator WaitLoop()
{
WaitForFixedUpdate waitForFixedUpdate = new WaitForFixedUpdate();
Running = true;
while (true)
{
if (DateTime.Now >= StartTime.AddSeconds(Wait))
{
Delay_Stop(Done: true);
yield return null;
}
yield return waitForFixedUpdate;
}
}
}
internal class Folders
{
private readonly bool debug = false;
private string UserData = "UserData";
private string ModFolder;
private List<string> SubFolders = new List<string>();
public void SetModFolderCustom(string ModName)
{
ModFolder = ModName;
if (debug)
{
MelonLogger.Msg("Set ModFolder to " + ModFolder);
}
}
public void SetModFolderNamespace()
{
ModFolder = GetType().Namespace;
if (debug)
{
MelonLogger.Msg("Set ModFolder to " + ModFolder);
}
}
public void AddSubFolder(string FolderName)
{
SubFolders.Add(FolderName);
if (debug)
{
MelonLogger.Msg("Added Subfolder " + FolderName);
}
}
public void RemoveSubFolder(string FolderName)
{
SubFolders.Remove(FolderName);
if (debug)
{
MelonLogger.Msg("Removed Subfolder " + FolderName);
}
}
public void CheckAllFoldersExist()
{
CreateFolderIfNotExisting(GetFolderString());
if (SubFolders.Count <= 0)
{
return;
}
foreach (string subFolder in SubFolders)
{
CreateFolderIfNotExisting(GetFolderString(subFolder));
}
}
public void RemoveOtherFolders()
{
if (debug)
{
MelonLogger.Msg("Folder Removal: Start");
}
string[] directories = Directory.GetDirectories(GetFolderString("", IgnoreList: true));
string[] array = directories;
foreach (string text in array)
{
if (debug)
{
MelonLogger.Msg(text);
}
string text2 = text.Split(new char[1] { '\\' })[^1];
if (CheckIfFolderInList(text2))
{
Directory.Delete(GetFolderString(text2, IgnoreList: true), recursive: true);
if (debug)
{
MelonLogger.Msg("Deleted: " + GetFolderString(text2, IgnoreList: true));
}
}
}
if (debug)
{
MelonLogger.Msg("Folder Removal: End");
}
}
private string GetFolderString(string SubFolder = "", bool IgnoreList = false)
{
string text = UserData + "\\" + ModFolder;
if (SubFolder != "" && (SubFolders.Contains(SubFolder) || IgnoreList))
{
text = ((!IgnoreList) ? (text + "\\" + SubFolders.FirstOrDefault((string x) => x.Contains(SubFolder))) : (text + "\\" + SubFolder));
if (debug)
{
MelonLogger.Msg("Generated Path: " + text);
}
}
else if (debug)
{
MelonLogger.Msg("Generated Path with no SubFolder: " + text);
}
return text;
}
private void CreateFolderIfNotExisting(string Path)
{
if (debug && !Directory.Exists(Path))
{
MelonLogger.Msg("Path doesn't exist: " + Path);
}
else if (debug && Directory.Exists(Path))
{
MelonLogger.Msg("Path does exist: " + Path);
}
if (!Directory.Exists(Path))
{
Directory.CreateDirectory(Path);
}
}
private bool CheckIfFolderInList(string FolderName)
{
bool flag = false;
string folderString = GetFolderString(FolderName, IgnoreList: true);
if (!SubFolders.Contains(FolderName) && Directory.Exists(folderString))
{
flag = true;
}
if (debug && flag)
{
MelonLogger.Msg("Folder not in List " + folderString);
}
else if (debug && !flag)
{
MelonLogger.Msg("Folder in List " + folderString);
}
return flag;
}
}
internal class Button
{
private GameObject ButtonTemplate;
public List<GameObject> Buttons = new List<GameObject>();
public void GetTemplateButton()
{
if ((Object)(object)ButtonTemplate == (Object)null)
{
GameObject val = GameObject.Find("------------TUTORIAL------------/Static tutorials/RUMBLE Starter Guide/Next Page Button/InteractionButton");
ButtonTemplate = Object.Instantiate<GameObject>(val);
((UnityEventBase)((Component)ButtonTemplate.transform.GetChild(0)).GetComponent<InteractionButton>().OnPressed).m_PersistentCalls.Clear();
((Object)ButtonTemplate).name = "ButtonTemplate";
ButtonTemplate.SetActive(false);
Object.DontDestroyOnLoad((Object)(object)ButtonTemplate);
}
}
public void AddButton(string name)
{
GameObject val = Object.Instantiate<GameObject>(ButtonTemplate);
((Object)val).name = name;
Buttons.Add(val);
}
public void RemoveButton(string name)
{
Enumerator<GameObject> enumerator = Buttons.GetEnumerator();
while (enumerator.MoveNext())
{
GameObject current = enumerator.Current;
if (((Object)current).name == name)
{
GameObject val = current;
Buttons.Remove(val);
break;
}
}
}
public UnityEvent OnPressed(string name = "", int index = -1)
{
if (name != "")
{
int num = SearchButtonList(name);
if (num != -1)
{
return ((Component)Buttons[num].transform.GetChild(0)).GetComponent<InteractionButton>().OnPressed;
}
return ((Component)Buttons[0].transform.GetChild(0)).GetComponent<InteractionButton>().OnPressed;
}
if (index != -1)
{
return ((Component)Buttons[index].transform.GetChild(0)).GetComponent<InteractionButton>().OnPressed;
}
return ((Component)Buttons[0].transform.GetChild(0)).GetComponent<InteractionButton>().OnPressed;
}
private int SearchButtonList(string name)
{
for (int i = 0; i < Buttons.Count; i++)
{
if (((Object)Buttons[i]).name == name)
{
return i;
}
}
return -1;
}
}
internal class StringExtension
{
public static string SanitizeName(string Input)
{
bool flag = false;
char[] array = Input.ToCharArray();
string text = "";
if (Input.Contains("<u>"))
{
Input.Replace("<u>", "");
}
if (Input.Contains(","))
{
Input.Replace(",", "");
}
for (int i = 0; i < Input.Length; i++)
{
if (array[i] == '<' && i != Input.Length && (array[i + 1] == '#' || array[i + 1] == 'c'))
{
flag = true;
}
if (!flag)
{
text += array[i];
}
if (array[i] == '>')
{
flag = false;
}
}
return text;
}
}
}
public static class BuildInfo
{
public const string ModName = "CustomHoward";
public const string ModVersion = "1.1.0";
public const string Description = "Makes Howard do scary things";
public const string Author = "Baumritter";
public const string Company = "";
}
public class LogicData : MonoBehaviour
{
public string LogicName { get; set; }
public float MaxHP { get; set; }
public float DecisionMin { get; set; }
public float DecisionMax { get; set; }
public float ReactionTime { get; set; }
public Color HeadLight { get; set; }
public Color IdleColor { get; set; }
public Color ActiveColor { get; set; }
public float Chance_DoSeq { get; set; }
public float Chance_Dodge { get; set; }
public float Chance_Nothing { get; set; }
}
public class SeqGenData : MonoBehaviour
{
public string SeqName { get; set; }
public string AtkName { get; set; }
public float Weight { get; set; }
public float WeightDec { get; set; }
public float PreWait { get; set; }
public float PostWait { get; set; }
public float RangeMin { get; set; }
public float RangeMax { get; set; }
}
public class PoseGenData : MonoBehaviour
{
public int StackNumber { get; set; }
public float PreWait { get; set; }
public float PostWait { get; set; }
public string AnimationName { get; set; }
}
public class CustomHowardClass : MelonMod
{
private const double SceneDelay = 8.0;
private const string MoveFolder = "CustomMoveSet";
private const int Stack_Parry = 3;
private const int Stack_Cube = 5;
private const int Stack_Uppercut = 7;
private const int Stack_Wall = 8;
private const int Stack_Kick = 10;
private const int Stack_Ball = 11;
private const int Stack_Stomp = 12;
private const int Stack_Pillar = 13;
private const int Stack_Straight = 14;
private const string Anim_Straight = "Straight";
private const string Anim_Kick = "Kick";
private const string Anim_Spawn = "SpawnStructure";
private readonly bool debug = false;
private readonly bool debug2 = false;
private readonly bool debug3 = false;
private bool LogicLoaded = false;
private int currentlogicindex = 0;
private string currentscene;
private string MoveSetPath;
private string CurrentLogicName;
private DateTime ButtonDelay = DateTime.Now;
private int LogicMaxPage;
private int LogicCurPage = 0;
private int LogicLoopMax;
private bool LogicLoopRun = false;
private GameObject Howard_Obj;
private HowardLogic[] Base_Logic_Array = (HowardLogic[])(object)new HowardLogic[3];
private List<Stack> StackList;
private GameObject LogicText_Obj;
private GameObject Lamp_Obj;
private List<string> LogicNames = new List<string>();
private General.Folders Folders = new General.Folders();
private Mod Mod = new Mod();
private UI UI = UI.instance;
private ModSetting<bool> Reload;
private General.Delay Delay = new General.Delay();
private General.Delay Haptics = new General.Delay();
private General.Delay PageScroll = new General.Delay();
public override void OnLateInitializeMelon()
{
((MelonBase)this).OnLateInitializeMelon();
Folders.SetModFolderCustom("CustomHoward");
Folders.AddSubFolder("CustomMoveSet");
Folders.CheckAllFoldersExist();
UI.UI_Initialized += OnUIInit;
MoveSetPath = MelonEnvironment.UserDataDirectory + "\\CustomHoward\\CustomMoveSet\\";
}
public override void OnUpdate()
{
//IL_0198: Unknown result type (might be due to invalid IL or missing references)
//IL_019d: Unknown result type (might be due to invalid IL or missing references)
//IL_0264: Unknown result type (might be due to invalid IL or missing references)
//IL_0269: Unknown result type (might be due to invalid IL or missing references)
//IL_02bd: Unknown result type (might be due to invalid IL or missing references)
//IL_0294: Unknown result type (might be due to invalid IL or missing references)
((MelonBase)this).OnUpdate();
if (!(currentscene == "Gym") || !Delay.Done)
{
return;
}
if ((Object)(object)Howard_Obj == (Object)null)
{
Howard_Obj = GameObject.Find("--------------LOGIC--------------/Heinhouser products/Howard root");
if (debug)
{
MelonLogger.Msg("Got Howard Object");
}
Howard_Obj.GetComponent<Howard>().howardAnimator.changeLevelAnimationWaitTime = 0.5f;
if (debug)
{
MelonLogger.Msg("Changed Animation Speed");
}
Base_Logic_Array = Il2CppArrayBase<HowardLogic>.op_Implicit((Il2CppArrayBase<HowardLogic>)(object)Howard_Obj.GetComponent<Howard>().LogicLevels);
if (debug)
{
MelonLogger.Msg("Got Base Logic Objects");
}
StackList = GameObject.Find("Player Controller(Clone)").GetComponent<PlayerStackProcessor>().availableStacks;
if (debug)
{
MelonLogger.Msg("Available Stacks:");
}
Enumerator<Stack> enumerator = StackList.GetEnumerator();
while (enumerator.MoveNext())
{
Stack current = enumerator.Current;
if (debug)
{
MelonLogger.Msg(((Object)current).name);
}
}
GetFromFile();
if (debug)
{
MelonLogger.Msg("GotFromFile");
}
ModifyHowardConsole();
LogicText_Obj = GameObject.Find("--------------LOGIC--------------/Heinhouser products/Howard root/Howards console/Base Plate Custom/Upper Canvas/LogicText");
Lamp_Obj = GameObject.Find("--------------LOGIC--------------/Heinhouser products/Howard root/Howards console/Base Plate Custom/Status Lamp");
}
else
{
if ((bool)((ModSetting)Reload).Value && ButtonDelay <= DateTime.Now)
{
ButtonHandler(2);
((ModSetting)Reload).Value = false;
Haptics.Delay_Start(0.5);
}
if (Haptics.Done)
{
UI.ForceRefresh();
Haptics.Done = false;
}
if (LogicLoaded && UI.IsUIVisible() && UI.IsModSelected("CustomHoward") && UI.IsOptionSelected("Description") && PageScroll.Done)
{
PageScrollLogic();
}
if (ButtonDelay <= DateTime.Now)
{
((Renderer)((Component)Lamp_Obj.transform).GetComponent<MeshRenderer>()).material.SetColor("_EmissionColor", Color.green);
}
else
{
((Renderer)((Component)Lamp_Obj.transform).GetComponent<MeshRenderer>()).material.SetColor("_EmissionColor", Color.red);
}
}
}
private void OnUIInit()
{
//IL_0049: Unknown result type (might be due to invalid IL or missing references)
//IL_0053: Expected O, but got Unknown
//IL_0067: Unknown result type (might be due to invalid IL or missing references)
//IL_0071: Expected O, but got Unknown
Mod.ModName = "CustomHoward";
Mod.ModVersion = "1.1.0";
Mod.SetFolder("CustomHoward");
Mod.AddDescription("Description", "", "Makes Howard do scary things", new Tags());
Reload = Mod.AddToList("Reload all Movesets", false, 0, "Reloads all Moveset Files", new Tags());
Mod.GetFromFile();
UI.AddMod(Mod);
MelonLogger.Msg("Added Mod.");
}
private SequenceSet CreatePoseSequence(List<PoseGenData> PGD, SeqGenData SGD)
{
//IL_0001: Unknown result type (might be due to invalid IL or missing references)
//IL_0007: Expected O, but got Unknown
//IL_0007: Unknown result type (might be due to invalid IL or missing references)
//IL_000d: Expected O, but got Unknown
//IL_0014: Unknown result type (might be due to invalid IL or missing references)
//IL_001a: Expected O, but got Unknown
//IL_0034: Unknown result type (might be due to invalid IL or missing references)
//IL_0039: Unknown result type (might be due to invalid IL or missing references)
//IL_004d: Unknown result type (might be due to invalid IL or missing references)
//IL_0061: Unknown result type (might be due to invalid IL or missing references)
//IL_0076: Expected O, but got Unknown
//IL_01a7: Unknown result type (might be due to invalid IL or missing references)
//IL_01ac: Unknown result type (might be due to invalid IL or missing references)
//IL_01b4: Unknown result type (might be due to invalid IL or missing references)
//IL_01c1: Unknown result type (might be due to invalid IL or missing references)
//IL_01cf: Expected O, but got Unknown
//IL_0218: Unknown result type (might be due to invalid IL or missing references)
SequenceSet val = new SequenceSet();
HowardSequence val2 = new HowardSequence();
HowardBehaviourTiming[] array = (HowardBehaviourTiming[])(object)new HowardBehaviourTiming[1];
HowardAttackBehaviour val3 = new HowardAttackBehaviour();
TimedStack[] array2 = (TimedStack[])(object)new TimedStack[PGD.Count];
for (int i = 0; i < array2.Length; i++)
{
array2[i] = new TimedStack
{
PreWaitTime = PGD[i].PreWait,
PostWaitTime = PGD[i].PostWait,
AnimationTriggerName = PGD[i].AnimationName
};
Enumerator<Stack> enumerator = StackList.GetEnumerator();
while (enumerator.MoveNext())
{
Stack current = enumerator.Current;
if (((Object)current).name == MatchStack(PGD[i].StackNumber))
{
array2[i].Stack = current;
break;
}
}
if (debug3)
{
MelonLogger.Msg(((Object)array2[i].Stack).name);
}
if (PGD[i].StackNumber == 14 || PGD[i].StackNumber == 10 || PGD[i].StackNumber == 7 || PGD[i].StackNumber == 3 || PGD[i].StackNumber == 12)
{
array2[i].IsPersistentStack = true;
}
else
{
array2[i].IsPersistentStack = false;
}
}
((Object)val3).name = SGD.AtkName;
val3.timedStacks = Il2CppReferenceArray<TimedStack>.op_Implicit(array2);
val3.usePrediction = true;
array[0] = new HowardBehaviourTiming
{
Behaviour = (HowardBehaviour)(object)val3,
PreActivationWaitTime = SGD.PreWait,
PostActivationWaitTime = SGD.PostWait
};
((Object)val2).name = SGD.SeqName;
val2.BehaviourTimings = Il2CppReferenceArray<HowardBehaviourTiming>.op_Implicit(array);
val.Sequence = val2;
val.Weight = SGD.Weight;
val.WeightDecrementationWhenSelected = SGD.WeightDec;
val.RequiredMinMaxRange = new Vector2(SGD.RangeMin, SGD.RangeMax);
return val;
}
private string MatchStack(int StackNumber)
{
return StackNumber switch
{
3 => "Parry",
5 => "SpawnCube",
7 => "Uppercut",
8 => "SpawnWall",
10 => "Kick",
11 => "SpawnBall",
12 => "Stomp",
13 => "SpawnPillar",
14 => "Straight",
15 => "Disc",
_ => "Disc",
};
}
public void ModifyHowardConsole()
{
//IL_027d: Unknown result type (might be due to invalid IL or missing references)
//IL_02c4: Unknown result type (might be due to invalid IL or missing references)
//IL_02d3: Unknown result type (might be due to invalid IL or missing references)
//IL_02e2: Unknown result type (might be due to invalid IL or missing references)
//IL_0332: Unknown result type (might be due to invalid IL or missing references)
//IL_0341: Unknown result type (might be due to invalid IL or missing references)
//IL_0350: Unknown result type (might be due to invalid IL or missing references)
//IL_0391: Unknown result type (might be due to invalid IL or missing references)
//IL_03a0: Unknown result type (might be due to invalid IL or missing references)
//IL_0418: Unknown result type (might be due to invalid IL or missing references)
//IL_0519: Unknown result type (might be due to invalid IL or missing references)
//IL_0528: Unknown result type (might be due to invalid IL or missing references)
//IL_0537: Unknown result type (might be due to invalid IL or missing references)
//IL_0570: Unknown result type (might be due to invalid IL or missing references)
//IL_057f: Unknown result type (might be due to invalid IL or missing references)
//IL_058e: Unknown result type (might be due to invalid IL or missing references)
//IL_05d9: Unknown result type (might be due to invalid IL or missing references)
//IL_05ea: Unknown result type (might be due to invalid IL or missing references)
//IL_05fb: Unknown result type (might be due to invalid IL or missing references)
//IL_0635: Unknown result type (might be due to invalid IL or missing references)
//IL_0683: Unknown result type (might be due to invalid IL or missing references)
//IL_0694: Unknown result type (might be due to invalid IL or missing references)
//IL_06a5: Unknown result type (might be due to invalid IL or missing references)
//IL_06df: Unknown result type (might be due to invalid IL or missing references)
//IL_0768: Unknown result type (might be due to invalid IL or missing references)
//IL_076a: Unknown result type (might be due to invalid IL or missing references)
//IL_076f: Unknown result type (might be due to invalid IL or missing references)
//IL_0774: Unknown result type (might be due to invalid IL or missing references)
//IL_078d: Unknown result type (might be due to invalid IL or missing references)
//IL_07a3: Unknown result type (might be due to invalid IL or missing references)
//IL_07e9: Unknown result type (might be due to invalid IL or missing references)
//IL_07eb: Unknown result type (might be due to invalid IL or missing references)
//IL_07f0: Unknown result type (might be due to invalid IL or missing references)
//IL_07f5: Unknown result type (might be due to invalid IL or missing references)
//IL_0806: Unknown result type (might be due to invalid IL or missing references)
//IL_0814: Unknown result type (might be due to invalid IL or missing references)
int num = 3;
float num2 = 0.3f;
List<GameObject> list = new List<GameObject>();
Vector3 localPosition = default(Vector3);
((Vector3)(ref localPosition))..ctor(-7.57f, 0.1f, -3.51f);
Vector3 localPosition2 = default(Vector3);
((Vector3)(ref localPosition2))..ctor(11.39f, 1.275f, 0.07f);
Vector3 localEulerAngles = default(Vector3);
((Vector3)(ref localEulerAngles))..ctor(330f, 91f, 0f);
Vector3 localScale = default(Vector3);
((Vector3)(ref localScale))..ctor(0.6f, 0.6f, 0.6f);
Vector3 localPosition3 = default(Vector3);
((Vector3)(ref localPosition3))..ctor(-0.12f, 0.12f, 0.34f);
Vector3 localPosition4 = default(Vector3);
((Vector3)(ref localPosition4))..ctor(0f, 0.04f, 0f);
Vector3 localEulerAngles2 = default(Vector3);
((Vector3)(ref localEulerAngles2))..ctor(90f, 0f, 0f);
Vector3 localPosition5 = default(Vector3);
((Vector3)(ref localPosition5))..ctor(-0.6f, 0.07f, -0.55f);
Vector3 localEulerAngles3 = default(Vector3);
((Vector3)(ref localEulerAngles3))..ctor(0f, 0f, 270f);
Vector3 localScale2 = default(Vector3);
((Vector3)(ref localScale2))..ctor(1f, 0.7f, 0.5f);
Vector3 val = default(Vector3);
((Vector3)(ref val))..ctor(-0.4f, 0.105f, -0.53f);
Vector3 val2 = default(Vector3);
((Vector3)(ref val2))..ctor(num2, 0f, 0f);
Vector3 localEulerAngles4 = default(Vector3);
((Vector3)(ref localEulerAngles4))..ctor(0f, 180f, 0f);
Vector3 localScale3 = default(Vector3);
((Vector3)(ref localScale3))..ctor(1.25f, 1.25f, 1.25f);
Vector3 val3 = default(Vector3);
((Vector3)(ref val3))..ctor(-0.4f, -0.73f, -0.07f);
Vector3 localEulerAngles5 = default(Vector3);
((Vector3)(ref localEulerAngles5))..ctor(0f, 0f, 0f);
Vector3 localPosition6 = default(Vector3);
((Vector3)(ref localPosition6))..ctor(0.5166f, 0.03f, 0.503f);
Vector3 localEulerAngles6 = default(Vector3);
((Vector3)(ref localEulerAngles6))..ctor(90f, 0f, 0f);
Vector3 localScale4 = default(Vector3);
((Vector3)(ref localScale4))..ctor(1f, 1f, 1f);
GameObject gameObject = GameObject.Find("--------------LOGIC--------------/Heinhouser products/Howard root/Howards console").gameObject;
GameObject val4 = Object.Instantiate<GameObject>(GameObject.Find("--------------LOGIC--------------/Heinhouser products/MoveLearning/MoveLearnSelector/Model/Move selector"));
GameObject val5 = GameObject.Find("--------------LOGIC--------------/Slabbuddy menu variant/MenuForm/Base/ControlsSlab/GameSlabCanvas");
GameObject val6 = GameObject.Find("--------------LOGIC--------------/Heinhouser products/Leaderboard/Text Objects/Titleplate/LeaderboardTitlePlate");
GameObject val7 = GameObject.Find("------------TUTORIAL------------/Static tutorials/RUMBLE Starter Guide/Next Page Button/InteractionButton");
GameObject val8 = Object.Instantiate<GameObject>(val7);
((UnityEventBase)((Component)val8.transform.GetChild(0)).GetComponent<InteractionButton>().OnPressed).m_PersistentCalls.Clear();
if (debug)
{
MelonLogger.Msg("Got Objects");
}
((Component)gameObject.transform.GetChild(0).GetChild(1)).gameObject.SetActive(false);
((Component)gameObject.transform.GetChild(1).GetChild(4)).gameObject.SetActive(false);
gameObject.transform.localPosition = localPosition;
if (debug)
{
MelonLogger.Msg("Did Stuff");
}
((Object)val4).name = "Base Plate Custom";
val4.transform.SetParent(gameObject.transform);
val4.transform.localPosition = localPosition2;
val4.transform.localEulerAngles = localEulerAngles;
val4.transform.localScale = localScale;
if (debug)
{
MelonLogger.Msg("Did Stuff");
}
GameObject val9 = Object.Instantiate<GameObject>(val6);
((Object)val9).name = "Lower Plate";
val9.transform.SetParent(val4.transform);
val9.transform.localPosition = localPosition5;
val9.transform.localEulerAngles = localEulerAngles3;
val9.transform.localScale = localScale2;
GameObject val10 = Object.Instantiate<GameObject>(GameObject.Find("--------------LOGIC--------------/Heinhouser products/Telephone 2.0 REDUX special edition/Notification Screen/NotificationLight"));
((Object)val10).name = "Status Lamp";
val10.transform.SetParent(val4.transform);
val10.transform.localPosition = localPosition6;
val10.transform.localEulerAngles = localEulerAngles6;
((Renderer)((Component)val10.transform).GetComponent<MeshRenderer>()).material = ((Renderer)GameObject.Find("--------------LOGIC--------------/Heinhouser products/Howard root/DummyRoot/Howard/Dummy").GetComponent<SkinnedMeshRenderer>()).material;
((Renderer)((Component)val10.transform).GetComponent<MeshRenderer>()).material.EnableKeyword("_EMISSION");
((Renderer)((Component)val10.transform).GetComponent<MeshRenderer>()).material.globalIlluminationFlags = (MaterialGlobalIlluminationFlags)2;
((Renderer)((Component)val10.transform).GetComponent<MeshRenderer>()).material.SetColor("_EmissionColor", Color.green);
GameObject val11 = Object.Instantiate<GameObject>(val5);
((Object)val11).name = "SlabCanvas";
val11.transform.SetParent(val4.transform);
if (debug)
{
MelonLogger.Msg("Did Stuff");
}
((Object)val11.transform.GetChild(0).GetChild(0).GetChild(1)).name = "Text";
((Component)val11.transform.GetChild(0)).gameObject.SetActive(false);
val11.SetActive(false);
GameObject gameObject2 = ((Component)val11.transform.GetChild(0).GetChild(0).GetChild(1)).gameObject;
if (debug)
{
MelonLogger.Msg("Did Stuff");
}
GameObject val12 = Object.Instantiate<GameObject>(val11);
GameObject val13 = Object.Instantiate<GameObject>(val11);
val12.SetActive(true);
((Object)val12).name = "Upper Canvas";
val12.transform.SetParent(val4.transform);
val12.transform.localPosition = localPosition3;
val12.transform.localEulerAngles = localEulerAngles2;
val12.transform.localScale = localScale4;
val13.SetActive(true);
((Object)val13).name = "Lower Canvas";
val13.transform.SetParent(val4.transform);
val13.transform.localPosition = localPosition4;
val13.transform.localEulerAngles = localEulerAngles2;
val13.transform.localScale = localScale4;
if (debug)
{
MelonLogger.Msg("Did Stuff");
}
GameObject val14 = Object.Instantiate<GameObject>(gameObject2);
((Object)val14).name = "LogicText";
val14.transform.SetParent(val12.transform);
val14.transform.localPosition = Vector3.zero;
val14.transform.localEulerAngles = Vector3.zero;
val14.transform.localScale = localScale4;
((TMP_Text)val14.GetComponent<TextMeshProUGUI>()).text = "Level 1";
((TMP_Text)val14.GetComponent<TextMeshProUGUI>()).fontSize = 0.18f;
val14.GetComponent<RectTransform>().sizeDelta = new Vector2(2f, 0.24f);
if (debug)
{
MelonLogger.Msg("Did Stuff");
}
val14 = Object.Instantiate<GameObject>(gameObject2);
((Object)val14).name = "LogicText";
val14.transform.SetParent(val13.transform);
val14.transform.localPosition = Vector3.zero;
val14.transform.localEulerAngles = Vector3.zero;
val14.transform.localScale = localScale4;
((TMP_Text)val14.GetComponent<TextMeshProUGUI>()).text = "";
((TMP_Text)val14.GetComponent<TextMeshProUGUI>()).fontSize = 0.22f;
val14.GetComponent<RectTransform>().sizeDelta = new Vector2(2f, 0.24f);
if (debug)
{
MelonLogger.Msg("Did Stuff");
}
for (int i = 0; i < num; i++)
{
list.Add(Object.Instantiate<GameObject>(val8));
((Object)list[i]).name = "SlabButton" + (i + 1);
list[i].transform.SetParent(val4.transform);
list[i].transform.localPosition = val + val2 * (float)i;
list[i].transform.localEulerAngles = localEulerAngles4;
list[i].transform.localScale = localScale3;
val14 = Object.Instantiate<GameObject>(gameObject2);
val14.transform.SetParent(val13.transform);
((Object)val14).name = "ButtonText" + (i + 1);
val14.transform.localPosition = val3 + val2 * (float)i;
val14.transform.localEulerAngles = localEulerAngles5;
val14.transform.localScale = localScale4;
switch (i)
{
case 0:
((TMP_Text)val14.GetComponent<TextMeshProUGUI>()).text = "Prev";
((TMP_Text)val14.GetComponent<TextMeshProUGUI>()).fontSize = 0.1f;
((Component)list[i].transform.GetChild(0)).GetComponent<InteractionButton>().OnPressed.AddListener(UnityAction.op_Implicit((Action)delegate
{
ButtonHandler(0);
}));
break;
case 1:
((TMP_Text)val14.GetComponent<TextMeshProUGUI>()).text = "Next";
((TMP_Text)val14.GetComponent<TextMeshProUGUI>()).fontSize = 0.1f;
((Component)list[i].transform.GetChild(0)).GetComponent<InteractionButton>().OnPressed.AddListener(UnityAction.op_Implicit((Action)delegate
{
ButtonHandler(1);
}));
break;
case 2:
((TMP_Text)val14.GetComponent<TextMeshProUGUI>()).text = "Reload";
((TMP_Text)val14.GetComponent<TextMeshProUGUI>()).fontSize = 0.1f;
((Component)list[i].transform.GetChild(0)).GetComponent<InteractionButton>().OnPressed.AddListener(UnityAction.op_Implicit((Action)delegate
{
ButtonHandler(2);
}));
break;
}
((TMP_Text)val14.GetComponent<TextMeshProUGUI>()).autoSizeTextContainer = true;
}
Object.Destroy((Object)(object)val11);
Object.Destroy((Object)(object)((Component)val12.transform.GetChild(0)).gameObject);
Object.Destroy((Object)(object)((Component)val13.transform.GetChild(0)).gameObject);
Object.Destroy((Object)(object)GameObject.Find("InteractionButton(Clone)"));
Object.Destroy((Object)(object)GameObject.Find("Title(Clone)"));
if (debug)
{
MelonLogger.Msg("Did Stuff");
}
}
public void ButtonHandler(int Number)
{
//IL_0002: Unknown result type (might be due to invalid IL or missing references)
//IL_0007: Unknown result type (might be due to invalid IL or missing references)
//IL_0039: Unknown result type (might be due to invalid IL or missing references)
//IL_003e: Unknown result type (might be due to invalid IL or missing references)
//IL_004a: Unknown result type (might be due to invalid IL or missing references)
//IL_004f: Unknown result type (might be due to invalid IL or missing references)
//IL_005e: Unknown result type (might be due to invalid IL or missing references)
//IL_0063: Unknown result type (might be due to invalid IL or missing references)
//IL_006f: Unknown result type (might be due to invalid IL or missing references)
//IL_0074: Unknown result type (might be due to invalid IL or missing references)
//IL_0083: Unknown result type (might be due to invalid IL or missing references)
//IL_0088: Unknown result type (might be due to invalid IL or missing references)
//IL_0094: Unknown result type (might be due to invalid IL or missing references)
//IL_0099: Unknown result type (might be due to invalid IL or missing references)
if (ButtonDelay <= DateTime.Now)
{
DateTime now;
switch (Number)
{
case 0:
DecreaseLogicIndex();
now = DateTime.Now;
ButtonDelay = ((DateTime)(ref now)).AddSeconds(1.0);
break;
case 1:
IncreaseLogicIndex();
now = DateTime.Now;
ButtonDelay = ((DateTime)(ref now)).AddSeconds(1.0);
break;
case 2:
TriggerReload();
now = DateTime.Now;
ButtonDelay = ((DateTime)(ref now)).AddSeconds(3.0);
break;
}
if (debug2)
{
MelonLogger.Msg("Button pressed");
}
}
}
public void DecreaseLogicIndex()
{
if (currentlogicindex > 0)
{
currentlogicindex--;
Howard_Obj.GetComponent<Howard>().SetCurrentLogicLevel(currentlogicindex);
CurrentLogicName = LogicNameSanitization(((Object)((Il2CppArrayBase<HowardLogic>)(object)Howard_Obj.GetComponent<Howard>().LogicLevels)[currentlogicindex]).name);
((TMP_Text)LogicText_Obj.GetComponent<TextMeshProUGUI>()).text = CurrentLogicName;
if (debug2)
{
MelonLogger.Msg("Howard Logic to " + CurrentLogicName);
}
}
}
public void IncreaseLogicIndex()
{
if (currentlogicindex < ((Il2CppArrayBase<HowardLogic>)(object)Howard_Obj.GetComponent<Howard>().LogicLevels).Count - 1)
{
currentlogicindex++;
Howard_Obj.GetComponent<Howard>().SetCurrentLogicLevel(currentlogicindex);
CurrentLogicName = LogicNameSanitization(((Object)((Il2CppArrayBase<HowardLogic>)(object)Howard_Obj.GetComponent<Howard>().LogicLevels)[currentlogicindex]).name);
((TMP_Text)LogicText_Obj.GetComponent<TextMeshProUGUI>()).text = CurrentLogicName;
if (debug2)
{
MelonLogger.Msg("Howard Logic to " + CurrentLogicName);
}
}
}
public void TriggerReload()
{
Howard_Obj.GetComponent<Howard>().SetHowardLogicActive(false);
Howard_Obj.GetComponent<Howard>().SetCurrentLogicLevel(0);
currentlogicindex = 0;
CurrentLogicName = LogicNameSanitization(((Object)((Il2CppArrayBase<HowardLogic>)(object)Howard_Obj.GetComponent<Howard>().LogicLevels)[currentlogicindex]).name);
((TMP_Text)LogicText_Obj.GetComponent<TextMeshProUGUI>()).text = CurrentLogicName;
GetFromFile();
if (debug2)
{
MelonLogger.Msg("Refreshed Logic Files");
}
}
public void GetFromFile()
{
//IL_0487: Unknown result type (might be due to invalid IL or missing references)
//IL_0571: Unknown result type (might be due to invalid IL or missing references)
//IL_04a5: Unknown result type (might be due to invalid IL or missing references)
//IL_04aa: Unknown result type (might be due to invalid IL or missing references)
//IL_065b: Unknown result type (might be due to invalid IL or missing references)
//IL_058f: Unknown result type (might be due to invalid IL or missing references)
//IL_0594: Unknown result type (might be due to invalid IL or missing references)
//IL_0679: Unknown result type (might be due to invalid IL or missing references)
//IL_067e: Unknown result type (might be due to invalid IL or missing references)
//IL_1244: Unknown result type (might be due to invalid IL or missing references)
//IL_1249: Unknown result type (might be due to invalid IL or missing references)
//IL_1257: Unknown result type (might be due to invalid IL or missing references)
//IL_1265: Unknown result type (might be due to invalid IL or missing references)
//IL_1274: Unknown result type (might be due to invalid IL or missing references)
//IL_127f: Unknown result type (might be due to invalid IL or missing references)
//IL_128d: Unknown result type (might be due to invalid IL or missing references)
//IL_1290: Unknown result type (might be due to invalid IL or missing references)
//IL_129b: Unknown result type (might be due to invalid IL or missing references)
//IL_129e: Unknown result type (might be due to invalid IL or missing references)
//IL_12a9: Unknown result type (might be due to invalid IL or missing references)
//IL_12ac: Unknown result type (might be due to invalid IL or missing references)
//IL_12bc: Expected O, but got Unknown
//IL_12f5: Unknown result type (might be due to invalid IL or missing references)
//IL_12fa: Unknown result type (might be due to invalid IL or missing references)
//IL_1306: Unknown result type (might be due to invalid IL or missing references)
//IL_130f: Unknown result type (might be due to invalid IL or missing references)
//IL_1318: Unknown result type (might be due to invalid IL or missing references)
//IL_1321: Unknown result type (might be due to invalid IL or missing references)
//IL_132d: Unknown result type (might be due to invalid IL or missing references)
//IL_1339: Unknown result type (might be due to invalid IL or missing references)
//IL_1343: Expected O, but got Unknown
//IL_1381: Unknown result type (might be due to invalid IL or missing references)
//IL_13a3: Unknown result type (might be due to invalid IL or missing references)
//IL_13c5: Unknown result type (might be due to invalid IL or missing references)
//IL_13f5: Unknown result type (might be due to invalid IL or missing references)
//IL_13fa: Unknown result type (might be due to invalid IL or missing references)
//IL_1405: Unknown result type (might be due to invalid IL or missing references)
//IL_1410: Unknown result type (might be due to invalid IL or missing references)
//IL_1419: Unknown result type (might be due to invalid IL or missing references)
//IL_1427: Expected O, but got Unknown
//IL_144f: Unknown result type (might be due to invalid IL or missing references)
//IL_1456: Expected O, but got Unknown
//IL_14b0: Unknown result type (might be due to invalid IL or missing references)
//IL_14b5: Unknown result type (might be due to invalid IL or missing references)
//IL_14c1: Unknown result type (might be due to invalid IL or missing references)
//IL_14d2: Expected O, but got Unknown
//IL_14ea: Unknown result type (might be due to invalid IL or missing references)
//IL_14ef: Unknown result type (might be due to invalid IL or missing references)
//IL_14fb: Unknown result type (might be due to invalid IL or missing references)
//IL_1504: Unknown result type (might be due to invalid IL or missing references)
//IL_150d: Unknown result type (might be due to invalid IL or missing references)
//IL_1516: Unknown result type (might be due to invalid IL or missing references)
//IL_1522: Unknown result type (might be due to invalid IL or missing references)
//IL_152e: Unknown result type (might be due to invalid IL or missing references)
//IL_1538: Expected O, but got Unknown
bool flag = false;
bool flag2 = false;
float weight = 0f;
float weightDecrementationWhenSelected = 0f;
float anglePerSecond = 0f;
float minAngle = 0f;
float maxAngle = 0f;
float anglePerSecond2 = 0f;
float minAngle2 = 0f;
float maxAngle2 = 0f;
CultureInfo provider = new CultureInfo("en-US");
LogicData logicData = new LogicData();
SeqGenData seqGenData = new SeqGenData();
string[] array = new string[2];
string[] array2 = new string[4];
List<HowardLogic> list = new List<HowardLogic>();
List<PoseGenData> list2 = new List<PoseGenData>();
List<SequenceSet> val = new List<SequenceSet>();
LogicNames.Clear();
string[] files = Directory.GetFiles(MoveSetPath);
for (int i = 0; i < files.Length; i++)
{
string[] array3 = File.ReadAllLines(files[i]);
if (debug)
{
MelonLogger.Msg("Filename: " + files[i]);
}
if (debug)
{
MelonLogger.Msg("FileLength: " + array3.Length);
}
for (int j = 0; j < array3.Length; j++)
{
if (array3[j].Contains("!"))
{
continue;
}
if (array3[j].Contains("LogicName: "))
{
array.Initialize();
array = array3[j].Split(new char[1] { ':' });
array[1] = array[1].Trim(new char[1] { ' ' });
logicData.LogicName = array[1];
LogicNames.Add(array[1]);
if (debug)
{
MelonLogger.Msg("Name: " + logicData.LogicName);
}
}
if (array3[j].Contains("MaxHP: "))
{
array.Initialize();
array = array3[j].Split(new char[1] { ':' });
array[1] = array[1].Trim(new char[1] { ' ' });
logicData.MaxHP = float.Parse(array[1], provider);
if (debug)
{
MelonLogger.Msg("MaxHP: " + logicData.MaxHP);
}
}
if (array3[j].Contains("DecisionMin: "))
{
array.Initialize();
array = array3[j].Split(new char[1] { ':' });
array[1] = array[1].Trim(new char[1] { ' ' });
logicData.DecisionMin = float.Parse(array[1], provider);
if (debug)
{
MelonLogger.Msg("DecisionMin: " + logicData.DecisionMin);
}
}
if (array3[j].Contains("DecisionMax: "))
{
array.Initialize();
array = array3[j].Split(new char[1] { ':' });
array[1] = array[1].Trim(new char[1] { ' ' });
logicData.DecisionMax = float.Parse(array[1], provider);
if (debug)
{
MelonLogger.Msg("DecisionMax: " + logicData.DecisionMax);
}
}
if (array3[j].Contains("ReactionTime: "))
{
array.Initialize();
array = array3[j].Split(new char[1] { ':' });
array[1] = array[1].Trim(new char[1] { ' ' });
logicData.ReactionTime = float.Parse(array[1], provider);
if (debug)
{
MelonLogger.Msg("ReactionTime: " + logicData.ReactionTime);
}
}
Color val2;
if (array3[j].Contains("HeadLight: "))
{
array.Initialize();
array2.Initialize();
array = array3[j].Split(new char[1] { ':' });
array[1] = array[1].Trim(new char[1] { ' ' });
array2 = array[1].Split(new char[1] { ',' });
logicData.HeadLight = new Color(float.Parse(array2[0]) / 255f, float.Parse(array2[1]) / 255f, float.Parse(array2[2]) / 255f, float.Parse(array2[3]) / 255f);
if (debug)
{
val2 = logicData.HeadLight;
MelonLogger.Msg("HeadLight: " + ((object)(Color)(ref val2)).ToString());
}
}
if (array3[j].Contains("IdleColor: "))
{
array.Initialize();
array2.Initialize();
array = array3[j].Split(new char[1] { ':' });
array[1] = array[1].Trim(new char[1] { ' ' });
array2 = array[1].Split(new char[1] { ',' });
logicData.IdleColor = new Color(float.Parse(array2[0]) / 255f, float.Parse(array2[1]) / 255f, float.Parse(array2[2]) / 255f, float.Parse(array2[3]) / 255f);
if (debug)
{
val2 = logicData.IdleColor;
MelonLogger.Msg("IdleColor: " + ((object)(Color)(ref val2)).ToString());
}
}
if (array3[j].Contains("ActiveColor: "))
{
array.Initialize();
array2.Initialize();
array = array3[j].Split(new char[1] { ':' });
array[1] = array[1].Trim(new char[1] { ' ' });
array2 = array[1].Split(new char[1] { ',' });
logicData.ActiveColor = new Color(float.Parse(array2[0]) / 255f, float.Parse(array2[1]) / 255f, float.Parse(array2[2]) / 255f, float.Parse(array2[3]) / 255f);
if (debug)
{
val2 = logicData.ActiveColor;
MelonLogger.Msg("ActiveColor: " + ((object)(Color)(ref val2)).ToString());
}
}
if (array3[j].Contains("DoMove: "))
{
array.Initialize();
array = array3[j].Split(new char[1] { ':' });
array[1] = array[1].Trim(new char[1] { ' ' });
logicData.Chance_DoSeq = float.Parse(array[1], provider);
if (debug)
{
MelonLogger.Msg("DoMove: " + logicData.Chance_DoSeq);
}
}
if (array3[j].Contains("Dodge: "))
{
array.Initialize();
array = array3[j].Split(new char[1] { ':' });
array[1] = array[1].Trim(new char[1] { ' ' });
logicData.Chance_Dodge = float.Parse(array[1], provider);
if (debug)
{
MelonLogger.Msg("Dodge: " + logicData.Chance_Dodge);
}
}
if (array3[j].Contains("DoNothing: "))
{
array.Initialize();
array = array3[j].Split(new char[1] { ':' });
array[1] = array[1].Trim(new char[1] { ' ' });
logicData.Chance_Nothing = float.Parse(array[1], provider);
if (debug)
{
MelonLogger.Msg("DoNothing: " + logicData.Chance_Nothing);
}
}
if (array3[j].Contains("Sequence - Init"))
{
val = new List<SequenceSet>();
}
if (array3[j].Contains("Sequence - BaseMovement"))
{
array = array3[j + 1].Split(new char[1] { ':' });
flag2 = bool.Parse(array[1].Trim(new char[1] { ' ' }));
if (debug)
{
MelonLogger.Msg("Movement Enable: " + flag2);
}
if (flag2)
{
array = array3[j + 2].Split(new char[1] { ':' });
weight = float.Parse(array[1].Trim(new char[1] { ' ' }), provider);
if (debug)
{
MelonLogger.Msg("Movement Weight: " + weight);
}
array = array3[j + 3].Split(new char[1] { ':' });
weightDecrementationWhenSelected = float.Parse(array[1].Trim(new char[1] { ' ' }), provider);
if (debug)
{
MelonLogger.Msg("Movement WeightDec: " + weightDecrementationWhenSelected);
}
array = array3[j + 4].Split(new char[1] { ':' });
anglePerSecond = float.Parse(array[1].Trim(new char[1] { ' ' }), provider);
if (debug)
{
MelonLogger.Msg("Movement Speed: " + anglePerSecond);
}
array = array3[j + 5].Split(new char[1] { ':' });
minAngle = float.Parse(array[1].Trim(new char[1] { ' ' }), provider);
if (debug)
{
MelonLogger.Msg("Movement Min Angle: " + minAngle);
}
array = array3[j + 6].Split(new char[1] { ':' });
maxAngle = float.Parse(array[1].Trim(new char[1] { ' ' }), provider);
if (debug)
{
MelonLogger.Msg("Movement Max Angle: " + maxAngle);
}
}
}
if (array3[j].Contains("Sequence - Dodge"))
{
array = array3[j + 1].Split(new char[1] { ':' });
anglePerSecond2 = float.Parse(array[1].Trim(new char[1] { ' ' }), provider);
if (debug)
{
MelonLogger.Msg("Dodge Speed: " + anglePerSecond2);
}
array = array3[j + 2].Split(new char[1] { ':' });
minAngle2 = float.Parse(array[1].Trim(new char[1] { ' ' }), provider);
if (debug)
{
MelonLogger.Msg("Dodge Min Angle: " + minAngle2);
}
array = array3[j + 3].Split(new char[1] { ':' });
maxAngle2 = float.Parse(array[1].Trim(new char[1] { ' ' }), provider);
if (debug)
{
MelonLogger.Msg("Dodge Max Angle: " + maxAngle2);
}
}
if (array3[j].Contains("Sequence - Start") && !flag)
{
flag = true;
list2 = new List<PoseGenData>();
if (debug)
{
MelonLogger.Msg("Sequence - Start");
}
}
if (flag)
{
if (array3[j].Contains("Sequence - Data"))
{
seqGenData = new SeqGenData();
array.Initialize();
array = array3[j + 1].Split(new char[1] { ':' });
seqGenData.SeqName = array[1].Trim(new char[1] { ' ' }) + "Seq";
if (debug)
{
MelonLogger.Msg("SeqName: " + seqGenData.SeqName);
}
seqGenData.AtkName = array[1].Trim(new char[1] { ' ' }) + "Atk";
if (debug)
{
MelonLogger.Msg("AtkName: " + seqGenData.AtkName);
}
array = array3[j + 2].Split(new char[1] { ':' });
seqGenData.Weight = float.Parse(array[1].Trim(new char[1] { ' ' }), provider);
if (debug)
{
MelonLogger.Msg("Weight: " + array[1].Trim(new char[1] { ' ' }));
}
array = array3[j + 3].Split(new char[1] { ':' });
seqGenData.WeightDec = float.Parse(array[1].Trim(new char[1] { ' ' }), provider);
if (debug)
{
MelonLogger.Msg("Weight_Decrease: " + array[1].Trim(new char[1] { ' ' }));
}
array = array3[j + 4].Split(new char[1] { ':' });
seqGenData.PreWait = float.Parse(array[1].Trim(new char[1] { ' ' }), provider);
if (debug)
{
MelonLogger.Msg("PreWait: " + array[1].Trim(new char[1] { ' ' }));
}
array = array3[j + 5].Split(new char[1] { ':' });
seqGenData.PostWait = float.Parse(array[1].Trim(new char[1] { ' ' }), provider);
if (debug)
{
MelonLogger.Msg("PostWait: " + array[1].Trim(new char[1] { ' ' }));
}
array = array3[j + 6].Split(new char[1] { ':' });
seqGenData.RangeMin = float.Parse(array[1].Trim(new char[1] { ' ' }), provider);
if (debug)
{
MelonLogger.Msg("RangeMin: " + array[1].Trim(new char[1] { ' ' }));
}
array = array3[j + 7].Split(new char[1] { ':' });
seqGenData.RangeMax = float.Parse(array[1].Trim(new char[1] { ' ' }), provider);
if (debug)
{
MelonLogger.Msg("RangeMax: " + array[1].Trim(new char[1] { ' ' }));
}
}
if (array3[j].Contains("Sequence - MoveData"))
{
PoseGenData poseGenData = new PoseGenData();
array = array3[j + 1].Split(new char[1] { ':' });
poseGenData.StackNumber = int.Parse(array[1].Trim(new char[1] { ' ' }));
if (debug)
{
MelonLogger.Msg("MoveNumber: " + poseGenData.StackNumber);
}
array = array3[j + 2].Split(new char[1] { ':' });
poseGenData.PreWait = float.Parse(array[1].Trim(new char[1] { ' ' }), provider);
if (debug)
{
MelonLogger.Msg("PreWait: " + poseGenData.PreWait);
}
array = array3[j + 3].Split(new char[1] { ':' });
poseGenData.PostWait = float.Parse(array[1].Trim(new char[1] { ' ' }), provider);
if (debug)
{
MelonLogger.Msg("PostWait: " + poseGenData.PostWait);
}
switch (poseGenData.StackNumber)
{
case 10:
poseGenData.AnimationName = "Kick";
break;
case 5:
case 8:
case 11:
case 13:
poseGenData.AnimationName = "SpawnStructure";
break;
default:
poseGenData.AnimationName = "Straight";
break;
}
if (debug)
{
MelonLogger.Msg("AnimName: " + poseGenData.AnimationName.ToString());
}
list2.Add(poseGenData);
}
}
if (array3[j].Contains("Sequence - End") && flag)
{
flag = false;
val.Add(CreatePoseSequence(list2, seqGenData));
if (debug)
{
MelonLogger.Msg("Sequence - End");
}
}
if (!array3[j].Contains("Logic - End"))
{
continue;
}
if (list.Count > 0)
{
foreach (HowardLogic item in list)
{
if (((Object)item).name == logicData.LogicName)
{
logicData.LogicName += "_";
}
}
}
if (debug)
{
MelonLogger.Msg("Got Duplicates");
}
list.Add(new HowardLogic
{
name = logicData.LogicName,
maxHealth = logicData.MaxHP,
MinMaxDecisionTime = new Vector2(logicData.DecisionMin, logicData.DecisionMax),
standStillReactiontime = logicData.ReactionTime,
howardHeadlightColor = logicData.HeadLight,
howardIdleLevelColor = logicData.IdleColor,
howardLevelColor = logicData.ActiveColor
});
if (debug)
{
MelonLogger.Msg("Logic Init");
}
int index = list.Count - 1;
if (debug)
{
MelonLogger.Msg("Logic Count");
}
HowardMoveBehaviour dodgeBehaviour = new HowardMoveBehaviour
{
name = "CustomDodge",
AnglePerSecond = anglePerSecond2,
minAngle = minAngle2,
maxAngle = maxAngle2,
negativeMoveAnimationTrigger = "RockSlideLeft",
positiveMoveAnimationTrigger = "RockSlideRight",
randomizeMovementSign = true
};
list[index].DodgeBehaviour = dodgeBehaviour;
if (debug)
{
MelonLogger.Msg("Logic Dodge");
}
((Il2CppArrayBase<ReactionChance>)(object)list[index].reactions)[0] = ModifyReactions(0, logicData.Chance_DoSeq);
((Il2CppArrayBase<ReactionChance>)(object)list[index].reactions)[1] = ModifyReactions(1, logicData.Chance_Dodge);
((Il2CppArrayBase<ReactionChance>)(object)list[index].reactions)[2] = ModifyReactions(2, logicData.Chance_Nothing);
if (debug)
{
MelonLogger.Msg("Logic Reactions");
}
if (flag2)
{
val.Add(new SequenceSet
{
RequiredMinMaxRange = new Vector2(0f, float.MaxValue),
Weight = weight,
WeightDecrementationWhenSelected = weightDecrementationWhenSelected
});
if (debug)
{
MelonLogger.Msg("1");
}
SequenceSet obj = val[val.Count - 1];
HowardSequence val3 = new HowardSequence();
((Object)val3).name = "CustomMovement";
val3.BehaviourTimings = Il2CppReferenceArray<HowardBehaviourTiming>.op_Implicit((HowardBehaviourTiming[])(object)new HowardBehaviourTiming[1]);
obj.Sequence = val3;
if (debug)
{
MelonLogger.Msg("2");
}
((Il2CppArrayBase<HowardBehaviourTiming>)(object)val[val.Count - 1].Sequence.BehaviourTimings)[0] = new HowardBehaviourTiming
{
PostActivationWaitTime = 0f,
PreActivationWaitTime = 0.5f
};
if (debug)
{
MelonLogger.Msg("3");
}
HowardMoveBehaviour behaviour = new HowardMoveBehaviour
{
name = "CustomMovement",
AnglePerSecond = anglePerSecond,
minAngle = minAngle,
maxAngle = maxAngle,
negativeMoveAnimationTrigger = "RockSlideLeft",
positiveMoveAnimationTrigger = "RockSlideRight",
randomizeMovementSign = true
};
if (debug)
{
MelonLogger.Msg("4");
}
((Il2CppArrayBase<HowardBehaviourTiming>)(object)val[val.Count - 1].Sequence.BehaviourTimings)[0].Behaviour = (HowardBehaviour)(object)behaviour;
if (debug)
{
MelonLogger.Msg("Logic Sequence Move");
}
}
list[index].SequenceSets = val;
if (debug)
{
MelonLogger.Msg("Logic Sequence Custom");
}
if (debug)
{
MelonLogger.Msg("Logic Applied");
}
}
}
int count = list.Count;
int num = Base_Logic_Array.Length;
if (debug)
{
MelonLogger.Msg("Get Length: " + count + "|" + num);
}
HowardLogic[] array4 = (HowardLogic[])(object)new HowardLogic[num + count];
if (debug)
{
MelonLogger.Msg("Size Array");
}
for (int k = 0; k < array4.Length; k++)
{
if (k < num)
{
array4[k] = Base_Logic_Array[k];
}
if (k >= num)
{
array4[k] = list[k - num];
}
if (debug)
{
MelonLogger.Msg("Loop: " + k);
}
}
if (debug)
{
MelonLogger.Msg("Applied new logic");
}
Howard_Obj.GetComponent<Howard>().LogicLevels = Il2CppReferenceArray<HowardLogic>.op_Implicit(array4);
if (debug)
{
MelonLogger.Msg("Applied all logic");
}
LogicLoaded = true;
}
private ReactionChance ModifyReactions(int Index, float Input)
{
//IL_0003: Unknown result type (might be due to invalid IL or missing references)
//IL_000c: Unknown result type (might be due to invalid IL or missing references)
//IL_001d: Unknown result type (might be due to invalid IL or missing references)
//IL_001e: Unknown result type (might be due to invalid IL or missing references)
//IL_003a: Unknown result type (might be due to invalid IL or missing references)
//IL_004c: Unknown result type (might be due to invalid IL or missing references)
//IL_005e: Unknown result type (might be due to invalid IL or missing references)
//IL_006d: Unknown result type (might be due to invalid IL or missing references)
//IL_006e: Unknown result type (might be due to invalid IL or missing references)
//IL_0072: Unknown result type (might be due to invalid IL or missing references)
ReactionChance val = default(ReactionChance);
val.Type = (ReactionType)0;
val.Weight = 0f;
ReactionChance result = val;
switch (Index)
{
case 0:
result.Type = (ReactionType)2;
result.Weight = Input;
break;
case 1:
result.Type = (ReactionType)1;
result.Weight = Input;
break;
case 2:
result.Type = (ReactionType)0;
result.Weight = Input;
break;
}
return result;
}
private string LogicNameSanitization(string Input)
{
switch (Input)
{
case "HowardLevel1":
return "Level 1";
case "HowardLevel2":
return "Level 2";
case "HowardLevel3":
return "Level 3";
default:
if (Input.Length == 0)
{
((TMP_Text)LogicText_Obj.GetComponent<TextMeshProUGUI>()).fontSize = 0.18f;
return "No Name";
}
if (Input.Length >= 12)
{
float num = ((float)Input.Length - 12f) / 150f;
((TMP_Text)LogicText_Obj.GetComponent<TextMeshProUGUI>()).fontSize = 0.18f - num;
return Input;
}
((TMP_Text)LogicText_Obj.GetComponent<TextMeshProUGUI>()).fontSize = 0.18f;
return Input;
}
}
private void PageScrollLogic()
{
string text = "Makes Howard do scary things" + Environment.NewLine;
text = text + "Custom Movesets: " + Environment.NewLine;
if (LogicNames.Count <= 10)
{
foreach (string logicName in LogicNames)
{
text = text + logicName + Environment.NewLine;
}
Mod.Settings[0].Description = text;
UI.ForceRefresh();
LogicLoaded = false;
}
else
{
if (LogicNames.Count <= 10 || !PageScroll.Done)
{
return;
}
if (!LogicLoopRun)
{
LogicMaxPage = LogicNames.Count / 10 + 1;
LogicCurPage = 1;
LogicLoopRun = true;
}
if (LogicCurPage == LogicMaxPage)
{
for (int i = (LogicMaxPage - 1) * 10; i < LogicNames.Count; i++)
{
text = text + LogicNames[i] + Environment.NewLine;
}
LogicLoopRun = false;
}
if (LogicCurPage < LogicMaxPage)
{
LogicLoopMax = LogicCurPage * 10;
for (int j = LogicLoopMax - 10; j < LogicLoopMax; j++)
{
text = text + LogicNames[j] + Environment.NewLine;
}
LogicCurPage++;
}
Mod.Settings[0].Description = text;
UI.ForceRefresh();
PageScroll.Delay_Start(3.0);
}
}
public override void OnSceneWasLoaded(int buildIndex, string sceneName)
{
((MelonMod)this).OnSceneWasLoaded(buildIndex, sceneName);
currentscene = sceneName;
Delay.Delay_Start(8.0, AllowRetrigger: true);
PageScroll.Delay_Start(1.0);
}
}