Decompiled source of EigongPrimePromisedCompatibility v2.3.4

EigongPrime.dll

Decompiled a week ago
using System;
using System.Collections;
using System.Collections.Generic;
using System.Diagnostics;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.Versioning;
using BepInEx;
using BepInEx.Configuration;
using BepInEx.Logging;
using HarmonyLib;
using I2.Loc;
using Microsoft.CodeAnalysis;
using NineSolsAPI;
using UnityEngine;
using UnityEngine.Events;
using UnityEngine.SceneManagement;

[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)]
[assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")]
[assembly: AssemblyCompany("EigongPrime")]
[assembly: AssemblyConfiguration("Release")]
[assembly: AssemblyDescription("Mods Eigong to be harder, she chains moves a lot more now and the talisman follow ups now show up on phase 1")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: AssemblyInformationalVersion("1.0.0+8540a3c0b7c87ee3a8a705ad9173a6ebff1917ba")]
[assembly: AssemblyProduct("EigongPrime")]
[assembly: AssemblyTitle("EigongPrime")]
[assembly: AssemblyVersion("1.0.0.0")]
[module: RefSafetyRules(11)]
namespace Microsoft.CodeAnalysis
{
	[CompilerGenerated]
	[Microsoft.CodeAnalysis.Embedded]
	internal sealed class EmbeddedAttribute : Attribute
	{
	}
}
namespace System.Runtime.CompilerServices
{
	[CompilerGenerated]
	[Microsoft.CodeAnalysis.Embedded]
	[AttributeUsage(AttributeTargets.Class | AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Event | AttributeTargets.Parameter | AttributeTargets.ReturnValue | AttributeTargets.GenericParameter, AllowMultiple = false, Inherited = false)]
	internal sealed class NullableAttribute : Attribute
	{
		public readonly byte[] NullableFlags;

		public NullableAttribute(byte P_0)
		{
			NullableFlags = new byte[1] { P_0 };
		}

		public NullableAttribute(byte[] P_0)
		{
			NullableFlags = P_0;
		}
	}
	[CompilerGenerated]
	[Microsoft.CodeAnalysis.Embedded]
	[AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Method | AttributeTargets.Interface | AttributeTargets.Delegate, AllowMultiple = false, Inherited = false)]
	internal sealed class NullableContextAttribute : Attribute
	{
		public readonly byte Flag;

		public NullableContextAttribute(byte P_0)
		{
			Flag = P_0;
		}
	}
	[CompilerGenerated]
	[Microsoft.CodeAnalysis.Embedded]
	[AttributeUsage(AttributeTargets.Module, AllowMultiple = false, Inherited = false)]
	internal sealed class RefSafetyRulesAttribute : Attribute
	{
		public readonly int Version;

		public RefSafetyRulesAttribute(int P_0)
		{
			Version = P_0;
		}
	}
}
namespace EigongPrime
{
	internal class ColorChange
	{
		private GameObject eigongSpriteHolder;

		private _2dxFX_ColorChange eigongCurrentHueValue;

		private GameObject eigongCutsceneDummySpriteHolder;

		private _2dxFX_ColorChange eigongCutsceneDummyCurrentHueValue;

		private GameObject eigongSwordSpriteHolder;

		private _2dxFX_ColorChange eigongSwordCurrentHueValue;

		private GameObject eigongSwordCutsceneSpriteHolder;

		private _2dxFX_ColorChange eigongSwordCutsceneCurrentHueValue;

		private GameObject eigongFooSpriteHolder;

		private _2dxFX_ColorChange eigongFooCurrentHueValue;

		public int dontspamstuffwow2;

		public void RecolorSprite()
		{
			if (dontspamstuffwow2 == 0)
			{
				eigongSpriteHolder = GameObject.Find("GameLevel/Room/Prefab/EventBinder/General Boss Fight FSM Object Variant/FSM Animator/LogicRoot/---Boss---/Boss_Yi Gung/MonsterCore/Animator(Proxy)/Animator/View/YiGung/Body");
				eigongSpriteHolder.AddComponent<_2dxFX_ColorChange>();
				eigongCurrentHueValue = eigongSpriteHolder.GetComponent<_2dxFX_ColorChange>();
				eigongSwordSpriteHolder = GameObject.Find("GameLevel/Room/Prefab/EventBinder/General Boss Fight FSM Object Variant/FSM Animator/LogicRoot/---Boss---/Boss_Yi Gung/MonsterCore/Animator(Proxy)/Animator/View/YiGung/Weapon/Sword/Sword Sprite");
				eigongSwordSpriteHolder.AddComponent<_2dxFX_ColorChange>();
				eigongSwordCurrentHueValue = eigongSwordSpriteHolder.GetComponent<_2dxFX_ColorChange>();
				eigongFooSpriteHolder = GameObject.Find("GameLevel/Room/Prefab/EventBinder/General Boss Fight FSM Object Variant/FSM Animator/LogicRoot/---Boss---/Boss_Yi Gung/MonsterCore/Animator(Proxy)/Animator/View/YiGung/Weapon/Foo/FooSprite");
				eigongFooSpriteHolder.AddComponent<_2dxFX_ColorChange>();
				eigongFooCurrentHueValue = eigongFooSpriteHolder.GetComponent<_2dxFX_ColorChange>();
				eigongCutsceneDummySpriteHolder = GameObject.Find("GameLevel/Room/Prefab/EventBinder/General Boss Fight FSM Object Variant/FSM Animator/[CutScene] 二進/YiGung_Dummy/View/YiGung/Body");
				eigongCutsceneDummySpriteHolder.AddComponent<_2dxFX_ColorChange>();
				eigongCutsceneDummyCurrentHueValue = eigongCutsceneDummySpriteHolder.GetComponent<_2dxFX_ColorChange>();
				eigongSwordCutsceneSpriteHolder = GameObject.Find("GameLevel/Room/Prefab/EventBinder/General Boss Fight FSM Object Variant/FSM Animator/[CutScene] 二進/YiGung_Dummy/View/YiGung/Weapon/Sword/Sword Sprite");
				eigongSwordCutsceneSpriteHolder.AddComponent<_2dxFX_ColorChange>();
				eigongSwordCutsceneCurrentHueValue = eigongSwordCutsceneSpriteHolder.GetComponent<_2dxFX_ColorChange>();
				eigongCurrentHueValue._HueShift = 130f;
				eigongCutsceneDummyCurrentHueValue._HueShift = 130f;
				eigongSwordCurrentHueValue._HueShift = 250f;
				eigongSwordCutsceneCurrentHueValue._HueShift = 250f;
				eigongFooCurrentHueValue._HueShift = 250f;
				dontspamstuffwow2++;
			}
		}
	}
	[BepInDependency(/*Could not decode attribute arguments.*/)]
	[BepInPlugin("EigongPrime", "EigongPrime", "1.0.0")]
	public class EigongPrime : BaseUnityPlugin
	{
		private Harmony harmony;

		private ColorChange colorChange;

		private string eigongAttackStatesPath = "";

		private LinkNextMoveStateWeight StunLinkStateWeight;

		private LinkNextMoveStateWeight StunPhase2LinkStateWeight;

		private LinkNextMoveStateWeight StunPhase3LinkStateWeight;

		private LinkNextMoveStateWeight TeleportToTopLinkStateWeight;

		private LinkNextMoveStateWeight TeleportToTopPhase2LinkStateWeight;

		private LinkNextMoveStateWeight TeleportToTopPhase3LinkStateWeight;

		private LinkNextMoveStateWeight TeleportForwardLinkStateWeight;

		private LinkNextMoveStateWeight TeleportForwardPhase2LinkStateWeight;

		private LinkNextMoveStateWeight TeleportForwardPhase3LinkStateWeight;

		private LinkNextMoveStateWeight TeleportToBackLinkStateWeight;

		private LinkNextMoveStateWeight TeleportToBackPhase2LinkStateWeight;

		private LinkNextMoveStateWeight TeleportToBackPhase3LinkStateWeight;

		private LinkNextMoveStateWeight SlowStartLinkStateWeight;

		private LinkNextMoveStateWeight PokeLinkStateWeight;

		private LinkNextMoveStateWeight CrossUpLinkStateWeight;

		private LinkNextMoveStateWeight UnsheatheLinkStateWeight;

		private LinkNextMoveStateWeight FooCharmLinkStateWeight;

		private LinkNextMoveStateWeight CrimsonSlamLinkStateWeight;

		private LinkNextMoveStateWeight DunkLinkStateWeight;

		private LinkNextMoveStateWeight WindBladePhase1LinkStateWeight;

		private LinkNextMoveStateWeight SlowStartPhase2LinkStateWeight;

		private LinkNextMoveStateWeight PokePhase2LinkStateWeight;

		private LinkNextMoveStateWeight CrossUpPhase2LinkStateWeight;

		private LinkNextMoveStateWeight CrimsonSlamPhase2LinkStateWeight;

		private LinkNextMoveStateWeight FooCharmPhase2LinkStateWeight;

		private LinkNextMoveStateWeight FooFollowUp0LinkStateWeight;

		private LinkNextMoveStateWeight FooFollowUp1LinkStateWeight;

		private LinkNextMoveStateWeight UnsheathePhase2LinkStateWeight;

		private LinkNextMoveStateWeight WindBladeLinkStateWeight;

		private LinkNextMoveStateWeight FooCharmPhase3LinkStateWeight;

		private LinkNextMoveStateWeight WindBladePhase3LinkStateWeight;

		private LinkNextMoveStateWeight UnsheathePhase3LinkStateWeight;

		private LinkNextMoveStateWeight JudgementCutLinkStateWeight;

		private LinkNextMoveStateWeight RegularJudgementCutLinkStateWeight;

		private BossGeneralState TeleportToTopBossGeneralState;

		private BossGeneralState TeleportForwardBossGeneralState;

		private BossGeneralState TeleportToBackBossGeneralState;

		private BossGeneralState SlowStartBossGeneralState;

		private BossGeneralState UnsheatheBossGeneralState;

		private BossGeneralState CrossUpBossGeneralState;

		private BossGeneralState triplePokeBossGeneralState;

		private BossGeneralState FooCharmBossGeneralState;

		private BossGeneralState QuickFooBossGeneralState;

		private BossGeneralState DunkBossGeneralState;

		private BossGeneralState CrimsonSlamBossGeneralState;

		private BossGeneralState WindBladeBossGeneralState;

		private BossGeneralState ActualWindBladeBossGeneralState;

		private BossGeneralState FooFollowUp0BossGeneralState;

		private BossGeneralState FooFollowUp1BossGeneralState;

		private BossGeneralState JudgementCutBossGeneralState;

		private BossGeneralState RegularJudgementCutBossGeneralState;

		private GameObject fireTrail;

		private int dontspamstuffwow;

		private ConfigEntry<float> EigongHPScale;

		private ConfigEntry<bool> IsRandom;

		private ConfigEntry<int> IsRandomMinimumAttackAmount;

		private ConfigEntry<int> IsRandomMaximumAttackAmount;

		private ConfigEntry<bool> EnableBackGroundChange;

		private ConfigEntry<bool> EnableBetaYiTheme;

		private bool hasRandomLoopRan;

		public static SpriteRenderer Black;

		public static SpriteRenderer Black2;

		public static SpriteRenderer Blue;

		public static SpriteRenderer Red;

		public static SpriteRenderer Green;

		private AmbienceSource BGM;

		public void Awake()
		{
			//IL_00b6: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c0: Expected O, but got Unknown
			//IL_00e9: Unknown result type (might be due to invalid IL or missing references)
			//IL_00f3: Expected O, but got Unknown
			Log.Init(((BaseUnityPlugin)this).Logger);
			RCGLifeCycle.DontDestroyForever(((Component)this).gameObject);
			harmony = Harmony.CreateAndPatchAll(typeof(EigongPrime).Assembly, (string)null);
			((BaseUnityPlugin)this).Logger.LogInfo((object)"Plugin EigongPrime is loaded!");
			colorChange = new ColorChange();
			EigongHPScale = ((BaseUnityPlugin)this).Config.Bind<float>("General", "EigongHPScale", 1f, "The scale for Eigong's HP, 1 is regular HP amount");
			IsRandom = ((BaseUnityPlugin)this).Config.Bind<bool>("General", "IsRandom", false, "If true, randomizes Eigong Prime's moveset every time you enter her arena");
			IsRandomMinimumAttackAmount = ((BaseUnityPlugin)this).Config.Bind<int>("General", "IsRandomMinimumAttackAmount", 1, new ConfigDescription("The minimum amount of follow-ups that can be given to a move when randomized", (AcceptableValueBase)(object)new AcceptableValueRange<int>(1, 12), Array.Empty<object>()));
			IsRandomMaximumAttackAmount = ((BaseUnityPlugin)this).Config.Bind<int>("General", "IsRandomMaximumAttackAmount", 6, new ConfigDescription("The maximum amount of follow-ups that can be given to a move when randomized", (AcceptableValueBase)(object)new AcceptableValueRange<int>(1, 12), Array.Empty<object>()));
			EnableBackGroundChange = ((BaseUnityPlugin)this).Config.Bind<bool>("General", "EnableBackgroundChange", true, "If enabled, Eigong's background will change according to the fight's progress");
			EnableBetaYiTheme = ((BaseUnityPlugin)this).Config.Bind<bool>("General", "EnableBetaYiTheme", true, "If enabled, Yi's theme will be swapped with the beta version");
		}

		public void Update()
		{
			//IL_0000: Unknown result type (might be due to invalid IL or missing references)
			//IL_0005: Unknown result type (might be due to invalid IL or missing references)
			//IL_0019: 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_00bb: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c5: Expected O, but got Unknown
			Scene activeScene = SceneManager.GetActiveScene();
			if (!(((Scene)(ref activeScene)).name == "A11_S0_Boss_YiGung"))
			{
				activeScene = SceneManager.GetActiveScene();
				if (!(((Scene)(ref activeScene)).name == "A11_S0_Boss_YiGung_回蓬萊"))
				{
					goto IL_00c5;
				}
			}
			colorChange.RecolorSprite();
			EigongHPChange();
			HandleBGM();
			HandleBackground();
			GetAttackGameObjects();
			AlterAttacks();
			if ((Object)(object)SingletonBehaviour<MonsterManager>.Instance.ClosetMonster.currentMonsterState == (Object)(object)TeleportForwardBossGeneralState && SingletonBehaviour<MonsterManager>.Instance.ClosetMonster.PhaseIndex != 0)
			{
				fireTrail.SetActive(false);
			}
			else
			{
				fireTrail.SetActive(true);
			}
			Player.i.PlayerDeadState.OnReviveEvent.AddListener(new UnityAction(ResetFlags));
			goto IL_00c5;
			IL_00c5:
			if (ApplicationCore.IsInBossMemoryMode && (Object)(object)SingletonBehaviour<MonsterManager>.Instance.ClosetMonster == (Object)null)
			{
				ResetFlags();
			}
		}

		public void ResetFlags()
		{
			colorChange.dontspamstuffwow2 = 0;
			hasRandomLoopRan = false;
		}

		private void HandleBGM()
		{
			if (!EnableBetaYiTheme.Value)
			{
				return;
			}
			BGM = GameObject.Find("GameLevel/Room/Prefab/EventBinder/General Boss Fight FSM Object Variant/FSM Animator/LogicRoot/Boss三階BGM/BGM_Boss_A11_P3").GetComponent<AmbienceSource>();
			BGM.ambPair.sound = "BGM_Boss_A11_P2";
			if ((Object)(object)SingletonBehaviour<MonsterManager>.Instance.ClosetMonster.currentMonsterState == (Object)(object)SingletonBehaviour<MonsterManager>.Instance.ClosetMonster.GetState((States)146) && SingletonBehaviour<MonsterManager>.Instance.ClosetMonster.PhaseIndex == 1)
			{
				((MonoBehaviour)this).StartCoroutine(PlaySongAfterTime(5f));
				if (Player.i.health.CurrentHealthValue <= 0f)
				{
					((MonoBehaviour)this).StopAllCoroutines();
				}
			}
		}

		private IEnumerator PlaySongAfterTime(float time)
		{
			yield return (object)new WaitForSeconds(time);
			BGM.Play();
		}

		private void HandleBackground()
		{
			//IL_0091: Unknown result type (might be due to invalid IL or missing references)
			//IL_0096: Unknown result type (might be due to invalid IL or missing references)
			//IL_0097: Unknown result type (might be due to invalid IL or missing references)
			//IL_009d: Invalid comparison between Unknown and I4
			//IL_00a2: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a8: Invalid comparison between Unknown and I4
			//IL_00ad: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b3: Invalid comparison between Unknown and I4
			if (!EnableBackGroundChange.Value || (Object)(object)SingletonBehaviour<MonsterManager>.Instance.ClosetMonster == (Object)null)
			{
				return;
			}
			Black = GameObject.Find("GameLevel/CameraCore/DockObj/全畫面遮色/Fade/Black").GetComponent<SpriteRenderer>();
			Black2 = GameObject.Find("GameLevel/CameraCore/DockObj/全畫面遮色/Fade/Black/Black (1)").GetComponent<SpriteRenderer>();
			Blue = GameObject.Find("GameLevel/CameraCore/DockObj/全畫面遮色/Fade/Blue").GetComponent<SpriteRenderer>();
			Red = GameObject.Find("GameLevel/CameraCore/DockObj/全畫面遮色/Fade/Red").GetComponent<SpriteRenderer>();
			Green = GameObject.Find("GameLevel/CameraCore/DockObj/全畫面遮色/Fade/Green").GetComponent<SpriteRenderer>();
			States currentState = SingletonBehaviour<MonsterManager>.Instance.ClosetMonster.CurrentState;
			if ((int)currentState != 131)
			{
				if ((int)currentState != 146)
				{
					if ((int)currentState == 152 && SingletonBehaviour<MonsterManager>.Instance.ClosetMonster.PhaseIndex == 0)
					{
						((MonoBehaviour)this).StartCoroutine(FadeSpriteOut(Black, 1f));
						((MonoBehaviour)this).StartCoroutine(FadeSpriteOut(Black2, 1f));
						((MonoBehaviour)this).StartCoroutine(FadeSpriteOut(Blue, 1f));
						((MonoBehaviour)this).StartCoroutine(FadeSpriteOut(Red, 1f));
						((MonoBehaviour)this).StartCoroutine(FadeSpriteOut(Green, 1f));
					}
				}
				else
				{
					((MonoBehaviour)this).StartCoroutine(FadeSpriteIn(Red, 10f));
					((MonoBehaviour)this).StartCoroutine(FadeSpriteOut(Blue, 6f));
					((MonoBehaviour)this).StartCoroutine(FadeSpriteOut(Green, 8f));
				}
			}
			else
			{
				((MonoBehaviour)this).StartCoroutine(FadeSpriteIn(Blue, 5f));
				((MonoBehaviour)this).StartCoroutine(FadeSpriteIn(Green, 6f));
			}
		}

		private void EigongHPChange()
		{
			AccessTools.FieldRefAccess<MonsterStat, float>("BaseHealthValue").Invoke(SingletonBehaviour<MonsterManager>.Instance.ClosetMonster.monsterStat) = 7000f * EigongHPScale.Value;
			if (dontspamstuffwow == 0 && (Object)(object)SingletonBehaviour<MonsterManager>.Instance.ClosetMonster != (Object)null)
			{
				if (ApplicationCore.IsInBossMemoryMode)
				{
					SingletonBehaviour<MonsterManager>.Instance.ClosetMonster.postureSystem.CurrentHealthValue = 8000f * EigongHPScale.Value * SingletonBehaviour<MonsterManager>.Instance.ClosetMonster.monsterCore.monsterBase.monsterStat.BossMemoryHealthScale;
				}
				else
				{
					SingletonBehaviour<MonsterManager>.Instance.ClosetMonster.postureSystem.CurrentHealthValue = 8000f * EigongHPScale.Value;
				}
				if (EigongHPScale.Value != 1f)
				{
					ToastManager.Toast((object)$"Eigong's base HP changed to {7000f * EigongHPScale.Value}");
				}
				dontspamstuffwow++;
			}
			SingletonBehaviour<MonsterManager>.Instance.ClosetMonster.monsterStat.Phase2HealthRatio = 2f;
			SingletonBehaviour<MonsterManager>.Instance.ClosetMonster.monsterStat.Phase3HealthRatio = 1.5f;
		}

		public void AlterAttacks()
		{
			//IL_0002: Unknown result type (might be due to invalid IL or missing references)
			//IL_001f: Unknown result type (might be due to invalid IL or missing references)
			//IL_003c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0059: Unknown result type (might be due to invalid IL or missing references)
			//IL_0076: Unknown result type (might be due to invalid IL or missing references)
			//IL_0093: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b0: Unknown result type (might be due to invalid IL or missing references)
			//IL_00cd: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ea: Unknown result type (might be due to invalid IL or missing references)
			//IL_0107: 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_0141: Unknown result type (might be due to invalid IL or missing references)
			//IL_015e: 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_0198: Unknown result type (might be due to invalid IL or missing references)
			//IL_01b5: Unknown result type (might be due to invalid IL or missing references)
			//IL_01d2: 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_01f7: Unknown result type (might be due to invalid IL or missing references)
			//IL_01fe: Unknown result type (might be due to invalid IL or missing references)
			//IL_01ff: Unknown result type (might be due to invalid IL or missing references)
			//IL_0206: Unknown result type (might be due to invalid IL or missing references)
			//IL_0207: Unknown result type (might be due to invalid IL or missing references)
			//IL_020e: Unknown result type (might be due to invalid IL or missing references)
			//IL_020f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0216: Unknown result type (might be due to invalid IL or missing references)
			//IL_0218: Unknown result type (might be due to invalid IL or missing references)
			//IL_021f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0221: Unknown result type (might be due to invalid IL or missing references)
			//IL_0228: Unknown result type (might be due to invalid IL or missing references)
			//IL_022a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0231: Unknown result type (might be due to invalid IL or missing references)
			//IL_0233: Unknown result type (might be due to invalid IL or missing references)
			//IL_023a: Unknown result type (might be due to invalid IL or missing references)
			//IL_023c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0244: Unknown result type (might be due to invalid IL or missing references)
			//IL_0246: Unknown result type (might be due to invalid IL or missing references)
			//IL_024e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0250: Unknown result type (might be due to invalid IL or missing references)
			//IL_0258: Unknown result type (might be due to invalid IL or missing references)
			//IL_025a: Unknown result type (might be due to invalid IL or missing references)
			//IL_044b: Unknown result type (might be due to invalid IL or missing references)
			//IL_044c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0453: Unknown result type (might be due to invalid IL or missing references)
			//IL_0454: Unknown result type (might be due to invalid IL or missing references)
			//IL_045b: Unknown result type (might be due to invalid IL or missing references)
			//IL_045d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0477: Unknown result type (might be due to invalid IL or missing references)
			//IL_0479: Unknown result type (might be due to invalid IL or missing references)
			//IL_0480: Unknown result type (might be due to invalid IL or missing references)
			//IL_0481: Unknown result type (might be due to invalid IL or missing references)
			//IL_0488: Unknown result type (might be due to invalid IL or missing references)
			//IL_048a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0491: Unknown result type (might be due to invalid IL or missing references)
			//IL_0493: Unknown result type (might be due to invalid IL or missing references)
			//IL_049a: Unknown result type (might be due to invalid IL or missing references)
			//IL_049b: Unknown result type (might be due to invalid IL or missing references)
			//IL_04a2: Unknown result type (might be due to invalid IL or missing references)
			//IL_04a3: Unknown result type (might be due to invalid IL or missing references)
			//IL_04bd: Unknown result type (might be due to invalid IL or missing references)
			//IL_04bf: Unknown result type (might be due to invalid IL or missing references)
			//IL_04c6: Unknown result type (might be due to invalid IL or missing references)
			//IL_04c8: Unknown result type (might be due to invalid IL or missing references)
			//IL_04cf: Unknown result type (might be due to invalid IL or missing references)
			//IL_04d0: Unknown result type (might be due to invalid IL or missing references)
			//IL_04ea: Unknown result type (might be due to invalid IL or missing references)
			//IL_04ec: Unknown result type (might be due to invalid IL or missing references)
			//IL_04f3: Unknown result type (might be due to invalid IL or missing references)
			//IL_04f5: Unknown result type (might be due to invalid IL or missing references)
			//IL_04fc: Unknown result type (might be due to invalid IL or missing references)
			//IL_04fd: Unknown result type (might be due to invalid IL or missing references)
			//IL_0517: 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_0520: Unknown result type (might be due to invalid IL or missing references)
			//IL_0522: Unknown result type (might be due to invalid IL or missing references)
			//IL_0529: Unknown result type (might be due to invalid IL or missing references)
			//IL_052b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0532: Unknown result type (might be due to invalid IL or missing references)
			//IL_0534: Unknown result type (might be due to invalid IL or missing references)
			//IL_054e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0550: Unknown result type (might be due to invalid IL or missing references)
			//IL_0557: Unknown result type (might be due to invalid IL or missing references)
			//IL_0559: Unknown result type (might be due to invalid IL or missing references)
			//IL_0560: Unknown result type (might be due to invalid IL or missing references)
			//IL_0561: Unknown result type (might be due to invalid IL or missing references)
			//IL_057b: Unknown result type (might be due to invalid IL or missing references)
			//IL_057d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0584: Unknown result type (might be due to invalid IL or missing references)
			//IL_0586: Unknown result type (might be due to invalid IL or missing references)
			//IL_058d: 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_0596: Unknown result type (might be due to invalid IL or missing references)
			//IL_0597: Unknown result type (might be due to invalid IL or missing references)
			//IL_059e: Unknown result type (might be due to invalid IL or missing references)
			//IL_05a0: Unknown result type (might be due to invalid IL or missing references)
			//IL_05a7: Unknown result type (might be due to invalid IL or missing references)
			//IL_05a8: Unknown result type (might be due to invalid IL or missing references)
			//IL_05af: Unknown result type (might be due to invalid IL or missing references)
			//IL_05b0: Unknown result type (might be due to invalid IL or missing references)
			//IL_05ca: Unknown result type (might be due to invalid IL or missing references)
			//IL_05cc: Unknown result type (might be due to invalid IL or missing references)
			//IL_05d3: Unknown result type (might be due to invalid IL or missing references)
			//IL_05d4: Unknown result type (might be due to invalid IL or missing references)
			//IL_05db: Unknown result type (might be due to invalid IL or missing references)
			//IL_05dd: Unknown result type (might be due to invalid IL or missing references)
			//IL_05e4: Unknown result type (might be due to invalid IL or missing references)
			//IL_05e6: Unknown result type (might be due to invalid IL or missing references)
			//IL_05ed: Unknown result type (might be due to invalid IL or missing references)
			//IL_05ef: Unknown result type (might be due to invalid IL or missing references)
			//IL_0609: Unknown result type (might be due to invalid IL or missing references)
			//IL_060a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0611: Unknown result type (might be due to invalid IL or missing references)
			//IL_0613: Unknown result type (might be due to invalid IL or missing references)
			//IL_062d: Unknown result type (might be due to invalid IL or missing references)
			//IL_062f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0636: Unknown result type (might be due to invalid IL or missing references)
			//IL_0637: Unknown result type (might be due to invalid IL or missing references)
			//IL_063e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0640: Unknown result type (might be due to invalid IL or missing references)
			//IL_0647: Unknown result type (might be due to invalid IL or missing references)
			//IL_0649: Unknown result type (might be due to invalid IL or missing references)
			//IL_0650: Unknown result type (might be due to invalid IL or missing references)
			//IL_0651: Unknown result type (might be due to invalid IL or missing references)
			//IL_066b: Unknown result type (might be due to invalid IL or missing references)
			//IL_066d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0674: Unknown result type (might be due to invalid IL or missing references)
			//IL_0676: Unknown result type (might be due to invalid IL or missing references)
			//IL_067d: Unknown result type (might be due to invalid IL or missing references)
			//IL_067f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0686: Unknown result type (might be due to invalid IL or missing references)
			//IL_0688: Unknown result type (might be due to invalid IL or missing references)
			//IL_068f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0690: Unknown result type (might be due to invalid IL or missing references)
			//IL_0697: Unknown result type (might be due to invalid IL or missing references)
			//IL_0698: Unknown result type (might be due to invalid IL or missing references)
			//IL_06b2: Unknown result type (might be due to invalid IL or missing references)
			//IL_06b4: Unknown result type (might be due to invalid IL or missing references)
			//IL_06bb: Unknown result type (might be due to invalid IL or missing references)
			//IL_06bc: Unknown result type (might be due to invalid IL or missing references)
			//IL_06c3: Unknown result type (might be due to invalid IL or missing references)
			//IL_06c5: Unknown result type (might be due to invalid IL or missing references)
			//IL_06cc: Unknown result type (might be due to invalid IL or missing references)
			//IL_06ce: Unknown result type (might be due to invalid IL or missing references)
			//IL_06d5: Unknown result type (might be due to invalid IL or missing references)
			//IL_06d6: Unknown result type (might be due to invalid IL or missing references)
			//IL_06dd: 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_06e6: Unknown result type (might be due to invalid IL or missing references)
			//IL_06e8: Unknown result type (might be due to invalid IL or missing references)
			//IL_06ef: Unknown result type (might be due to invalid IL or missing references)
			//IL_06f1: Unknown result type (might be due to invalid IL or missing references)
			//IL_070b: Unknown result type (might be due to invalid IL or missing references)
			//IL_070d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0714: Unknown result type (might be due to invalid IL or missing references)
			//IL_0716: Unknown result type (might be due to invalid IL or missing references)
			//IL_071d: Unknown result type (might be due to invalid IL or missing references)
			//IL_071e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0725: Unknown result type (might be due to invalid IL or missing references)
			//IL_0727: Unknown result type (might be due to invalid IL or missing references)
			//IL_072e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0730: Unknown result type (might be due to invalid IL or missing references)
			//IL_074a: Unknown result type (might be due to invalid IL or missing references)
			//IL_074c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0753: Unknown result type (might be due to invalid IL or missing references)
			//IL_0755: Unknown result type (might be due to invalid IL or missing references)
			//IL_075c: Unknown result type (might be due to invalid IL or missing references)
			//IL_075d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0764: Unknown result type (might be due to invalid IL or missing references)
			//IL_0766: Unknown result type (might be due to invalid IL or missing references)
			//IL_076d: 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_0789: Unknown result type (might be due to invalid IL or missing references)
			//IL_078b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0792: Unknown result type (might be due to invalid IL or missing references)
			//IL_0794: Unknown result type (might be due to invalid IL or missing references)
			//IL_079b: Unknown result type (might be due to invalid IL or missing references)
			//IL_079c: 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_07a4: Unknown result type (might be due to invalid IL or missing references)
			//IL_07ab: Unknown result type (might be due to invalid IL or missing references)
			//IL_07ad: Unknown result type (might be due to invalid IL or missing references)
			//IL_07c8: Unknown result type (might be due to invalid IL or missing references)
			//IL_07ca: Unknown result type (might be due to invalid IL or missing references)
			//IL_07d1: Unknown result type (might be due to invalid IL or missing references)
			//IL_07d3: Unknown result type (might be due to invalid IL or missing references)
			//IL_07da: Unknown result type (might be due to invalid IL or missing references)
			//IL_07db: Unknown result type (might be due to invalid IL or missing references)
			//IL_07e2: Unknown result type (might be due to invalid IL or missing references)
			//IL_07e4: 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_07ec: Unknown result type (might be due to invalid IL or missing references)
			//IL_07f3: Unknown result type (might be due to invalid IL or missing references)
			//IL_07f4: Unknown result type (might be due to invalid IL or missing references)
			//IL_07fb: Unknown result type (might be due to invalid IL or missing references)
			//IL_07fd: Unknown result type (might be due to invalid IL or missing references)
			//IL_0804: 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_080d: Unknown result type (might be due to invalid IL or missing references)
			//IL_080f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0829: Unknown result type (might be due to invalid IL or missing references)
			//IL_082a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0831: Unknown result type (might be due to invalid IL or missing references)
			//IL_0833: Unknown result type (might be due to invalid IL or missing references)
			//IL_083a: Unknown result type (might be due to invalid IL or missing references)
			//IL_083c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0843: Unknown result type (might be due to invalid IL or missing references)
			//IL_0845: Unknown result type (might be due to invalid IL or missing references)
			//IL_084c: Unknown result type (might be due to invalid IL or missing references)
			//IL_084e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0868: Unknown result type (might be due to invalid IL or missing references)
			//IL_086a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0871: Unknown result type (might be due to invalid IL or missing references)
			//IL_0872: Unknown result type (might be due to invalid IL or missing references)
			//IL_0879: Unknown result type (might be due to invalid IL or missing references)
			//IL_087b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0882: Unknown result type (might be due to invalid IL or missing references)
			//IL_0884: Unknown result type (might be due to invalid IL or missing references)
			//IL_088b: Unknown result type (might be due to invalid IL or missing references)
			//IL_088d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0894: Unknown result type (might be due to invalid IL or missing references)
			//IL_0896: Unknown result type (might be due to invalid IL or missing references)
			//IL_089d: Unknown result type (might be due to invalid IL or missing references)
			//IL_089f: Unknown result type (might be due to invalid IL or missing references)
			//IL_08b9: Unknown result type (might be due to invalid IL or missing references)
			//IL_08bb: Unknown result type (might be due to invalid IL or missing references)
			//IL_08c2: Unknown result type (might be due to invalid IL or missing references)
			//IL_08c3: Unknown result type (might be due to invalid IL or missing references)
			//IL_08dd: Unknown result type (might be due to invalid IL or missing references)
			//IL_08df: Unknown result type (might be due to invalid IL or missing references)
			//IL_08e6: Unknown result type (might be due to invalid IL or missing references)
			//IL_08e7: Unknown result type (might be due to invalid IL or missing references)
			//IL_08ee: Unknown result type (might be due to invalid IL or missing references)
			//IL_08f0: Unknown result type (might be due to invalid IL or missing references)
			//IL_08f7: Unknown result type (might be due to invalid IL or missing references)
			//IL_08f9: Unknown result type (might be due to invalid IL or missing references)
			//IL_0900: Unknown result type (might be due to invalid IL or missing references)
			//IL_0902: Unknown result type (might be due to invalid IL or missing references)
			//IL_0909: Unknown result type (might be due to invalid IL or missing references)
			//IL_090a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0911: Unknown result type (might be due to invalid IL or missing references)
			//IL_0912: Unknown result type (might be due to invalid IL or missing references)
			//IL_092c: Unknown result type (might be due to invalid IL or missing references)
			//IL_092e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0935: Unknown result type (might be due to invalid IL or missing references)
			//IL_0936: Unknown result type (might be due to invalid IL or missing references)
			//IL_093d: Unknown result type (might be due to invalid IL or missing references)
			//IL_093f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0946: Unknown result type (might be due to invalid IL or missing references)
			//IL_0948: Unknown result type (might be due to invalid IL or missing references)
			//IL_094f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0950: Unknown result type (might be due to invalid IL or missing references)
			//IL_096a: Unknown result type (might be due to invalid IL or missing references)
			//IL_096c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0973: Unknown result type (might be due to invalid IL or missing references)
			//IL_0975: Unknown result type (might be due to invalid IL or missing references)
			//IL_097c: Unknown result type (might be due to invalid IL or missing references)
			//IL_097d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0997: Unknown result type (might be due to invalid IL or missing references)
			//IL_0999: Unknown result type (might be due to invalid IL or missing references)
			//IL_09a0: Unknown result type (might be due to invalid IL or missing references)
			//IL_09a1: Unknown result type (might be due to invalid IL or missing references)
			//IL_09a8: Unknown result type (might be due to invalid IL or missing references)
			//IL_09aa: Unknown result type (might be due to invalid IL or missing references)
			//IL_09c4: Unknown result type (might be due to invalid IL or missing references)
			//IL_09c6: Unknown result type (might be due to invalid IL or missing references)
			//IL_09cd: Unknown result type (might be due to invalid IL or missing references)
			//IL_09ce: Unknown result type (might be due to invalid IL or missing references)
			//IL_09d5: Unknown result type (might be due to invalid IL or missing references)
			//IL_09d7: Unknown result type (might be due to invalid IL or missing references)
			//IL_09de: Unknown result type (might be due to invalid IL or missing references)
			//IL_09e0: Unknown result type (might be due to invalid IL or missing references)
			//IL_09e7: Unknown result type (might be due to invalid IL or missing references)
			//IL_09e9: Unknown result type (might be due to invalid IL or missing references)
			//IL_09f0: Unknown result type (might be due to invalid IL or missing references)
			//IL_09f1: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a0b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a0d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a14: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a15: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a1c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a1e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a25: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a27: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a2e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a30: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a37: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a39: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a53: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a55: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a5c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a5d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a64: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a66: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a6d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a6f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a76: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a78: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a7f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a81: Unknown result type (might be due to invalid IL or missing references)
			//IL_0aba: Unknown result type (might be due to invalid IL or missing references)
			//IL_0abf: Unknown result type (might be due to invalid IL or missing references)
			//IL_0ac8: Unknown result type (might be due to invalid IL or missing references)
			//IL_03f4: Unknown result type (might be due to invalid IL or missing references)
			//IL_03f9: Unknown result type (might be due to invalid IL or missing references)
			//IL_0402: Unknown result type (might be due to invalid IL or missing references)
			//IL_0ad8: Unknown result type (might be due to invalid IL or missing references)
			//IL_0412: Unknown result type (might be due to invalid IL or missing references)
			AttackWeight val = default(AttackWeight);
			val.state = (MonsterState)(object)TeleportToTopBossGeneralState;
			val.weight = 1;
			AttackWeight val2 = default(AttackWeight);
			val2.state = (MonsterState)(object)TeleportToBackBossGeneralState;
			val2.weight = 1;
			AttackWeight val3 = default(AttackWeight);
			val3.state = (MonsterState)(object)TeleportForwardBossGeneralState;
			val3.weight = 1;
			AttackWeight val4 = default(AttackWeight);
			val4.state = (MonsterState)(object)SlowStartBossGeneralState;
			val4.weight = 1;
			AttackWeight val5 = default(AttackWeight);
			val5.state = (MonsterState)(object)CrossUpBossGeneralState;
			val5.weight = 1;
			AttackWeight val6 = default(AttackWeight);
			val6.state = (MonsterState)(object)triplePokeBossGeneralState;
			val6.weight = 1;
			AttackWeight val7 = default(AttackWeight);
			val7.state = (MonsterState)(object)CrimsonSlamBossGeneralState;
			val7.weight = 1;
			AttackWeight val8 = default(AttackWeight);
			val8.state = (MonsterState)(object)UnsheatheBossGeneralState;
			val8.weight = 1;
			AttackWeight val9 = default(AttackWeight);
			val9.state = (MonsterState)(object)FooCharmBossGeneralState;
			val9.weight = 1;
			AttackWeight val10 = default(AttackWeight);
			val10.state = (MonsterState)(object)QuickFooBossGeneralState;
			val10.weight = 1;
			AttackWeight val11 = default(AttackWeight);
			val11.state = (MonsterState)(object)DunkBossGeneralState;
			val11.weight = 1;
			AttackWeight val12 = default(AttackWeight);
			val12.state = (MonsterState)(object)WindBladeBossGeneralState;
			val12.weight = 1;
			AttackWeight val13 = default(AttackWeight);
			val13.state = (MonsterState)(object)ActualWindBladeBossGeneralState;
			val13.weight = 1;
			AttackWeight val14 = default(AttackWeight);
			val14.state = (MonsterState)(object)FooFollowUp0BossGeneralState;
			val14.weight = 1;
			AttackWeight val15 = default(AttackWeight);
			val15.state = (MonsterState)(object)FooFollowUp1BossGeneralState;
			val15.weight = 1;
			AttackWeight val16 = default(AttackWeight);
			val16.state = (MonsterState)(object)JudgementCutBossGeneralState;
			val16.weight = 1;
			AttackWeight val17 = default(AttackWeight);
			val17.state = (MonsterState)(object)RegularJudgementCutBossGeneralState;
			val17.weight = 1;
			AttackWeight[] array = (AttackWeight[])(object)new AttackWeight[12]
			{
				val, val2, val3, val4, val5, val6, val8, val9, val11, val12,
				val14, val15
			};
			LinkNextMoveStateWeight[] array2 = (LinkNextMoveStateWeight[])(object)new LinkNextMoveStateWeight[27]
			{
				StunLinkStateWeight, TeleportToBackLinkStateWeight, TeleportForwardLinkStateWeight, SlowStartLinkStateWeight, PokeLinkStateWeight, CrossUpLinkStateWeight, CrimsonSlamLinkStateWeight, UnsheatheLinkStateWeight, DunkLinkStateWeight, WindBladePhase1LinkStateWeight,
				StunPhase2LinkStateWeight, PokePhase2LinkStateWeight, TeleportToBackPhase2LinkStateWeight, TeleportForwardPhase2LinkStateWeight, SlowStartPhase2LinkStateWeight, CrossUpPhase2LinkStateWeight, CrimsonSlamPhase2LinkStateWeight, FooFollowUp1LinkStateWeight, UnsheathePhase2LinkStateWeight, WindBladeLinkStateWeight,
				StunPhase3LinkStateWeight, TeleportToBackPhase3LinkStateWeight, TeleportForwardPhase3LinkStateWeight, WindBladePhase3LinkStateWeight, UnsheathePhase3LinkStateWeight, JudgementCutLinkStateWeight, RegularJudgementCutLinkStateWeight
			};
			if (IsRandom.Value && !hasRandomLoopRan)
			{
				Random random = new Random();
				int value = IsRandomMinimumAttackAmount.Value;
				int value2 = IsRandomMaximumAttackAmount.Value;
				hasRandomLoopRan = true;
				LinkNextMoveStateWeight[] array3 = array2;
				foreach (LinkNextMoveStateWeight val18 in array3)
				{
					val18.stateWeightList.Clear();
					int num = random.Next(value, value2 + 1);
					for (int j = 0; j < num; j++)
					{
						int num2 = random.Next(0, array.Length);
						AttackWeight item = array[num2];
						if (!val18.stateWeightList.Contains(item))
						{
							val18.stateWeightList.Add(item);
						}
					}
				}
				return;
			}
			Dictionary<LinkNextMoveStateWeight, AttackWeight[]> dictionary = new Dictionary<LinkNextMoveStateWeight, AttackWeight[]>();
			dictionary.Add(StunLinkStateWeight, (AttackWeight[])(object)new AttackWeight[3] { val2, val, val8 });
			dictionary.Add(TeleportToBackLinkStateWeight, (AttackWeight[])(object)new AttackWeight[6] { val8, val4, val5, val6, val, val2 });
			dictionary.Add(TeleportForwardLinkStateWeight, (AttackWeight[])(object)new AttackWeight[3] { val5, val6, val2 });
			dictionary.Add(SlowStartLinkStateWeight, (AttackWeight[])(object)new AttackWeight[3] { val9, val8, val });
			dictionary.Add(PokeLinkStateWeight, (AttackWeight[])(object)new AttackWeight[4] { val9, val14, val15, val11 });
			dictionary.Add(CrossUpLinkStateWeight, (AttackWeight[])(object)new AttackWeight[3] { val8, val9, val3 });
			dictionary.Add(CrimsonSlamLinkStateWeight, (AttackWeight[])(object)new AttackWeight[7] { val5, val6, val9, val, val11, val2, val3 });
			dictionary.Add(UnsheatheLinkStateWeight, (AttackWeight[])(object)new AttackWeight[5] { val8, val, val6, val5, val11 });
			dictionary.Add(DunkLinkStateWeight, (AttackWeight[])(object)new AttackWeight[2] { val, val8 });
			dictionary.Add(StunPhase2LinkStateWeight, (AttackWeight[])(object)new AttackWeight[5] { val10, val, val14, val15, val2 });
			dictionary.Add(PokePhase2LinkStateWeight, (AttackWeight[])(object)new AttackWeight[6] { val6, val15, val14, val9, val4, val2 });
			dictionary.Add(TeleportToBackPhase2LinkStateWeight, (AttackWeight[])(object)new AttackWeight[8] { val8, val4, val5, val6, val, val12, val14, val15 });
			dictionary.Add(TeleportForwardPhase2LinkStateWeight, (AttackWeight[])(object)new AttackWeight[5] { val5, val6, val4, val14, val15 });
			dictionary.Add(SlowStartPhase2LinkStateWeight, (AttackWeight[])(object)new AttackWeight[5] { val9, val8, val, val14, val15 });
			dictionary.Add(CrossUpPhase2LinkStateWeight, (AttackWeight[])(object)new AttackWeight[5] { val8, val9, val2, val3, val15 });
			dictionary.Add(CrimsonSlamPhase2LinkStateWeight, (AttackWeight[])(object)new AttackWeight[9] { val5, val6, val, val11, val2, val3, val14, val15, val12 });
			dictionary.Add(FooFollowUp1LinkStateWeight, (AttackWeight[])(object)new AttackWeight[5] { val, val8, val10, val14, val15 });
			dictionary.Add(UnsheathePhase2LinkStateWeight, (AttackWeight[])(object)new AttackWeight[7] { val8, val, val11, val6, val5, val14, val15 });
			dictionary.Add(WindBladeLinkStateWeight, (AttackWeight[])(object)new AttackWeight[2] { val10, val2 });
			dictionary.Add(StunPhase3LinkStateWeight, (AttackWeight[])(object)new AttackWeight[7] { val10, val, val14, val15, val12, val3, val2 });
			dictionary.Add(TeleportToBackPhase3LinkStateWeight, (AttackWeight[])(object)new AttackWeight[5] { val8, val4, val5, val6, val });
			dictionary.Add(TeleportForwardPhase3LinkStateWeight, (AttackWeight[])(object)new AttackWeight[3] { val5, val6, val4 });
			dictionary.Add(WindBladePhase3LinkStateWeight, (AttackWeight[])(object)new AttackWeight[3] { val10, val2, val13 });
			dictionary.Add(UnsheathePhase3LinkStateWeight, (AttackWeight[])(object)new AttackWeight[6] { val8, val, val11, val6, val5, val4 });
			dictionary.Add(JudgementCutLinkStateWeight, (AttackWeight[])(object)new AttackWeight[6] { val16, val, val5, val11, val14, val15 });
			dictionary.Add(RegularJudgementCutLinkStateWeight, (AttackWeight[])(object)new AttackWeight[6] { val16, val, val5, val11, val14, val15 });
			foreach (KeyValuePair<LinkNextMoveStateWeight, AttackWeight[]> item3 in dictionary)
			{
				LinkNextMoveStateWeight key = item3.Key;
				AttackWeight[] value3 = item3.Value;
				foreach (AttackWeight item2 in value3)
				{
					if (!key.stateWeightList.Contains(item2))
					{
						key.stateWeightList.Add(item2);
					}
				}
			}
		}

		public void GetAttackGameObjects()
		{
			eigongAttackStatesPath = "GameLevel/Room/Prefab/EventBinder/General Boss Fight FSM Object Variant/FSM Animator/LogicRoot/---Boss---/Boss_Yi Gung/States/Attacks/";
			StunLinkStateWeight = GameObject.Find("GameLevel/Room/Prefab/EventBinder/General Boss Fight FSM Object Variant/FSM Animator/LogicRoot/---Boss---/Boss_Yi Gung/States/AttackParrying/weight").GetComponent<LinkNextMoveStateWeight>();
			StunPhase2LinkStateWeight = GameObject.Find("GameLevel/Room/Prefab/EventBinder/General Boss Fight FSM Object Variant/FSM Animator/LogicRoot/---Boss---/Boss_Yi Gung/States/AttackParrying/weight (1)").GetComponent<LinkNextMoveStateWeight>();
			StunPhase3LinkStateWeight = GameObject.Find("GameLevel/Room/Prefab/EventBinder/General Boss Fight FSM Object Variant/FSM Animator/LogicRoot/---Boss---/Boss_Yi Gung/States/AttackParrying/weight (2)").GetComponent<LinkNextMoveStateWeight>();
			TeleportToTopLinkStateWeight = GameObject.Find(eigongAttackStatesPath + "[2] Teleport To Top/phase (0)").GetComponent<LinkNextMoveStateWeight>();
			TeleportToTopPhase2LinkStateWeight = GameObject.Find(eigongAttackStatesPath + "[2] Teleport To Top/phase (1)").GetComponent<LinkNextMoveStateWeight>();
			TeleportToTopPhase3LinkStateWeight = GameObject.Find(eigongAttackStatesPath + "[2] Teleport To Top/phase (2)").GetComponent<LinkNextMoveStateWeight>();
			TeleportForwardLinkStateWeight = GameObject.Find(eigongAttackStatesPath + "[7] Teleport Dash Forward/weight").GetComponent<LinkNextMoveStateWeight>();
			TeleportForwardPhase2LinkStateWeight = GameObject.Find(eigongAttackStatesPath + "[7] Teleport Dash Forward/weight (1)").GetComponent<LinkNextMoveStateWeight>();
			TeleportForwardPhase3LinkStateWeight = GameObject.Find(eigongAttackStatesPath + "[7] Teleport Dash Forward/weight (2)").GetComponent<LinkNextMoveStateWeight>();
			TeleportToBackLinkStateWeight = GameObject.Find(eigongAttackStatesPath + "[5] Teleport to Back/weight").GetComponent<LinkNextMoveStateWeight>();
			TeleportToBackPhase2LinkStateWeight = GameObject.Find(eigongAttackStatesPath + "[5] Teleport to Back/weight (1)").GetComponent<LinkNextMoveStateWeight>();
			TeleportToBackPhase3LinkStateWeight = GameObject.Find(eigongAttackStatesPath + "[5] Teleport to Back/weight (2)").GetComponent<LinkNextMoveStateWeight>();
			SlowStartLinkStateWeight = GameObject.Find(eigongAttackStatesPath + "[1] Starter  Slow Attack 慢刀前揮/phase (0)").GetComponent<LinkNextMoveStateWeight>();
			PokeLinkStateWeight = GameObject.Find(eigongAttackStatesPath + "[13] Tripple Poke 三連/weight").GetComponent<LinkNextMoveStateWeight>();
			CrossUpLinkStateWeight = GameObject.Find(eigongAttackStatesPath + "[6] Double Attack/LinkMoveGroupingNode2 StarterPose/phase (0)").GetComponent<LinkNextMoveStateWeight>();
			UnsheatheLinkStateWeight = GameObject.Find(eigongAttackStatesPath + "[3] Thrust Delay 一閃/phase (0)").GetComponent<LinkNextMoveStateWeight>();
			FooCharmLinkStateWeight = GameObject.Find(eigongAttackStatesPath + "[10] Danger Foo Grab/interrupt weight").GetComponent<LinkNextMoveStateWeight>();
			CrimsonSlamLinkStateWeight = GameObject.Find(eigongAttackStatesPath + "[17] DownAttack Danger 空中下危/weight").GetComponent<LinkNextMoveStateWeight>();
			DunkLinkStateWeight = GameObject.Find(eigongAttackStatesPath + "[14] FooExplode Smash 下砸紅球/phase0 (1)").GetComponent<LinkNextMoveStateWeight>();
			WindBladePhase1LinkStateWeight = GameObject.Find(eigongAttackStatesPath + "[11] GiantChargeWave 紅白白紅/weight (1)").GetComponent<LinkNextMoveStateWeight>();
			SlowStartPhase2LinkStateWeight = GameObject.Find(eigongAttackStatesPath + "[1] Starter  Slow Attack 慢刀前揮/phase (1)").GetComponent<LinkNextMoveStateWeight>();
			PokePhase2LinkStateWeight = GameObject.Find(eigongAttackStatesPath + "[13] Tripple Poke 三連/weight (1)").GetComponent<LinkNextMoveStateWeight>();
			CrossUpPhase2LinkStateWeight = GameObject.Find(eigongAttackStatesPath + "[6] Double Attack/LinkMoveGroupingNode2 StarterPose/phase (1)").GetComponent<LinkNextMoveStateWeight>();
			UnsheathePhase2LinkStateWeight = GameObject.Find(eigongAttackStatesPath + "[3] Thrust Delay 一閃/phase (1)").GetComponent<LinkNextMoveStateWeight>();
			FooCharmPhase2LinkStateWeight = GameObject.Find(eigongAttackStatesPath + "[10] Danger Foo Grab/interrupt weight (1)").GetComponent<LinkNextMoveStateWeight>();
			FooFollowUp0LinkStateWeight = GameObject.Find(eigongAttackStatesPath + "[4] Slash Up 上撈下打 大反危/phase (1)").GetComponent<LinkNextMoveStateWeight>();
			FooFollowUp1LinkStateWeight = GameObject.Find(eigongAttackStatesPath + "[12] UpSlash Down Danger/weight (1)").GetComponent<LinkNextMoveStateWeight>();
			CrimsonSlamPhase2LinkStateWeight = GameObject.Find(eigongAttackStatesPath + "[17] DownAttack Danger 空中下危/weight (1)").GetComponent<LinkNextMoveStateWeight>();
			WindBladeLinkStateWeight = GameObject.Find(eigongAttackStatesPath + "[11] GiantChargeWave 紅白白紅/weight (2)").GetComponent<LinkNextMoveStateWeight>();
			FooCharmPhase3LinkStateWeight = GameObject.Find(eigongAttackStatesPath + "[10] Danger Foo Grab/interrupt weight (2)").GetComponent<LinkNextMoveStateWeight>();
			WindBladePhase3LinkStateWeight = GameObject.Find(eigongAttackStatesPath + "[11] GiantChargeWave 紅白白紅/weight (3)").GetComponent<LinkNextMoveStateWeight>();
			UnsheathePhase3LinkStateWeight = GameObject.Find(eigongAttackStatesPath + "[3] Thrust Delay 一閃/phase (2)").GetComponent<LinkNextMoveStateWeight>();
			JudgementCutLinkStateWeight = GameObject.Find(eigongAttackStatesPath + "[19] Thrust Full Screen Slash/LinkMoveGroupingNode Timing 2 Ground/weight (2)").GetComponent<LinkNextMoveStateWeight>();
			RegularJudgementCutLinkStateWeight = GameObject.Find(eigongAttackStatesPath + "[20] TeleportOut/weight (2)").GetComponent<LinkNextMoveStateWeight>();
			TeleportToTopBossGeneralState = GameObject.Find(eigongAttackStatesPath + "[2] Teleport To Top").GetComponent<BossGeneralState>();
			TeleportForwardBossGeneralState = GameObject.Find(eigongAttackStatesPath + "[7] Teleport Dash Forward").GetComponent<BossGeneralState>();
			TeleportToBackBossGeneralState = GameObject.Find(eigongAttackStatesPath + "[5] Teleport to Back").GetComponent<BossGeneralState>();
			SlowStartBossGeneralState = GameObject.Find(eigongAttackStatesPath + "[1] Starter  Slow Attack 慢刀前揮").GetComponent<BossGeneralState>();
			UnsheatheBossGeneralState = GameObject.Find(eigongAttackStatesPath + "[3] Thrust Delay 一閃").GetComponent<BossGeneralState>();
			CrossUpBossGeneralState = GameObject.Find(eigongAttackStatesPath + "[6] Double Attack").GetComponent<BossGeneralState>();
			triplePokeBossGeneralState = GameObject.Find(eigongAttackStatesPath + "[13] Tripple Poke 三連").GetComponent<BossGeneralState>();
			FooCharmBossGeneralState = GameObject.Find(eigongAttackStatesPath + "[10] Danger Foo Grab").GetComponent<BossGeneralState>();
			QuickFooBossGeneralState = GameObject.Find(eigongAttackStatesPath + "[16] QuickFoo").GetComponent<BossGeneralState>();
			DunkBossGeneralState = GameObject.Find(eigongAttackStatesPath + "[14] FooExplode Smash 下砸紅球").GetComponent<BossGeneralState>();
			CrimsonSlamBossGeneralState = GameObject.Find(eigongAttackStatesPath + "[17] DownAttack Danger 空中下危").GetComponent<BossGeneralState>();
			WindBladeBossGeneralState = GameObject.Find(eigongAttackStatesPath + "[8] Long Charge (2階才有").GetComponent<BossGeneralState>();
			ActualWindBladeBossGeneralState = GameObject.Find(eigongAttackStatesPath + "[11] GiantChargeWave 紅白白紅").GetComponent<BossGeneralState>();
			FooFollowUp0BossGeneralState = GameObject.Find(eigongAttackStatesPath + "[4] Slash Up 上撈下打 大反危").GetComponent<BossGeneralState>();
			FooFollowUp1BossGeneralState = GameObject.Find(eigongAttackStatesPath + "[12] UpSlash Down Danger").GetComponent<BossGeneralState>();
			JudgementCutBossGeneralState = GameObject.Find(eigongAttackStatesPath + "[19] Thrust Full Screen Slash").GetComponent<BossGeneralState>();
			RegularJudgementCutBossGeneralState = GameObject.Find(eigongAttackStatesPath + "[20] TeleportOut").GetComponent<BossGeneralState>();
			if ((Object)(object)((Component)DunkBossGeneralState).gameObject.GetComponent<LinkMoveExtendProvider>() == (Object)null)
			{
				((Component)DunkBossGeneralState).gameObject.AddComponent<LinkMoveExtendProvider>();
			}
			fireTrail = GameObject.Find("GameLevel/Room/Prefab/EventBinder/General Boss Fight FSM Object Variant/FSM Animator/LogicRoot/---Boss---/Boss_Yi Gung/MonsterCore/Animator(Proxy)/Animator/LogicRoot/Phase1 Activator/FireFX _ Fxplayer");
		}

		public static IEnumerator FadeSpriteOut(SpriteRenderer spriteRenderer, float duration)
		{
			if (!((Object)(object)spriteRenderer == (Object)null) && !(duration <= 0f))
			{
				Color originalColor = ((Renderer)spriteRenderer).material.color;
				float startAlpha = originalColor.a;
				float elapsed = 0f;
				while (elapsed < duration)
				{
					elapsed += Time.deltaTime;
					float num = Mathf.Lerp(startAlpha, 0f, elapsed / duration);
					((Renderer)spriteRenderer).material.color = new Color(originalColor.r, originalColor.g, originalColor.b, num);
					yield return null;
				}
				((Renderer)spriteRenderer).material.color = new Color(originalColor.r, originalColor.g, originalColor.b, 0f);
			}
		}

		public static IEnumerator FadeSpriteIn(SpriteRenderer spriteRenderer, float duration)
		{
			if (!((Object)(object)spriteRenderer == (Object)null) && !(duration <= 0f))
			{
				Color originalColor = ((Renderer)spriteRenderer).material.color;
				originalColor.a = 1f;
				float elapsed = 0f;
				while (elapsed < duration)
				{
					elapsed += Time.deltaTime;
					float num = Mathf.Lerp(0f, originalColor.a, elapsed / duration);
					((Renderer)spriteRenderer).material.color = new Color(originalColor.r, originalColor.g, originalColor.b, num);
					yield return null;
				}
				((Renderer)spriteRenderer).material.color = new Color(originalColor.r, originalColor.g, originalColor.b, 1f);
			}
		}

		public void OnDestroy()
		{
			harmony.UnpatchSelf();
		}
	}
	internal static class Log
	{
		private static ManualLogSource? logSource;

		internal static void Init(ManualLogSource logSource)
		{
			Log.logSource = logSource;
		}

		internal static void Debug(object data)
		{
			ManualLogSource? obj = logSource;
			if (obj != null)
			{
				obj.LogDebug(data);
			}
		}

		internal static void Error(object data)
		{
			ManualLogSource? obj = logSource;
			if (obj != null)
			{
				obj.LogError(data);
			}
		}

		internal static void Fatal(object data)
		{
			ManualLogSource? obj = logSource;
			if (obj != null)
			{
				obj.LogFatal(data);
			}
		}

		internal static void Info(object data)
		{
			ManualLogSource? obj = logSource;
			if (obj != null)
			{
				obj.LogInfo(data);
			}
		}

		internal static void Message(object data)
		{
			ManualLogSource? obj = logSource;
			if (obj != null)
			{
				obj.LogMessage(data);
			}
		}

		internal static void Warning(object data)
		{
			ManualLogSource? obj = logSource;
			if (obj != null)
			{
				obj.LogWarning(data);
			}
		}
	}
	[HarmonyPatch]
	public class Patches
	{
		[HarmonyPostfix]
		[HarmonyPatch(typeof(LocalizationManager), "GetTranslation")]
		private static void EigongPrimeNameChange(string Term, ref string __result)
		{
			if (!(Term != "Characters/NameTag_YiKong"))
			{
				__result += " Prime";
			}
		}
	}
	public static class MyPluginInfo
	{
		public const string PLUGIN_GUID = "EigongPrime";

		public const string PLUGIN_NAME = "EigongPrime";

		public const string PLUGIN_VERSION = "1.0.0";
	}
}