Some mods may be broken due to the recent Alloyed Collective update.
Decompiled source of Archaic Wisp v1.1.9
plugins/Moffein-ArchaicWisp/ArchaicWisp.dll
Decompiled 3 weeks agousing 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.Configuration; using EntityStates; using EntityStates.GreaterWispMonster; using On.EntityStates.GreaterWispMonster; using On.RoR2; using R2API; using R2API.Utils; using RoR2; using RoR2.ContentManagement; using RoR2.Navigation; using RoR2.Projectile; using SneedUtils; using UnityEngine; using UnityEngine.AddressableAssets; using Zio.FileSystems; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] [assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")] [assembly: AssemblyCompany("ArchaicWisp")] [assembly: AssemblyConfiguration("Debug")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0+9b3385e6eba3884aa3572f0b643f425c8a87ccfb")] [assembly: AssemblyProduct("ArchaicWisp")] [assembly: AssemblyTitle("ArchaicWisp")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.0.0.0")] [module: UnverifiableCode] namespace SneedUtils { public class SneedUtils { public static int FindEnemiesInSphere(float radius, Vector3 position, TeamIndex team, bool airborneOnly = false) { //IL_0009: 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_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) int num = 0; List<HealthComponent> list = new List<HealthComponent>(); Collider[] array = Physics.OverlapSphere(position, radius, LayerMask.op_Implicit(((LayerIndex)(ref LayerIndex.entityPrecise)).mask)); for (int i = 0; i < array.Length; i++) { HurtBox component = ((Component)array[i]).GetComponent<HurtBox>(); if (!Object.op_Implicit((Object)(object)component)) { continue; } HealthComponent healthComponent = component.healthComponent; if (Object.op_Implicit((Object)(object)healthComponent) && !list.Contains(healthComponent)) { list.Add(healthComponent); if (Object.op_Implicit((Object)(object)healthComponent.body) && Object.op_Implicit((Object)(object)healthComponent.body.teamComponent) && healthComponent.body.teamComponent.teamIndex != team && (!airborneOnly || healthComponent.body.isFlying || (Object.op_Implicit((Object)(object)healthComponent.body.characterMotor) && !healthComponent.body.characterMotor.isGrounded))) { num++; } } } return num; } public static void RemoveItemTag(ItemDef itemDef, ItemTag tag) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_001a: Unknown result type (might be due to invalid IL or missing references) if (itemDef.ContainsTag(tag)) { List<ItemTag> list = itemDef.tags.ToList(); list.Remove(tag); itemDef.tags = list.ToArray(); } } public static void AddItemTag(ItemDef itemDef, ItemTag tag) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_001d: Unknown result type (might be due to invalid IL or missing references) if (!itemDef.ContainsTag(tag)) { List<ItemTag> list = itemDef.tags.ToList(); list.Add(tag); itemDef.tags = list.ToArray(); } } public static void DumpEntityStateConfig(EntityStateConfiguration esc) { for (int i = 0; i < esc.serializedFieldsCollection.serializedFields.Length; i++) { if (Object.op_Implicit(esc.serializedFieldsCollection.serializedFields[i].fieldValue.objectValue)) { Debug.Log((object)(esc.serializedFieldsCollection.serializedFields[i].fieldName + " - " + (object)esc.serializedFieldsCollection.serializedFields[i].fieldValue.objectValue)); } else { Debug.Log((object)(esc.serializedFieldsCollection.serializedFields[i].fieldName + " - " + esc.serializedFieldsCollection.serializedFields[i].fieldValue.stringValue)); } } } public static void DumpEntityStateConfig(string entityStateName) { EntityStateConfiguration esc = LegacyResourcesAPI.Load<EntityStateConfiguration>("entitystateconfigurations/" + entityStateName); DumpEntityStateConfig(esc); } public static Object GetEntityStateFieldObject(string entityStateName, string fieldName) { EntityStateConfiguration val = LegacyResourcesAPI.Load<EntityStateConfiguration>("entitystateconfigurations/" + entityStateName); for (int i = 0; i < val.serializedFieldsCollection.serializedFields.Length; i++) { if (val.serializedFieldsCollection.serializedFields[i].fieldName == fieldName) { return val.serializedFieldsCollection.serializedFields[i].fieldValue.objectValue; } } return null; } public static string GetEntityStateFieldString(string entityStateName, string fieldName) { EntityStateConfiguration val = LegacyResourcesAPI.Load<EntityStateConfiguration>("entitystateconfigurations/" + entityStateName); for (int i = 0; i < val.serializedFieldsCollection.serializedFields.Length; i++) { if (val.serializedFieldsCollection.serializedFields[i].fieldName == fieldName) { return val.serializedFieldsCollection.serializedFields[i].fieldValue.stringValue; } } return string.Empty; } public static bool SetEntityStateField(string entityStateName, string fieldName, Object newObject) { EntityStateConfiguration val = LegacyResourcesAPI.Load<EntityStateConfiguration>("entitystateconfigurations/" + entityStateName); for (int i = 0; i < val.serializedFieldsCollection.serializedFields.Length; i++) { if (val.serializedFieldsCollection.serializedFields[i].fieldName == fieldName) { val.serializedFieldsCollection.serializedFields[i].fieldValue.objectValue = newObject; return true; } } return false; } public static bool SetEntityStateField(string entityStateName, string fieldName, string value) { EntityStateConfiguration val = LegacyResourcesAPI.Load<EntityStateConfiguration>("entitystateconfigurations/" + entityStateName); for (int i = 0; i < val.serializedFieldsCollection.serializedFields.Length; i++) { if (val.serializedFieldsCollection.serializedFields[i].fieldName == fieldName) { val.serializedFieldsCollection.serializedFields[i].fieldValue.stringValue = value; return true; } } return false; } } } namespace ArchaicWisp { public class ArchaicWispContent : IContentPackProvider { [CompilerGenerated] private sealed class <FinalizeAsync>d__10 : IEnumerator<object>, IEnumerator, IDisposable { private int <>1__state; private object <>2__current; public FinalizeAsyncArgs args; public ArchaicWispContent <>4__this; object IEnumerator<object>.Current { [DebuggerHidden] get { return <>2__current; } } object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } [DebuggerHidden] public <FinalizeAsync>d__10(int <>1__state) { this.<>1__state = <>1__state; } [DebuggerHidden] void IDisposable.Dispose() { <>1__state = -2; } private bool MoveNext() { if (<>1__state != 0) { return false; } <>1__state = -1; args.ReportProgress(1f); 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 <GenerateContentPackAsync>d__11 : IEnumerator<object>, IEnumerator, IDisposable { private int <>1__state; private object <>2__current; public GetContentPackAsyncArgs args; public ArchaicWispContent <>4__this; object IEnumerator<object>.Current { [DebuggerHidden] get { return <>2__current; } } object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } [DebuggerHidden] public <GenerateContentPackAsync>d__11(int <>1__state) { this.<>1__state = <>1__state; } [DebuggerHidden] void IDisposable.Dispose() { <>1__state = -2; } private bool MoveNext() { if (<>1__state != 0) { return false; } <>1__state = -1; ContentPack.Copy(content, args.output); 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 <LoadStaticContentAsync>d__12 : IEnumerator<object>, IEnumerator, IDisposable { private int <>1__state; private object <>2__current; public LoadStaticContentAsyncArgs args; public ArchaicWispContent <>4__this; object IEnumerator<object>.Current { [DebuggerHidden] get { return <>2__current; } } object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } [DebuggerHidden] public <LoadStaticContentAsync>d__12(int <>1__state) { this.<>1__state = <>1__state; } [DebuggerHidden] void IDisposable.Dispose() { <>1__state = -2; } private bool MoveNext() { if (<>1__state != 0) { return false; } <>1__state = -1; content.bodyPrefabs.Add((GameObject[])(object)new GameObject[1] { ArchaicWispObject }); content.masterPrefabs.Add((GameObject[])(object)new GameObject[1] { ArchaicWispMaster }); content.unlockableDefs.Add((UnlockableDef[])(object)new UnlockableDef[1] { ArchaicWispLogbookUnlockable }); content.projectilePrefabs.Add(projectilePrefabs.ToArray()); 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(); } } public static AssetBundle assets; public static ContentPack content = new ContentPack(); public static GameObject ArchaicWispObject; public static GameObject ArchaicWispMaster; public static UnlockableDef ArchaicWispLogbookUnlockable; public static DirectorCardHolder ArchaicWispCard; public static DirectorCardHolder ArchaicWispLoopCard; public static List<GameObject> projectilePrefabs = new List<GameObject>(); public string identifier => "MoffeinArchaicWisp.content"; [IteratorStateMachine(typeof(<FinalizeAsync>d__10))] public IEnumerator FinalizeAsync(FinalizeAsyncArgs args) { //yield-return decompiler failed: Unexpected instruction in Iterator.Dispose() return new <FinalizeAsync>d__10(0) { <>4__this = this, args = args }; } [IteratorStateMachine(typeof(<GenerateContentPackAsync>d__11))] public IEnumerator GenerateContentPackAsync(GetContentPackAsyncArgs args) { //yield-return decompiler failed: Unexpected instruction in Iterator.Dispose() return new <GenerateContentPackAsync>d__11(0) { <>4__this = this, args = args }; } [IteratorStateMachine(typeof(<LoadStaticContentAsync>d__12))] public IEnumerator LoadStaticContentAsync(LoadStaticContentAsyncArgs args) { //yield-return decompiler failed: Unexpected instruction in Iterator.Dispose() return new <LoadStaticContentAsync>d__12(0) { <>4__this = this, args = args }; } } [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInPlugin("com.Moffein.ArchaicWisp", "Archaic Wisp", "1.1.9")] [NetworkCompatibility(/*Could not decode attribute arguments.*/)] public class ArchaicWispPlugin : BaseUnityPlugin { [Serializable] [CompilerGenerated] private sealed class <>c { public static readonly <>c <>9 = new <>c(); public static hook_OnEnter <>9__2_0; public static Func<char, bool> <>9__4_0; public static Func<char, bool> <>9__4_1; internal void <Awake>b__2_0(orig_OnEnter orig, ChargeCannons self) { orig.Invoke(self); Debug.Log((object)self.baseDuration); } internal bool <ReadConfig>b__4_0(char c) { return !char.IsWhiteSpace(c); } internal bool <ReadConfig>b__4_1(char c) { return !char.IsWhiteSpace(c); } } public static PluginInfo pluginInfo; public static List<StageSpawnInfo> StageList = new List<StageSpawnInfo>(); public void Awake() { //IL_007c: Unknown result type (might be due to invalid IL or missing references) //IL_0086: Expected O, but got Unknown //IL_009b: Unknown result type (might be due to invalid IL or missing references) //IL_00a0: Unknown result type (might be due to invalid IL or missing references) //IL_00a6: Expected O, but got Unknown pluginInfo = ((BaseUnityPlugin)this).Info; new LanguageTokens(); using (Stream stream = Assembly.GetExecutingAssembly().GetManifestResourceStream("ArchaicWisp.archwispbundle")) { ArchaicWispContent.assets = AssetBundle.LoadFromStream(stream); } ReadConfig(); Prefab.Init(); Director.Init(); ModifySkills.Init(); RoR2Application.onLoad = (Action)Delegate.Combine(RoR2Application.onLoad, new Action(LateSetup)); ContentManager.collectContentPackProviders += new CollectContentPackProvidersDelegate(ContentManager_collectContentPackProviders); object obj = <>c.<>9__2_0; if (obj == null) { hook_OnEnter val = delegate(orig_OnEnter orig, ChargeCannons self) { orig.Invoke(self); Debug.Log((object)self.baseDuration); }; <>c.<>9__2_0 = val; obj = (object)val; } ChargeCannons.OnEnter += (hook_OnEnter)obj; } public void LateSetup() { ItemDisplays.DisplayRules(ArchaicWispContent.ArchaicWispObject); } public void ReadConfig() { //IL_0011: 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_0030: Expected O, but got Unknown //IL_0030: Expected O, but got Unknown //IL_0046: Unknown result type (might be due to invalid IL or missing references) //IL_005b: Unknown result type (might be due to invalid IL or missing references) //IL_0065: Expected O, but got Unknown //IL_0065: Expected O, but got Unknown //IL_017e: Unknown result type (might be due to invalid IL or missing references) string value = ((BaseUnityPlugin)this).Config.Bind<string>(new ConfigDefinition("Spawns", "Stage List"), "goldshores, dampcavesimple, itdampcave, sulfurpools, skymeadow, itskymeadow, wispgraveyard - loop, helminthroost, lemuriantemple", new ConfigDescription("What stages the monster will show up on. Add a '- loop' after the stagename to make it only spawn after looping. List of stage names can be found at https://github.com/risk-of-thunder/R2Wiki/wiki/List-of-scene-names", (AcceptableValueBase)null, Array.Empty<object>())).Value; string value2 = ((BaseUnityPlugin)this).Config.Bind<string>(new ConfigDefinition("Spawns", "Remove Greater Wisps"), "goldshores, dampcavesimple, itdampcave, sulfurpools, skymeadow, itskymeadow, helminthroost, lemuriantemple", new ConfigDescription("Remove Greater Wisps from these stages to prevent role overlap.", (AcceptableValueBase)null, Array.Empty<object>())).Value; value = new string((from c in value.ToCharArray() where !char.IsWhiteSpace(c) select c).ToArray()); string[] array = value.Split(','); string[] array2 = array; foreach (string text in array2) { string[] array3 = text.Split('-'); string stageName = array3[0]; int minStages = 0; if (array3.Length > 1) { minStages = 5; } StageList.Add(new StageSpawnInfo(stageName, minStages)); } value2 = new string((from c in value2.ToCharArray() where !char.IsWhiteSpace(c) select c).ToArray()); string[] array4 = value.Split(','); string[] array5 = array4; foreach (string text2 in array5) { string[] array6 = text2.Split('-'); string text3 = array6[0]; SceneDef val = ScriptableObject.CreateInstance<SceneDef>(); val.baseSceneNameOverride = text3; Helpers.RemoveExistingMonsterFromStage(MonsterNames.GreaterWisp, DirectorAPI.GetStageEnumFromSceneDef(val), text3); } } private void ContentManager_collectContentPackProviders(AddContentPackProviderDelegate addContentPackProvider) { addContentPackProvider.Invoke((IContentPackProvider)(object)new ArchaicWispContent()); } } public class StageSpawnInfo { private string stageName; private int minStages; public StageSpawnInfo(string stageName, int minStages) { this.stageName = stageName; this.minStages = minStages; } public string GetStageName() { return stageName; } public int GetMinStages() { return minStages; } } public class Director { private static bool initialized; public static void Init() { //IL_001c: Unknown result type (might be due to invalid IL or missing references) //IL_0021: Unknown result type (might be due to invalid IL or missing references) //IL_0051: Unknown result type (might be due to invalid IL or missing references) //IL_0058: Unknown result type (might be due to invalid IL or missing references) //IL_005f: Unknown result type (might be due to invalid IL or missing references) //IL_0066: Unknown result type (might be due to invalid IL or missing references) //IL_007e: Unknown result type (might be due to invalid IL or missing references) //IL_0088: Expected O, but got Unknown //IL_0097: Unknown result type (might be due to invalid IL or missing references) //IL_009c: 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_00aa: Unknown result type (might be due to invalid IL or missing references) //IL_00b1: Unknown result type (might be due to invalid IL or missing references) //IL_00b8: Unknown result type (might be due to invalid IL or missing references) //IL_00ba: Unknown result type (might be due to invalid IL or missing references) //IL_00c0: Expected O, but got Unknown //IL_00c0: Unknown result type (might be due to invalid IL or missing references) //IL_00c5: 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_00ce: Unknown result type (might be due to invalid IL or missing references) //IL_00d4: Expected O, but got Unknown //IL_00d4: Unknown result type (might be due to invalid IL or missing references) //IL_00d9: 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_00e7: 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_00f5: Unknown result type (might be due to invalid IL or missing references) //IL_00f7: Unknown result type (might be due to invalid IL or missing references) //IL_00fe: Expected O, but got Unknown //IL_00fe: Unknown result type (might be due to invalid IL or missing references) //IL_0103: Unknown result type (might be due to invalid IL or missing references) //IL_010b: Unknown result type (might be due to invalid IL or missing references) //IL_010d: Unknown result type (might be due to invalid IL or missing references) //IL_0114: Expected O, but got Unknown //IL_0129: Unknown result type (might be due to invalid IL or missing references) //IL_012e: Unknown result type (might be due to invalid IL or missing references) //IL_0167: Unknown result type (might be due to invalid IL or missing references) //IL_016c: Unknown result type (might be due to invalid IL or missing references) //IL_01ea: Unknown result type (might be due to invalid IL or missing references) if (initialized) { return; } initialized = true; CharacterSpawnCard val = Addressables.LoadAssetAsync<CharacterSpawnCard>((object)"RoR2/Base/GreaterWisp/cscGreaterWisp.asset").WaitForCompletion(); CharacterSpawnCard val2 = ScriptableObject.CreateInstance<CharacterSpawnCard>(); ((Object)val2).name = "cscArchWisp"; ((SpawnCard)val2).prefab = ArchaicWispContent.ArchaicWispMaster; ((SpawnCard)val2).sendOverNetwork = true; ((SpawnCard)val2).hullSize = (HullClassification)0; ((SpawnCard)val2).nodeGraphType = (GraphType)1; ((SpawnCard)val2).requiredFlags = (NodeFlags)0; ((SpawnCard)val2).forbiddenFlags = (NodeFlags)4; ((SpawnCard)val2).directorCreditCost = 240; ((SpawnCard)val2).occupyPosition = false; val2.loadout = new SerializableLoadout(); val2.noElites = false; val2.forbiddenAsBoss = false; DirectorCard val3 = new DirectorCard { spawnCard = (SpawnCard)(object)val2, selectionWeight = 1, preventOverhead = false, minimumStageCompletions = 0, spawnDistance = (MonsterSpawnDistance)0 }; DirectorCardHolder archaicWispCard = new DirectorCardHolder { Card = val3, MonsterCategory = (MonsterCategory)3 }; DirectorCard card = new DirectorCard { spawnCard = (SpawnCard)(object)val2, selectionWeight = 1, preventOverhead = false, minimumStageCompletions = 5, spawnDistance = (MonsterSpawnDistance)0 }; DirectorCardHolder archaicWispLoopCard = new DirectorCardHolder { Card = card, MonsterCategory = (MonsterCategory)3 }; ArchaicWispContent.ArchaicWispCard = archaicWispCard; ArchaicWispContent.ArchaicWispLoopCard = archaicWispLoopCard; int num = -1; DirectorCardCategorySelection val4 = Addressables.LoadAssetAsync<DirectorCardCategorySelection>((object)"RoR2/Base/MixEnemy/dccsMixEnemy.asset").WaitForCompletion(); num = FindCategoryIndexByName(val4, "Minibosses"); if (num >= 0) { val4.AddCard(num, val3); } DirectorCardCategorySelection val5 = Addressables.LoadAssetAsync<DirectorCardCategorySelection>((object)"RoR2/Base/Common/DirectorCardCategorySelections/dccsWispFamily.asset").WaitForCompletion(); num = FindCategoryIndexByName(val5, "Minibosses"); if (num >= 0) { val5.AddCard(num, val3); } foreach (StageSpawnInfo stage in ArchaicWispPlugin.StageList) { DirectorCardHolder val6 = ((stage.GetMinStages() == 0) ? ArchaicWispContent.ArchaicWispCard : ArchaicWispContent.ArchaicWispLoopCard); SceneDef val7 = ScriptableObject.CreateInstance<SceneDef>(); val7.baseSceneNameOverride = stage.GetStageName(); Helpers.AddNewMonsterToStage(val6, false, DirectorAPI.GetStageEnumFromSceneDef(val7), stage.GetStageName()); } } public static int FindCategoryIndexByName(DirectorCardCategorySelection dcs, string categoryName) { for (int i = 0; i < dcs.categories.Length; i++) { if (string.CompareOrdinal(dcs.categories[i].name, categoryName) == 0) { return i; } } return -1; } } public class ItemDisplays { private static Dictionary<string, GameObject> itemDisplayPrefabs = new Dictionary<string, GameObject>(); public static List<KeyAssetRuleGroup> equipmentList; public static Transform headTransform; public static void DisplayRules(GameObject bodyObject) { //IL_0018: Unknown result type (might be due to invalid IL or missing references) //IL_002e: Unknown result type (might be due to invalid IL or missing references) //IL_0040: 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_0055: Unknown result type (might be due to invalid IL or missing references) //IL_005a: Unknown result type (might be due to invalid IL or missing references) //IL_0085: Unknown result type (might be due to invalid IL or missing references) //IL_008a: Unknown result type (might be due to invalid IL or missing references) //IL_00a0: Unknown result type (might be due to invalid IL or missing references) //IL_00a5: 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_00c0: Unknown result type (might be due to invalid IL or missing references) //IL_00c8: Unknown result type (might be due to invalid IL or missing references) //IL_00cd: Unknown result type (might be due to invalid IL or missing references) //IL_00cf: Unknown result type (might be due to invalid IL or missing references) //IL_00d9: Unknown result type (might be due to invalid IL or missing references) //IL_00db: 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_00ef: 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_0117: Unknown result type (might be due to invalid IL or missing references) //IL_0120: Unknown result type (might be due to invalid IL or missing references) //IL_012c: Unknown result type (might be due to invalid IL or missing references) //IL_0131: Unknown result type (might be due to invalid IL or missing references) //IL_015c: Unknown result type (might be due to invalid IL or missing references) //IL_0161: Unknown result type (might be due to invalid IL or missing references) //IL_0177: Unknown result type (might be due to invalid IL or missing references) //IL_017c: Unknown result type (might be due to invalid IL or missing references) //IL_0192: Unknown result type (might be due to invalid IL or missing references) //IL_0197: Unknown result type (might be due to invalid IL or missing references) //IL_019f: Unknown result type (might be due to invalid IL or missing references) //IL_01a4: Unknown result type (might be due to invalid IL or missing references) //IL_01a6: Unknown result type (might be due to invalid IL or missing references) //IL_01b0: Unknown result type (might be due to invalid IL or missing references) //IL_01b2: Unknown result type (might be due to invalid IL or missing references) //IL_01b7: Unknown result type (might be due to invalid IL or missing references) //IL_01c6: Unknown result type (might be due to invalid IL or missing references) //IL_01dc: Unknown result type (might be due to invalid IL or missing references) //IL_01ee: 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_0203: Unknown result type (might be due to invalid IL or missing references) //IL_0208: 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_0238: 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_0253: Unknown result type (might be due to invalid IL or missing references) //IL_0269: Unknown result type (might be due to invalid IL or missing references) //IL_026e: Unknown result type (might be due to invalid IL or missing references) //IL_0276: Unknown result type (might be due to invalid IL or missing references) //IL_027b: Unknown result type (might be due to invalid IL or missing references) //IL_027d: Unknown result type (might be due to invalid IL or missing references) //IL_0287: Unknown result type (might be due to invalid IL or missing references) //IL_0289: Unknown result type (might be due to invalid IL or missing references) //IL_028e: Unknown result type (might be due to invalid IL or missing references) //IL_029b: 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_02b1: Unknown result type (might be due to invalid IL or missing references) //IL_02c7: Unknown result type (might be due to invalid IL or missing references) //IL_02d9: Unknown result type (might be due to invalid IL or missing references) //IL_02e2: Unknown result type (might be due to invalid IL or missing references) //IL_030c: 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_0327: Unknown result type (might be due to invalid IL or missing references) //IL_032c: 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_0347: Unknown result type (might be due to invalid IL or missing references) //IL_034f: Unknown result type (might be due to invalid IL or missing references) //IL_0354: Unknown result type (might be due to invalid IL or missing references) //IL_0356: Unknown result type (might be due to invalid IL or missing references) //IL_035f: Unknown result type (might be due to invalid IL or missing references) //IL_0368: Unknown result type (might be due to invalid IL or missing references) //IL_0392: Unknown result type (might be due to invalid IL or missing references) //IL_0397: Unknown result type (might be due to invalid IL or missing references) //IL_03ad: Unknown result type (might be due to invalid IL or missing references) //IL_03b2: Unknown result type (might be due to invalid IL or missing references) //IL_03c8: Unknown result type (might be due to invalid IL or missing references) //IL_03cd: Unknown result type (might be due to invalid IL or missing references) //IL_03d5: 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_03dc: Unknown result type (might be due to invalid IL or missing references) //IL_03e6: Unknown result type (might be due to invalid IL or missing references) //IL_03e8: Unknown result type (might be due to invalid IL or missing references) //IL_03ed: Unknown result type (might be due to invalid IL or missing references) //IL_03fa: Unknown result type (might be due to invalid IL or missing references) //IL_03ff: Unknown result type (might be due to invalid IL or missing references) //IL_0410: Unknown result type (might be due to invalid IL or missing references) //IL_0426: Unknown result type (might be due to invalid IL or missing references) //IL_0438: Unknown result type (might be due to invalid IL or missing references) //IL_0441: 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_0470: Unknown result type (might be due to invalid IL or missing references) //IL_0486: Unknown result type (might be due to invalid IL or missing references) //IL_048b: 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_04a6: Unknown result type (might be due to invalid IL or missing references) //IL_04ab: Unknown result type (might be due to invalid IL or missing references) //IL_04ad: Unknown result type (might be due to invalid IL or missing references) //IL_04b6: 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_04e9: Unknown result type (might be due to invalid IL or missing references) //IL_04ee: Unknown result type (might be due to invalid IL or missing references) //IL_0504: Unknown result type (might be due to invalid IL or missing references) //IL_0509: Unknown result type (might be due to invalid IL or missing references) //IL_051f: Unknown result type (might be due to invalid IL or missing references) //IL_0524: Unknown result type (might be due to invalid IL or missing references) //IL_052c: Unknown result type (might be due to invalid IL or missing references) //IL_0531: Unknown result type (might be due to invalid IL or missing references) //IL_0533: Unknown result type (might be due to invalid IL or missing references) //IL_053d: 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_0544: Unknown result type (might be due to invalid IL or missing references) //IL_0553: Unknown result type (might be due to invalid IL or missing references) //IL_056e: Unknown result type (might be due to invalid IL or missing references) //IL_0580: Unknown result type (might be due to invalid IL or missing references) //IL_0589: Unknown result type (might be due to invalid IL or missing references) //IL_0595: Unknown result type (might be due to invalid IL or missing references) //IL_059a: Unknown result type (might be due to invalid IL or missing references) //IL_05c5: 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_05e0: Unknown result type (might be due to invalid IL or missing references) //IL_05e5: Unknown result type (might be due to invalid IL or missing references) //IL_05fb: Unknown result type (might be due to invalid IL or missing references) //IL_0600: Unknown result type (might be due to invalid IL or missing references) //IL_0608: Unknown result type (might be due to invalid IL or missing references) //IL_060d: Unknown result type (might be due to invalid IL or missing references) //IL_060f: Unknown result type (might be due to invalid IL or missing references) //IL_0619: Unknown result type (might be due to invalid IL or missing references) //IL_061b: Unknown result type (might be due to invalid IL or missing references) //IL_0620: 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_064a: Unknown result type (might be due to invalid IL or missing references) //IL_065c: Unknown result type (might be due to invalid IL or missing references) //IL_0665: Unknown result type (might be due to invalid IL or missing references) //IL_0671: 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_06a1: Unknown result type (might be due to invalid IL or missing references) //IL_06a6: 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_06c1: Unknown result type (might be due to invalid IL or missing references) //IL_06d7: Unknown result type (might be due to invalid IL or missing references) //IL_06dc: Unknown result type (might be due to invalid IL or missing references) //IL_06e4: 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_06eb: Unknown result type (might be due to invalid IL or missing references) //IL_06f5: Unknown result type (might be due to invalid IL or missing references) //IL_06f7: Unknown result type (might be due to invalid IL or missing references) //IL_06fc: 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_0726: Unknown result type (might be due to invalid IL or missing references) //IL_0738: Unknown result type (might be due to invalid IL or missing references) //IL_0741: Unknown result type (might be due to invalid IL or missing references) //IL_074d: Unknown result type (might be due to invalid IL or missing references) //IL_0752: Unknown result type (might be due to invalid IL or missing references) //IL_077d: Unknown result type (might be due to invalid IL or missing references) //IL_0782: Unknown result type (might be due to invalid IL or missing references) //IL_0798: Unknown result type (might be due to invalid IL or missing references) //IL_079d: Unknown result type (might be due to invalid IL or missing references) //IL_07b3: Unknown result type (might be due to invalid IL or missing references) //IL_07b8: Unknown result type (might be due to invalid IL or missing references) //IL_07c0: Unknown result type (might be due to invalid IL or missing references) //IL_07c5: Unknown result type (might be due to invalid IL or missing references) //IL_07c7: 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_07d8: Unknown result type (might be due to invalid IL or missing references) //IL_07e7: Unknown result type (might be due to invalid IL or missing references) //IL_0802: Unknown result type (might be due to invalid IL or missing references) //IL_0814: Unknown result type (might be due to invalid IL or missing references) //IL_081d: 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_082e: Unknown result type (might be due to invalid IL or missing references) //IL_0859: Unknown result type (might be due to invalid IL or missing references) //IL_085e: Unknown result type (might be due to invalid IL or missing references) //IL_0874: 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_088f: 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_089c: Unknown result type (might be due to invalid IL or missing references) //IL_08a1: Unknown result type (might be due to invalid IL or missing references) //IL_08a3: Unknown result type (might be due to invalid IL or missing references) //IL_08ad: Unknown result type (might be due to invalid IL or missing references) //IL_08af: Unknown result type (might be due to invalid IL or missing references) //IL_08b4: Unknown result type (might be due to invalid IL or missing references) ItemDisplayRuleSet val = ScriptableObject.CreateInstance<ItemDisplayRuleSet>(); equipmentList = new List<KeyAssetRuleGroup>(); equipmentList.Add(new KeyAssetRuleGroup { keyAsset = (Object)(object)Equipment.AffixPoison, displayRuleGroup = new DisplayRuleGroup { rules = (ItemDisplayRule[])(object)new ItemDisplayRule[1] { new ItemDisplayRule { ruleType = (ItemDisplayRuleType)0, followerPrefab = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/ElitePoison/DisplayEliteUrchinCrown.prefab").WaitForCompletion(), childName = "Mask", localPos = new Vector3(0f, -0.6f, -0.85f), localAngles = new Vector3(0f, 0f, 0f), localScale = new Vector3(0.25f, 0.25f, 0.25f), limbMask = (LimbFlags)0 } } } }); equipmentList.Add(new KeyAssetRuleGroup { keyAsset = (Object)(object)Equipment.AffixHaunted, displayRuleGroup = new DisplayRuleGroup { rules = (ItemDisplayRule[])(object)new ItemDisplayRule[1] { new ItemDisplayRule { ruleType = (ItemDisplayRuleType)0, followerPrefab = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/EliteHaunted/DisplayEliteStealthCrown.prefab").WaitForCompletion(), childName = "Mask", localPos = new Vector3(0f, -0.6f, -0.6f), localAngles = new Vector3(0f, 0f, 0f), localScale = new Vector3(0.25f, 0.25f, 0.25f), limbMask = (LimbFlags)0 } } } }); equipmentList.Add(new KeyAssetRuleGroup { keyAsset = (Object)(object)Equipment.AffixWhite, displayRuleGroup = new DisplayRuleGroup { rules = (ItemDisplayRule[])(object)new ItemDisplayRule[1] { new ItemDisplayRule { ruleType = (ItemDisplayRuleType)0, followerPrefab = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/EliteIce/DisplayEliteIceCrown.prefab").WaitForCompletion(), childName = "Mask", localPos = new Vector3(0f, -0.6f, -0.45f), localAngles = new Vector3(0f, 0f, 0f), localScale = new Vector3(0.12f, 0.12f, 0.12f), limbMask = (LimbFlags)0 } } } }); GameObject followerPrefab = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/EliteLightning/DisplayEliteRhinoHorn.prefab").WaitForCompletion(); equipmentList.Add(new KeyAssetRuleGroup { keyAsset = (Object)(object)Equipment.AffixBlue, displayRuleGroup = new DisplayRuleGroup { rules = (ItemDisplayRule[])(object)new ItemDisplayRule[2] { new ItemDisplayRule { ruleType = (ItemDisplayRuleType)0, followerPrefab = followerPrefab, childName = "Mask", localPos = new Vector3(0f, -0.7874f, -0.92505f), localAngles = new Vector3(80.00003f, 0f, 0f), localScale = new Vector3(0.5f, 0.5f, 0.5f), limbMask = (LimbFlags)0 }, new ItemDisplayRule { ruleType = (ItemDisplayRuleType)0, followerPrefab = followerPrefab, childName = "Mask", localPos = new Vector3(0f, -0.81623f, -1.2465f), localAngles = new Vector3(90f, 0f, 0f), localScale = new Vector3(0.8f, 0.8f, 0.8f), limbMask = (LimbFlags)0 } } } }); GameObject followerPrefab2 = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/EliteFire/DisplayEliteHorn.prefab").WaitForCompletion(); equipmentList.Add(new KeyAssetRuleGroup { keyAsset = (Object)(object)Equipment.AffixRed, displayRuleGroup = new DisplayRuleGroup { rules = (ItemDisplayRule[])(object)new ItemDisplayRule[2] { new ItemDisplayRule { ruleType = (ItemDisplayRuleType)0, followerPrefab = followerPrefab2, childName = "Mask", localPos = new Vector3(0.7f, -1f, -1.1f), localAngles = new Vector3(0f, 190f, 180f), localScale = new Vector3(0.4f, 0.4f, 0.4f) }, new ItemDisplayRule { ruleType = (ItemDisplayRuleType)0, followerPrefab = followerPrefab2, childName = "Mask", localPos = new Vector3(-0.7f, -1f, -1.1f), localAngles = new Vector3(0f, 170f, 180f), localScale = new Vector3(-0.4f, 0.4f, 0.4f), limbMask = (LimbFlags)0 } } } }); equipmentList.Add(new KeyAssetRuleGroup { keyAsset = (Object)(object)Elites.Earth.eliteEquipmentDef, displayRuleGroup = new DisplayRuleGroup { rules = (ItemDisplayRule[])(object)new ItemDisplayRule[1] { new ItemDisplayRule { ruleType = (ItemDisplayRuleType)0, followerPrefab = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/DLC1/EliteEarth/DisplayEliteMendingAntlers.prefab").WaitForCompletion(), childName = "Mask", localPos = new Vector3(0f, -0.63f, -0.75f), localAngles = new Vector3(90f, 0f, 0f), localScale = new Vector3(2.5f, 2.5f, 2.5f), limbMask = (LimbFlags)0 } } } }); equipmentList.Add(new KeyAssetRuleGroup { keyAsset = (Object)(object)Elites.Void.eliteEquipmentDef, displayRuleGroup = new DisplayRuleGroup { rules = (ItemDisplayRule[])(object)new ItemDisplayRule[1] { new ItemDisplayRule { ruleType = (ItemDisplayRuleType)0, followerPrefab = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/DLC1/EliteVoid/DisplayAffixVoid.prefab").WaitForCompletion(), childName = "Mask", localPos = new Vector3(0f, -0.98165f, -1.88916f), localAngles = new Vector3(0f, 180f, 180f), localScale = new Vector3(0.68414f, 0.68414f, 0.68414f), limbMask = (LimbFlags)0 } } } }); equipmentList.Add(new KeyAssetRuleGroup { keyAsset = (Object)(object)Elites.Aurelionite.eliteEquipmentDef, displayRuleGroup = new DisplayRuleGroup { rules = (ItemDisplayRule[])(object)new ItemDisplayRule[1] { new ItemDisplayRule { ruleType = (ItemDisplayRuleType)0, followerPrefab = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/DLC2/Elites/EliteAurelionite/DisplayEliteAurelioniteEquipment.prefab").WaitForCompletion(), childName = "Mask", localPos = new Vector3(0f, -1.45f, -1f), localAngles = new Vector3(90f, 0f, 0f), localScale = new Vector3(2f, 2f, 2f), limbMask = (LimbFlags)0 } } } }); equipmentList.Add(new KeyAssetRuleGroup { keyAsset = (Object)(object)Elites.Bead.eliteEquipmentDef, displayRuleGroup = new DisplayRuleGroup { rules = (ItemDisplayRule[])(object)new ItemDisplayRule[1] { new ItemDisplayRule { ruleType = (ItemDisplayRuleType)0, followerPrefab = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/DLC2/Elites/EliteBead/DisplayEliteBeadSpike.prefab").WaitForCompletion(), childName = "Mask", localPos = new Vector3(-0.59181f, -0.80641f, -1.02937f), localAngles = new Vector3(18.04248f, 223.5347f, 251.9449f), localScale = new Vector3(0.076f, 0.076f, 0.076f), limbMask = (LimbFlags)0 } } } }); val.keyAssetRuleGroups = equipmentList.ToArray(); CharacterModel component = ((Component)bodyObject.GetComponent<ModelLocator>().modelTransform).GetComponent<CharacterModel>(); component.itemDisplayRuleSet = val; component.itemDisplayRuleSet.GenerateRuntimeValues(); itemDisplayPrefabs.Clear(); } } internal class LanguageTokens { public static SubFileSystem fileSystem; internal static string languageRoot => Path.Combine(assemblyDir, "language"); internal static string assemblyDir => Path.GetDirectoryName(ArchaicWispPlugin.pluginInfo.Location); public LanguageTokens() { RegisterLanguageTokens(); } public static void RegisterLanguageTokens() { //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_0012: Expected O, but got Unknown Language.SetFolders += new hook_SetFolders(fixme); } private static void fixme(orig_SetFolders orig, Language self, IEnumerable<string> newFolders) { if (Directory.Exists(languageRoot)) { IEnumerable<string> second = Directory.EnumerateDirectories(Path.Combine(languageRoot), self.name); orig.Invoke(self, newFolders.Union(second)); } else { orig.Invoke(self, newFolders); } } } public class ModifySkills { private static bool initialized; public static void Init() { //IL_001c: Unknown result type (might be due to invalid IL or missing references) //IL_0021: Unknown result type (might be due to invalid IL or missing references) //IL_0082: 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_005c: Unknown result type (might be due to invalid IL or missing references) if (!initialized) { initialized = true; GameObject val = PrefabAPI.InstantiateClone(Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Junk/ArchWisp/ArchWispCannon.prefab").WaitForCompletion(), "MoffeinArchWispCannon", true); ArchaicWispContent.projectilePrefabs.Add(val); ProjectileDamage component = val.GetComponent<ProjectileDamage>(); if (Object.op_Implicit((Object)(object)component)) { component.damageType.damageSource = (DamageSource)1; } val.GetComponent<Rigidbody>().useGravity = false; ProjectileImpactExplosion component2 = val.GetComponent<ProjectileImpactExplosion>(); component2.lifetime = 7f; ((ProjectileExplosion)component2).falloffModel = (FalloffModel)2; ProjectileSimple component3 = ((Component)component2).GetComponent<ProjectileSimple>(); component3.lifetime = 7f; GameObject val2 = (((ProjectileExplosion)component2).childrenProjectilePrefab = PrefabAPI.InstantiateClone(((ProjectileExplosion)component2).childrenProjectilePrefab, "MoffeinArchWispCannonGround", true)); ArchaicWispContent.projectilePrefabs.Add(val2); ProjectileDamageTrail component4 = val2.GetComponent<ProjectileDamageTrail>(); component4.damageToTrailDpsFactor = 0.35f; component4.trailLifetimeAfterExpiration = 8f; ProjectileImpactExplosion component5 = val2.GetComponent<ProjectileImpactExplosion>(); ((ProjectileExplosion)component5).falloffModel = (FalloffModel)2; global::SneedUtils.SneedUtils.SetEntityStateField("EntityStates.ArchWispMonster.ChargeCannons", "baseDuration", "2"); global::SneedUtils.SneedUtils.SetEntityStateField("EntityStates.ArchWispMonster.FireCannons", "damageCoefficient", "3.6"); global::SneedUtils.SneedUtils.SetEntityStateField("EntityStates.ArchWispMonster.FireCannons", "projectilePrefab", (Object)(object)val); } } } public class Prefab { private static bool initialized; public static void Init() { if (!initialized) { initialized = true; CreateBody(); CreateMaster(); AddSniperTarget(); } } private static void AddSniperTarget() { //IL_009c: Unknown result type (might be due to invalid IL or missing references) ModelLocator component = ArchaicWispContent.ArchaicWispObject.GetComponent<ModelLocator>(); HurtBoxGroup component2 = ((Component)component.modelTransform).gameObject.GetComponent<HurtBoxGroup>(); GameObject gameObject = ((Component)((Component)component2.mainHurtBox).transform).gameObject; Collider component3 = ((Component)component2.mainHurtBox).GetComponent<Collider>(); Object.Destroy((Object)(object)component2.mainHurtBox); Object.Destroy((Object)(object)component3); CapsuleCollider val = gameObject.AddComponent<CapsuleCollider>(); val.height = 3.6f; val.radius = 1f; val.direction = 2; HurtBox val2 = gameObject.AddComponent<HurtBox>(); val2.isBullseye = true; val2.healthComponent = ArchaicWispContent.ArchaicWispObject.GetComponent<HealthComponent>(); val2.damageModifier = (DamageModifier)0; val2.isSniperTarget = true; val2.hurtBoxGroup = component2; val2.indexInGroup = 0; component2.mainHurtBox = val2; component2.hurtBoxes[0] = val2; } private static void CreateMaster() { //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) ArchaicWispContent.ArchaicWispMaster = PrefabAPI.InstantiateClone(Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Junk/ArchWisp/ArchWispMaster.prefab").WaitForCompletion(), "MoffeinArchWispMaster", true); CharacterMaster component = ArchaicWispContent.ArchaicWispMaster.GetComponent<CharacterMaster>(); component.bodyPrefab = ArchaicWispContent.ArchaicWispObject; } private static void CreateBody() { //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) //IL_003c: Unknown result type (might be due to invalid IL or missing references) //IL_0041: 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_0167: Unknown result type (might be due to invalid IL or missing references) //IL_016c: Unknown result type (might be due to invalid IL or missing references) //IL_0210: Unknown result type (might be due to invalid IL or missing references) //IL_0215: 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_022b: 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) ArchaicWispContent.ArchaicWispObject = PrefabAPI.InstantiateClone(Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Junk/ArchWisp/ArchWispBody.prefab").WaitForCompletion(), "MoffeinArchWisp", true); SpecialObjectAttributes val = ArchaicWispContent.ArchaicWispObject.AddComponent<SpecialObjectAttributes>(); val.grabbable = true; val.damageTypeOverride = DamageTypeCombo.op_Implicit((DamageType)128); SphereCollider[] componentsInChildren = ArchaicWispContent.ArchaicWispObject.GetComponentsInChildren<SphereCollider>(); SphereCollider[] array = componentsInChildren; foreach (SphereCollider val2 in array) { if (((Object)((Component)val2).gameObject).name == "StandableSurface") { if (val.collisionToDisable == null) { val.collisionToDisable = new List<GameObject>(); } val.collisionToDisable.Add(((Component)val2).gameObject); break; } } CharacterBody component = ArchaicWispContent.ArchaicWispObject.GetComponent<CharacterBody>(); component.baseNameToken = "MOFFEIN_ARCHWISP_BODY_NAME"; component.baseMaxHealth = 900f; component.baseDamage = 15f; component.baseRegen = 0f; component.bodyFlags = (BodyFlags)0; component.portraitIcon = (Texture)(object)ArchaicWispContent.assets.LoadAsset<Texture2D>("icon"); component.baseArmor = 0f; component.levelMaxHealth = component.baseMaxHealth * 0.3f; component.levelDamage = component.baseDamage * 0.2f; component.levelRegen = component.baseRegen * 0.2f; component.levelArmor = 0f; component.preferredInitialStateType = new SerializableEntityStateType(typeof(SpawnState)); AddSSoH(ArchaicWispContent.ArchaicWispObject); DeathRewards component2 = ArchaicWispContent.ArchaicWispObject.GetComponent<DeathRewards>(); ArchaicWispContent.ArchaicWispLogbookUnlockable = ScriptableObject.CreateInstance<UnlockableDef>(); ArchaicWispContent.ArchaicWispLogbookUnlockable.nameToken = "UNLOCKABLE_LOG_MOFFEIN_MOFFEIN_ARCHWISP"; ArchaicWispContent.ArchaicWispLogbookUnlockable.cachedName = "MOFFEIN_ARCHWISP_BODY_NAME"; component2.logUnlockableDef = ArchaicWispContent.ArchaicWispLogbookUnlockable; ModelLocator component3 = ((Component)component).GetComponent<ModelLocator>(); if (!Object.op_Implicit((Object)(object)component3)) { return; } Transform modelTransform = component3.modelTransform; if (!Object.op_Implicit((Object)(object)modelTransform)) { return; } Transform val3 = null; ChildLocator component4 = ((Component)modelTransform).GetComponent<ChildLocator>(); NameTransformPair[] transformPairs = component4.transformPairs; NameTransformPair val5 = default(NameTransformPair); foreach (NameTransformPair val4 in transformPairs) { if (!(val4.name == "Mask") || Object.op_Implicit((Object)(object)val4.transform)) { continue; } val5 = val4; Transform[] componentsInChildren2 = ((Component)modelTransform).GetComponentsInChildren<Transform>(); Transform[] array2 = componentsInChildren2; foreach (Transform val6 in array2) { if (((Object)val6).name == "Mask") { val3 = val6; break; } } break; } if (Object.op_Implicit((Object)(object)val3)) { val5.transform = val3; } } private static void AddSSoH(GameObject enemyObject) { //IL_00c2: 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_00d7: Unknown result type (might be due to invalid IL or missing references) //IL_00dc: Unknown result type (might be due to invalid IL or missing references) EntityStateMachine val = null; EntityStateMachine val2 = null; EntityStateMachine[] components = enemyObject.GetComponents<EntityStateMachine>(); EntityStateMachine[] array = components; foreach (EntityStateMachine val3 in array) { string customName = val3.customName; string text = customName; if (!(text == "Body")) { if (text == "Weapon") { val2 = val3; } } else { val = val3; } } SetStateOnHurt val4 = enemyObject.GetComponent<SetStateOnHurt>(); if (!Object.op_Implicit((Object)(object)val4)) { val4 = enemyObject.AddComponent<SetStateOnHurt>(); } val4.canBeFrozen = true; val4.canBeStunned = true; val4.canBeHitStunned = false; val4.hitThreshold = 0.5f; val4.targetStateMachine = val; val4.idleStateMachine = (EntityStateMachine[])(object)new EntityStateMachine[1] { val2 }; val4.hurtState = new SerializableEntityStateType(typeof(HurtStateFlyer)); val.initialStateType = new SerializableEntityStateType(typeof(SpawnState)); } } }