Please disclose if any significant portion of your mod was created using AI tools by adding the 'AI Generated' category. Failing to do so may result in the mod being removed from Thunderstore.
Decompiled source of RecoveredAndReformed v1.2.1
RecoveredAndReformed.dll
Decompiled 6 hours ago
The result has been truncated due to the large size, download it to view full contents!
using System; 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.Bootstrap; using BepInEx.Configuration; using BepInEx.Logging; using EntityStates; using EntityStates.AcidLarva; using EntityStates.ArtifactShell; using EntityStates.Assassin2; using EntityStates.EngiTurret.EngiTurretWeapon; using EntityStates.MajorConstruct; using EntityStates.MajorConstruct.Stance; using EntityStates.MajorConstruct.Weapon; using EntityStates.RoboBallBoss.Weapon; using HG; using IL.EntityStates.Assassin2; using IL.RoR2; using Microsoft.CodeAnalysis; using Mono.Cecil.Cil; using MonoMod.Cil; using On.EntityStates; using On.EntityStates.AcidLarva; using On.EntityStates.ArtifactShell; using On.EntityStates.Assassin2; using On.EntityStates.MajorConstruct; using On.EntityStates.MajorConstruct.Stance; using On.EntityStates.MajorConstruct.Weapon; using On.RoR2; using R2API; using RoR2; using RoR2.CharacterAI; using UnityEngine; using UnityEngine.AddressableAssets; using UnityEngine.Networking; [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("RecoveredAndReformed")] [assembly: AssemblyConfiguration("Release")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0+86667c24cceb4fcbed85f0e85e05b5a8080fcb1f")] [assembly: AssemblyProduct("RecoveredAndReformed")] [assembly: AssemblyTitle("RecoveredAndReformed")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.0.0.0")] [module: UnverifiableCode] [module: RefSafetyRules(11)] namespace Microsoft.CodeAnalysis { [CompilerGenerated] [Embedded] internal sealed class EmbeddedAttribute : Attribute { } } namespace System.Runtime.CompilerServices { [CompilerGenerated] [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 RecoveredAndReformed { [BepInPlugin("prodzpod.RecoveredAndReformed", "RecoveredAndReformed", "1.2.1")] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] public class Main : BaseUnityPlugin { [Serializable] [CompilerGenerated] private sealed class <>c { public static readonly <>c <>9 = new <>c(); public static hook_OnEnter <>9__122_0; public static Action <>9__122_1; public static Func<EliteTierDef, bool> <>9__122_13; public static Converter<EliteTierDef, EliteDef[]> <>9__122_14; public static hook_OnEnter <>9__122_2; public static Action <>9__122_3; public static Action <>9__122_9; public static Func<Instruction, bool> <>9__122_15; public static Action<ClassicStageInfo> <>9__122_16; public static Manipulator <>9__122_10; public static hook_RebuildCards <>9__122_11; public static Action<Run> <>9__122_12; public static hook_OnMemberDefeatedServer <>9__122_17; public static Action <>9__122_18; public static Func<Category, bool> <>9__129_0; public static Func<DirectorCard, bool> <>9__129_8; public static Func<Category, bool> <>9__129_7; public static Func<PoolEntry, bool> <>9__129_1; public static Func<ConditionalPoolEntry, bool> <>9__129_2; public static Func<PoolEntry, bool> <>9__129_3; public static Func<Category, float> <>9__129_10; public static Func<Category, bool> <>9__130_0; public static Converter<string, string> <>9__134_0; public static Converter<string, string> <>9__135_0; internal void <Awake>b__122_0(orig_OnEnter orig, LarvaLeap self) { orig.Invoke(self); self.detonateSelfDamageFraction = LarvaDetonateSelfDamage.Value; } internal void <Awake>b__122_1() { CharacterBody component = BodyCatalog.FindBodyPrefab("MajorConstructBody").GetComponent<CharacterBody>(); CharacterBody component2 = BodyCatalog.FindBodyPrefab("Assassin2Body").GetComponent<CharacterBody>(); CharacterBody component3 = BodyCatalog.FindBodyPrefab("MagmaWormBody").GetComponent<CharacterBody>(); CharacterBody component4 = BodyCatalog.FindBodyPrefab("ElectricWormBody").GetComponent<CharacterBody>(); CharacterBody component5 = BodyCatalog.FindBodyPrefab("AcidLarvaBody").GetComponent<CharacterBody>(); CharacterBody component6 = BodyCatalog.FindBodyPrefab("SuperRoboBallBossBody").GetComponent<CharacterBody>(); CharacterBody component7 = BodyCatalog.FindBodyPrefab("TitanGoldBody").GetComponent<CharacterBody>(); CharacterBody component8 = BodyCatalog.FindBodyPrefab("ArtifactShellBody").GetComponent<CharacterBody>(); GameObject obj = BodyCatalog.FindBodyPrefab("DireseekerBossBody"); CharacterBody val = ((obj != null) ? obj.GetComponent<CharacterBody>() : null); component.baseMaxHealth = MajorConstructHealth.Value; component.levelMaxHealth = MajorConstructHealthStack.Value; component.baseDamage = MajorConstructDamage.Value; component.levelDamage = MajorConstructDamageStack.Value; component.baseAttackSpeed = MajorConstructAttackSpeed.Value; component.baseArmor = MajorConstructArmor.Value; component.isChampion = true; if (!string.IsNullOrWhiteSpace(MajorConstructSpawn.Value)) { ((Component)component).GetComponent<DeathRewards>().bossDropTable = (PickupDropTable)(object)vanilla<ExplicitPickupDropTable>("DLC1/MajorAndMinorConstruct/dtBossMegaConstruct"); ((Component)component).GetComponent<DeathRewards>().logUnlockableDef = LegacyResourcesAPI.Load<UnlockableDef>("UnlockableDefs/Logs.MajorConstructBody"); } component2.baseMaxHealth = Assassin2Health.Value; component2.levelMaxHealth = Assassin2HealthStack.Value; component2.baseDamage = Assassin2Damage.Value; component2.levelDamage = Assassin2DamageStack.Value; component2.baseAttackSpeed = Assassin2AttackSpeed.Value; component2.baseMoveSpeed = Assassin2Speed.Value; component2.baseArmor = Assassin2Armor.Value; if (!string.IsNullOrWhiteSpace(Assassin2Spawn.Value)) { ((Component)component2).gameObject.AddComponent<DeathRewards>().logUnlockableDef = vanilla<UnlockableDef>("DLC1/Assassin2/Logs.Assassin2Body"); } component3.baseMaxHealth = MagmaWormHealth.Value; component3.levelMaxHealth = MagmaWormHealthStack.Value; component3.baseDamage = MagmaWormDamage.Value; component3.levelDamage = MagmaWormDamageStack.Value; component3.baseAttackSpeed = MagmaWormAttackSpeed.Value; component3.baseMoveSpeed = MagmaWormSpeed.Value; component3.baseArmor = MagmaWormArmor.Value; component4.baseMaxHealth = OverloadingWormHealth.Value; component4.levelMaxHealth = OverloadingWormHealthStack.Value; component4.baseDamage = OverloadingWormDamage.Value; component4.levelDamage = OverloadingWormDamageStack.Value; component4.baseAttackSpeed = OverloadingWormAttackSpeed.Value; component4.baseMoveSpeed = OverloadingWormSpeed.Value; component4.baseArmor = OverloadingWormArmor.Value; component5.baseMaxHealth = AcidLarvaHealth.Value; component5.levelMaxHealth = AcidLarvaHealthStack.Value; component5.baseDamage = AcidLarvaDamage.Value; component5.levelDamage = AcidLarvaDamageStack.Value; component5.baseAttackSpeed = AcidLarvaAttackSpeed.Value; component5.baseMoveSpeed = AcidLarvaSpeed.Value; component5.baseArmor = AcidLarvaArmor.Value; component6.baseMaxHealth = AWUHealth.Value; component6.levelMaxHealth = AWUHealthStack.Value; component6.baseDamage = AWUDamage.Value; component6.levelDamage = AWUDamageStack.Value; component6.baseAttackSpeed = AWUAttackSpeed.Value; component6.baseMoveSpeed = AWUSpeed.Value; component6.baseArmor = AWUArmor.Value; component7.baseMaxHealth = AurellioniteHealth.Value; component7.levelMaxHealth = AurellioniteHealthStack.Value; component7.baseDamage = AurellioniteDamage.Value; component7.levelDamage = AurellioniteDamageStack.Value; component7.baseAttackSpeed = AurellioniteAttackSpeed.Value; component7.baseMoveSpeed = AurellioniteSpeed.Value; component7.baseArmor = AurellioniteArmor.Value; component8.baseMaxHealth = ArtifactShellHealth.Value; component8.levelMaxHealth = ArtifactShellHealthStack.Value; component8.baseDamage = ArtifactShellDamage.Value; component8.levelDamage = ArtifactShellDamageStack.Value; component8.baseAttackSpeed = ArtifactShellAttackSpeed.Value; component8.baseArmor = ArtifactShellArmor.Value; if ((Object)(object)val != (Object)null) { val.baseMaxHealth = DireseekerHealth.Value; val.levelMaxHealth = DireseekerHealthStack.Value; val.baseDamage = DireseekerDamage.Value; val.levelDamage = DireseekerDamageStack.Value; val.baseAttackSpeed = DireseekerAttackSpeed.Value; val.baseMoveSpeed = DireseekerSpeed.Value; val.baseArmor = DireseekerArmor.Value; } } internal void <Awake>b__122_2(orig_OnEnter orig, WaitForIntro self) { orig.Invoke(self); if (((EntityState)self).characterBody.eliteBuffCount != 0) { return; } List<EliteDef> list = new List<EliteDef>(); foreach (EliteDef[] item in CombatDirector.eliteTiers.Where((EliteTierDef x) => RunArtifactManager.instance.IsArtifactEnabled(Artifacts.EliteOnly) || (x.CanSelect((EliteRules)0) && x.costMultiplier < (float)(Run.instance.loopClearCount * 10))).ToList().ConvertAll((EliteTierDef x) => x.eliteTypes)) { foreach (EliteDef val in item) { if ((Object)(object)val != (Object)null && val.IsAvailable()) { list.Add(val); } } } if (list.Count != 0) { EliteDef val2 = Run.instance.spawnRng.NextElementUniform<EliteDef>(list); ((EntityState)self).characterBody.AddBuff(val2.eliteEquipmentDef.passiveBuffDef); } } internal bool <Awake>b__122_13(EliteTierDef x) { if (!RunArtifactManager.instance.IsArtifactEnabled(Artifacts.EliteOnly)) { if (x.CanSelect((EliteRules)0)) { return x.costMultiplier < (float)(Run.instance.loopClearCount * 10); } return false; } return true; } internal EliteDef[] <Awake>b__122_14(EliteTierDef x) { return x.eliteTypes; } internal void <Awake>b__122_3() { CharacterSpawnCard val = MonsterLookup.Find("cscDireseekerBoss"); if (Object.op_Implicit((Object)(object)val)) { <Awake>g__enableElite|122_4(val); } } internal void <Awake>b__122_9() { GameObject val = MasterCatalog.FindMasterPrefab("BrassMonolithMonsterMaster"); if (!Object.op_Implicit((Object)(object)val)) { return; } CharacterSpawnCard[] array = Resources.FindObjectsOfTypeAll<CharacterSpawnCard>(); foreach (CharacterSpawnCard val2 in array) { if (Object.op_Implicit((Object)(object)val2) && ((Object)val2).name == "cscBrassMonolith") { ((SpawnCard)val2).prefab = val; } } } internal void <Awake>b__122_10(ILContext il) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0007: Expected O, but got Unknown //IL_0049: Unknown result type (might be due to invalid IL or missing references) ILCursor val = new ILCursor(il); if (!val.TryGotoNext((MoveType)2, new Func<Instruction, bool>[1] { (Instruction x) => ILPatternMatchingExt.MatchStfld<ClassicStageInfo>(x, "modifiableMonsterCategories") })) { Log.LogError((object)"Failed to hook ClassicStageInfo.RebuildCards, family additions will not apply."); return; } val.Emit(OpCodes.Ldarg_0); val.EmitDelegate<Action<ClassicStageInfo>>((Action<ClassicStageInfo>)delegate(ClassicStageInfo self) { HandleDccs(self.modifiableMonsterCategories); }); } internal bool <Awake>b__122_15(Instruction x) { return ILPatternMatchingExt.MatchStfld<ClassicStageInfo>(x, "modifiableMonsterCategories"); } internal void <Awake>b__122_16(ClassicStageInfo self) { HandleDccs(self.modifiableMonsterCategories); } internal void <Awake>b__122_11(orig_RebuildCards orig, ClassicStageInfo self, DirectorCardCategorySelection a, DirectorCardCategorySelection b) { PreparePool(self); orig.Invoke(self, a, b); } internal void <Awake>b__122_12(Run _) { if (!DebugLogging.Value) { return; } foreach (KeyValuePair<string, List<FamilyMember>> familyAddition in familyAdditions) { List<string> list = new List<string>(); List<string> list2 = new List<string>(); foreach (FamilyMember item in familyAddition.Value) { CharacterSpawnCard val = item.spawnCard(); if (Object.op_Implicit((Object)(object)val)) { list.Add(((Object)val).name); } else { list2.Add(item.label); } } Log.LogInfo((object)(familyAddition.Key + ": found [" + string.Join(", ", list) + "]" + ((list2.Count > 0) ? (", not installed/enabled [" + string.Join(", ", list2) + "]") : ""))); } } internal void <Awake>b__122_17(orig_OnMemberDefeatedServer orig, BossGroup self, CharacterMaster master, DamageReport report) { //IL_0047: Unknown result type (might be due to invalid IL or missing references) if (Object.op_Implicit((Object)(object)self.dropPosition) && Object.op_Implicit((Object)(object)report?.victimBody) && ((Object)report.victimBody).name.StartsWith("DireseekerBossBody")) { self.dropPosition.position = report.victimBody.corePosition; } orig.Invoke(self, master, report); } internal void <Awake>b__122_18() { FireSuperDelayKnockup.shieldDuration = AWUShieldTime.Value; } internal bool <PreparePool>b__129_0(Category x) { if (x != null) { return x.name == MonsterPoolCategories.Family; } return false; } internal bool <PreparePool>b__129_7(Category cat) { //IL_0000: Unknown result type (might be due to invalid IL or missing references) return cat.cards.Any((DirectorCard card) => card.IsAvailable()); } internal bool <PreparePool>b__129_8(DirectorCard card) { return card.IsAvailable(); } internal bool <PreparePool>b__129_1(PoolEntry x) { return !<PreparePool>g__IsLarva|129_4(x); } internal bool <PreparePool>b__129_2(ConditionalPoolEntry x) { return !<PreparePool>g__IsLarva|129_4((PoolEntry)(object)x); } internal bool <PreparePool>b__129_3(PoolEntry x) { return !<PreparePool>g__IsLarva|129_4(x); } internal float <PreparePool>b__129_10(Category x) { return x.categoryWeight; } internal bool <AddFamilyEvent>b__130_0(Category x) { //IL_0000: Unknown result type (might be due to invalid IL or missing references) return x.cards.Length != 0; } internal string <listify>b__134_0(string x) { return x.Trim(); } internal string <pairify>b__135_0(string x) { return x.Trim(); } } public const string PluginGUID = "prodzpod.RecoveredAndReformed"; public const string PluginAuthor = "prodzpod"; public const string PluginName = "RecoveredAndReformed"; public const string PluginVersion = "1.2.1"; public static ManualLogSource Log; public static PluginInfo pluginInfo; public static ConfigFile Config; public static ConfigEntry<string> MajorConstructSpawn; public static ConfigEntry<string> Assassin2Spawn; public static ConfigEntry<int> MajorConstructMinStage; public static ConfigEntry<int> Assassin2MinStage; public static ConfigEntry<bool> EliteMagmaWorm; public static ConfigEntry<bool> EliteOverloadingWorm; public static ConfigEntry<bool> EliteAWU; public static ConfigEntry<bool> EliteAurellionite; private ConfigEntry<bool> EliteArtifactShell; public static ConfigEntry<bool> EliteDireseeker; public static ConfigEntry<float> MajorConstructHealth; public static ConfigEntry<float> MajorConstructHealthStack; public static ConfigEntry<float> MajorConstructDamage; public static ConfigEntry<float> MajorConstructDamageStack; public static ConfigEntry<float> MajorConstructAttackSpeed; public static ConfigEntry<float> MajorConstructArmor; public static ConfigEntry<int> MajorConstructCost; public static ConfigEntry<float> Assassin2Health; public static ConfigEntry<float> Assassin2HealthStack; public static ConfigEntry<float> Assassin2Damage; public static ConfigEntry<float> Assassin2DamageStack; public static ConfigEntry<float> Assassin2AttackSpeed; public static ConfigEntry<float> Assassin2Speed; public static ConfigEntry<float> Assassin2Armor; public static ConfigEntry<int> Assassin2Cost; public static ConfigEntry<float> MagmaWormHealth; public static ConfigEntry<float> MagmaWormHealthStack; public static ConfigEntry<float> MagmaWormDamage; public static ConfigEntry<float> MagmaWormDamageStack; public static ConfigEntry<float> MagmaWormAttackSpeed; public static ConfigEntry<float> MagmaWormSpeed; public static ConfigEntry<float> MagmaWormArmor; public static ConfigEntry<int> MagmaWormCost; public static ConfigEntry<float> OverloadingWormHealth; public static ConfigEntry<float> OverloadingWormHealthStack; public static ConfigEntry<float> OverloadingWormDamage; public static ConfigEntry<float> OverloadingWormDamageStack; public static ConfigEntry<float> OverloadingWormAttackSpeed; public static ConfigEntry<float> OverloadingWormSpeed; public static ConfigEntry<float> OverloadingWormArmor; public static ConfigEntry<int> OverloadingWormCost; public static ConfigEntry<float> AcidLarvaHealth; public static ConfigEntry<float> AcidLarvaHealthStack; public static ConfigEntry<float> AcidLarvaDamage; public static ConfigEntry<float> AcidLarvaDamageStack; public static ConfigEntry<float> AcidLarvaAttackSpeed; public static ConfigEntry<float> AcidLarvaSpeed; public static ConfigEntry<float> AcidLarvaArmor; public static ConfigEntry<int> AcidLarvaCost; public static ConfigEntry<float> AWUHealth; public static ConfigEntry<float> AWUHealthStack; public static ConfigEntry<float> AWUDamage; public static ConfigEntry<float> AWUDamageStack; public static ConfigEntry<float> AWUAttackSpeed; public static ConfigEntry<float> AWUSpeed; public static ConfigEntry<float> AWUArmor; public static ConfigEntry<float> AurellioniteHealth; public static ConfigEntry<float> AurellioniteHealthStack; public static ConfigEntry<float> AurellioniteDamage; public static ConfigEntry<float> AurellioniteDamageStack; public static ConfigEntry<float> AurellioniteAttackSpeed; public static ConfigEntry<float> AurellioniteSpeed; public static ConfigEntry<float> AurellioniteArmor; public static ConfigEntry<float> ArtifactShellHealth; public static ConfigEntry<float> ArtifactShellHealthStack; public static ConfigEntry<float> ArtifactShellDamage; public static ConfigEntry<float> ArtifactShellDamageStack; public static ConfigEntry<float> ArtifactShellAttackSpeed; public static ConfigEntry<float> ArtifactShellArmor; public static ConfigEntry<float> DireseekerHealth; public static ConfigEntry<float> DireseekerHealthStack; public static ConfigEntry<float> DireseekerDamage; public static ConfigEntry<float> DireseekerDamageStack; public static ConfigEntry<float> DireseekerAttackSpeed; public static ConfigEntry<float> DireseekerSpeed; public static ConfigEntry<float> DireseekerArmor; public static ConfigEntry<float> MajorConstructDeathTimer; public static ConfigEntry<int> MajorConstructSpawnAmount; public static ConfigEntry<bool> MajorConstructSpawnSigmaInstead; public static ConfigEntry<bool> MajorConstructSpawnTheta; public static ConfigEntry<float> MajorConstructBeamDistance; public static ConfigEntry<float> MajorConstructAimSpeed; public static ConfigEntry<float> Assassin2InvisDuration; public static ConfigEntry<float> Assassin2InvisEndlag; public static ConfigEntry<float> Assassin2DashDuration; public static ConfigEntry<float> Assassin2DashSpeed; public static ConfigEntry<float> Assassin2SlashDuration; public static ConfigEntry<float> Assassin2SlashDamage; public static ConfigEntry<float> Assassin2SlashKnockback; public static ConfigEntry<float> Assassin2SlashReach; public static ConfigEntry<bool> Assassin2Slash1; public static ConfigEntry<bool> Assassin2Slash2; public static ConfigEntry<float> Assassin2SlashExpose; public static ConfigEntry<float> Assassin2SlashSize; public static ConfigEntry<bool> Assassin2SlashMultihit; public static ConfigEntry<float> Assassin2ShurikenSize; public static ConfigEntry<bool> Assassin2Accurate; public static ConfigEntry<bool> Assassin2AccurateLoop; public static ConfigEntry<bool> EnableFamilyChange; public static ConfigEntry<string> TarFamily; public static ConfigEntry<string> AltWispFamily; public static ConfigEntry<string> OneEyeFamily; public static ConfigEntry<string> BlindFamily; public static ConfigEntry<string> BellFamily; public static ConfigEntry<bool> RemoveLarvaFamily; public static ConfigEntry<float> LarvaDetonateSelfDamage; public static ConfigEntry<float> AWUShieldTime; public static ConfigEntry<bool> DireseekerDropAtPlace; public static ConfigEntry<float> FamilyEventChance; public static ConfigEntry<bool> DebugLogging; public static List<DirectorCardCategorySelection> customFamilies = new List<DirectorCardCategorySelection>(); private static readonly List<(FamilyDirectorCardCategorySelection dccs, List<string> stages, Func<bool> condition)> stageFamilies = new List<(FamilyDirectorCardCategorySelection, List<string>, Func<bool>)>(); private static readonly Dictionary<string, List<FamilyMember>> familyAdditions = new Dictionary<string, List<FamilyMember>>(); private static readonly Dictionary<string, List<FamilyMember>> stageAdditions = new Dictionary<string, List<FamilyMember>>(); private static readonly ConditionalWeakTable<ClassicStageInfo, DccsPool> originalPools = new ConditionalWeakTable<ClassicStageInfo, DccsPool>(); private static ClassicStageInfo poolOwner; private static DccsPool originalPool; private static DccsPool clonedPool; public void Awake() { //IL_002c: Unknown result type (might be due to invalid IL or missing references) //IL_0036: Expected O, but got Unknown //IL_0eff: Unknown result type (might be due to invalid IL or missing references) //IL_0f04: Unknown result type (might be due to invalid IL or missing references) //IL_0f0a: Expected O, but got Unknown //IL_0fdd: Unknown result type (might be due to invalid IL or missing references) //IL_0fe2: Unknown result type (might be due to invalid IL or missing references) //IL_0fe9: Unknown result type (might be due to invalid IL or missing references) //IL_0ff0: Unknown result type (might be due to invalid IL or missing references) //IL_0ff2: Unknown result type (might be due to invalid IL or missing references) //IL_0ff7: Unknown result type (might be due to invalid IL or missing references) //IL_1009: Unknown result type (might be due to invalid IL or missing references) //IL_1012: Expected O, but got Unknown //IL_1012: Unknown result type (might be due to invalid IL or missing references) //IL_1017: Unknown result type (might be due to invalid IL or missing references) //IL_101e: Unknown result type (might be due to invalid IL or missing references) //IL_1025: Unknown result type (might be due to invalid IL or missing references) //IL_1027: Unknown result type (might be due to invalid IL or missing references) //IL_102c: Unknown result type (might be due to invalid IL or missing references) //IL_103e: Unknown result type (might be due to invalid IL or missing references) //IL_1047: Expected O, but got Unknown //IL_1128: Unknown result type (might be due to invalid IL or missing references) //IL_112d: Unknown result type (might be due to invalid IL or missing references) //IL_1135: Unknown result type (might be due to invalid IL or missing references) //IL_1137: Unknown result type (might be due to invalid IL or missing references) //IL_1141: Expected O, but got Unknown //IL_1142: Unknown result type (might be due to invalid IL or missing references) //IL_1147: Unknown result type (might be due to invalid IL or missing references) //IL_114f: Unknown result type (might be due to invalid IL or missing references) //IL_1151: Unknown result type (might be due to invalid IL or missing references) //IL_115b: Expected O, but got Unknown //IL_10c3: Unknown result type (might be due to invalid IL or missing references) //IL_10c8: Unknown result type (might be due to invalid IL or missing references) //IL_10ce: Expected O, but got Unknown //IL_12fb: Unknown result type (might be due to invalid IL or missing references) //IL_1300: Unknown result type (might be due to invalid IL or missing references) //IL_1306: Expected O, but got Unknown //IL_131f: Unknown result type (might be due to invalid IL or missing references) //IL_1324: Unknown result type (might be due to invalid IL or missing references) //IL_132a: Expected O, but got Unknown //IL_16b5: Unknown result type (might be due to invalid IL or missing references) //IL_1d0f: Unknown result type (might be due to invalid IL or missing references) //IL_1d14: Unknown result type (might be due to invalid IL or missing references) //IL_1d29: Unknown result type (might be due to invalid IL or missing references) //IL_1d2b: Unknown result type (might be due to invalid IL or missing references) //IL_1d35: Expected O, but got Unknown //IL_1d36: Unknown result type (might be due to invalid IL or missing references) //IL_1d3b: Unknown result type (might be due to invalid IL or missing references) //IL_1d50: Unknown result type (might be due to invalid IL or missing references) //IL_1d52: Unknown result type (might be due to invalid IL or missing references) //IL_1d5c: Expected O, but got Unknown //IL_1d5d: Unknown result type (might be due to invalid IL or missing references) //IL_1d62: Unknown result type (might be due to invalid IL or missing references) //IL_1d77: Unknown result type (might be due to invalid IL or missing references) //IL_1d79: Unknown result type (might be due to invalid IL or missing references) //IL_1d83: Expected O, but got Unknown //IL_1dc4: Unknown result type (might be due to invalid IL or missing references) //IL_1dc9: Unknown result type (might be due to invalid IL or missing references) //IL_1dde: Unknown result type (might be due to invalid IL or missing references) //IL_1de0: Unknown result type (might be due to invalid IL or missing references) //IL_1dea: Expected O, but got Unknown //IL_1751: Unknown result type (might be due to invalid IL or missing references) //IL_1756: Unknown result type (might be due to invalid IL or missing references) //IL_175e: Unknown result type (might be due to invalid IL or missing references) //IL_1760: Unknown result type (might be due to invalid IL or missing references) //IL_176a: Expected O, but got Unknown //IL_1e3a: Unknown result type (might be due to invalid IL or missing references) //IL_1e3f: Unknown result type (might be due to invalid IL or missing references) //IL_1e54: Unknown result type (might be due to invalid IL or missing references) //IL_1e56: Unknown result type (might be due to invalid IL or missing references) //IL_1e60: Expected O, but got Unknown //IL_1e61: Unknown result type (might be due to invalid IL or missing references) //IL_1e66: Unknown result type (might be due to invalid IL or missing references) //IL_1e7b: Unknown result type (might be due to invalid IL or missing references) //IL_1e7d: Unknown result type (might be due to invalid IL or missing references) //IL_1e87: Expected O, but got Unknown //IL_1e88: Unknown result type (might be due to invalid IL or missing references) //IL_1e8d: Unknown result type (might be due to invalid IL or missing references) //IL_1ea2: Unknown result type (might be due to invalid IL or missing references) //IL_1ea4: Unknown result type (might be due to invalid IL or missing references) //IL_1eae: Expected O, but got Unknown //IL_1eaf: Unknown result type (might be due to invalid IL or missing references) //IL_1eb4: Unknown result type (might be due to invalid IL or missing references) //IL_1ec1: Unknown result type (might be due to invalid IL or missing references) //IL_1ec4: Unknown result type (might be due to invalid IL or missing references) //IL_1ec9: Unknown result type (might be due to invalid IL or missing references) //IL_1ed3: Expected O, but got Unknown //IL_1ed4: Unknown result type (might be due to invalid IL or missing references) //IL_1ed9: Unknown result type (might be due to invalid IL or missing references) //IL_1eee: Unknown result type (might be due to invalid IL or missing references) //IL_1ef0: Unknown result type (might be due to invalid IL or missing references) //IL_1efa: Expected O, but got Unknown //IL_1efb: Unknown result type (might be due to invalid IL or missing references) //IL_1f00: Unknown result type (might be due to invalid IL or missing references) //IL_1f15: Unknown result type (might be due to invalid IL or missing references) //IL_1f17: Unknown result type (might be due to invalid IL or missing references) //IL_1f21: Expected O, but got Unknown //IL_1f22: Unknown result type (might be due to invalid IL or missing references) //IL_1f27: Unknown result type (might be due to invalid IL or missing references) //IL_1f3c: Unknown result type (might be due to invalid IL or missing references) //IL_1f3e: Unknown result type (might be due to invalid IL or missing references) //IL_1f48: Expected O, but got Unknown //IL_1f49: Unknown result type (might be due to invalid IL or missing references) //IL_1f4e: Unknown result type (might be due to invalid IL or missing references) //IL_1f63: Unknown result type (might be due to invalid IL or missing references) //IL_1f65: Unknown result type (might be due to invalid IL or missing references) //IL_1f6f: Expected O, but got Unknown //IL_1f70: Unknown result type (might be due to invalid IL or missing references) //IL_1f75: Unknown result type (might be due to invalid IL or missing references) //IL_1f8a: Unknown result type (might be due to invalid IL or missing references) //IL_1f8c: Unknown result type (might be due to invalid IL or missing references) //IL_1f96: Expected O, but got Unknown //IL_1f97: Unknown result type (might be due to invalid IL or missing references) //IL_1f9c: Unknown result type (might be due to invalid IL or missing references) //IL_1fb1: Unknown result type (might be due to invalid IL or missing references) //IL_1fb3: Unknown result type (might be due to invalid IL or missing references) //IL_1fbd: Expected O, but got Unknown //IL_1fbe: Unknown result type (might be due to invalid IL or missing references) //IL_1fc3: Unknown result type (might be due to invalid IL or missing references) //IL_1fd8: Unknown result type (might be due to invalid IL or missing references) //IL_1fda: Unknown result type (might be due to invalid IL or missing references) //IL_1fe4: Expected O, but got Unknown //IL_1fe5: Unknown result type (might be due to invalid IL or missing references) //IL_1fea: Unknown result type (might be due to invalid IL or missing references) //IL_1fff: Unknown result type (might be due to invalid IL or missing references) //IL_2001: Unknown result type (might be due to invalid IL or missing references) //IL_200b: Expected O, but got Unknown //IL_200c: Unknown result type (might be due to invalid IL or missing references) //IL_2011: Unknown result type (might be due to invalid IL or missing references) //IL_2026: Unknown result type (might be due to invalid IL or missing references) //IL_2028: Unknown result type (might be due to invalid IL or missing references) //IL_2032: Expected O, but got Unknown //IL_2033: Unknown result type (might be due to invalid IL or missing references) //IL_2038: Unknown result type (might be due to invalid IL or missing references) //IL_204d: Unknown result type (might be due to invalid IL or missing references) //IL_204f: Unknown result type (might be due to invalid IL or missing references) //IL_2059: Expected O, but got Unknown //IL_205a: Unknown result type (might be due to invalid IL or missing references) //IL_205f: Unknown result type (might be due to invalid IL or missing references) //IL_2074: Unknown result type (might be due to invalid IL or missing references) //IL_2076: Unknown result type (might be due to invalid IL or missing references) //IL_2080: Expected O, but got Unknown //IL_2081: Unknown result type (might be due to invalid IL or missing references) //IL_2086: Unknown result type (might be due to invalid IL or missing references) //IL_209b: Unknown result type (might be due to invalid IL or missing references) //IL_209d: Unknown result type (might be due to invalid IL or missing references) //IL_20a7: Expected O, but got Unknown //IL_20f4: Unknown result type (might be due to invalid IL or missing references) //IL_20fc: Unknown result type (might be due to invalid IL or missing references) //IL_210c: Unknown result type (might be due to invalid IL or missing references) //IL_2111: Unknown result type (might be due to invalid IL or missing references) //IL_2126: Unknown result type (might be due to invalid IL or missing references) //IL_2128: Unknown result type (might be due to invalid IL or missing references) //IL_2132: Expected O, but got Unknown //IL_2133: Unknown result type (might be due to invalid IL or missing references) //IL_2138: Unknown result type (might be due to invalid IL or missing references) //IL_214d: Unknown result type (might be due to invalid IL or missing references) //IL_214f: Unknown result type (might be due to invalid IL or missing references) //IL_2159: Expected O, but got Unknown //IL_215a: Unknown result type (might be due to invalid IL or missing references) //IL_215f: Unknown result type (might be due to invalid IL or missing references) //IL_2174: Unknown result type (might be due to invalid IL or missing references) //IL_2176: Unknown result type (might be due to invalid IL or missing references) //IL_2180: Expected O, but got Unknown //IL_2181: Unknown result type (might be due to invalid IL or missing references) //IL_2186: Unknown result type (might be due to invalid IL or missing references) //IL_219b: Unknown result type (might be due to invalid IL or missing references) //IL_219d: Unknown result type (might be due to invalid IL or missing references) //IL_21a7: Expected O, but got Unknown //IL_21a8: Unknown result type (might be due to invalid IL or missing references) //IL_21ad: Unknown result type (might be due to invalid IL or missing references) //IL_21c2: Unknown result type (might be due to invalid IL or missing references) //IL_21c4: Unknown result type (might be due to invalid IL or missing references) //IL_21ce: Expected O, but got Unknown //IL_21cf: Unknown result type (might be due to invalid IL or missing references) //IL_21d4: Unknown result type (might be due to invalid IL or missing references) //IL_21e9: Unknown result type (might be due to invalid IL or missing references) //IL_21eb: Unknown result type (might be due to invalid IL or missing references) //IL_21f5: Expected O, but got Unknown //IL_21f6: Unknown result type (might be due to invalid IL or missing references) //IL_21fb: Unknown result type (might be due to invalid IL or missing references) //IL_2203: Unknown result type (might be due to invalid IL or missing references) //IL_2205: Unknown result type (might be due to invalid IL or missing references) //IL_220f: Expected O, but got Unknown //IL_2210: Unknown result type (might be due to invalid IL or missing references) //IL_2215: Unknown result type (might be due to invalid IL or missing references) //IL_221d: Unknown result type (might be due to invalid IL or missing references) //IL_221f: Unknown result type (might be due to invalid IL or missing references) //IL_2229: Expected O, but got Unknown //IL_1b32: Unknown result type (might be due to invalid IL or missing references) //IL_1b37: Unknown result type (might be due to invalid IL or missing references) //IL_1b3d: Expected O, but got Unknown pluginInfo = ((BaseUnityPlugin)this).Info; Log = ((BaseUnityPlugin)this).Logger; Config = new ConfigFile(Path.Combine(Paths.ConfigPath, "prodzpod.RecoveredAndReformed.cfg"), true); MajorConstructSpawn = Config.Bind<string>("Spawns", "Iota Construct Spawn Scenes", "skymeadow, itskymeadow, sulfurpools, itgolemplains, golemplains, golemplains2, forgottenhaven, FBLScene, village, villagenight, ironalluvium, ironalluvium2, conduitcanyon, repurposedcrater, helminthroost, slumberingsatellite", "List of scene names, separated by comma. By default, where Xi Construct spawns."); Assassin2Spawn = Config.Bind<string>("Spawns", "Assassin Spawn Scenes", "blackbeach, blackbeach2, rootjungle, arena, shipgraveyard, wispgraveyard, itancientloft, ancientloft, lakes, lakesnight, lemuriantemple, habitat, habitatfall", "List of scene names, separated by comma."); MajorConstructMinStage = Config.Bind<int>("Spawns", "Iota Construct Minimum Stage", 4, "Starting stage."); Assassin2MinStage = Config.Bind<int>("Spawns", "Assassin Minimum Stage", 3, "Starting stage."); EliteMagmaWorm = Config.Bind<bool>("Spawns", "Enable Elite Magma Worms", false, "If true, allows spawning of elite magma worms."); EliteOverloadingWorm = Config.Bind<bool>("Spawns", "Enable Elite Overloading Worms", false, "If true, allows spawning of elite overloading worms."); EliteAWU = Config.Bind<bool>("Spawns", "Enable Elite Alloy Worship Unit", false, "If true, allows spawning of elite AWUs."); EliteAurellionite = Config.Bind<bool>("Spawns", "Enable Elite Aurellionite", false, "If true, allows spawning of elite aurellionites."); EliteArtifactShell = Config.Bind<bool>("Spawns", "Enable Elite Artifact Reliquary", false, "If true, allows spawning of elite artifact reliquaries."); EliteDireseeker = Config.Bind<bool>("Spawns", "Enable Elite Direseeker", false, "If true, allows spawning of elite direseekers."); MajorConstructHealth = Config.Bind<float>("Basic Stats", "Iota Construct Base Health", 2100f, ""); MajorConstructHealthStack = Config.Bind<float>("Basic Stats", "Iota Construct Health Increase Per Level", 630f, ""); MajorConstructDamage = Config.Bind<float>("Basic Stats", "Iota Construct Base Damage", 25f, ""); MajorConstructDamageStack = Config.Bind<float>("Basic Stats", "Iota Construct Damage Increase Per Level", 5f, ""); MajorConstructAttackSpeed = Config.Bind<float>("Basic Stats", "Iota Construct Attack Speed", 1f, ""); MajorConstructArmor = Config.Bind<float>("Basic Stats", "Iota Construct Armor", 15f, ""); MajorConstructCost = Config.Bind<int>("Basic Stats", "Iota Construct Director Cost", 800, ""); Assassin2Health = Config.Bind<float>("Basic Stats", "Assassin Base Health", 120f, ""); Assassin2HealthStack = Config.Bind<float>("Basic Stats", "Assassin Health Increase Per Level", 36f, ""); Assassin2Damage = Config.Bind<float>("Basic Stats", "Assassin Base Damage", 10f, ""); Assassin2DamageStack = Config.Bind<float>("Basic Stats", "Assassin Damage Increase Per Level", 2f, ""); Assassin2AttackSpeed = Config.Bind<float>("Basic Stats", "Assassin Attack Speed", 1.2f, ""); Assassin2Speed = Config.Bind<float>("Basic Stats", "Assassin Speed", 12f, ""); Assassin2Armor = Config.Bind<float>("Basic Stats", "Assassin Armor", 0f, ""); Assassin2Cost = Config.Bind<int>("Basic Stats", "Assassin Director Cost", 28, "Default: 10."); MagmaWormHealth = Config.Bind<float>("Basic Stats", "Magma Worm Base Health", 2400f, ""); MagmaWormHealthStack = Config.Bind<float>("Basic Stats", "Magma Worm Health Increase Per Level", 720f, ""); MagmaWormDamage = Config.Bind<float>("Basic Stats", "Magma Worm Base Damage", 10f, ""); MagmaWormDamageStack = Config.Bind<float>("Basic Stats", "Magma Worm Damage Increase Per Level", 2f, ""); MagmaWormAttackSpeed = Config.Bind<float>("Basic Stats", "Magma Worm Attack Speed", 1f, ""); MagmaWormSpeed = Config.Bind<float>("Basic Stats", "Magma Worm Speed", 20f, ""); MagmaWormArmor = Config.Bind<float>("Basic Stats", "Magma Worm Armor", 15f, ""); MagmaWormCost = Config.Bind<int>("Basic Stats", "Magma Worm Director Cost", 800, ""); OverloadingWormHealth = Config.Bind<float>("Basic Stats", "Overloading Worm Base Health", 12000f, ""); OverloadingWormHealthStack = Config.Bind<float>("Basic Stats", "Overloading Worm Health Increase Per Level", 3600f, ""); OverloadingWormDamage = Config.Bind<float>("Basic Stats", "Overloading Worm Base Damage", 50f, ""); OverloadingWormDamageStack = Config.Bind<float>("Basic Stats", "Overloading Worm Damage Increase Per Level", 10f, ""); OverloadingWormAttackSpeed = Config.Bind<float>("Basic Stats", "Overloading Worm Attack Speed", 1f, ""); OverloadingWormSpeed = Config.Bind<float>("Basic Stats", "Overloading Worm Speed", 20f, ""); OverloadingWormArmor = Config.Bind<float>("Basic Stats", "Overloading Worm Armor", 15f, ""); OverloadingWormCost = Config.Bind<int>("Basic Stats", "Overloading Worm Director Cost", 4000, ""); AcidLarvaHealth = Config.Bind<float>("Basic Stats", "Acid Larva Base Health", 45f, ""); AcidLarvaHealthStack = Config.Bind<float>("Basic Stats", "Acid Larva Health Increase Per Level", 14f, ""); AcidLarvaDamage = Config.Bind<float>("Basic Stats", "Acid Larva Base Damage", 22f, "Default: 11."); AcidLarvaDamageStack = Config.Bind<float>("Basic Stats", "Acid Larva Damage Increase Per Level", 4.4f, "Default: 2.2."); AcidLarvaAttackSpeed = Config.Bind<float>("Basic Stats", "Acid Larva Attack Speed", 1f, ""); AcidLarvaSpeed = Config.Bind<float>("Basic Stats", "Acid Larva Speed", 1f, ""); AcidLarvaArmor = Config.Bind<float>("Basic Stats", "Acid Larva Armor", 0f, ""); AcidLarvaCost = Config.Bind<int>("Basic Stats", "Acid Larva Director Cost", 25, ""); AWUHealth = Config.Bind<float>("Basic Stats", "Alloy Worship Unit Base Health", 2500f, ""); AWUHealthStack = Config.Bind<float>("Basic Stats", "Alloy Worship Unit Health Increase Per Level", 750f, ""); AWUDamage = Config.Bind<float>("Basic Stats", "Alloy Worship Unit Base Damage", 15f, ""); AWUDamageStack = Config.Bind<float>("Basic Stats", "Alloy Worship Unit Damage Increase Per Level", 3f, ""); AWUAttackSpeed = Config.Bind<float>("Basic Stats", "Alloy Worship Unit Attack Speed", 1f, ""); AWUSpeed = Config.Bind<float>("Basic Stats", "Alloy Worship Unit Speed", 7f, ""); AWUArmor = Config.Bind<float>("Basic Stats", "Alloy Worship Unit Armor", 30f, ""); AurellioniteHealth = Config.Bind<float>("Basic Stats", "Aurellionite Base Health", 2100f, ""); AurellioniteHealthStack = Config.Bind<float>("Basic Stats", "Aurellionite Health Increase Per Level", 630f, ""); AurellioniteDamage = Config.Bind<float>("Basic Stats", "Aurellionite Base Damage", 40f, ""); AurellioniteDamageStack = Config.Bind<float>("Basic Stats", "Aurellionite Damage Increase Per Level", 8f, ""); AurellioniteAttackSpeed = Config.Bind<float>("Basic Stats", "Aurellionite Attack Speed", 1f, ""); AurellioniteSpeed = Config.Bind<float>("Basic Stats", "Aurellionite Speed", 5f, ""); AurellioniteArmor = Config.Bind<float>("Basic Stats", "Aurellionite Armor", 20f, ""); ArtifactShellHealth = Config.Bind<float>("Basic Stats", "Artifact Reliquary Base Health", 100000f, ""); ArtifactShellHealthStack = Config.Bind<float>("Basic Stats", "Artifact Reliquary Health Increase Per Level", 30000f, ""); ArtifactShellDamage = Config.Bind<float>("Basic Stats", "Artifact Reliquary Base Damage", 30f, "Default: 10."); ArtifactShellDamageStack = Config.Bind<float>("Basic Stats", "Artifact Reliquary Damage Increase Per Level", 6f, "Default: 2."); ArtifactShellAttackSpeed = Config.Bind<float>("Basic Stats", "Artifact Reliquary Attack Speed", 1f, ""); ArtifactShellArmor = Config.Bind<float>("Basic Stats", "Artifact Reliquary Armor", 100000f, ""); DireseekerHealth = Config.Bind<float>("Basic Stats", "Direseeker Base Health", 2800f, ""); DireseekerHealthStack = Config.Bind<float>("Basic Stats", "Direseeker Health Increase Per Level", 840f, ""); DireseekerDamage = Config.Bind<float>("Basic Stats", "Direseeker Base Damage", 20f, ""); DireseekerDamageStack = Config.Bind<float>("Basic Stats", "Direseeker Damage Increase Per Level", 4f, ""); DireseekerAttackSpeed = Config.Bind<float>("Basic Stats", "Direseeker Attack Speed", 1f, ""); DireseekerSpeed = Config.Bind<float>("Basic Stats", "Direseeker Speed", 11f, ""); DireseekerArmor = Config.Bind<float>("Basic Stats", "Direseeker Armor", 0f, ""); MajorConstructDeathTimer = Config.Bind<float>("Iota Construct", "Death Timer", 5f, "Amount of seconds to show death animation for"); MajorConstructSpawnAmount = Config.Bind<int>("Iota Construct", "Spawn Amount", 3, "Amount of enemies to spawn in pillar raise phase"); MajorConstructSpawnSigmaInstead = Config.Bind<bool>("Iota Construct", "Spawn Sigma Constructs", true, "Spikestrip Compat"); MajorConstructSpawnTheta = Config.Bind<bool>("Iota Construct", "Spawn Theta Constructs", true, "Sandswept Compat"); MajorConstructBeamDistance = Config.Bind<float>("Iota Construct", "Beam Distance", 150f, "Used to be 999"); MajorConstructAimSpeed = Config.Bind<float>("Iota Construct", "Aim Speed", 10f, "Strafe around!"); Assassin2InvisDuration = Config.Bind<float>("Assassin", "Invisible Duration", 2f, "Default: 5"); Assassin2InvisEndlag = Config.Bind<float>("Assassin", "Invisible End Lag", 3f, "Default: 10"); Assassin2DashDuration = Config.Bind<float>("Assassin", "Dash Duration", 2.5f, "Default: 2.5"); Assassin2DashSpeed = Config.Bind<float>("Assassin", "Dash Speed", 3f, "Default: 4"); Assassin2SlashDuration = Config.Bind<float>("Assassin", "Slash Duration", 1.5f, "Default: 1.667"); Assassin2SlashDamage = Config.Bind<float>("Assassin", "Slash Damage", 1f, "Default: 4"); Assassin2SlashKnockback = Config.Bind<float>("Assassin", "Slash Knockback", 16f, "Default: 16"); Assassin2SlashReach = Config.Bind<float>("Assassin", "Slash Reach", 25f, "Default: 20"); Assassin2Slash1 = Config.Bind<bool>("Assassin", "Enable Slash 1", true, "Enable the first slash hit."); Assassin2Slash2 = Config.Bind<bool>("Assassin", "Enable Slash 2", true, "Enable the second slash hit."); Assassin2SlashExpose = Config.Bind<float>("Assassin", "Enable Slash Expose", 4f, "In seconds. Enable the slash hit to `expose` you."); Assassin2SlashSize = Config.Bind<float>("Assassin", "Slash Hitbox Size Multiplier", 2f, "stop whiffing wtf"); Assassin2SlashMultihit = Config.Bind<bool>("Assassin", "Slash Multihit", false, "This is the shuriken 5 hit"); Assassin2ShurikenSize = Config.Bind<float>("Assassin", "Shuriken Hitbox Size Multiplier", 2f, "stop whiffing wtf"); Assassin2Accurate = Config.Bind<bool>("Assassin", "Shuriken Accurate Enemies Compat", true, "oh they mess you up good"); Assassin2AccurateLoop = Config.Bind<bool>("Assassin", "Shuriken Accurate Enemies Compat (loop only)", false, "oh they mess you up good"); FamilyEventChance = Config.Bind<float>("Family Event", "Family Event Chance", 0.02f, "Chance for a stage to roll a family event. Negative to leave the game's own chance alone."); EnableFamilyChange = Config.Bind<bool>("Family Event", "Enable Family Compats", true, "Enable all family event related compats."); TarFamily = Config.Bind<string>("Family Event", "Enable Tar Family", "ancientloft, itancientloft, wispgraveyard, sulfurpools, goolake, itgoolake, drybasin, repurposedcrater", "Custom family event. List of scenes, separated by comma. blank to disable."); AltWispFamily = Config.Bind<string>("Family Event", "Enable Alt Wisp Family", "ancientloft, itancientloft, frozenwall, snowyforest, forgottenhaven, FBLScene, nest, ironalluvium, ironalluvium2, helminthroost", "Custom family event. List of scenes, separated by comma. blank to disable. otherwise wisp enemies will be added to normal wisp group."); OneEyeFamily = Config.Bind<string>("Family Event", "Enable One Eye Family", "snowyforest, foggyswamp, ancientloft, sulfurpools, dampcavesimple, drybasin, slumberingsatellite, skymeadow, itskymeadow, itancientloft, itdampcave, nest, helminthroost, lemuriantemple", "Custom family event. List of scenes, separated by comma. blank to disable."); BlindFamily = Config.Bind<string>("Family Event", "Enable Blind Family", "ancientloft, itancientloft, itfrozenwall, frozenwall, snowyforest, FBLScene, nest, ironalluvium, ironalluvium2", "Custom family event. List of scenes, separated by comma. blank to disable."); BellFamily = Config.Bind<string>("Family Event", "Enable Bell Family", "itdampcave, dampcavesimple, shipgraveyard, itskymeadow, skymeadow, foggyswamp, FBLScene, nest, ironalluvium, ironalluvium2, repurposedcrater, lemuriantemple", "Custom family event. List of scenes, separated by comma. blank to disable. disables if BT is not loaded."); DebugLogging = Config.Bind<bool>("Family Event", "Debug Logging", false, "Logs which modded enemies were found at the start of each run, and every enemy added to a family."); RemoveLarvaFamily = Config.Bind<bool>("Family Event", "Remove Larva Family Event", true, "jesus lol"); LarvaDetonateSelfDamage = Config.Bind<float>("Sneaky Rebalance", "Acid Larva Detonation Self Damage Fraction", 1f, "What if larvas died on first leap (no way), Default: 0.25"); AWUShieldTime = Config.Bind<float>("Sneaky Rebalance", "Alloy Worship Unit Shield Uptime", 2.5f, "Default: 6."); DireseekerDropAtPlace = Config.Bind<bool>("Sneaky Rebalance", "Direseeker Drops Item In Place", true, "Literally where did it drop what"); object obj = <>c.<>9__122_0; if (obj == null) { hook_OnEnter val = delegate(orig_OnEnter orig, LarvaLeap self) { orig.Invoke(self); self.detonateSelfDamageFraction = LarvaDetonateSelfDamage.Value; }; <>c.<>9__122_0 = val; obj = (object)val; } LarvaLeap.OnEnter += (hook_OnEnter)obj; Reworks.IotaConstruct(); Reworks.Assassin2(); ((ResourceAvailability)(ref BodyCatalog.availability)).CallWhenAvailable((Action)delegate { CharacterBody component = BodyCatalog.FindBodyPrefab("MajorConstructBody").GetComponent<CharacterBody>(); CharacterBody component2 = BodyCatalog.FindBodyPrefab("Assassin2Body").GetComponent<CharacterBody>(); CharacterBody component3 = BodyCatalog.FindBodyPrefab("MagmaWormBody").GetComponent<CharacterBody>(); CharacterBody component4 = BodyCatalog.FindBodyPrefab("ElectricWormBody").GetComponent<CharacterBody>(); CharacterBody component5 = BodyCatalog.FindBodyPrefab("AcidLarvaBody").GetComponent<CharacterBody>(); CharacterBody component6 = BodyCatalog.FindBodyPrefab("SuperRoboBallBossBody").GetComponent<CharacterBody>(); CharacterBody component7 = BodyCatalog.FindBodyPrefab("TitanGoldBody").GetComponent<CharacterBody>(); CharacterBody component8 = BodyCatalog.FindBodyPrefab("ArtifactShellBody").GetComponent<CharacterBody>(); GameObject obj6 = BodyCatalog.FindBodyPrefab("DireseekerBossBody"); CharacterBody val11 = ((obj6 != null) ? obj6.GetComponent<CharacterBody>() : null); component.baseMaxHealth = MajorConstructHealth.Value; component.levelMaxHealth = MajorConstructHealthStack.Value; component.baseDamage = MajorConstructDamage.Value; component.levelDamage = MajorConstructDamageStack.Value; component.baseAttackSpeed = MajorConstructAttackSpeed.Value; component.baseArmor = MajorConstructArmor.Value; component.isChampion = true; if (!string.IsNullOrWhiteSpace(MajorConstructSpawn.Value)) { ((Component)component).GetComponent<DeathRewards>().bossDropTable = (PickupDropTable)(object)vanilla<ExplicitPickupDropTable>("DLC1/MajorAndMinorConstruct/dtBossMegaConstruct"); ((Component)component).GetComponent<DeathRewards>().logUnlockableDef = LegacyResourcesAPI.Load<UnlockableDef>("UnlockableDefs/Logs.MajorConstructBody"); } component2.baseMaxHealth = Assassin2Health.Value; component2.levelMaxHealth = Assassin2HealthStack.Value; component2.baseDamage = Assassin2Damage.Value; component2.levelDamage = Assassin2DamageStack.Value; component2.baseAttackSpeed = Assassin2AttackSpeed.Value; component2.baseMoveSpeed = Assassin2Speed.Value; component2.baseArmor = Assassin2Armor.Value; if (!string.IsNullOrWhiteSpace(Assassin2Spawn.Value)) { ((Component)component2).gameObject.AddComponent<DeathRewards>().logUnlockableDef = vanilla<UnlockableDef>("DLC1/Assassin2/Logs.Assassin2Body"); } component3.baseMaxHealth = MagmaWormHealth.Value; component3.levelMaxHealth = MagmaWormHealthStack.Value; component3.baseDamage = MagmaWormDamage.Value; component3.levelDamage = MagmaWormDamageStack.Value; component3.baseAttackSpeed = MagmaWormAttackSpeed.Value; component3.baseMoveSpeed = MagmaWormSpeed.Value; component3.baseArmor = MagmaWormArmor.Value; component4.baseMaxHealth = OverloadingWormHealth.Value; component4.levelMaxHealth = OverloadingWormHealthStack.Value; component4.baseDamage = OverloadingWormDamage.Value; component4.levelDamage = OverloadingWormDamageStack.Value; component4.baseAttackSpeed = OverloadingWormAttackSpeed.Value; component4.baseMoveSpeed = OverloadingWormSpeed.Value; component4.baseArmor = OverloadingWormArmor.Value; component5.baseMaxHealth = AcidLarvaHealth.Value; component5.levelMaxHealth = AcidLarvaHealthStack.Value; component5.baseDamage = AcidLarvaDamage.Value; component5.levelDamage = AcidLarvaDamageStack.Value; component5.baseAttackSpeed = AcidLarvaAttackSpeed.Value; component5.baseMoveSpeed = AcidLarvaSpeed.Value; component5.baseArmor = AcidLarvaArmor.Value; component6.baseMaxHealth = AWUHealth.Value; component6.levelMaxHealth = AWUHealthStack.Value; component6.baseDamage = AWUDamage.Value; component6.levelDamage = AWUDamageStack.Value; component6.baseAttackSpeed = AWUAttackSpeed.Value; component6.baseMoveSpeed = AWUSpeed.Value; component6.baseArmor = AWUArmor.Value; component7.baseMaxHealth = AurellioniteHealth.Value; component7.levelMaxHealth = AurellioniteHealthStack.Value; component7.baseDamage = AurellioniteDamage.Value; component7.levelDamage = AurellioniteDamageStack.Value; component7.baseAttackSpeed = AurellioniteAttackSpeed.Value; component7.baseMoveSpeed = AurellioniteSpeed.Value; component7.baseArmor = AurellioniteArmor.Value; component8.baseMaxHealth = ArtifactShellHealth.Value; component8.levelMaxHealth = ArtifactShellHealthStack.Value; component8.baseDamage = ArtifactShellDamage.Value; component8.levelDamage = ArtifactShellDamageStack.Value; component8.baseAttackSpeed = ArtifactShellAttackSpeed.Value; component8.baseArmor = ArtifactShellArmor.Value; if ((Object)(object)val11 != (Object)null) { val11.baseMaxHealth = DireseekerHealth.Value; val11.levelMaxHealth = DireseekerHealthStack.Value; val11.baseDamage = DireseekerDamage.Value; val11.levelDamage = DireseekerDamageStack.Value; val11.baseAttackSpeed = DireseekerAttackSpeed.Value; val11.baseMoveSpeed = DireseekerSpeed.Value; val11.baseArmor = DireseekerArmor.Value; } }); CharacterSpawnCard val2 = vanilla<CharacterSpawnCard>("DLC1/MajorAndMinorConstruct/cscMajorConstruct"); Object.Destroy((Object)(object)((SpawnCard)val2).prefab.GetComponent<SetDontDestroyOnLoad>()); CharacterSpawnCard val3 = vanilla<CharacterSpawnCard>("DLC1/Assassin2/cscAssassin2"); CharacterSpawnCard val4 = vanilla<CharacterSpawnCard>("Base/MagmaWorm/cscMagmaWorm"); CharacterSpawnCard val5 = vanilla<CharacterSpawnCard>("Base/ElectricWorm/cscElectricWorm"); CharacterSpawnCard val6 = vanilla<CharacterSpawnCard>("DLC1/AcidLarva/cscAcidLarva"); ((SpawnCard)val2).directorCreditCost = MajorConstructCost.Value; ((SpawnCard)val3).directorCreditCost = Assassin2Cost.Value; ((SpawnCard)val4).directorCreditCost = MagmaWormCost.Value; ((SpawnCard)val5).directorCreditCost = OverloadingWormCost.Value; ((SpawnCard)val6).directorCreditCost = AcidLarvaCost.Value; DirectorCard card = new DirectorCard { spawnCard = (SpawnCard)(object)val2, selectionWeight = 1, spawnDistance = (MonsterSpawnDistance)0, minimumStageCompletions = MajorConstructMinStage.Value - 1, preventOverhead = true }; DirectorCard card2 = new DirectorCard { spawnCard = (SpawnCard)(object)val3, selectionWeight = 1, spawnDistance = (MonsterSpawnDistance)0, minimumStageCompletions = Assassin2MinStage.Value - 1, preventOverhead = true }; if (EliteMagmaWorm.Value) { enableElite(val4); } if (EliteOverloadingWorm.Value) { enableElite(val5); } if (EliteAWU.Value) { enableElite(vanilla<CharacterSpawnCard>("Base/RoboBallBoss/cscSuperRoboBallBoss")); } if (EliteAurellionite.Value) { enableElite(vanilla<CharacterSpawnCard>("Base/Titan/cscTitanGold")); } if (EliteArtifactShell.Value) { object obj2 = <>c.<>9__122_2; if (obj2 == null) { hook_OnEnter val7 = delegate(orig_OnEnter orig, WaitForIntro self) { orig.Invoke(self); if (((EntityState)self).characterBody.eliteBuffCount == 0) { List<EliteDef> list = new List<EliteDef>(); foreach (EliteDef[] item in CombatDirector.eliteTiers.Where((EliteTierDef x) => RunArtifactManager.instance.IsArtifactEnabled(Artifacts.EliteOnly) || (x.CanSelect((EliteRules)0) && x.costMultiplier < (float)(Run.instance.loopClearCount * 10))).ToList().ConvertAll((EliteTierDef x) => x.eliteTypes)) { foreach (EliteDef val11 in item) { if ((Object)(object)val11 != (Object)null && val11.IsAvailable()) { list.Add(val11); } } } if (list.Count != 0) { EliteDef val12 = Run.instance.spawnRng.NextElementUniform<EliteDef>(list); ((EntityState)self).characterBody.AddBuff(val12.eliteEquipmentDef.passiveBuffDef); } } }; <>c.<>9__122_2 = val7; obj2 = (object)val7; } WaitForIntro.OnEnter += (hook_OnEnter)obj2; } if (EliteDireseeker.Value && Mods("com.rob.Direseeker")) { RoR2Application.onLoad = (Action)Delegate.Combine(RoR2Application.onLoad, (Action)delegate { CharacterSpawnCard val11 = MonsterLookup.Find("cscDireseekerBoss"); if (Object.op_Implicit((Object)(object)val11)) { enableElite(val11); } }); } DirectorCardHolder majorConstructDCH = new DirectorCardHolder { Card = card, MonsterCategory = (MonsterCategory)4 }; DirectorCardHolder assassin2DCH = new DirectorCardHolder { Card = card2, MonsterCategory = (MonsterCategory)2 }; string[] iotalist = listify(MajorConstructSpawn.Value).ToArray(); string[] assassinlist = listify(Assassin2Spawn.Value).ToArray(); if (!string.IsNullOrWhiteSpace(MajorConstructSpawn.Value)) { Helpers.AddNewMonsterToStagesWhere(majorConstructDCH, false, (Predicate<StageInfo>)((StageInfo info) => iotalist.Contains(info.CustomStageName) || iotalist.Contains(((StageInfo)(ref info)).ToInternalStageName()))); RoR2Application.onLoad = (Action)Delegate.Combine(RoR2Application.onLoad, (Action)delegate { DirectorAPI.AddCard(RoR2Content.mixEnemyMonsterCards, majorConstructDCH); }); addToFamily(FamilyMember.FromHolder(majorConstructDCH), "dccsConstructFamily", "dccsOneEyeFamily"); } if (!string.IsNullOrWhiteSpace(Assassin2Spawn.Value)) { Helpers.AddNewMonsterToStagesWhere(assassin2DCH, false, (Predicate<StageInfo>)((StageInfo info) => assassinlist.Contains(info.CustomStageName) || assassinlist.Contains(((StageInfo)(ref info)).ToInternalStageName()))); RoR2Application.onLoad = (Action)Delegate.Combine(RoR2Application.onLoad, (Action)delegate { DirectorAPI.AddCard(RoR2Content.mixEnemyMonsterCards, assassin2DCH); }); } if (Mods("PlasmaCore.ForgottenRelics")) { RoR2Application.onLoad = (Action)Delegate.Combine(RoR2Application.onLoad, (Action)delegate { GameObject val11 = MasterCatalog.FindMasterPrefab("BrassMonolithMonsterMaster"); if (Object.op_Implicit((Object)(object)val11)) { CharacterSpawnCard[] array2 = Resources.FindObjectsOfTypeAll<CharacterSpawnCard>(); foreach (CharacterSpawnCard val12 in array2) { if (Object.op_Implicit((Object)(object)val12) && ((Object)val12).name == "cscBrassMonolith") { ((SpawnCard)val12).prefab = val11; } } } }); } if (Mods("PlasmaCore.ForgottenRelics", "JaceDaDorito.FBLStage")) { addToStage(FamilyMember.Modded((MonsterCategory)4, "cscBrassMonolith"), "FBLScene"); } ClassicStageInfo.monsterFamilyChance = FamilyEventChance.Value; object obj3 = <>c.<>9__122_10; if (obj3 == null) { Manipulator val8 = delegate(ILContext il) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0007: Expected O, but got Unknown //IL_0049: Unknown result type (might be due to invalid IL or missing references) ILCursor val11 = new ILCursor(il); if (!val11.TryGotoNext((MoveType)2, new Func<Instruction, bool>[1] { (Instruction x) => ILPatternMatchingExt.MatchStfld<ClassicStageInfo>(x, "modifiableMonsterCategories") })) { Log.LogError((object)"Failed to hook ClassicStageInfo.RebuildCards, family additions will not apply."); } else { val11.Emit(OpCodes.Ldarg_0); val11.EmitDelegate<Action<ClassicStageInfo>>((Action<ClassicStageInfo>)delegate(ClassicStageInfo self) { HandleDccs(self.modifiableMonsterCategories); }); } }; <>c.<>9__122_10 = val8; obj3 = (object)val8; } ClassicStageInfo.RebuildCards += (Manipulator)obj3; object obj4 = <>c.<>9__122_11; if (obj4 == null) { hook_RebuildCards val9 = delegate(orig_RebuildCards orig, ClassicStageInfo self, DirectorCardCategorySelection a, DirectorCardCategorySelection b) { PreparePool(self); orig.Invoke(self, a, b); }; <>c.<>9__122_11 = val9; obj4 = (object)val9; } ClassicStageInfo.RebuildCards += (hook_RebuildCards)obj4; Run.onRunStartGlobal += delegate { if (!DebugLogging.Value) { return; } foreach (KeyValuePair<string, List<FamilyMember>> familyAddition in familyAdditions) { List<string> list = new List<string>(); List<string> list2 = new List<string>(); foreach (FamilyMember item2 in familyAddition.Value) { CharacterSpawnCard val11 = item2.spawnCard(); if (Object.op_Implicit((Object)(object)val11)) { list.Add(((Object)val11).name); } else { list2.Add(item2.label); } } Log.LogInfo((object)(familyAddition.Key + ": found [" + string.Join(", ", list) + "]" + ((list2.Count > 0) ? (", not installed/enabled [" + string.Join(", ", list2) + "]") : ""))); } }; string text = (string.IsNullOrWhiteSpace(AltWispFamily.Value) ? "dccsWispFamily" : "dccsAltWispFamily"); string[] array = new string[4] { "dccsGolemFamily", "dccsGolemFamilySandy", "dccsGolemFamilySnowy", "dccsGolemFamilyNature" }; if (EnableFamilyChange.Value) { addToFamily(FamilyMember.Modded((MonsterCategory)4, "cscColossusDefault"), "dccsGolemFamily", "dccsOneEyeFamily"); addToFamily(FamilyMember.Modded((MonsterCategory)4, "cscColossusSandy"), "dccsGolemFamilySandy"); addToFamily(FamilyMember.Modded((MonsterCategory)4, "cscColossusSnowy"), "dccsGolemFamilySnowy"); addToFamily(FamilyMember.Modded((MonsterCategory)4, "cscColossusGrassy"), "dccsGolemFamilyNature"); addToFamily(FamilyMember.Modded((MonsterCategory)2, "cscSwiftDefault"), array); addToFamily(FamilyMember.Modded((MonsterCategory)2, "cscSpitterDefault"), "dccsBeetleFamily"); addToFamily(FamilyMember.Modded((MonsterCategory)2, "cscSpitterSulfur"), "dccsBeetleFamilySulfur"); addToFamily(FamilyMember.Modded((MonsterCategory)2, "cscSandCrabDefault"), "dccsBeetleFamily"); addToFamily(FamilyMember.Modded((MonsterCategory)2, "cscSandCrabSulfur"), "dccsBeetleFamilySulfur"); addToFamily(FamilyMember.Modded((MonsterCategory)2, "cscLynxShamanDefault"), "dccsLynxFamily"); addToFamily(FamilyMember.Modded((MonsterCategory)4, "cscLynxTotemDefault"), "dccsLynxFamily"); addToFamily(FamilyMember.Modded((MonsterCategory)3, "cscBlue", "NDP_BLUE_BODY_NAME"), array); addToFamily(FamilyMember.Modded((MonsterCategory)2, "cscLunarConstruct"), "dccsLunarFamily", "dccsOneEyeFamily"); addToFamily(FamilyMember.Modded((MonsterCategory)2, "cscThetaConstruct"), "dccsOneEyeFamily"); addToFamily(FamilyMember.Modded((MonsterCategory)3, "cscDeltaConstruct"), "dccsOneEyeFamily"); addToFamily(FamilyMember.Modded((MonsterCategory)3, "cscSigmaConstruct", "CHARACTER_SIGMACONSTRUCT_NAME"), "dccsConstructFamily"); addToFamily(FamilyMember.Modded((MonsterCategory)3, "cscFrostWisp"), text); FamilyMember familyMember = FamilyMember.Modded((MonsterCategory)3, "cscCoilGolem"); familyMember.spawnDistance = (MonsterSpawnDistance)2; addToFamily(familyMember, array.Append("dccsBlindFamily").Append("fdccsGolemSandy").ToArray()); if (Mods("PlasmaCore.ForgottenRelics") && !string.IsNullOrWhiteSpace(BellFamily.Value)) { DirectorCard directorCard = GetDirectorCard(vanilla<CharacterSpawnCard>("Base/Bell/cscBell")); directorCard.preventOverhead = true; FamilyMember brassMonolith = FamilyMember.Modded((MonsterCategory)3, "cscBrassMonolith"); AddFamilyEvent("Bell", new List<DirectorCardHolder> { new DirectorCardHolder { Card = directorCard, MonsterCategory = (MonsterCategory)3 } }, listify(BellFamily.Value), () => Object.op_Implicit((Object)(object)brassMonolith.spawnCard())); addToFamily(brassMonolith, "dccsBellFamily"); } LanguageAPI.Add("FAMILY_BELL", "<style=cWorldEvent>[WARNING] The clock is ticking...</style>"); addToFamily(FamilyMember.Modded((MonsterCategory)2, "cscClayMan"), "dccsTarFamily"); addToFamily(FamilyMember.Modded((MonsterCategory)4, "cscAncientWisp"), text); addToFamily(FamilyMember.Modded((MonsterCategory)3, "cscArchWisp"), text); addToFamily(FamilyMember.Modded((MonsterCategory)2, "cscLivelyPot", "PotMobileMonsterMaster"), "dccsTarFamily"); addToFamily(FamilyMember.Modded((MonsterCategory)2, "cscCloudburstGuardsman", "CLOUDBURST_GUARDSMAN_BODY_NAME"), "dccsTarFamily"); addToFamily(FamilyMember.Modded((MonsterCategory)2, "SS2_CLAYMONGER_BODY_NAME", "Clay Monger"), "dccsTarFamily"); addToFamily(FamilyMember.Vanilla("Base/RoboBallBoss/cscRoboBallMini", (MonsterCategory)2), "dccsSuperRoboBallpitFamily"); addToFamily(FamilyMember.Vanilla("DLC2/Child/cscChild"), "dccsParentFamily"); addToFamily(FamilyMember.Vanilla("Base/Parent/cscParent", (MonsterCategory)3), "dccsParentFamily"); addToFamily(FamilyMember.Vanilla("Base/Grandparent/cscGrandparent", (MonsterCategory)4), "dccsParentFamily"); addToFamily(FamilyMember.Modded((MonsterCategory)3, "cscRobYoungVagrant", "YOUNGVAGRANT_BODY_NAME"), "dccsJellyfishFamily"); addToFamily(FamilyMember.Modded(null, "cscBomberWisp", "Bomber Wisp"), text); addToFamily(FamilyMember.Modded((MonsterCategory)2, "cscDemineur"), "dccsBlindFamily"); addToFamily(FamilyMember.Vanilla("DLC4/BigMush/cscBigMush"), "dccsMushroomFamily"); addToFamily(FamilyMember.Modded((MonsterCategory)2, "cscDwarfMushrum", "DWARFMUSHRUM_BODY_NAME"), "dccsMushroomFamily"); addToFamily(FamilyMember.Modded((MonsterCategory)2, "SS2_RUNSHROOM_BODY_NAME", "Rushrum"), "dccsMushroomFamily"); addToFamily(FamilyMember.Modded((MonsterCategory)3, "RisingTides_MushSupporterMaster", "RisingTides_MushSupporterBody"), "dccsMushroomFamily"); addToFamily(FamilyMember.Vanilla("DLC1/Gup/cscGeepBody", (MonsterCategory)3), "dccsGupFamily"); addToFamily(FamilyMember.Vanilla("DLC1/Gup/cscGipBody", (MonsterCategory)2), "dccsGupFamily"); if (DireseekerDropAtPlace.Value && Mods("com.rob.Direseeker")) { object obj5 = <>c.<>9__122_17; if (obj5 == null) { hook_OnMemberDefeatedServer val10 = delegate(orig_OnMemberDefeatedServer orig, BossGroup self, CharacterMaster master, DamageReport report) { //IL_0047: Unknown result type (might be due to invalid IL or missing references) if (Object.op_Implicit((Object)(object)self.dropPosition) && Object.op_Implicit((Object)(object)report?.victimBody) && ((Object)report.victimBody).name.StartsWith("DireseekerBossBody")) { self.dropPosition.position = report.victimBody.corePosition; } orig.Invoke(self, master, report); }; <>c.<>9__122_17 = val10; obj5 = (object)val10; } BossGroup.OnMemberDefeatedServer += (hook_OnMemberDefeatedServer)obj5; } RoR2Application.onLoad = (Action)Delegate.Combine(RoR2Application.onLoad, (Action)delegate { FireSuperDelayKnockup.shieldDuration = AWUShieldTime.Value; }); AddFamilyToStages(vanilla<FamilyDirectorCardCategorySelection>("Base/Common/DirectorCardCategorySelections/dccsParentFamily"), new List<string> { "itskymeadow", "skymeadow", "forgottenhaven", "slumberingsatellite", "artifactworld" }); AddFamilyToStages(vanilla<FamilyDirectorCardCategorySelection>("Base/Common/DirectorCardCategorySelections/dccsMushroomFamily"), new List<string> { "skymeadow", "itskymeadow", "rootjungle", "drybasin", "goldshores", "FBLScene", "sulfurpools" }); AddFamilyToStages(vanilla<FamilyDirectorCardCategorySelection>("DLC1/Common/dccsConstructFamily"), new List<string> { "itskymeadow", "skymeadow", "FBLScene", "forgottenhaven", "golemplains", "golemplains2" }); AddFamilyToStages(vanilla<FamilyDirectorCardCategorySelection>("Base/Common/DirectorCardCategorySelections/dccsLemurianFamily"), new List<string> { "drybasin", "goldshores" }); AddFamilyToStages(vanilla<FamilyDirectorCardCategorySelection>("Base/Common/DirectorCardCategorySelections/dccsGolemFamily"), new List<string> { "forgottenhaven" }); AddFamilyToStages(vanilla<FamilyDirectorCardCategorySelection>("Base/Common/DirectorCardCategorySelections/dccsGolemFamilyNature"), new List<string> { "goldshores", "FBLScene" }); } if (!string.IsNullOrWhiteSpace(TarFamily.Value)) { AddFamilyEvent("Tar", new List<DirectorCardHolder> { new DirectorCardHolder { Card = GetDirectorCard(vanilla<CharacterSpawnCard>("Base/ClayBoss/cscClayBoss")), MonsterCategory = (MonsterCategory)4 }, new DirectorCardHolder { Card = GetDirectorCard(vanilla<CharacterSpawnCard>("Base/ClayBruiser/cscClayBruiser")), MonsterCategory = (MonsterCategory)3 }, new DirectorCardHolder { Card = GetDirectorCard(vanilla<CharacterSpawnCard>("DLC1/ClayGrenadier/cscClayGrenadier")), MonsterCategory = (MonsterCategory)3 } }, listify(TarFamily.Value)); } LanguageAPI.Add("FAMILY_TAR", "<style=cWorldEvent>[WARNING] The ground oozes with tar...</style>"); if (!string.IsNullOrWhiteSpace(AltWispFamily.Value)) { AddFamilyEvent("AltWisp", new List<DirectorCardHolder> { new DirectorCardHolder { Card = GetDirectorCard(vanilla<CharacterSpawnCard>("Base/Wisp/cscLesserWisp")), MonsterCategory = (MonsterCategory)2 } }, listify(AltWispFamily.Value)); } LanguageAPI.Add("FAMILY_ALTWISP", "<style=cWorldEvent>[WARNING] The air begins to burn,</style> <style=cDeath>but...</style>"); if (!string.IsNullOrWhiteSpace(OneEyeFamily.Value)) { CharacterSpawnCard csc = vanilla<CharacterSpawnCard>("DLC2/Child/cscChild"); AddFamilyEvent("OneEye", new List<DirectorCardHolder> { new DirectorCardHolder { Card = GetDirectorCard(vanilla<CharacterSpawnCard>("DLC1/MajorAndMinorConstruct/cscMinorConstruct")), MonsterCategory = (MonsterCategory)2 }, new DirectorCardHolder { Card = GetDirectorCard(vanilla<CharacterSpawnCard>("Base/Imp/cscImp")), MonsterCategory = (MonsterCategory)2 }, new DirectorCardHolder { Card = GetDirectorCard(vanilla<CharacterSpawnCard>("Base/RoboBallBoss/cscRoboBallMini")), MonsterCategory = (MonsterCategory)2 }, new DirectorCardHolder { Card = GetDirectorCard(csc), MonsterCategory = MonsterLookup.CategoryFromCost((SpawnCard)(object)csc) }, new DirectorCardHolder { Card = GetDirectorCard(vanilla<CharacterSpawnCard>("Base/Golem/cscGolem")), MonsterCategory = (MonsterCategory)3 }, new DirectorCardHolder { Card = GetDirectorCard(vanilla<CharacterSpawnCard>("Base/Parent/cscParent")), MonsterCategory = (MonsterCategory)3 }, new DirectorCardHolder { Card = GetDirectorCard(vanilla<CharacterSpawnCard>("Base/Titan/cscTitanGolemPlains")), MonsterCategory = (MonsterCategory)4 }, new DirectorCardHolder { Card = GetDirectorCard(vanilla<CharacterSpawnCard>("Base/RoboBallBoss/cscRoboBallBoss")), MonsterCategory = (MonsterCategory)4 }, new DirectorCardHolder { Card = GetDirectorCard(vanilla<CharacterSpawnCard>("DLC1/MajorAndMinorConstruct/cscMegaConstruct")), MonsterCategory = (MonsterCategory)4 }, new DirectorCardHolder { Card = GetDirectorCard(vanilla<CharacterSpawnCard>("DLC1/VoidMegaCrab/cscVoidMegaCrab")), MonsterCategory = (MonsterCategory)4 }, new DirectorCardHolder { Card = GetDirectorCard(vanilla<CharacterSpawnCard>("DLC3/ExtractorUnit/cscExtractorUnit")), MonsterCategory = (MonsterCategory)2 }, new DirectorCardHolder { Card = GetDirectorCard(vanilla<CharacterSpawnCard>("DLC3/WorkerUnit/cscWorkerUnit")), MonsterCategory = (MonsterCategory)2 }, new DirectorCardHolder { Card = GetDirectorCard(vanilla<CharacterSpawnCard>("DLC3/Tanker/cscTanker")), MonsterCategory = (MonsterCategory)2 }, new DirectorCardHolder { Card = GetDirectorCard(vanilla<CharacterSpawnCard>("DLC3/DefectiveUnit/cscDefectiveUnit")), MonsterCategory = (MonsterCategory)3 }, new DirectorCardHolder { Card = GetDirectorCard(vanilla<CharacterSpawnCard>("DLC3/IronHauler/cscIronHauler")), MonsterCategory = (MonsterCategory)3 }, new DirectorCardHolder { Card = GetDirectorCard(vanilla<CharacterSpawnCard>("DLC3/SolusAmalgamator/cscSolusAmalgamator")), MonsterCategory = (MonsterCategory)4 } }, listify(OneEyeFamily.Value)); } LanguageAPI.Add("FAMILY_ONEEYE", "<style=cWorldEvent>[WARNING] Hungering gaze focuses around you...</style>"); if (!string.IsNullOrWhiteSpace(BlindFamily.Value)) { DirectorCard directorCard2 = GetDirectorCard(val4); DirectorCard directorCard3 = GetDirectorCard(val5); directorCard2.spawnDistance = (MonsterSpawnDistance)2; directorCard3.spawnDistance = (MonsterSpawnDistance)2; AddFamilyEvent("Blind", new List<DirectorCardHolder> { new DirectorCardHolder { Card = GetDirectorCard(vanilla<CharacterSpawnCard>("DLC1/Vermin/cscVermin")), MonsterCategory = (MonsterCategory)2 }, new DirectorCardHolder { Card = GetDirectorCard(vanilla<CharacterSpawnCard>("Base/HermitCrab/cscHermitCrab")), MonsterCategory = (MonsterCategory)2 }, new DirectorCardHolder { Card = GetDirectorCard(vanilla<CharacterSpawnCard>("DLC1/FlyingVermin/cscFlyingVermin")), MonsterCategory = (MonsterCategory)2 }, new DirectorCardHolder { Card = GetDirectorCard(vanilla<CharacterSpawnCard>("Base/Bison/cscBison")), MonsterCategory = (MonsterCategory)3 }, new DirectorCardHolder { Card = GetDirectorCard(vanilla<CharacterSpawnCard>("DLC2/Scorchling/cscScorchling")), MonsterCategory = (MonsterCategory)3 }, new DirectorCardHolder { Card = GetDirectorCard(vanilla<CharacterSpawnCard>("DLC3/MinePod/cscMinePod")), MonsterCategory = (MonsterCategory)2 }, new DirectorCardHolder { Card = directorCard2, MonsterCategory = (MonsterCategory)4 }, new DirectorCardHolder { Card = directorCard3, MonsterCategory = (MonsterCategory)4 } }, listify(BlindFamily.Value)); } LanguageAPI.Add("FAMILY_BLIND", "<style=cWorldEvent>[WARNING] The sightless erupts from the ground...</style>"); static void enableElite(CharacterSpawnCard val11) { //IL_0009: Unknown result type (might be due to invalid IL or missing references) val11.noElites = false; ((SpawnCard)val11).eliteRules = (EliteRules)0; } } private static void addToFamily(FamilyMember member, params string[] families) { foreach (string key in families) { if (!familyAdditions.ContainsKey(key)) { familyAdditions.Add(key, new List<FamilyMember>()); } familyAdditions[key].Add(member); } } private static void addToStage(FamilyMember member, params string[] scenes) { foreach (string key in scenes) { if (!stageAdditions.ContainsKey(key)) { stageAdditions.Add(key, new List<FamilyMember>()); } stageAdditions[key].Add(member); } } private static void HandleDccs(DirectorCardCategorySelection dccs) { //IL_00bb: Unknown result type (might be due to invalid IL or missing references) if (!Object.op_Implicit((Object)(object)dccs)) { return; } string text = ((Object)dccs).name.Replace("(Clone)", "").Trim(); List<FamilyMember> value; if (dccs is FamilyDirectorCardCategorySelection) { if (!familyAdditions.TryGetValue(text, out value)) { return; } } else if (!Object.op_Implicit((Object)(object)SceneCatalog.mostRecentSceneDef) || !stageAdditions.TryGetValue(SceneCatalog.mostRecentSceneDef.cachedName, out value)) { return; } foreach (FamilyMember item in value) { DirectorCardHolder v = item.Resolve(); if (v != null && !dccs.categories.Any((Category cat) => cat.cards.Any((DirectorCard card) => (Object)(object)card.GetSpawnCard() == (Object)(object)v.Card.spawnCard))) { string category = Helpers.GetVanillaMonsterCategoryName(v.MonsterCategory); if (!dccs.categories.Any((Category x) => x.name == category)) { dccs.AddCategory(category, 1f); } DirectorAPI.AddCard(dccs, v); if (DebugLogging.Value) { Log.LogDebug((object)("Adding " + ((Object)v.Card.spawnCard).name + " to " + text)); } } } } private static void PreparePool(ClassicStageInfo self) { //IL_01dd: Unknown result type (might be due to invalid IL or missing references) //IL_01e2: Unknown result type (might be due to invalid IL or missing references) //IL_01ed: Unknown result type (might be due to invalid IL or missing references) //IL_01f8: 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_020e: Unknown result type (might be due to invalid IL or missing references) //IL_021e: Expected O, but got Unknown //IL_018d: 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_019f: Unknown result type (might be due to invalid IL or missing references) //IL_01af: Expected O, but got Unknown if ((Object)(object)self != (Object)(object)poolOwner || (Object)(object)self.monsterDccsPool != (Object)(object)clonedPool) { poolOwner = self; originalPool = self.monsterDccsPool; } if (Object.op_Implicit((Object)(object)clonedPool)) { Object.Destroy((Object)(object)clonedPool); } clonedPool = null; if (!Object.op_Implicit((Object)(object)originalPool)) { return; } DccsPool val = (self.monsterDccsPool = (clonedPool = Object.Instantiate<DccsPool>(originalPool))); Category family = ((IEnumerable<Category>)val.poolCategories).FirstOrDefault((Func<Category, bool>)((Category x) => x != null && x.name == MonsterPoolCategories.Family)); string item = (Object.op_Implicit((Object)(object)SceneCatalog.mostRecentSceneDef) ? SceneCatalog.mostRecentSceneDef.cachedName : ""); List<PoolEntry> list = new List<PoolEntry>(); foreach (var stageFamily in stageFamilies) { var (dccs, list2, func) = stageFamily; if (list2.Contains(item) && (func == null || func()) && (family == null || !FamilyEntries(family).Any((PoolEntry x) => (Object)(object)x.dccs == (Object)(object)dccs)) && ((DirectorCardCategorySelection)dccs).IsAvailable() && ((DirectorCardCategorySelection)dccs).categories.Any((Category cat) => cat.cards.Any((DirectorCard card) => card.IsAvailable()))) { list.Add(new PoolEntry { dccs = (DirectorCardCategorySelection)(object)dccs, weight = 1f }); } } if (family == null && list.Count > 0) { family = new Category { name = MonsterPoolCategories.Family, categoryWeight = 1f, alwaysIncluded = Array.Empty<PoolEntry>(), includedIfConditionsMet = Array.Empty<ConditionalPoolEntry>(), includedIfNoConditionsMet = Array.Empty<PoolEntry>() }; ArrayUtils.ArrayAppend<Category>(ref val.poolCategories, ref family); } if (family == null) { return; } Category val2 = family; if (val2.alwaysIncluded == null) { val2.alwaysIncluded = Array.Empty<PoolEntry>(); } val2 = family; if (val2.includedIfConditionsMet == null) { val2.includedIfConditionsMet = Array.Empty<ConditionalPoolEntry>(); } val2 = family; if (val2.includedIfNoConditionsMet == null) { val2.includedIfNoConditionsMet = Array.Empty<PoolEntry>(); } if (RemoveLarvaFamily.Value) { family.alwaysIncluded = family.alwaysIncluded.Where((PoolEntry x) => !IsLarva(x)).ToArray(); family.includedIfConditionsMet = family.includedIfConditionsMet.Where((ConditionalPoolEntry x) => !IsLarva((PoolEntry)(object)x)).ToArray(); family.includedIfNoConditionsMet = family.includedIfNoConditionsMet.Where((PoolEntry x) => !IsLarva(x)).ToArray(); } foreach (PoolEntry item2 in list) { PoolEntry current = item2; ArrayUtils.ArrayAppend<PoolEntry>(ref family.alwaysIncluded, ref current); } if (FamilyEventChance.Value >= 0f) { float num = Mathf.Clamp(FamilyEventChance.Value, 0f, 0.99f); float num2 = val.poolCategories.Where((Category x) => x != null && x != family).Sum((Category x) => x.categoryWeight); family.categoryWeight = num2 * num / (1f - num); } static IEnumerable<PoolEntry> FamilyEntries(Category c) { return (c.alwaysIncluded ?? Array.Empty<PoolEntry>()).Concat((IEnumerable<PoolEntry>)(object)(c.includedIfConditionsMet ?? Array.Empty<ConditionalPoolEntry>())).Concat(c.includedIfNoConditionsMet ?? Array.Empty<PoolEntry>()); } static bool IsLarva(PoolEntry x) { if (Object.op_Implicit((Object)(object)x.dccs)) { return ((Object)x.dccs).name == "dccsAcidLarvaFamily"; } return false; } } public static FamilyDirectorCardCategorySelection AddFamilyEvent(string name, List<DirectorCardHolder> list, List<string> stages, Func<bool> condition = null) { //IL_003d: Unknown result type (might be due to invalid IL or missing references) //IL_0068: Unknown result type (might be due to invalid IL or missing references) //IL_0069: Unknown result type (might be due to invalid IL or missing references) //IL_0072: Unknown result type (might be due to invalid IL or missing references) //IL_009d: Unknown result type (might be due to invalid IL or missing references) //IL_009e: Unknown result type (might be due to invalid IL or missing references) //IL_00a7: Unknown result type (might be due to invalid IL or missing references) //IL_00d3: Unknown result type (might be due to invalid IL or missing references) //IL_00d4: Unknown result type (might be due to invalid IL or missing references) //IL_00dd: Unknown result type (might be due to invalid IL or missing references) //IL_0108: Unknown result type (might be due to invalid IL or missing references) //IL_0109: Unknown result type (might be due to invalid IL or missing references) FamilyDirectorCardCategorySelection val = ScriptableObject.CreateInstance<FamilyDirectorCardCategorySelection>(); ((Object)val).name = "dccs" + name + "Family"; val.selectionChatString = "FAMILY_" + name.ToUpper(); ((DirectorCardCategorySelection)val).categories = (Category[])(object)new Category[4] { new Category { name = Helpers.GetVanillaMonsterCategoryName((MonsterCategory)2), cards = Array.Empty<DirectorCard>(), selectionWeight = 4f }, new Category { name = Helpers.GetVanillaMonsterCategoryName((MonsterCategory)3), cards = Array.Empty<DirectorCard>(), selectionWeight = 2f }, new Category { name = Helpers.GetVanillaMonsterCategoryName((MonsterCategory)4), cards = (DirectorCard[])(object)new DirectorCard[0], selectionWeight = 2f }, new Category { name = Helpers.GetVanillaMonsterCategoryName((MonsterCategory)5), cards = Array.Empty<DirectorCard>(), selectionWeight = 1f } }; foreach (DirectorCardHolder item in list) { if (DebugLogging.Value) { Log.LogDebug((object)("Adding " + ((Object)item.Card.spawnCard).name + " to Family " + name)); } DirectorAPI.AddCard((DirectorCardCategorySelection)(object)val, item); } ((DirectorCardCategorySelection)val).categories = ((DirectorCardCategorySelection)val).categories.Where((Category x) => x.cards.Length != 0).ToArray(); AddFamilyToStages(val, stages, condition); customFamilies.Add((DirectorCardCategorySelection)(object)val); return val; } public static void AddFamilyToStages(FamilyDirectorCardCategorySelection dccs, List<string> stages, Func<bool> condition = null) { if (Object.op_Implicit((Object)(object)dccs)) { stageFamilies.Add((dccs, stages, condition)); } else { Log.LogWarning((object)("Tried to add a missing family to stages: " + string.Join(", ", stages))); } } public static DirectorCard GetDirectorCard(CharacterSpawnCard csc) { //IL_0000: Unknown result type (might be due to invalid IL or missing references) //IL_0005: Unknown result type (might be due to invalid IL or missing references) //IL_000c: Unknown result type (might be due to invalid IL or missing references) //IL_0013: 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) //IL_0021: Unknown result type (might be due to invalid IL or missing references) //IL_0023: Unknown result type (might be due to invalid IL or missing references) //IL_0029: Expected O, but got Unknown return new DirectorCard { spawnCard = (SpawnCard)(object)csc, selectionWeight = 1, preventOverhead = false, minimumStageCompletions = 0, spawnDistance = (MonsterSpawnDistance)0 }; } public static bool Mods(params string[] arr) { for (int i = 0; i < arr.Length; i++) { if (!Chainloader.PluginInfos.ContainsKey(arr[i])) { return false; } } return true; } public static List<string> listify(string list) { return list.Split(',').ToList().ConvertAll((string x) => x.Trim()); } public static Dictionary<string, string> pairify(string list) { Dictionary<string, string> dictionary = new Dictionary<string, string>(); foreach (string item in list.Split(',').ToList()) { List<string> list2 = item.Split('-').ToList().ConvertAll((string x) => x.Trim()); dictionary.Add(list2[0], list2[1]); } return dictionary; } public static T vanilla<T>(string path) { //IL_0010: Unknown result type (might be due to invalid IL or missing references) //IL_0015: Unknown result type (might be due to invalid IL or missing references) return Addressables.LoadAssetAsync<T>((object)("RoR2/" + path + ".asset")).WaitForCompletion(); } [CompilerGenerated] internal static void <Awake>g__enableElite|122_4(CharacterSpawnCard csc) { //IL_0009: Unknown result type (might be due to invalid IL or missing references) csc.noElites = false; ((SpawnCard)csc).eliteRules = (EliteRules)0; } [CompilerGenerated] internal static bool <PreparePool>g__IsLarva|129_4(PoolEntry x) { if (Object.op_Implicit((Object)(object)x.dccs)) { return ((Object)x.dccs).name == "dccsAcidLarvaFamily"; } return false; } } public static class MonsterLookup { private static readonly Dictionary<string, CharacterSpawnCard> index = new Dictionary<string, CharacterSpawnCard>(StringComparer.OrdinalIgnoreCase); private static int indexedFrame = -1; public static CharacterSpawnCard Find(params string[] names) { CharacterSpawnCard val = TryIndex(names); if (Object.op_Implicit((Object)(object)val) || indexedFrame == Time.frameCount) { return val; } Rebuild(); return TryIndex(names); } private static CharacterSpawnCard TryIndex(string[] names) { foreach (string key in names) { if (index.TryGetValue(key, out var value) && Object.op_Implicit((Object)(object)value) && Object.op_Implicit((Object)(object)((SpawnCard)value).prefab)) { return value; } } return null; } private static void Rebuild() { //IL_0070: 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) indexedFrame = Time.frameCount; index.Clear(); foreach (CharacterSpawnCard item in from x in Resources.FindObjectsOfTypeAll<CharacterSpawnCard>() orderby Object.op_Implicit((Object)(object)x) && ((Object)x).name.EndsWith("(Clone)") select x) { if (!Object.op_Implicit((Object)(object)item) || !Object.op_Implicit((Object)(object)((SpawnCard)item).prefab) || MasterCatalog.FindMasterIndex(((SpawnCard)item).prefab) == MasterIndex.none) { continue; } Add(((Object)item).name, item); Add(((Object)((SpawnCard)item).prefab).name, item); CharacterMaster component = ((SpawnCard)item).prefab.GetComponent<CharacterMaster>(); if (Object.op_Implicit((Object)(object)component) && Object.op_Implicit((Object)(object)component.bodyPrefab)) { Add(((Object)component.bodyPrefab).name, item); CharacterBody component2 = component.bodyPrefab.GetComponent<CharacterBody>(); if (Object.op_Implicit((Object)(object)component2) && !string.IsNullOrEmpty(component2.baseNameToken)) { Add(component2.baseNameToken, item); Add(Language.GetString(component2.baseNameToken, "en"), item); } } } } private static void Add(string key, CharacterSpawnCard csc) { if (!string.IsNullOrEmpty(key) && !index.ContainsKey(key)) { index.Add(key, csc); } } public static MonsterCategory CategoryFromCost(SpawnCard csc) { if (csc.directorCreditCost >= 80) { if (csc.directorCreditCost < 400) { return (MonsterCategory)3; } return (MonsterCategory)4; } return (MonsterCategory)2; } } public class FamilyMember { public Func<CharacterSpawnCard> spawnCard; public string label; public MonsterCategory? category; public MonsterSpawnDistance spawnDistance; public bool preventOverhead; public int minimumStageCompletions; public static FamilyMember Vanilla(string path, MonsterCategory? category = null) { CharacterSpawnCard csc = null; return new FamilyMember { spawnCard = () => csc ?? (csc = Main.vanilla<CharacterSpawnCard>(path)), label = path, category = category }; } public static FamilyMember Modded(MonsterCategory? category, params string[] names) { return new FamilyMember { spawnCard = () => MonsterLookup.Find(names), label = names[0], category = category }; } public static FamilyMember FromHolder(DirectorCardHolder holder) { //IL_0064: Unknown result type (might be due to invalid IL or missing references) //IL_007f: 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) return new FamilyMember { spawnCard = delegate { SpawnCard obj = holder.Card.spawnCard; return (CharacterSpawnCard)(object)((obj is CharacterSpawnCard) ? obj : null); }, label = (Object.op_Implicit((Object)(object)holder.Card.spawnCard) ? ((Object)holder.Card.spawnCard).name : "?"), category = holder.MonsterCategory, spawnDistance = holder.Card.spawnDistance, preventOverhead = holder.Card.preventOverhead, minimumStageCompletions = holder.Card.minimumStageCompletions }; } public DirectorCardHolder Resolve() { //IL_0016: Unknown result type (might be due to invalid IL or missing references) //IL_001b: Unknown result type (might be due to invalid IL or missing references) //IL_001c: Unknown result type (might be due to invalid IL or missing references) //IL_0021: 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_002f: 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_0036: Unknown result type (might be due to invalid IL or missing references) //IL_003b: Unknown result type (might be due to invalid IL or missing references) //IL_0047: Unknown result type (might be due to invalid IL or missing references) //IL_0058: Expected O, but got Unknown //IL_0058: Unknown result type (might be due to invalid IL or missing references) //IL_0073: Unknown result type (might be due to invalid IL or missing references) //IL_006a: Unknown result type (might be due to invalid IL or missing references) //IL_0078: Unknown result type (might be due to invalid IL or missing references) //IL_007e: Expected O, but got Unknown CharacterSpawnCard val = spawnCard(); if (!Object.op_Implicit((Object)(object)val)) { return null; } return new DirectorCardHolder { Card = new DirectorCard { spawnCard = (SpawnCard)(object)val, selectionWeight = 1, spawnDistance = spawnDistance, preventOverhead = preventOverhead, minimumStageCompletions = minimumStageCompletions }, MonsterCategory = (MonsterCategory)(((??)category) ?? MonsterLookup.CategoryFromCost((SpawnCard)(object)val)) }; } } public class Reworks { [Serializable] [CompilerGenerated] private sealed class <>c { public static readonly <>c <>9 = new <>c(); public static hook_FixedUpdate <>9__1_0; public static hook_OnEnter <>9__1_2; public static hook_OnEnter <>9__1_3; public static Action<DamageReport> <>9__1_5; public static Action <>9__2_0; public static Action<DamageReport> <>9__2_1; public static hook_HandleSlash <>9__2_2; public static Func<Instruction, bool> <>9__2_5; public static Func<Instruction, bool> <>9__2_6; public static Action<OverlapAttack> <>9__2_7; public static Func<Instruction, bool> <>9__2_8; public static Manipulator <>9__2_3; public static hook_OnEnter <>9__2_4; internal void <IotaConstruct>b__1_0(orig_FixedUpdate orig, GenericCharacterDeath self) { orig.Invoke(self); if (Main.MajorConstructDeathTimer.Value >= 0f && self is Death && !(((EntityState)self).fixedAge <= Main.MajorConstructDeathTimer.Value) && NetworkServer.active) { self.DestroyBodyAsapServer(); } } internal void <IotaConstruct>b__1_2(orig_OnEnter orig, Spawn self) { //IL_0031: Unknown result type (might be due to invalid IL or missing references) //IL_0036: Unknown result type (might be due to invalid IL or missing references) //IL_003b: Unknown result type (might be due to invalid IL or missing references) //IL_0042: Unknown result type (might be due to invalid IL or missing references) //IL_004c: Unknown result type (might be due to invalid IL or missing references) //IL_0051: 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_0087: Unknown result type (might be due to invalid IL or missing references) //IL_008c: Unknown result type (might be due to invalid IL or missing references) //IL_0091: Unknown result type (might be due to invalid IL or missing references) //IL_0094: Unknown result type (might be due to invalid IL or missing references) //IL_009c: Unknown result type (might be due to invalid IL or missing references) //IL_00a1: Unknown result type (might be due to invalid IL or missing references) //IL_00a7: Unknown result type (might be due to invalid IL or missing references) //IL_00ac: Unknown result type (might be due to invalid IL or missing references) //IL_00ad: 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_00b4: Unknown result type (might be due to invalid IL or missing references) //IL_00b6: Unknown result type (might be due to invalid IL or missing references) //IL_00ca: Expected O, but got Unknown //IL_00c5: Unknown result type (might be due to invalid IL or missing references) //IL_00ca: Unknown result type (might be due to invalid IL or missing references) //IL_00d6: Unknown result type (might be due to invalid IL or missing references) //IL_00ea: Expected O, but got Unknown //IL_00e5: Unknown result type (might be due to invalid IL or missing references) //IL_010f: Unknown result type (might be due to invalid IL or missing references) //IL_0110: Unknown result type (might be due to invalid IL or missing references) //IL_0111: Unknown result type (might be due to invalid IL or missing references) //IL_0116: Unknown result type (might be due to invalid IL or missing references) orig.Invoke(self); if (!NetworkServer.active) { return; } CharacterSpawnCard val = MonsterLookup.Find("cscThetaConstruct"); if (Object.op_Implicit((Object)(object)val)) { Quaternion val2 = Quaternion.AngleAxis(90f, Vector3.up); Vector3 val3 = ((EntityState)self).transform.forward * 16f; if (!spawnedConstructs.ContainsKey(((EntityState)self).characterBody)) { spawnedConstructs.Add(((EntityState)self).characterBody, new List<GameObject>()); } for (int i = 0; i < 4; i++) { Vector3 val4 = val3 + ((EntityState)self).transform.position; GameObject spawnedInstance = ((SpawnCard)val).DoSpawn(val4, Quaternion.Euler(((EntityState)self).transform.forward), new DirectorSpawnRequest((SpawnCard)(object)val, new DirectorPlacementRule { position = val4, placementMode = (PlacementMode)0 }, Run.instance.spawnRng) { teamIndexOverride = ((EntityState)self).characterBody.teamComponent.teamIndex }).spawnedInstance; NetworkServer.Spawn(spawnedInstance); spawnedConstructs[((EntityState)self