using System;
using System.Collections;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.Versioning;
using System.Security;
using System.Security.Permissions;
using BepInEx;
using BepInEx.Logging;
using Bilefly.Behaviours;
using Bilefly.Patches;
using GlobalSettings;
using HarmonyLib;
using HutongGames.PlayMaker;
using HutongGames.PlayMaker.Actions;
using Microsoft.CodeAnalysis;
using TeamCherry.Localization;
using UnityEngine;
using UnityEngine.AddressableAssets;
using UnityEngine.Events;
using UnityEngine.ResourceManagement.AsyncOperations;
using UnityEngine.ResourceManagement.ResourceProviders;
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("Bilefly")]
[assembly: AssemblyConfiguration("Release")]
[assembly: AssemblyFileVersion("0.2.1.0")]
[assembly: AssemblyInformationalVersion("0.2.1+ac4fbfb505542625b82cc33eab4da153f4f73825")]
[assembly: AssemblyProduct("Bilefly")]
[assembly: AssemblyTitle("Bilefly")]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: AssemblyVersion("0.2.1.0")]
[module: UnverifiableCode]
[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 BepInEx
{
[AttributeUsage(AttributeTargets.Class, Inherited = false, AllowMultiple = false)]
[Conditional("CodeGeneration")]
internal sealed class BepInAutoPluginAttribute : Attribute
{
public BepInAutoPluginAttribute(string? id = null, string? name = null, string? version = null)
{
}
}
}
namespace BepInEx.Preloader.Core.Patching
{
[AttributeUsage(AttributeTargets.Class, Inherited = false, AllowMultiple = false)]
[Conditional("CodeGeneration")]
internal sealed class PatcherAutoPluginAttribute : Attribute
{
public PatcherAutoPluginAttribute(string? id = null, string? name = null, string? version = null)
{
}
}
}
namespace Bilefly
{
internal static class ArenaBounds
{
internal const float XMin = 47f;
internal const float XMax = 76f;
internal const float YMin = 7f;
internal const float YMax = 20f;
internal const float XCenter = 61.5f;
internal const float YCenter = 13.5f;
}
internal static class AssetManager
{
[CompilerGenerated]
private sealed class <>c__DisplayClass5_0
{
public string prefabName;
internal bool <LoadScenePrefabs>b__0(Transform obj)
{
return ((Object)obj).name == prefabName;
}
}
[CompilerGenerated]
private sealed class <Init>d__4 : IEnumerator<object>, IEnumerator, IDisposable
{
private int <>1__state;
private object <>2__current;
object IEnumerator<object>.Current
{
[DebuggerHidden]
get
{
return <>2__current;
}
}
object IEnumerator.Current
{
[DebuggerHidden]
get
{
return <>2__current;
}
}
[DebuggerHidden]
public <Init>d__4(int <>1__state)
{
this.<>1__state = <>1__state;
}
[DebuggerHidden]
void IDisposable.Dispose()
{
<>1__state = -2;
}
private bool MoveNext()
{
switch (<>1__state)
{
default:
return false;
case 0:
<>1__state = -1;
<>2__current = LoadScenePrefabs();
<>1__state = 1;
return true;
case 1:
<>1__state = -1;
return false;
}
}
bool IEnumerator.MoveNext()
{
//ILSpy generated this explicit interface implementation from .override directive in MoveNext
return this.MoveNext();
}
[DebuggerHidden]
void IEnumerator.Reset()
{
throw new NotSupportedException();
}
}
[CompilerGenerated]
private sealed class <LoadBundleAssets>d__6 : IEnumerator<object>, IEnumerator, IDisposable
{
private int <>1__state;
private object <>2__current;
private string <bundlesPath>5__2;
private Dictionary<string, string[]>.Enumerator <>7__wrap2;
private string <bundleName>5__4;
private string[] <assetNames>5__5;
private bool <bundleAlreadyLoaded>5__6;
private AssetBundleCreateRequest <bundleLoadRequest>5__7;
private AssetBundle <bundle>5__8;
private IEnumerator<AssetBundle> <>7__wrap8;
private AssetBundle <loadedBundle>5__10;
private string[] <>7__wrap10;
private int <>7__wrap11;
private AssetBundleRequest <loadAssetRequest>5__13;
private string <assetPath>5__14;
private string[] <>7__wrap14;
private int <>7__wrap15;
object IEnumerator<object>.Current
{
[DebuggerHidden]
get
{
return <>2__current;
}
}
object IEnumerator.Current
{
[DebuggerHidden]
get
{
return <>2__current;
}
}
[DebuggerHidden]
public <LoadBundleAssets>d__6(int <>1__state)
{
this.<>1__state = <>1__state;
}
[DebuggerHidden]
void IDisposable.Dispose()
{
int num = <>1__state;
if ((uint)(num - -4) <= 1u || (uint)(num - 1) <= 2u)
{
try
{
if (num == -4 || num == 1)
{
try
{
}
finally
{
<>m__Finally2();
}
}
}
finally
{
<>m__Finally1();
}
}
<bundlesPath>5__2 = null;
<>7__wrap2 = default(Dictionary<string, string[]>.Enumerator);
<bundleName>5__4 = null;
<assetNames>5__5 = null;
<bundleLoadRequest>5__7 = null;
<bundle>5__8 = null;
<>7__wrap8 = null;
<loadedBundle>5__10 = null;
<>7__wrap10 = null;
<loadAssetRequest>5__13 = null;
<assetPath>5__14 = null;
<>7__wrap14 = null;
<>1__state = -2;
}
private bool MoveNext()
{
//IL_002b: Unknown result type (might be due to invalid IL or missing references)
//IL_0030: Unknown result type (might be due to invalid IL or missing references)
//IL_0032: Unknown result type (might be due to invalid IL or missing references)
//IL_0035: Invalid comparison between Unknown and I4
//IL_0037: Unknown result type (might be due to invalid IL or missing references)
//IL_003a: Invalid comparison between Unknown and I4
//IL_003c: Unknown result type (might be due to invalid IL or missing references)
//IL_0040: Invalid comparison between Unknown and I4
try
{
string key;
string[] value;
string text4;
switch (<>1__state)
{
default:
return false;
case 0:
{
<>1__state = -1;
RuntimePlatform platform = Application.platform;
key = (((int)platform == 1) ? "StandaloneOSX" : (((int)platform == 2) ? "StandaloneWindows64" : (((int)platform != 13) ? "" : "StandaloneLinux64")));
string path = key;
<bundlesPath>5__2 = Path.Combine(Addressables.RuntimePath, path);
<>7__wrap2 = BundleAssets.GetEnumerator();
<>1__state = -3;
goto IL_03f4;
}
case 1:
{
<>1__state = -4;
Object asset2 = <loadAssetRequest>5__13.asset;
GameObject val2 = (GameObject)(object)((asset2 is GameObject) ? asset2 : null);
if (val2 != null)
{
CheckSpecialBehaviour(val2);
}
else if (Object.op_Implicit(asset2))
{
AssetManager.TryAdd<Object>(asset2);
}
goto IL_01c3;
}
case 2:
<>1__state = -3;
<bundle>5__8 = <bundleLoadRequest>5__7.assetBundle;
_manuallyLoadedBundles.Add(<bundle>5__8);
<>7__wrap10 = <bundle>5__8.GetAllAssetNames();
<>7__wrap11 = 0;
goto IL_03be;
case 3:
{
<>1__state = -3;
Object asset = <loadAssetRequest>5__13.asset;
GameObject val = (GameObject)(object)((asset is GameObject) ? asset : null);
if (val != null)
{
CheckSpecialBehaviour(val);
}
AssetManager.TryAdd<Object>(asset);
<loadAssetRequest>5__13 = null;
goto IL_0381;
}
IL_03f4:
if (<>7__wrap2.MoveNext())
{
<>7__wrap2.Current.Deconstruct(out key, out value);
<bundleName>5__4 = key;
<assetNames>5__5 = value;
<bundleAlreadyLoaded>5__6 = false;
<>7__wrap8 = AssetBundle.GetAllLoadedAssetBundles().GetEnumerator();
<>1__state = -4;
goto IL_0202;
}
<>m__Finally1();
<>7__wrap2 = default(Dictionary<string, string[]>.Enumerator);
return false;
IL_01c3:
if (!<bundleAlreadyLoaded>5__6)
{
<>7__wrap11++;
goto IL_01d9;
}
goto IL_01ec;
IL_03be:
if (<>7__wrap11 < <>7__wrap10.Length)
{
<assetPath>5__14 = <>7__wrap10[<>7__wrap11];
<>7__wrap14 = <assetNames>5__5;
<>7__wrap15 = 0;
goto IL_038f;
}
<>7__wrap10 = null;
<bundleLoadRequest>5__7 = null;
<bundle>5__8 = null;
<bundleName>5__4 = null;
<assetNames>5__5 = null;
goto IL_03f4;
IL_038f:
if (<>7__wrap15 < <>7__wrap14.Length)
{
string text = <>7__wrap14[<>7__wrap15];
if (<assetPath>5__14.GetAssetRoot() == text)
{
<loadAssetRequest>5__13 = <bundle>5__8.LoadAssetAsync(<assetPath>5__14);
<>2__current = <loadAssetRequest>5__13;
<>1__state = 3;
return true;
}
goto IL_0381;
}
<>7__wrap14 = null;
<assetPath>5__14 = null;
<>7__wrap11++;
goto IL_03be;
IL_0202:
if (<>7__wrap8.MoveNext())
{
<loadedBundle>5__10 = <>7__wrap8.Current;
<>7__wrap10 = <loadedBundle>5__10.GetAllAssetNames();
<>7__wrap11 = 0;
goto IL_01d9;
}
goto IL_0212;
IL_01d9:
if (<>7__wrap11 < <>7__wrap10.Length)
{
string text2 = <>7__wrap10[<>7__wrap11];
value = <assetNames>5__5;
foreach (string text3 in value)
{
if (text2.GetAssetRoot() == text3)
{
<bundleAlreadyLoaded>5__6 = true;
<loadAssetRequest>5__13 = <loadedBundle>5__10.LoadAssetAsync(text2);
<>2__current = <loadAssetRequest>5__13;
<>1__state = 1;
return true;
}
}
goto IL_01c3;
}
goto IL_01ec;
IL_01ec:
<>7__wrap10 = null;
if (!<bundleAlreadyLoaded>5__6)
{
<loadedBundle>5__10 = null;
goto IL_0202;
}
goto IL_0212;
IL_0381:
<>7__wrap15++;
goto IL_038f;
IL_0212:
<>m__Finally2();
<>7__wrap8 = null;
if (<bundleAlreadyLoaded>5__6)
{
Log.Warn("Bundle " + <bundleName>5__4 + " already loaded!");
goto IL_03f4;
}
text4 = Path.Combine(<bundlesPath>5__2, <bundleName>5__4 + ".bundle");
<bundleLoadRequest>5__7 = AssetBundle.LoadFromFileAsync(text4);
<>2__current = <bundleLoadRequest>5__7;
<>1__state = 2;
return true;
}
}
catch
{
//try-fault
((IDisposable)this).Dispose();
throw;
}
}
bool IEnumerator.MoveNext()
{
//ILSpy generated this explicit interface implementation from .override directive in MoveNext
return this.MoveNext();
}
private void <>m__Finally1()
{
<>1__state = -1;
((IDisposable)<>7__wrap2).Dispose();
}
private void <>m__Finally2()
{
<>1__state = -3;
if (<>7__wrap8 != null)
{
<>7__wrap8.Dispose();
}
}
[DebuggerHidden]
void IEnumerator.Reset()
{
throw new NotSupportedException();
}
}
[CompilerGenerated]
private sealed class <LoadScenePrefabs>d__5 : IEnumerator<object>, IEnumerator, IDisposable
{
private int <>1__state;
private object <>2__current;
private Dictionary<string, string[]>.Enumerator <>7__wrap1;
private string[] <prefabNames>5__3;
private AsyncOperationHandle<SceneInstance> <loadSceneHandle>5__4;
object IEnumerator<object>.Current
{
[DebuggerHidden]
get
{
return <>2__current;
}
}
object IEnumerator.Current
{
[DebuggerHidden]
get
{
return <>2__current;
}
}
[DebuggerHidden]
public <LoadScenePrefabs>d__5(int <>1__state)
{
this.<>1__state = <>1__state;
}
[DebuggerHidden]
void IDisposable.Dispose()
{
//IL_0035: Unknown result type (might be due to invalid IL or missing references)
int num = <>1__state;
if (num == -3 || (uint)(num - 1) <= 1u)
{
try
{
}
finally
{
<>m__Finally1();
}
}
<>7__wrap1 = default(Dictionary<string, string[]>.Enumerator);
<prefabNames>5__3 = null;
<loadSceneHandle>5__4 = default(AsyncOperationHandle<SceneInstance>);
<>1__state = -2;
}
private bool MoveNext()
{
//IL_00b8: Unknown result type (might be due to invalid IL or missing references)
//IL_00be: Invalid comparison between Unknown and I4
//IL_01d4: Unknown result type (might be due to invalid IL or missing references)
//IL_00c9: Unknown result type (might be due to invalid IL or missing references)
//IL_00ce: Unknown result type (might be due to invalid IL or missing references)
//IL_00d2: Unknown result type (might be due to invalid IL or missing references)
//IL_00d7: Unknown result type (might be due to invalid IL or missing references)
//IL_0081: Unknown result type (might be due to invalid IL or missing references)
//IL_0086: Unknown result type (might be due to invalid IL or missing references)
//IL_008d: Unknown result type (might be due to invalid IL or missing references)
//IL_01a1: Unknown result type (might be due to invalid IL or missing references)
//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_01af: Unknown result type (might be due to invalid IL or missing references)
try
{
switch (<>1__state)
{
default:
return false;
case 0:
<>1__state = -1;
AudioManager.BlockAudioChange = true;
<>7__wrap1 = ScenePrefabs.GetEnumerator();
<>1__state = -3;
break;
case 1:
{
<>1__state = -3;
if ((int)<loadSceneHandle>5__4.Status == 1)
{
SceneInstance result = <loadSceneHandle>5__4.Result;
Scene scene = ((SceneInstance)(ref result)).Scene;
GameObject[] rootGameObjects = ((Scene)(ref scene)).GetRootGameObjects();
foreach (GameObject val in rootGameObjects)
{
string[] array = <prefabNames>5__3;
for (int j = 0; j < array.Length; j++)
{
<>c__DisplayClass5_0 CS$<>8__locals0 = new <>c__DisplayClass5_0
{
prefabName = array[j]
};
Transform? obj2 = ((IEnumerable<Transform>)val.GetComponentsInChildren<Transform>(true)).FirstOrDefault((Func<Transform, bool>)((Transform obj) => ((Object)obj).name == CS$<>8__locals0.prefabName));
GameObject val2 = ((obj2 != null) ? ((Component)obj2).gameObject : null);
if (Object.op_Implicit((Object)(object)val2))
{
val2.SetActive(false);
GameObject obj3 = Object.Instantiate<GameObject>(val2);
((Object)obj3).name = CS$<>8__locals0.prefabName;
Object.DontDestroyOnLoad((Object)(object)obj3);
CheckSpecialBehaviour(obj3);
AssetManager.TryAdd<GameObject>(obj3);
}
}
}
}
else
{
Log.Error(<loadSceneHandle>5__4.OperationException);
}
AsyncOperationHandle<SceneInstance> val3 = Addressables.UnloadSceneAsync(<loadSceneHandle>5__4, true);
<>2__current = val3;
<>1__state = 2;
return true;
}
case 2:
<>1__state = -3;
<loadSceneHandle>5__4 = default(AsyncOperationHandle<SceneInstance>);
<prefabNames>5__3 = null;
break;
}
if (<>7__wrap1.MoveNext())
{
<>7__wrap1.Current.Deconstruct(out string key, out string[] array);
string text = key;
<prefabNames>5__3 = array;
string text2 = "Scenes/" + text;
<loadSceneHandle>5__4 = Addressables.LoadSceneAsync((object)text2, (LoadSceneMode)1, true, 100, (SceneReleaseMode)0);
<>2__current = <loadSceneHandle>5__4;
<>1__state = 1;
return true;
}
<>m__Finally1();
<>7__wrap1 = default(Dictionary<string, string[]>.Enumerator);
AudioManager.BlockAudioChange = false;
return false;
}
catch
{
//try-fault
((IDisposable)this).Dispose();
throw;
}
}
bool IEnumerator.MoveNext()
{
//ILSpy generated this explicit interface implementation from .override directive in MoveNext
return this.MoveNext();
}
private void <>m__Finally1()
{
<>1__state = -1;
((IDisposable)<>7__wrap1).Dispose();
}
[DebuggerHidden]
void IEnumerator.Reset()
{
throw new NotSupportedException();
}
}
private static readonly Dictionary<string, string[]> ScenePrefabs = new Dictionary<string, string[]>
{
["Aqueduct_02"] = new string[1] { "Swamp Mosquito Skinny" },
["Bone_East_08_boss_beastfly"] = new string[1] { "Boss Scene Beastfly" },
["Shadow_12"] = new string[1] { "moss_crumble_plat" }
};
private static readonly Dictionary<string, string[]> BundleAssets = new Dictionary<string, string[]>
{
["audiocuesdynamic_assets_areaantareaboneareacoralareamossareawilds"] = new string[1] { "RipAndShred" },
["sfxstatic_assets_areaantareaboneareacoralareamossareawilds"] = new string[1] { "RIP AND SHRED" },
["enemycorpses_assets_areaswamp"] = new string[1] { "Corpse Swamp Mosquito Skinny" },
["localpoolprefabs_assets_areaaqueduct"] = new string[2] { "Skinny Mosquito Bullet", "Skinny Mosquito Bullet Void" },
["tk2danimations_assets_areaswamp"] = new string[1] { "Swamp Mosquito Anim" }
};
private static List<AssetBundle> _manuallyLoadedBundles = new List<AssetBundle>();
private static readonly Dictionary<Type, Dictionary<string, Object>> Assets = new Dictionary<Type, Dictionary<string, Object>>();
[IteratorStateMachine(typeof(<Init>d__4))]
internal static IEnumerator Init()
{
//yield-return decompiler failed: Unexpected instruction in Iterator.Dispose()
return new <Init>d__4(0);
}
[IteratorStateMachine(typeof(<LoadScenePrefabs>d__5))]
private static IEnumerator LoadScenePrefabs()
{
//yield-return decompiler failed: Unexpected instruction in Iterator.Dispose()
return new <LoadScenePrefabs>d__5(0);
}
[IteratorStateMachine(typeof(<LoadBundleAssets>d__6))]
internal static IEnumerator LoadBundleAssets()
{
//yield-return decompiler failed: Unexpected instruction in Iterator.Dispose()
return new <LoadBundleAssets>d__6(0);
}
private static bool Has(string assetName)
{
foreach (KeyValuePair<Type, Dictionary<string, Object>> asset in Assets)
{
asset.Deconstruct(out var _, out var value);
foreach (var (text2, val2) in value)
{
if (assetName == text2 && Object.op_Implicit(val2))
{
return true;
}
}
}
return false;
}
private static void TryAdd<T>(T asset) where T : Object
{
string name = ((Object)asset).name;
if (Has(name))
{
Log.Warn("Asset \"" + name + "\" has already been loaded!");
return;
}
Type type = ((object)asset).GetType();
if (Assets.ContainsKey(type))
{
Dictionary<string, Object> dictionary = Assets[type];
if (dictionary != null)
{
if (dictionary.ContainsKey(name))
{
if (dictionary[name] != (Object)null)
{
Log.Warn($"There is already an asset \"{name}\" of type \"{type}\"!");
return;
}
Log.Info($"Key \"{name}\" for sub-dictionary of type \"{type}\" exists, but its value is null; Replacing with new asset...");
Assets[type][name] = (Object)(object)asset;
}
else
{
Log.Debug($"Adding asset \"{name}\" of type \"{type}\".");
Assets[type].Add(name, (Object)(object)asset);
}
}
else
{
Log.Error($"Failed to get sub-dictionary of type \"{type}\"!");
Assets.Add(type, new Dictionary<string, Object>());
}
}
else
{
Assets.Add(type, new Dictionary<string, Object> { [name] = (Object)(object)asset });
Log.Debug($"Added new sub-dictionary of type \"{type}\" with initial asset \"{name}\".");
}
}
private static void CheckSpecialBehaviour(GameObject prefab)
{
//IL_01b5: Unknown result type (might be due to invalid IL or missing references)
//IL_01bc: Expected O, but got Unknown
//IL_0232: Unknown result type (might be due to invalid IL or missing references)
//IL_0239: Expected O, but got Unknown
//IL_02e0: Unknown result type (might be due to invalid IL or missing references)
//IL_02e7: Expected O, but got Unknown
switch (((Object)prefab).name)
{
case "Boss Scene Beastfly":
{
Transform transform = prefab.transform;
RepositionScene(transform);
ModifyTriggers(transform);
Transform val7 = transform.Find("Beastfly States");
ForceEnableBeastfly(val7);
ReplaceBeastflySummonedEnemies(transform.Find("Summon Enemies"));
GameObject gameObject = ((Component)val7.Find("Active/Bone Flyer Giant")).gameObject;
gameObject.AddComponent<Beastfly>();
((EnemyDeathEffects)gameObject.GetComponent<EnemyDeathEffectsRegular>()).CorpsePrefab.AddComponent<BeastflyCorpse>();
{
foreach (PlayMakerFSM item in from t in gameObject.GetComponentsInChildren<PlayMakerFSM>(true)
where ((Component)t).gameObject.layer == 26
select t)
{
((Component)item).gameObject.AddComponent<BeastflyCorpse>();
}
break;
}
}
case "Swamp Mosquito Skinny":
prefab.AddComponent<Mosquito>();
break;
case "Corpse Swamp Mosquito Skinny":
{
if (!TryGetBeastflyScene(out GameObject beastflyScene2))
{
break;
}
EnemyDeathEffects[] componentsInChildren = ((Component)beastflyScene2.transform.Find("Summon Enemies")).GetComponentsInChildren<EnemyDeathEffects>();
foreach (EnemyDeathEffects val3 in componentsInChildren)
{
if (((Object)val3).name.Contains("Swamp Mosquito Skinny"))
{
val3.corpsePrefab = prefab;
}
}
break;
}
case "Swamp Mosquito Anim":
{
if (!TryGetBeastflyScene(out GameObject beastflyScene4))
{
break;
}
tk2dSpriteAnimation component = prefab.GetComponent<tk2dSpriteAnimation>();
{
foreach (Transform item2 in ((Component)beastflyScene4.transform.Find("Summon Enemies")).transform)
{
Transform val6 = item2;
if (((Object)val6).name.Contains("Swamp Mosquito Skinny"))
{
((Component)val6).GetComponent<tk2dSpriteAnimator>().Library = component;
}
}
break;
}
}
case "Skinny Mosquito Bullet":
{
if (!TryGetBeastflyScene(out GameObject beastflyScene3))
{
break;
}
{
foreach (Transform item3 in ((Component)beastflyScene3.transform.Find("Summon Enemies")).transform)
{
Transform val4 = item3;
if (((Object)val4).name.Contains("Swamp Mosquito Skinny"))
{
FsmStateAction obj2 = FSMUtility.LocateMyFSM(((Component)val4).gameObject, "Shoot").Fsm.GetState("Shoot Aim").Actions[5];
BoolTestToGameObject val5 = (BoolTestToGameObject)(object)((obj2 is BoolTestToGameObject) ? obj2 : null);
if (val5 != null)
{
val5.FalseGameObject.Value = prefab;
}
}
}
break;
}
}
case "Skinny Mosquito Bullet Void":
{
if (!TryGetBeastflyScene(out GameObject beastflyScene))
{
break;
}
{
foreach (Transform item4 in ((Component)beastflyScene.transform.Find("Summon Enemies")).transform)
{
Transform val = item4;
if (((Object)val).name.Contains("Swamp Mosquito Skinny"))
{
FsmStateAction obj = FSMUtility.LocateMyFSM(((Component)val).gameObject, "Shoot").Fsm.GetState("Shoot Aim").Actions[5];
BoolTestToGameObject val2 = (BoolTestToGameObject)(object)((obj is BoolTestToGameObject) ? obj : null);
if (val2 != null)
{
val2.TrueGameObject.Value = prefab;
}
}
}
break;
}
}
}
}
private static void RepositionScene(Transform sceneTransform)
{
//IL_000b: Unknown result type (might be due to invalid IL or missing references)
//IL_0010: Unknown result type (might be due to invalid IL or missing references)
//IL_0026: Unknown result type (might be due to invalid IL or missing references)
//IL_002b: Unknown result type (might be due to invalid IL or missing references)
//IL_0035: 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)
sceneTransform.position = Vector2.op_Implicit(new Vector2(-20f, 11f));
Transform obj = sceneTransform.Find("Beastfly States/Active/Bone Flyer Giant");
obj.position += Vector3.down * 8f;
}
private static void ModifyTriggers(Transform sceneTransform)
{
//IL_0022: Unknown result type (might be due to invalid IL or missing references)
//IL_0027: Unknown result type (might be due to invalid IL or missing references)
//IL_0049: Unknown result type (might be due to invalid IL or missing references)
//IL_004e: 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_0064: Unknown result type (might be due to invalid IL or missing references)
//IL_0075: Unknown result type (might be due to invalid IL or missing references)
//IL_007b: Unknown result type (might be due to invalid IL or missing references)
Vector2 val = default(Vector2);
((Vector2)(ref val))..ctor(63f, 18f);
Vector2 size = default(Vector2);
((Vector2)(ref size))..ctor(36f, 20f);
Vector2 zero = Vector2.zero;
Transform obj = sceneTransform.Find("CamLock Boss");
Object.Destroy((Object)(object)((Component)obj.Find("CamLock Boss (1)")).gameObject);
obj.position = Vector2.op_Implicit(Vector2.zero);
Transform obj2 = obj.Find("CamLock Boss");
obj2.position = Vector2.op_Implicit(val);
BoxCollider2D component = ((Component)obj2).GetComponent<BoxCollider2D>();
component.size = size;
((Collider2D)component).offset = zero;
CameraLockArea component2 = ((Component)obj2).GetComponent<CameraLockArea>();
component2.cameraXMin = 60f;
component2.cameraXMax = 66f;
component2.cameraYMin = 15f;
component2.cameraYMax = 22f;
}
private static void ForceEnableBeastfly(Transform statesTransform)
{
Object.Destroy((Object)(object)((Component)statesTransform).GetComponent<TestGameObjectActivator>());
}
private static void ReplaceBeastflySummonedEnemies(Transform summonEnemiesParent)
{
GameObject val = AssetManager.Get<GameObject>("Swamp Mosquito Skinny");
if (!Object.op_Implicit((Object)(object)val))
{
Log.Error("Failed to get Swamp Mosquito Skinny!");
return;
}
Object.Destroy((Object)(object)((Component)summonEnemiesParent.Find("Bone Spitter")).gameObject);
GameObject obj = Object.Instantiate<GameObject>(val, summonEnemiesParent);
obj.SetActive(true);
((Object)obj).name = "Swamp Mosquito Skinny";
Object.Destroy((Object)(object)((Component)summonEnemiesParent.Find("Bone Spitter (1)")).gameObject);
GameObject obj2 = Object.Instantiate<GameObject>(val, summonEnemiesParent);
obj2.SetActive(true);
((Object)obj2).name = "Swamp Mosquito Skinny (1)";
GameObject obj3 = Object.Instantiate<GameObject>(val, summonEnemiesParent);
obj3.SetActive(true);
((Object)obj3).name = "Swamp Mosquito Skinny (2)";
}
private static bool TryGetBeastflyScene(out GameObject? beastflyScene)
{
GameObject val = AssetManager.Get<GameObject>("Boss Scene Beastfly");
if (!Object.op_Implicit((Object)(object)val))
{
Log.Error("Failed to get Boss Scene Beastfly prefab!");
beastflyScene = null;
return false;
}
beastflyScene = val;
return true;
}
internal static void UnloadAll()
{
foreach (Dictionary<string, Object> value in Assets.Values)
{
foreach (Object value2 in value.Values)
{
Object.DestroyImmediate(value2);
}
}
Assets.Clear();
GC.Collect();
}
internal static void UnloadManualBundles()
{
foreach (AssetBundle manuallyLoadedBundle in _manuallyLoadedBundles)
{
string bundleName = ((Object)manuallyLoadedBundle).name;
((AsyncOperation)manuallyLoadedBundle.UnloadAsync(true)).completed += delegate
{
Log.Info("Successfully unloaded bundle \"" + bundleName + "\"");
};
}
_manuallyLoadedBundles.Clear();
foreach (KeyValuePair<string, Object> item in Assets[typeof(GameObject)])
{
item.Deconstruct(out var _, out var value);
GameObject val = (GameObject)(object)((value is GameObject) ? value : null);
if (val != null && val.activeSelf)
{
Log.Info("Recycling all instances of prefab \"" + ((Object)val).name + "\"");
ObjectPoolExtensions.RecycleAll(val);
}
}
}
internal static T? Get<T>(string assetName) where T : Object
{
Type typeFromHandle = typeof(T);
if (Assets.ContainsKey(typeFromHandle))
{
Dictionary<string, Object> dictionary = Assets[typeFromHandle];
if (dictionary != null)
{
if (dictionary.ContainsKey(assetName))
{
Object val = dictionary[assetName];
if (val != (Object)null)
{
return (T)(object)((val is T) ? val : null);
}
Log.Error("Failed to get asset \"" + assetName + "\"; asset is null!");
return default(T);
}
Log.Error($"Sub-dictionary for type \"{typeFromHandle}\" does not contain key \"{assetName}\"!");
return default(T);
}
Log.Error($"Failed to get asset \"{assetName}\"; sub-dictionary of key \"{typeFromHandle}\" is null!");
return default(T);
}
Log.Error($"Could not find a sub-dictionary of type \"{typeFromHandle}\"!");
return default(T);
}
}
internal static class Extensions
{
internal static string GetAssetRoot(this string assetPath)
{
return assetPath.Split("/").Last().Replace(".asset", "")
.Replace(".prefab", "")
.Replace(".wav", "");
}
}
internal static class Log
{
private static ManualLogSource? _logSource;
private static string LogPrefix => $"[{Assembly.GetExecutingAssembly().GetName().Version}] ";
internal static void Init(ManualLogSource logSource)
{
_logSource = logSource;
}
internal static void Debug(object debug)
{
ManualLogSource? logSource = _logSource;
if (logSource != null)
{
logSource.LogDebug((object)(LogPrefix + debug));
}
}
internal static void Error(object error)
{
ManualLogSource? logSource = _logSource;
if (logSource != null)
{
logSource.LogError((object)(LogPrefix + error));
}
}
internal static void Fatal(object fatal)
{
ManualLogSource? logSource = _logSource;
if (logSource != null)
{
logSource.LogFatal((object)(LogPrefix + fatal));
}
}
internal static void Info(object info)
{
ManualLogSource? logSource = _logSource;
if (logSource != null)
{
logSource.LogInfo((object)(LogPrefix + info));
}
}
internal static void Message(object message)
{
ManualLogSource? logSource = _logSource;
if (logSource != null)
{
logSource.LogMessage((object)(LogPrefix + message));
}
}
internal static void Warn(object warning)
{
ManualLogSource? logSource = _logSource;
if (logSource != null)
{
logSource.LogWarning((object)(LogPrefix + warning));
}
}
}
[BepInPlugin("io.github.silksong_bilefly", "Bilefly", "0.2.1")]
public class Plugin : BaseUnityPlugin
{
private static Harmony _harmony;
public const string Id = "io.github.silksong_bilefly";
public static string Name => "Bilefly";
public static string Version => "0.2.1";
private void Awake()
{
//IL_0010: Unknown result type (might be due to invalid IL or missing references)
//IL_001a: Expected O, but got Unknown
Log.Init(((BaseUnityPlugin)this).Logger);
_harmony = new Harmony("io.github.silksong_bilefly");
MainPatches.Init();
_harmony.PatchAll(typeof(MainPatches));
}
private void OnDestroy()
{
_harmony.UnpatchSelf();
AssetManager.UnloadAll();
}
}
}
namespace Bilefly.Patches
{
internal static class BeastflyPatches
{
[HarmonyPostfix]
[HarmonyPatch(typeof(Language), "Get", new Type[]
{
typeof(string),
typeof(string)
})]
private static void ChangeBeastflyTitle(string key, string sheetTitle, ref string __result)
{
//IL_000d: Unknown result type (might be due to invalid IL or missing references)
//IL_0014: Invalid comparison between Unknown and I4
string text2;
if (key == "GIANT_BONE_FLYER_SUPER")
{
string text = (((int)Language.CurrentLanguage() != 44) ? __result : "Mucked");
text2 = text;
}
else
{
text2 = __result;
}
__result = text2;
}
[HarmonyPrefix]
[HarmonyPatch(typeof(BlackThreadState), "Awake")]
private static void DisableVoid(BlackThreadState __instance)
{
if ((GameManager.instance.sceneName == "Shadow_18" && ((Object)__instance).name == "Bone Flyer Giant") || ((Object)__instance).name.Contains("Swamp Mosquito Skinny"))
{
__instance.hasAwaken = true;
}
}
}
internal static class DebugPatches
{
[HarmonyPrefix]
[HarmonyPatch(typeof(HeroController), "Awake")]
private static void ForceInvincible()
{
CheatManager.Invincibility = (InvincibilityStates)3;
}
}
internal static class MainPatches
{
private static Harmony _harmony;
internal static void Init()
{
//IL_0005: Unknown result type (might be due to invalid IL or missing references)
//IL_000f: Expected O, but got Unknown
_harmony = new Harmony("MainPatches");
}
[HarmonyPrefix]
[HarmonyPatch(typeof(GameManager), "Awake")]
private static void InitAssetManager(GameManager __instance)
{
((MonoBehaviour)__instance).StartCoroutine(AssetManager.Init());
}
[HarmonyPrefix]
[HarmonyPatch(typeof(BattleScene), "Awake")]
private static void CheckPatchBeastfly(BattleScene __instance)
{
if (!(__instance.setPDBoolOnEnd != "DefeatedSwampShaman"))
{
_harmony.PatchAll(typeof(BeastflyPatches));
((Component)__instance).gameObject.AddComponent<BileflyLoader>();
}
}
[HarmonyPostfix]
[HarmonyPatch(typeof(BattleScene), "OnDisable")]
private static void CheckUnpatchBeastfly(BattleScene __instance)
{
_harmony.UnpatchSelf();
}
}
}
namespace Bilefly.Behaviours
{
internal class Beastfly : MonoBehaviour
{
[Serializable]
[CompilerGenerated]
private sealed class <>c
{
public static readonly <>c <>9 = new <>c();
public static DeathEvent <>9__5_0;
public static Func<FsmTransition, bool> <>9__7_0;
public static Func<FsmTransition, bool> <>9__7_1;
public static Func<GameObject, bool> <>9__8_0;
public static Func<GameObject, bool> <>9__9_0;
public static UnityAction <>9__10_0;
internal void <ModifyHealth>b__5_0()
{
PlayMakerFSM.BroadcastEvent("ZERO HP");
}
internal bool <ModifyControlFSM>b__7_0(FsmTransition t)
{
if (t.EventName != "GO HOME")
{
return t.EventName != "DOOR SLAM";
}
return false;
}
internal bool <ModifyControlFSM>b__7_1(FsmTransition t)
{
return t.EventName != "GO HOME";
}
internal bool <AddIdleMaggotParticles>b__8_0(GameObject obj)
{
return ((Object)obj).name == "hero_maggoted_effect";
}
internal bool <AddBurstMaggotParticles>b__9_0(GameObject obj)
{
return ((Object)obj).name == "particle_maggot_main (5)";
}
internal void <SetMaggotedOnDamage>b__10_0()
{
HeroController instance = HeroController.instance;
if (((ToolBase)Gameplay.MaggotCharm).IsEquipped && instance.playerData.MaggotCharmHits < 3)
{
instance.DidMaggotCharmHit();
}
else
{
MaggotRegion.SetIsMaggoted(true);
}
}
}
private Color _bileColor = new Color(0.7206f, 0.7045f, 0.4875f);
private GameObject? _ptMaggotBurst;
private void Awake()
{
ModifyComponents();
AddIdleMaggotParticles();
AddBurstMaggotParticles();
ModifyControlFSM();
SetMaggotedOnDamage();
}
private void ModifyComponents()
{
ModifyPositionConstraints();
ModifyHealth();
RecolorParticles();
}
private void ModifyPositionConstraints()
{
ConstrainPosition component = ((Component)this).GetComponent<ConstrainPosition>();
component.xMin = 47f;
component.xMax = 76f;
component.yMin = 7f;
}
private void ModifyHealth()
{
//IL_0033: Unknown result type (might be due to invalid IL or missing references)
//IL_0038: Unknown result type (might be due to invalid IL or missing references)
//IL_003e: Expected O, but got Unknown
HealthManager component = ((Component)this).GetComponent<HealthManager>();
component.hp = 950;
component.hasSpecialDeath = false;
component.immuneToWater = true;
object obj = <>c.<>9__5_0;
if (obj == null)
{
DeathEvent val = delegate
{
PlayMakerFSM.BroadcastEvent("ZERO HP");
};
<>c.<>9__5_0 = val;
obj = (object)val;
}
component.OnDeath += (DeathEvent)obj;
}
private void RecolorParticles()
{
//IL_0007: Unknown result type (might be due to invalid IL or missing references)
//IL_0020: Unknown result type (might be due to invalid IL or missing references)
//IL_0025: Unknown result type (might be due to invalid IL or missing references)
//IL_0028: Unknown result type (might be due to invalid IL or missing references)
//IL_002d: Unknown result type (might be due to invalid IL or missing references)
//IL_0031: Unknown result type (might be due to invalid IL or missing references)
//IL_003d: Unknown result type (might be due to invalid IL or missing references)
((tk2dBaseSprite)((Component)this).GetComponent<tk2dSprite>()).VertexColor = _bileColor;
ParticleSystem[] componentsInChildren = ((Component)this).GetComponentsInChildren<ParticleSystem>(true);
for (int i = 0; i < componentsInChildren.Length; i++)
{
MainModule main = componentsInChildren[i].main;
MinMaxGradient startColor = ((MainModule)(ref main)).startColor;
((MinMaxGradient)(ref startColor)).color = _bileColor;
((MainModule)(ref main)).startColor = startColor;
}
}
private void ModifyControlFSM()
{
//IL_00f1: Unknown result type (might be due to invalid IL or missing references)
//IL_00f6: Unknown result type (might be due to invalid IL or missing references)
//IL_0100: Unknown result type (might be due to invalid IL or missing references)
//IL_0105: Unknown result type (might be due to invalid IL or missing references)
//IL_0114: Unknown result type (might be due to invalid IL or missing references)
//IL_0119: Unknown result type (might be due to invalid IL or missing references)
//IL_011c: Unknown result type (might be due to invalid IL or missing references)
//IL_0121: Unknown result type (might be due to invalid IL or missing references)
//IL_0133: Unknown result type (might be due to invalid IL or missing references)
//IL_013f: Unknown result type (might be due to invalid IL or missing references)
//IL_0149: Unknown result type (might be due to invalid IL or missing references)
//IL_016f: Unknown result type (might be due to invalid IL or missing references)
//IL_0379: Unknown result type (might be due to invalid IL or missing references)
//IL_037e: Unknown result type (might be due to invalid IL or missing references)
//IL_037f: Unknown result type (might be due to invalid IL or missing references)
//IL_0389: Expected O, but got Unknown
//IL_0389: Unknown result type (might be due to invalid IL or missing references)
//IL_0399: Unknown result type (might be due to invalid IL or missing references)
//IL_03a9: Unknown result type (might be due to invalid IL or missing references)
//IL_03b9: Unknown result type (might be due to invalid IL or missing references)
//IL_03c0: Unknown result type (might be due to invalid IL or missing references)
//IL_03cb: Unknown result type (might be due to invalid IL or missing references)
//IL_03d2: Unknown result type (might be due to invalid IL or missing references)
//IL_03d9: Unknown result type (might be due to invalid IL or missing references)
//IL_03ea: Expected O, but got Unknown
//IL_040a: Unknown result type (might be due to invalid IL or missing references)
//IL_040f: Unknown result type (might be due to invalid IL or missing references)
//IL_041a: Unknown result type (might be due to invalid IL or missing references)
//IL_0422: Unknown result type (might be due to invalid IL or missing references)
//IL_0434: Expected O, but got Unknown
//IL_0459: Unknown result type (might be due to invalid IL or missing references)
//IL_045e: Unknown result type (might be due to invalid IL or missing references)
//IL_045f: Unknown result type (might be due to invalid IL or missing references)
//IL_0464: Unknown result type (might be due to invalid IL or missing references)
//IL_046b: Unknown result type (might be due to invalid IL or missing references)
//IL_0481: Expected O, but got Unknown
//IL_0481: 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_049d: Expected O, but got Unknown
PlayMakerFSM obj = FSMUtility.LocateMyFSM(((Component)this).gameObject, "Control");
Fsm fsm = obj.Fsm;
FsmFloat[] floatVariables = obj.FsmVariables.FloatVariables;
foreach (FsmFloat val in floatVariables)
{
switch (((NamedVariable)val).Name)
{
case "Lava Y":
val.Value = 7f;
break;
case "Low Y Point":
val.Value = 11.5f;
break;
case "Rematch Arena X Max":
val.Value = 76f;
break;
case "Rematch Arena X Min":
val.Value = 47f;
break;
case "High Y Pos":
val.Value = 15.5f;
break;
}
}
GameObject value = fsm.GetFsmGameObject("Pt LavaAntic").Value;
Transform transform = value.transform;
transform.position += Vector3.down * 7f;
MainModule main = value.GetComponent<ParticleSystem>().main;
MinMaxGradient startColor = ((MainModule)(ref main)).startColor;
((MinMaxGradient)(ref startColor)).color = new Color(0.7206f, 0.7045f, 0.4875f);
((MainModule)(ref main)).startColor = startColor;
MinMaxCurve startSpeed = default(MinMaxCurve);
((MinMaxCurve)(ref startSpeed)).mode = (ParticleSystemCurveMode)3;
((MinMaxCurve)(ref startSpeed)).constantMin = 30f;
((MinMaxCurve)(ref startSpeed)).constantMax = 60f;
((MainModule)(ref main)).startSpeed = startSpeed;
Object.Destroy((Object)(object)((Component)transform.Find("Flame")).gameObject);
MusicCue val2 = AssetManager.Get<MusicCue>("RipAndShred");
if (!Object.op_Implicit((Object)(object)val2))
{
Log.Error("Failed to get Incisive Battle music cue!");
return;
}
AudioClip clip = AssetManager.Get<AudioClip>("RIP AND SHRED");
val2.channelInfos[0].clip = clip;
FsmStateAction obj2 = fsm.GetState("Rematch Start").Actions[0];
ApplyMusicCue val3 = (ApplyMusicCue)(object)((obj2 is ApplyMusicCue) ? obj2 : null);
if (val3 != null)
{
val3.musicCue = FsmObject.op_Implicit((Object)(object)val2);
}
FsmState state = fsm.GetState("Rematch Ready");
List<FsmStateAction> list = state.Actions.ToList();
list.RemoveAt(12);
state.Actions = list.ToArray();
FsmStateAction obj3 = fsm.GetState("Intro Recover").Actions[4];
ApplyMusicCue val4 = (ApplyMusicCue)(object)((obj3 is ApplyMusicCue) ? obj3 : null);
if (val4 != null)
{
val4.musicCue = FsmObject.op_Implicit((Object)(object)val2);
}
FsmStateAction[] actions = fsm.GetState("Charge").Actions;
FsmStateAction obj4 = actions[20];
CheckXPosition val5 = (CheckXPosition)(object)((obj4 is CheckXPosition) ? obj4 : null);
if (val5 != null)
{
val5.compareTo = FsmFloat.op_Implicit(41f);
}
FsmStateAction obj5 = actions[21];
CheckXPosition val6 = (CheckXPosition)(object)((obj5 is CheckXPosition) ? obj5 : null);
if (val6 != null)
{
val6.compareTo = FsmFloat.op_Implicit(82f);
}
FsmState state2 = fsm.GetState("Choice");
state2.Transitions = state2.Transitions.Where((FsmTransition t) => t.EventName != "GO HOME" && t.EventName != "DOOR SLAM").ToArray();
List<FsmStateAction> list2 = state2.Actions.ToList();
list2.RemoveAt(2);
list2.RemoveAt(4);
state2.Actions = list2.ToArray();
FsmState state3 = fsm.GetState("Stomp Pos");
state3.Transitions = state3.Transitions.Where((FsmTransition t) => t.EventName != "GO HOME").ToArray();
List<FsmStateAction> list3 = state3.Actions.ToList();
list3.RemoveAt(2);
state3.Actions = list3.ToArray();
FsmState state4 = fsm.GetState("Stomp R");
state4.Actions = state4.Actions.Append((FsmStateAction)new CheckYPosition
{
gameObject = new FsmOwnerDefault(),
compareTo = FsmFloat.op_Implicit(7f),
compareToOffset = FsmFloat.op_Implicit(0f),
tolerance = FsmFloat.op_Implicit(0f),
equal = null,
lessThan = FsmEvent.Finished,
greaterThan = null,
everyFrame = true,
activeBool = FsmBool.op_Implicit(true)
}).ToArray();
FsmState state5 = fsm.GetState("Get Next Target");
state4.Transitions = state4.Transitions.Append(new FsmTransition
{
FsmEvent = FsmEvent.Finished,
ToFsmState = state5,
ToState = state5.Name
}).ToArray();
FsmState state6 = fsm.GetState("Lava Burst");
List<FsmStateAction> list4 = state6.Actions.ToList();
list4.Insert(0, (FsmStateAction)new PlayParticleEmitter
{
gameObject = new FsmOwnerDefault
{
OwnerOption = (OwnerDefaultOption)1,
GameObject = FsmGameObject.op_Implicit(_ptMaggotBurst)
},
emit = FsmInt.op_Implicit(20000),
resetIfPlaying = true
});
state6.Actions = list4.ToArray();
}
private void AddIdleMaggotParticles()
{
//IL_0050: Unknown result type (might be due to invalid IL or missing references)
//IL_0084: Unknown result type (might be due to invalid IL or missing references)
//IL_0089: Unknown result type (might be due to invalid IL or missing references)
//IL_0098: Unknown result type (might be due to invalid IL or missing references)
//IL_00aa: Unknown result type (might be due to invalid IL or missing references)
//IL_00af: Unknown result type (might be due to invalid IL or missing references)
//IL_00c7: Unknown result type (might be due to invalid IL or missing references)
//IL_00cc: Unknown result type (might be due to invalid IL or missing references)
//IL_00e0: Unknown result type (might be due to invalid IL or missing references)
//IL_00e9: Unknown result type (might be due to invalid IL or missing references)
//IL_00ee: Unknown result type (might be due to invalid IL or missing references)
//IL_00f4: Unknown result type (might be due to invalid IL or missing references)
//IL_0106: Unknown result type (might be due to invalid IL or missing references)
//IL_010b: Unknown result type (might be due to invalid IL or missing references)
//IL_0123: Unknown result type (might be due to invalid IL or missing references)
//IL_0128: Unknown result type (might be due to invalid IL or missing references)
//IL_013c: Unknown result type (might be due to invalid IL or missing references)
//IL_0145: Unknown result type (might be due to invalid IL or missing references)
//IL_014a: Unknown result type (might be due to invalid IL or missing references)
GameObject val = ((IEnumerable<GameObject>)Resources.FindObjectsOfTypeAll<GameObject>()).FirstOrDefault((Func<GameObject, bool>)((GameObject obj) => ((Object)obj).name == "hero_maggoted_effect"));
if (!Object.op_Implicit((Object)(object)val))
{
Log.Error("Failed to find hero_maggoted_effect!");
return;
}
GameObject val2 = Object.Instantiate<GameObject>(val, ((Component)this).transform);
val2.transform.localPosition = Vector3.zero;
PlayParticleEffects component = val2.GetComponent<PlayParticleEffects>();
ParticleSystem[] particleEffects = component.particleEffects;
foreach (ParticleSystem val3 in particleEffects)
{
if (Object.op_Implicit((Object)(object)val3))
{
MainModule main = val3.main;
((MainModule)(ref main)).maxParticles = 32;
MinMaxCurve val4 = default(MinMaxCurve);
((MinMaxCurve)(ref val4)).mode = (ParticleSystemCurveMode)3;
MinMaxCurve val5 = ((MainModule)(ref main)).startLifetime;
((MinMaxCurve)(ref val4)).constantMin = ((MinMaxCurve)(ref val5)).constantMin * 2f;
val5 = ((MainModule)(ref main)).startLifetime;
((MinMaxCurve)(ref val4)).constantMax = ((MinMaxCurve)(ref val5)).constantMax * 2f;
((MainModule)(ref main)).startLifetime = val4;
EmissionModule emission = val3.emission;
val4 = default(MinMaxCurve);
((MinMaxCurve)(ref val4)).mode = (ParticleSystemCurveMode)3;
val5 = ((EmissionModule)(ref emission)).rateOverTime;
((MinMaxCurve)(ref val4)).constantMin = ((MinMaxCurve)(ref val5)).constantMin * 2f;
val5 = ((EmissionModule)(ref emission)).rateOverTime;
((MinMaxCurve)(ref val4)).constantMax = ((MinMaxCurve)(ref val5)).constantMax * 2f;
((EmissionModule)(ref emission)).rateOverTime = val4;
ShapeModule shape = val3.shape;
((ShapeModule)(ref shape)).radius = ((ShapeModule)(ref shape)).radius * 4f;
}
}
((Object)val2).name = "Pt Maggots Idle";
component.PlayParticleSystems();
}
private void AddBurstMaggotParticles()
{
//IL_006a: 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_0080: Unknown result type (might be due to invalid IL or missing references)
//IL_00a6: Unknown result type (might be due to invalid IL or missing references)
GameObject val = ((IEnumerable<GameObject>)Resources.FindObjectsOfTypeAll<GameObject>()).FirstOrDefault((Func<GameObject, bool>)((GameObject obj) => ((Object)obj).name == "particle_maggot_main (5)"));
if (!Object.op_Implicit((Object)(object)val))
{
Log.Error("Failed to find particle_maggot_main (5)!");
return;
}
_ptMaggotBurst = Object.Instantiate<GameObject>(val, ((Component)this).transform);
((Object)_ptMaggotBurst).name = "Pt Maggot Burst";
MainModule main = _ptMaggotBurst.GetComponent<ParticleSystem>().main;
((MainModule)(ref main)).maxParticles = 128;
MinMaxCurve startSpeed = default(MinMaxCurve);
((MinMaxCurve)(ref startSpeed)).mode = (ParticleSystemCurveMode)3;
((MinMaxCurve)(ref startSpeed)).constantMin = 16f;
((MinMaxCurve)(ref startSpeed)).constantMax = 32f;
((MainModule)(ref main)).startSpeed = startSpeed;
}
private void SetMaggotedOnDamage()
{
//IL_001f: Unknown result type (might be due to invalid IL or missing references)
//IL_0024: Unknown result type (might be due to invalid IL or missing references)
//IL_002a: Expected O, but got Unknown
UnityEvent onDamagedHero = ((Component)this).GetComponent<DamageHero>().OnDamagedHero;
object obj = <>c.<>9__10_0;
if (obj == null)
{
UnityAction val = delegate
{
HeroController instance = HeroController.instance;
if (((ToolBase)Gameplay.MaggotCharm).IsEquipped && instance.playerData.MaggotCharmHits < 3)
{
instance.DidMaggotCharmHit();
}
else
{
MaggotRegion.SetIsMaggoted(true);
}
};
<>c.<>9__10_0 = val;
obj = (object)val;
}
onDamagedHero.AddListener((UnityAction)obj);
}
}
internal class BeastflyCorpse : MonoBehaviour
{
private Color _bileColor = new Color(0.7206f, 0.7045f, 0.4875f);
private void Awake()
{
RecolorSprites();
ModifyPositionConstraints();
}
private void RecolorSprites()
{
//IL_0010: Unknown result type (might be due to invalid IL or missing references)
tk2dSprite[] componentsInChildren = ((Component)this).GetComponentsInChildren<tk2dSprite>(true);
for (int i = 0; i < componentsInChildren.Length; i++)
{
((tk2dBaseSprite)componentsInChildren[i]).VertexColor = _bileColor;
}
}
private void ModifyPositionConstraints()
{
ConstrainPosition[] componentsInChildren = ((Component)this).GetComponentsInChildren<ConstrainPosition>(true);
foreach (ConstrainPosition obj in componentsInChildren)
{
obj.xMin = 47f;
obj.xMax = 76f;
obj.yMin = 7f;
}
}
}
internal class BileflyLoader : MonoBehaviour
{
[CompilerGenerated]
private sealed class <Start>d__0 : IEnumerator<object>, IEnumerator, IDisposable
{
private int <>1__state;
private object <>2__current;
public BileflyLoader <>4__this;
object IEnumerator<object>.Current
{
[DebuggerHidden]
get
{
return <>2__current;
}
}
object IEnumerator.Current
{
[DebuggerHidden]
get
{
return <>2__current;
}
}
[DebuggerHidden]
public <Start>d__0(int <>1__state)
{
this.<>1__state = <>1__state;
}
[DebuggerHidden]
void IDisposable.Dispose()
{
<>1__state = -2;
}
private bool MoveNext()
{
int num = <>1__state;
BileflyLoader bileflyLoader = <>4__this;
switch (num)
{
default:
return false;
case 0:
<>1__state = -1;
<>2__current = AssetManager.LoadBundleAssets();
<>1__state = 1;
return true;
case 1:
{
<>1__state = -1;
GameObject val = AssetManager.Get<GameObject>("Boss Scene Beastfly");
if (!Object.op_Implicit((Object)(object)val))
{
Log.Error("Failed to get Boss Scene Beastfly prefab!");
return false;
}
GameObject obj = Object.Instantiate<GameObject>(val);
Transform transform = obj.transform;
((Component)transform.Find("Beastfly States/Active")).gameObject.SetActive(true);
bileflyLoader.SetBattleScene(transform);
bileflyLoader.DisableExistingPlatforms();
bileflyLoader.ReplacePlatforms(transform.Find("Lava Plats"));
bileflyLoader.DisableBench();
obj.SetActive(true);
return false;
}
}
}
bool IEnumerator.MoveNext()
{
//ILSpy generated this explicit interface implementation from .override directive in MoveNext
return this.MoveNext();
}
[DebuggerHidden]
void IEnumerator.Reset()
{
throw new NotSupportedException();
}
}
[IteratorStateMachine(typeof(<Start>d__0))]
private IEnumerator Start()
{
//yield-return decompiler failed: Unexpected instruction in Iterator.Dispose()
return new <Start>d__0(0)
{
<>4__this = this
};
}
private void OnDestroy()
{
AssetManager.UnloadManualBundles();
}
private void SetBattleScene(Transform sceneTransform)
{
BattleWave val = ((Component)sceneTransform.Find("Beastfly States/Active")).gameObject.AddComponent<BattleWave>();
BattleScene component = GameObject.Find("Battle Scene").GetComponent<BattleScene>();
component.battleStartClip = null;
component.completed = false;
component.battleEndPause = 8f;
component.musicCueStart = null;
component.setPDBoolOnEnd = "no";
component.openGatesOnEnd = true;
component.toggleWavesAwake = true;
component.waves = new List<BattleWave> { val };
val.Init(component);
((Behaviour)((Component)component).GetComponent<BoxCollider2D>()).enabled = true;
}
private void DisableExistingPlatforms()
{
//IL_0084: Unknown result type (might be due to invalid IL or missing references)
//IL_0089: 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_0098: Unknown result type (might be due to invalid IL or missing references)
//IL_00a3: Unknown result type (might be due to invalid IL or missing references)
//IL_00a8: Unknown result type (might be due to invalid IL or missing references)
//IL_00b2: Unknown result type (might be due to invalid IL or missing references)
//IL_00b7: Unknown result type (might be due to invalid IL or missing references)
//IL_00d2: Unknown result type (might be due to invalid IL or missing references)
//IL_00d7: Unknown result type (might be due to invalid IL or missing references)
//IL_00e1: Unknown result type (might be due to invalid IL or missing references)
//IL_00e6: Unknown result type (might be due to invalid IL or missing references)
//IL_00f1: Unknown result type (might be due to invalid IL or missing references)
//IL_00f6: Unknown result type (might be due to invalid IL or missing references)
//IL_0100: Unknown result type (might be due to invalid IL or missing references)
//IL_0105: Unknown result type (might be due to invalid IL or missing references)
GameObject.Find("Bellshrine Sequence Swamp").SetActive(false);
foreach (GameObject item in Object.FindObjectsByType<GameObject>((FindObjectsInactive)0, (FindObjectsSortMode)0).Where(delegate(GameObject obj)
{
//IL_0006: Unknown result type (might be due to invalid IL or missing references)
//IL_000b: Unknown result type (might be due to invalid IL or missing references)
Vector3 position = obj.transform.position;
float x = position.x;
float y = position.y;
return (((Object)obj).name.Contains("swamp_plats_basic") || ((Object)obj).name.Contains("terrain collider")) && x > 45f && x < 78f && y > 3f && y < 24f;
}))
{
item.SetActive(false);
}
GameObject.Find("terrain collider non slider (2)").SetActive(false);
BoxCollider2D component = GameObject.Find("terrain collider (1)").GetComponent<BoxCollider2D>();
component.size -= Vector2.right * 4f;
((Collider2D)component).offset = ((Collider2D)component).offset + Vector2.left * 2f;
BoxCollider2D component2 = GameObject.Find("terrain collider (2)").GetComponent<BoxCollider2D>();
component2.size -= Vector2.right * 4.5f;
((Collider2D)component2).offset = ((Collider2D)component2).offset + Vector2.right * 2.25f;
}
private void ReplacePlatforms(Transform lavaPlats)
{
//IL_0020: Unknown result type (might be due to invalid IL or missing references)
//IL_0025: Unknown result type (might be due to invalid IL or missing references)
//IL_002f: Unknown result type (might be due to invalid IL or missing references)
//IL_0034: 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_00b5: Unknown result type (might be due to invalid IL or missing references)
GameObject val = AssetManager.Get<GameObject>("moss_crumble_plat");
if (!Object.op_Implicit((Object)(object)val))
{
Log.Error("Failed to get moss_crumble_plat!");
return;
}
lavaPlats.position += Vector3.down * 8f;
Sprite sprite2 = ((IEnumerable<Sprite>)Resources.FindObjectsOfTypeAll<Sprite>()).FirstOrDefault((Func<Sprite, bool>)((Sprite sprite) => ((Object)sprite).name == "moss_collapse_plat"));
for (int i = 1; i <= 6; i++)
{
Transform val2 = ((Component)lavaPlats).transform.Find($"Song Golem Floor {i}");
if (Object.op_Implicit((Object)(object)val2))
{
GameObject obj = Object.Instantiate<GameObject>(val, lavaPlats);
obj.SetActive(true);
obj.tag = "Target";
Extensions.SetPosition2D(obj.transform, Vector2.op_Implicit(val2.position));
((Component)obj.transform.Find("Sprite")).GetComponentInChildren<SpriteRenderer>().sprite = sprite2;
Object.Destroy((Object)(object)((Component)val2).gameObject);
}
}
}
private void DisableBench()
{
GameObject.Find("RestBench").SetActive(false);
}
}
internal class Mosquito : MonoBehaviour
{
private void Awake()
{
ModifyComponents();
}
private void ModifyComponents()
{
//IL_0015: 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)
((Component)((Component)this).transform.Find("Alert Range")).GetComponent<BoxCollider2D>().size = Vector2.one * 64f;
ModifyFSMs();
}
private void ModifyFSMs()
{
ModifyControlFSM();
ModifyShootFSM();
}
private void ModifyControlFSM()
{
//IL_005b: Unknown result type (might be due to invalid IL or missing references)
//IL_005d: Unknown result type (might be due to invalid IL or missing references)
//IL_0067: Unknown result type (might be due to invalid IL or missing references)
//IL_006c: Unknown result type (might be due to invalid IL or missing references)
//IL_0071: Unknown result type (might be due to invalid IL or missing references)
//IL_00a4: Unknown result type (might be due to invalid IL or missing references)
//IL_00a9: Unknown result type (might be due to invalid IL or missing references)
//IL_00aa: Unknown result type (might be due to invalid IL or missing references)
//IL_00b3: Expected O, but got Unknown
//IL_00c0: Unknown result type (might be due to invalid IL or missing references)
//IL_00c7: Expected O, but got Unknown
//IL_0107: Unknown result type (might be due to invalid IL or missing references)
//IL_010c: Unknown result type (might be due to invalid IL or missing references)
//IL_0115: Expected O, but got Unknown
//IL_0116: Unknown result type (might be due to invalid IL or missing references)
//IL_011d: Expected O, but got Unknown
//IL_0133: Unknown result type (might be due to invalid IL or missing references)
//IL_0138: Unknown result type (might be due to invalid IL or missing references)
//IL_0139: Unknown result type (might be due to invalid IL or missing references)
//IL_0143: Expected O, but got Unknown
//IL_0143: Unknown result type (might be due to invalid IL or missing references)
//IL_014f: Unknown result type (might be due to invalid IL or missing references)
//IL_0157: Expected O, but got Unknown
//IL_0159: 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_015f: Unknown result type (might be due to invalid IL or missing references)
//IL_0169: Expected O, but got Unknown
//IL_0169: Unknown result type (might be due to invalid IL or missing references)
//IL_016a: Unknown result type (might be due to invalid IL or missing references)
//IL_0179: Unknown result type (might be due to invalid IL or missing references)
//IL_0181: Expected O, but got Unknown
//IL_0190: Unknown result type (might be due to invalid IL or missing references)
//IL_0195: Unknown result type (might be due to invalid IL or missing references)
//IL_01a0: Unknown result type (might be due to invalid IL or missing references)
//IL_01a8: Unknown result type (might be due to invalid IL or missing references)
//IL_01b6: Expected O, but got Unknown
//IL_01c9: Unknown result type (might be due to invalid IL or missing references)
//IL_01d0: Expected O, but got Unknown
//IL_01e6: Unknown result type (might be due to invalid IL or missing references)
//IL_01eb: Unknown result type (might be due to invalid IL or missing references)
//IL_01ec: Unknown result type (might be due to invalid IL or missing references)
//IL_01f6: Expected O, but got Unknown
//IL_01f6: 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_0217: Expected O, but got Unknown
//IL_0219: Unknown result type (might be due to invalid IL or missing references)
//IL_021e: 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_0229: Expected O, but got Unknown
//IL_0229: 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_0239: Unknown result type (might be due to invalid IL or missing references)
//IL_0241: Unknown result type (might be due to invalid IL or missing references)
//IL_0243: Unknown result type (might be due to invalid IL or missing references)
//IL_0248: Unknown result type (might be due to invalid IL or missing references)
//IL_024f: Unknown result type (might be due to invalid IL or missing references)
//IL_0257: Expected O, but got Unknown
//IL_0259: Unknown result type (might be due to invalid IL or missing references)
//IL_025e: Unknown result type (might be due to invalid IL or missing references)
//IL_025f: Unknown result type (might be due to invalid IL or missing references)
//IL_0269: Expected O, but got Unknown
//IL_0269: Unknown result type (might be due to invalid IL or missing references)
//IL_026f: Unknown result type (might be due to invalid IL or missing references)
//IL_0274: Unknown result type (might be due to invalid IL or missing references)
//IL_0280: Expected O, but got Unknown
//IL_0280: Unknown result type (might be due to invalid IL or missing references)
//IL_0290: Unknown result type (might be due to invalid IL or missing references)
//IL_02a0: Unknown result type (might be due to invalid IL or missing references)
//IL_02b0: Unknown result type (might be due to invalid IL or missing references)
//IL_02b2: Unknown result type (might be due to invalid IL or missing references)
//IL_02b7: Unknown result type (might be due to invalid IL or missing references)
//IL_02be: Unknown result type (might be due to invalid IL or missing references)
//IL_02c5: Unknown result type (might be due to invalid IL or missing references)
//IL_02cc: Unknown result type (might be due to invalid IL or missing references)
//IL_02d4: Expected O, but got Unknown
//IL_02d6: Unknown result type (might be due to invalid IL or missing references)
//IL_02db: Unknown result type (might be due to invalid IL or missing references)
//IL_02e4: Expected O, but got Unknown
//IL_02e6: Unknown result type (might be due to invalid IL or missing references)
//IL_02eb: Unknown result type (might be due to invalid IL or missing references)
//IL_02ec: Unknown result type (might be due to invalid IL or missing references)
//IL_02f6: Expected O, but got Unknown
//IL_02f6: Unknown result type (might be due to invalid IL or missing references)
//IL_02fe: Unknown result type (might be due to invalid IL or missing references)
//IL_030a: Unknown result type (might be due to invalid IL or missing references)
//IL_0311: Unknown result type (might be due to invalid IL or missing references)
//IL_0321: Unknown result type (might be due to invalid IL or missing references)
//IL_0328: Unknown result type (might be due to invalid IL or missing references)
//IL_032f: Unknown result type (might be due to invalid IL or missing references)
//IL_033b: Expected O, but got Unknown
//IL_033d: Unknown result type (might be due to invalid IL or missing references)
//IL_0342: Unknown result type (might be due to invalid IL or missing references)
//IL_0343: Unknown result type (might be due to invalid IL or missing references)
//IL_034d: Expected O, but got Unknown
//IL_034d: Unknown result type (might be due to invalid IL or missing references)
//IL_035a: Expected O, but got Unknown
//IL_035c: Unknown result type (might be due to invalid IL or missing references)
//IL_0361: Unknown result type (might be due to invalid IL or missing references)
//IL_0362: Unknown result type (might be due to invalid IL or missing references)
//IL_036c: Expected O, but got Unknown
//IL_036c: Unknown result type (might be due to invalid IL or missing references)
//IL_037c: Unknown result type (might be due to invalid IL or missing references)
//IL_038b: Unknown result type (might be due to invalid IL or missing references)
//IL_039b: Unknown result type (might be due to invalid IL or missing references)
//IL_03a3: Unknown result type (might be due to invalid IL or missing references)
//IL_03ab: Unknown result type (might be due to invalid IL or missing references)
//IL_03ae: Unknown result type (might be due to invalid IL or missing references)
//IL_03b3: Unknown result type (might be due to invalid IL or missing references)
//IL_03bf: Unknown result type (might be due to invalid IL or missing references)
//IL_03ca: Unknown result type (might be due to invalid IL or missing references)
//IL_03d2: Expected O, but got Unknown
//IL_03d4: Unknown result type (might be due to invalid IL or missing references)
//IL_03d9: Unknown result type (might be due to invalid IL or missing references)
//IL_03da: Unknown result type (might be due to invalid IL or missing references)
//IL_03e4: Expected O, but got Unknown
//IL_03e4: Unknown result type (might be due to invalid IL or missing references)
//IL_03e5: 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_0405: Expected O, but got Unknown
//IL_0414: Unknown result type (might be due to invalid IL or missing references)
//IL_0419: Unknown result type (might be due to invalid IL or missing references)
//IL_0424: Unknown result type (might be due to invalid IL or missing references)
//IL_042c: Unknown result type (might be due to invalid IL or missing references)
//IL_043a: Expected O, but got Unknown
//IL_044d: Unknown result type (might be due to invalid IL or missing references)
//IL_0454: Expected O, but got Unknown
//IL_046a: Unknown result type (might be due to invalid IL or missing references)
//IL_046f: Unknown result type (might be due to invalid IL or missing references)
//IL_0470: Unknown result type (might be due to invalid IL or missing references)
//IL_047a: Expected O, but got Unknown
//IL_047a: 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_048d: Unknown result type (might be due to invalid IL or missing references)
//IL_049a: Expected O, but got Unknown
//IL_049c: Unknown result type (might be due to invalid IL or missing references)
//IL_04a1: Unknown result type (might be due to invalid IL or missing references)
//IL_04b1: Unknown result type (might be due to invalid IL or missing references)
//IL_04c1: Unknown result type (might be due to invalid IL or missing references)
//IL_04cc: Unknown result type (might be due to invalid IL or missing references)
//IL_04d4: Expected O, but got Unknown
//IL_04e3: Unknown result type (might be due to invalid IL or missing references)
//IL_04e8: 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_04fb: Unknown result type (might be due to invalid IL or missing references)
//IL_0509: Expected O, but got Unknown
//IL_051c: Unknown result type (might be due to invalid IL or missing references)
//IL_0523: Expected O, but got Unknown
//IL_0539: Unknown result type (might be due to invalid IL or missing references)
//IL_053e: Unknown result type (might be due to invalid IL or missing references)
//IL_053f: Unknown result type (might be due to invalid IL or missing references)
//IL_0549: Expected O, but got Unknown
//IL_0549: Unknown result type (might be due to invalid IL or missing references)
//IL_0556: Expected O, but got Unknown
//IL_0558: Unknown result type (might be due to invalid IL or missing references)
//IL_055d: Unknown result type (might be due to invalid IL or missing references)
//IL_055e: Unknown result type (might be due to invalid IL or missing references)
//IL_0568: Expected O, but got Unknown
//IL_0568: Unknown result type (might be due to invalid IL or missing references)
//IL_0574: Unknown result type (might be due to invalid IL or missing references)
//IL_057c: Expected O, but got Unknown
//IL_057e: Unknown result type (might be due to invalid IL or missing references)
//IL_0583: 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_058e: Expected O, but got Unknown
//IL_058e: Unknown result type (might be due to invalid IL or missing references)
//IL_05a3: Unknown result type (might be due to invalid IL or missing references)
//IL_05b2: Unknown result type (might be due to invalid IL or missing references)
//IL_05ba: Expected O, but got Unknown
//IL_05c9: Unknown result type (might be due to invalid IL or missing references)
//IL_05ce: Unknown result type (might be due to invalid IL or missing references)
//IL_05d6: Unknown result type (might be due to invalid IL or missing references)
//IL_05de: Unknown result type (might be due to invalid IL or missing references)
//IL_05ec: Expected O, but got Unknown
//IL_061f: Unknown result type (might be due to invalid IL or missing references)
//IL_0626: Expected O, but got Unknown
//IL_063c: Unknown result type (might be due to invalid IL or missing references)
//IL_0641: Unknown result type (might be due to invalid IL or missing references)
//IL_0642: Unknown result type (might be due to invalid IL or missing references)
//IL_064c: Expected O, but got Unknown
//IL_064c: Unknown result type (might be due to invalid IL or missing references)
//IL_065f: Expected O, but got Unknown
//IL_0661: Unknown result type (might be due to invalid IL or missing references)
//IL_0666: Unknown result type (might be due to invalid IL or missing references)
//IL_0667: Unknown result type (might be due to invalid IL or missing references)
//IL_0671: Expected O, but got Unknown
//IL_0671: 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_068a: Unknown result type (might be due to invalid IL or missing references)
//IL_0697: Expected O, but got Unknown
//IL_0699: Unknown result type (might be due to invalid IL or missing references)
//IL_069e: Unknown result type (might be due to invalid IL or missing references)
//IL_069f: Unknown result type (might be due to invalid IL or missing references)
//IL_06a9: Expected O, but got Unknown
//IL_06a9: Unknown result type (might be due to invalid IL or missing references)
//IL_06aa: Unknown result type (might be due to invalid IL or missing references)
//IL_06b9: Unknown result type (might be due to invalid IL or missing references)
//IL_06c9: Unknown result type (might be due to invalid IL or missing references)
//IL_06d9: Unknown result type (might be due to invalid IL or missing references)
//IL_06e1: Expected O, but got Unknown
//IL_06e3: 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_06e9: Unknown result type (might be due to invalid IL or missing references)
//IL_06f3: Expected O, but got Unknown
//IL_06f3: Unknown result type (might be due to invalid IL or missing references)
//IL_0703: Unknown result type (might be due to invalid IL or missing references)
//IL_070b: Expected O, but got Unknown
//IL_071a: Unknown result type (might be due to invalid IL or missing references)
//IL_071f: Unknown result type (might be due to invalid IL or missing references)
//IL_072a: Unknown result type (might be due to invalid IL or missing references)
//IL_0732: Unknown result type (might be due to invalid IL or missing references)
//IL_0740: Expected O, but got Unknown
//IL_0753: Unknown result type (might be due to invalid IL or missing references)
//IL_075a: Expected O, but got Unknown
//IL_0770: Unknown result type (might be due to invalid IL or missing references)
//IL_0775: Unknown result type (might be due to invalid IL or missing references)
//IL_0776: Unknown result type (might be due to invalid IL or missing references)
//IL_0780: Expected O, but got Unknown
//IL_0781: Expected O, but got Unknown
//IL_0790: Unknown result type (might be due to invalid IL or missing references)
//IL_0795: Unknown result type (might be due to invalid IL or missing references)
//IL_07a0: Unknown result type (might be due to invalid IL or missing references)
//IL_07a8: Unknown result type (might be due to invalid IL or missing references)
//IL_07b6: Expected O, but got Unknown
//IL_07d4: Unknown result type (might be due to invalid IL or missing references)
//IL_07d9: Unknown result type (might be due to invalid IL or missing references)
//IL_07e1: 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_07f8: Expected O, but got Unknown
//IL_0087: Unknown result type (might be due to invalid IL or missing references)
//IL_0089: 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_0098: Unknown result type (might be due to invalid IL or missing references)
//IL_009d: Unknown result type (might be due to invalid IL or missing references)
PlayMakerFSM val = FSMUtility.LocateMyFSM(((Component)this).gameObject, "Control");
Fsm fsm = val.Fsm;
FsmVariables fsmVariables = val.FsmVariables;
List<FsmVector2> list = fsmVariables.Vector2Variables.ToList();
List<FsmGameObject> list2 = fsmVariables.GameObjectVariables.ToList();
Vector2 val2 = default(Vector2);
((Vector2)(ref val2))..ctor(61.5f, 13.5f);
if (((Object)this).name.Contains("(1)"))
{
val2 += Vector2.left * 8f;
}
else if (((Object)this).name.Contains("(2)"))
{
val2 += Vector2.right * 8f;
}
FsmVector2 val3 = new FsmVector2("Summon Position")
{
Value = val2
};
list.Add(val3);
FsmGameObject val4 = new FsmGameObject("Hero");
list2.Add(val4);
List<FsmState> list3 = fsm.States.ToList();
FsmState state = fsm.GetState("Start Idle");
GameObject val5 = GameObject.Find("Summon Enemies");
FsmEvent fsmEvent = FsmEvent.GetFsmEvent("SUMMON");
FsmFloat val6 = new FsmFloat("")
{
UseVariable = true
};
FsmState val7 = new FsmState(fsm);
val7.Name = "Activate";
val7.Actions = (FsmStateAction[])(object)new FsmStateAction[2]
{
(FsmStateAction)new SetCollider
{
gameObject = new FsmOwnerDefault(),
active = FsmBool.op_Implicit(true),
resetOnExit = false
},
(FsmStateAction)new Tk2dSpriteSetColor
{
gameObject = new FsmOwnerDefault(),
color = FsmColor.op_Implicit(Color.white),
everyframe = false
}
};
val7.Transitions = (FsmTransition[])(object)new FsmTransition[1]
{
new FsmTransition
{
FsmEvent = FsmEvent.Finished,
ToFsmState = state,
ToState = state.Name
}
};
FsmState val8 = val7;
list3.Add(val8);
val7 = new FsmState(fsm);
val7.Name = "Fly In";
val7.Actions = (FsmStateAction[])(object)new FsmStateAction[8]
{
(FsmStateAction)new Tk2dPlayAnimation
{
gameObject = new FsmOwnerDefault(),
animLibName = FsmString.op_Implicit(""),
clipName = FsmString.op_Implicit("Shift Fly")
},
(FsmStateAction)new SetPosition2d
{
gameObject = new FsmOwnerDefault(),
vector = val3,
x = val6,
y = val6,
space = (Space)0,
everyFrame = false,
lateUpdate = false
},
(FsmStateAction)new Translate
{
gameObject = new FsmOwnerDefault(),
vector = new FsmVector3("")
{
UseVariable = true
},
x = FsmFloat.op_Implicit(0f),
y = FsmFloat.op_Implicit(10f),
z = FsmFloat.op_Implicit(20f),
space = (Space)0,
perSecond = false,
everyFrame = false,
lateUpdate = false,
fixedUpdate = false
},
(FsmStateAction)new GetHero
{
storeResult = val4
},
(FsmStateAction)new FaceObjectV2
{
objectA = new FsmOwnerDefault(),
objectB = val4,
spriteFacesRight = FsmBool.op_Implicit(false),
playNewAnimation = false,
newAnimationClip = FsmString.op_Implicit(""),
resetFrame = false,
everyFrame = false,
pauseBetweenTurns = 0.5f
},
(FsmStateAction)new SetMeshRenderer
{
gameObject = new FsmOwnerDefault(),
active = FsmBool.op_Implicit(true)
},
(FsmStateAction)new AnimatePositionBy
{
gameObject = new FsmOwnerDefault(),
shiftBy = FsmVector3.op_Implicit(new Vector3(0f, -10f, -20f)),
time = FsmFloat.op_Implicit(0.75f),
speed = val6,
delay = val6,
easeType = (EaseType)13,
reverse = FsmBool.op_Implicit(false),
finishEvent = FsmEvent.Finished,
realTime = false
},
(FsmStateAction)new Tk2dSpriteTweenColor
{
gameObject = new FsmOwnerDefault(),
color = FsmColor.op_Implicit(Color.white),
duration = FsmFloat.op_Implicit(0.75f)
}
};
val7.Transitions = (FsmTransition[])(object)new FsmTransition[1]
{
new FsmTransition
{
FsmEvent = FsmEvent.Finished,
ToFsmState = val8,
ToState = val8.Name
}
};
FsmState val9 = val7;
list3.Add(val9);
val7 = new FsmState(fsm);
val7.Name = "Set Summoned";
val7.Actions = (FsmStateAction[])(object)new FsmStateAction[2]
{
(FsmStateAction)new SetParent
{
gameObject = new FsmOwnerDefault(),
parent = null,
resetLocalPosition = FsmBool.op_Implicit(false),
resetLocalRotation = FsmBool.op_Implicit(false)
},
(FsmStateAction)new WaitRandom
{
timeMin = FsmFloat.op_Implicit(0.4f),
timeMax = FsmFloat.op_Implicit(0.8f),
finishEvent = FsmEvent.Finished,
realTime = false
}
};
val7.Transitions = (FsmTransition[])(object)new FsmTransition[1]
{
new FsmTransition
{
FsmEvent = FsmEvent.Finished,
ToFsmState = val9,
ToState = val9.Name
}
};
FsmState val10 = val7;
list3.Add(val10);
val7 = new FsmState(fsm);
val7.Name = "Fly In Ready";
val7.Actions = (FsmStateAction[])(object)new FsmStateAction[3]
{
(FsmStateAction)new SetMeshRenderer
{
gameObject = new FsmOwnerDefault(),
active = FsmBool.op_Implicit(false)
},
(FsmStateAction)new SetCollider
{
gameObject = new FsmOwnerDefault(),
active = FsmBool.op_Implicit(false),
resetOnExit = false
},
(FsmStateAction)new Tk2dSpriteSetColor
{
gameObject = new FsmOwnerDefault(),
color = FsmColor.op_Implicit(new Color(0f, 0f, 0f, 0f)),
everyframe = false
}
};
val7.Transitions = (FsmTransition[])(object)new FsmTransition[1]
{
new FsmTransition
{
FsmEvent = fsmEvent,
ToFsmState = val10,
ToState = val10.Name
}
};
FsmState val11 = val7;
list3.Add(val11);
HealthManager component = ((Component)this).GetComponent<HealthManager>();
component.deathReset = true;
component.hasSpecialDeath = true;
component.shellShardDrops = 0;
val7 = new FsmState(fsm);
val7.Name = "Reset";
val7.Actions = (FsmStateAction[])(object)new FsmStateAction[4]
{
(FsmStateAction)new SetHP
{
target = new FsmOwnerDefault(),
hp = FsmInt.op_Implicit(component.initHp)
},
(FsmStateAction)new SetParent
{
gameObject = new FsmOwnerDefault(),
parent = FsmGameObject.op_Implicit(val5),
resetLocalPosition = FsmBool.op_Implicit(true),
resetLocalRotation = FsmBool.op_Implicit(false)
},
(FsmStateAction)new SetVelocity2d
{
gameObject = new FsmOwnerDefault(),
vector = FsmVector2.op_Implicit(Vector2.zero),
x = FsmFloat.op_Implicit(0f),
y = FsmFloat.op_Implicit(0f),
everyFrame = false
},
(FsmStateAction)new AudioStopV2
{
gameObject = new FsmOwnerDefault(),
fadeTime = FsmFloat.op_Implicit(0f),
cancelOnEarlyExit = false
}
};
val7.Transitions = (FsmTransition[])(object)new FsmTransition[1]
{
new FsmTransition
{
FsmEvent = FsmEvent.Finished,
ToFsmState = val11,
ToState = val11.Name
}
};
FsmState val12 = val7;
list3.Add(val12);
val7 = new FsmState(fsm);
val7.Name = "Death";
val7.Actions = (FsmStateAction[])(object)new FsmStateAction[1] { (FsmStateAction)new SimulateDeath
{
target = new FsmOwnerDefault()
} };
val7.Transitions = (FsmTransition[])(object)new FsmTransition[1]
{
new FsmTransition
{
FsmEvent = FsmEvent.Finished,
ToFsmState = val12,
ToState = val12.Name
}
};
FsmState val13 = val7;
list3.Add(val13);
FsmEvent fsmEvent2 = FsmEvent.GetFsmEvent("ZERO HP");
FsmTransition element = new FsmTransition
{
FsmEvent = fsmEvent2,
ToFsmState = val13,
ToState = val13.Name
};
fsmVariables.GameObjectVariables = list2.ToArray();
fsmVariables.Vector2Variables = list.ToArray();
fsm.States = list3.ToArray();
fsm.Events = fsm.Events.Append(fsmEvent).ToArray();
fsm.GlobalTransitions = fsm.GlobalTransitions.Append(element).ToArray();
val.SetState(val11.Name);
}
private void ModifyShootFSM()
{
//IL_002c: Unknown result type (might be due to invalid IL or missing references)
//IL_0031: Unknown result type (might be due to invalid IL or missing references)
//IL_0038: Unknown result type (might be due to invalid IL or missing references)
//IL_003f: Unknown result type (might be due to invalid IL or missing references)
//IL_004c: Expected O, but got Unknown
Fsm fsm = FSMUtility.LocateMyFSM(((Component)this).gameObject, "Shoot").Fsm;
FsmState state = fsm.GetState("Idle");
FsmEvent fsmEvent = FsmEvent.GetFsmEvent("ZERO HP");
fsm.GlobalTransitions = Enumerable.Append(element: new FsmTransition
{
FsmEvent = fsmEvent,
ToFsmState = state,
ToState = state.Name
}, source: fsm.GlobalTransitions).ToArray();
}
}
}