Some mods may be broken due to the recent Alloyed Collective update.
Decompiled source of BungusSuperForms v1.0.0
plugins/BungusSuperFormsMod.dll
Decompiled 2 months agousing System; using System.Collections; using System.Collections.Generic; using System.Diagnostics; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using System.Security; using System.Security.Permissions; using AncientScepter; using BepInEx; using BepInEx.Bootstrap; using BepInEx.Logging; using BungusSuperFormsMod.Internal; using BungusSuperFormsMod.MyEntityStates; using EntityStates; using HG.BlendableTypes; using HG.Reflection; using HedgehogUtils; using HedgehogUtils.Boost; using HedgehogUtils.Boost.EntityStates; using HedgehogUtils.Forms; using HedgehogUtils.Forms.EntityStates; using Microsoft.CodeAnalysis; using On.RoR2; using R2API; using RoR2; using RoR2.ContentManagement; using RoR2.Skills; using SonicTheHedgehog.Modules; using SonicTheHedgehog.Modules.Survivors; using SonicTheHedgehog.SkillStates; using UnityEngine; using UnityEngine.AddressableAssets; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] [assembly: OptIn] [assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")] [assembly: AssemblyCompany("BungusSuperFormsMod")] [assembly: AssemblyConfiguration("Debug")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0+787cbb86a08080e7aa21f3d05fe30390454fc247")] [assembly: AssemblyProduct("BungusSuperFormsMod")] [assembly: AssemblyTitle("BungusSuperFormsMod")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.0.0.0")] [module: UnverifiableCode] [module: RefSafetyRules(11)] namespace Microsoft.CodeAnalysis { [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] internal sealed class EmbeddedAttribute : Attribute { } } namespace System.Runtime.CompilerServices { [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] [AttributeUsage(AttributeTargets.Module, AllowMultiple = false, Inherited = false)] internal sealed class RefSafetyRulesAttribute : Attribute { public readonly int Version; public RefSafetyRulesAttribute(int P_0) { Version = P_0; } } } namespace BungusSuperFormsMod { public static class AncientScepter { public static GameObject scepterWungusBoostFlash; public static RequiresFormBoostSkillDef scepterWungusBoost; public static void Initialize() { //IL_001f: Unknown result type (might be due to invalid IL or missing references) //IL_0033: 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_005b: Unknown result type (might be due to invalid IL or missing references) scepterWungusBoostFlash = Assets.CreateNewBoostFlash("DS_GAMING_BUNGUS_SUPER_FORMS_SCEPTER_WUNGUS_BOOST_FLASH", 1.15f, 1.4f, new Color(0f, 0f, 0f), new Color(1f, 0f, 1f), new Color(1f, 0.8f, 1f), new Color(1f, 0f, 1f)); Assets.AddScepterToBoostFlash(scepterWungusBoostFlash); CreateScepterWungusBoost(); ItemBase<AncientScepterItem>.instance.RegisterScepterSkill((SkillDef)(object)scepterWungusBoost, "SonicTheHedgehog", (SkillDef)(object)SkillDefs.wungusBoost); } private static void CreateScepterWungusBoost() { //IL_0074: Unknown result type (might be due to invalid IL or missing references) //IL_0079: Unknown result type (might be due to invalid IL or missing references) scepterWungusBoost = Helpers.CopyBoostSkillDef<RequiresFormBoostSkillDef>(SkillDefs.wungusBoost); ((SkillDef)scepterWungusBoost).skillName = "DS_GAMING_BUNGUS_SUPER_FORMS_UTILITY_WUNGUS_BOOST_NAME"; ((SkillDef)scepterWungusBoost).skillNameToken = "DS_GAMING_BUNGUS_SUPER_FORMS_UTILITY_WUNGUS_BOOST_NAME"; ((SkillDef)scepterWungusBoost).skillDescriptionToken = "DS_GAMING_BUNGUS_SUPER_FORMS_UTILITY_WUNGUS_BOOST_DESCRIPTION"; ((SkillDef)scepterWungusBoost).icon = Assets.mainAssetBundle.LoadAsset<Sprite>("texWungusBoostIcon"); ((RequiresFormSkillDef)scepterWungusBoost).requiredForm = FormDefs.wungusSuperFormDef; ((SkillDef)scepterWungusBoost).activationState = new SerializableEntityStateType(typeof(ScepterWungusBoost)); } } public static class Assets { private const string assetbundleName = "bungussuperformsbundle"; private const string dllName = "BungusSuperFormsMod.dll"; internal static AssetBundle mainAssetBundle; public static Material bungusSuperFormOverlay; public static Material bungusOutlineOverlay; public static Material wungusSuperFormOverlay; public static Material wungusOutlineOverlay; public static GameObject wungusBoostFlash; public static GameObject wungusBoostAura; public static void Initialize() { LoadAssetBundle(); CreateMaterials(); } internal static void LoadAssetBundle() { try { if ((Object)(object)mainAssetBundle == (Object)null) { mainAssetBundle = AssetBundle.LoadFromFile(Assembly.GetExecutingAssembly().Location.Replace("BungusSuperFormsMod.dll", "bungussuperformsbundle")); } } catch (Exception ex) { Log.Error("Failed to load assetbundle. Make sure your assetbundle name is setup correctly\n" + ex); } } public static void CreateMaterials() { //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_000b: Unknown result type (might be due to invalid IL or missing references) //IL_0013: Unknown result type (might be due to invalid IL or missing references) //IL_001d: Expected O, but got Unknown //IL_002c: Unknown result type (might be due to invalid IL or missing references) //IL_0031: Unknown result type (might be due to invalid IL or missing references) //IL_0059: Unknown result type (might be due to invalid IL or missing references) //IL_005e: Unknown result type (might be due to invalid IL or missing references) //IL_0066: Unknown result type (might be due to invalid IL or missing references) //IL_0070: Expected O, but got Unknown //IL_008e: Unknown result type (might be due to invalid IL or missing references) //IL_00b7: Unknown result type (might be due to invalid IL or missing references) //IL_00dc: Unknown result type (might be due to invalid IL or missing references) //IL_00e1: Unknown result type (might be due to invalid IL or missing references) //IL_00e9: Unknown result type (might be due to invalid IL or missing references) //IL_00f3: Expected O, but got Unknown //IL_00f8: Unknown result type (might be due to invalid IL or missing references) //IL_0102: Expected O, but got Unknown //IL_0120: Unknown result type (might be due to invalid IL or missing references) //IL_0149: Unknown result type (might be due to invalid IL or missing references) //IL_0172: Unknown result type (might be due to invalid IL or missing references) //IL_0186: Unknown result type (might be due to invalid IL or missing references) //IL_019a: Unknown result type (might be due to invalid IL or missing references) //IL_01ae: Unknown result type (might be due to invalid IL or missing references) //IL_01db: Unknown result type (might be due to invalid IL or missing references) //IL_01ef: 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_0217: Unknown result type (might be due to invalid IL or missing references) bungusSuperFormOverlay = new Material(Addressables.LoadAssetAsync<Material>((object)"RoR2/DLC1/EliteVoid/matEliteVoidOverlay.mat").WaitForCompletion()); bungusSuperFormOverlay.SetTexture("_RemapTex", Addressables.LoadAssetAsync<Texture>((object)"RoR2/Base/Common/ColorRamps/texRampLoaderSwing.png").WaitForCompletion()); bungusSuperFormOverlay.SetFloat("_AlphaBoost", 4f); bungusOutlineOverlay = new Material(Addressables.LoadAssetAsync<Material>((object)"RoR2/Base/LunarGolem/matLunarGolemShield.mat").WaitForCompletion()); bungusOutlineOverlay.SetColor("_TintColor", new Color(0.25f, 1f, 0.6f, 1f)); bungusOutlineOverlay.SetColor("_EmissionColor", new Color(0.25f, 1f, 0.6f, 0.5f)); bungusOutlineOverlay.SetFloat("_OffsetAmount", 0.01f); wungusSuperFormOverlay = new Material(Addressables.LoadAssetAsync<Material>((object)"RoR2/DLC1/EliteVoid/matEliteVoidOverlay.mat").WaitForCompletion()); wungusOutlineOverlay = new Material(bungusOutlineOverlay); wungusOutlineOverlay.SetColor("_TintColor", new Color(0.9f, 0.1f, 0.75f, 1f)); wungusOutlineOverlay.SetColor("_EmissionColor", new Color(0.9f, 0.1f, 0.75f, 0.5f)); wungusBoostAura = Assets.CreateNewBoostAura("DS_GAMING_BUNGUS_SUPER_FORMS_WUNGUS_BOOST_AURA", 1.15f, 0.7f, new Color(0f, 0f, 0f), new Color(1f, 0f, 1f), new Color(1f, 0.8f, 1f), new Color(1f, 0f, 1f)); wungusBoostFlash = Assets.CreateNewBoostFlash("DS_GAMING_BUNGUS_SUPER_FORMS_WUNGUS_BOOST_FLASH", 1.15f, 1.4f, new Color(0f, 0f, 0f), new Color(1f, 0f, 1f), new Color(1f, 0.8f, 1f), new Color(1f, 0f, 1f)); } } [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInPlugin("com.ds_gaming.BungusSuperForms", "BungusSuperForms", "1.0.0")] public class BungusSuperFormsPlugin : BaseUnityPlugin { public const string PluginGUID = "com.ds_gaming.BungusSuperForms"; public const string PluginAuthor = "ds_gaming"; public const string PluginName = "BungusSuperForms"; public const string PluginVersion = "1.0.0"; public const string Prefix = "DS_GAMING_BUNGUS_SUPER_FORMS_"; public static bool sonicModLoaded; public static bool ancientScepterLoaded; public void Awake() { sonicModLoaded = Chainloader.PluginInfos.ContainsKey("com.ds_gaming.SonicTheHedgehog"); ancientScepterLoaded = Chainloader.PluginInfos.ContainsKey("com.DestroyedClone.AncientScepter"); Log.Init(((BaseUnityPlugin)this).Logger); Assets.Initialize(); FormBuffs.RegisterBuffs(); FormDefs.Initialize(); SkillDefs.Initialize(); Stats.Initialize(); Language.Initialize(); States.RegisterStates(); new ContentPacks().Initialize(); } } public static class FormBuffs { internal static BuffDef bungusFormBuff; internal static BuffDef wungusFormBuff; internal static BuffDef wungusBoostBuff; internal static void RegisterBuffs() { //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_0058: Unknown result type (might be due to invalid IL or missing references) //IL_008c: Unknown result type (might be due to invalid IL or missing references) bungusFormBuff = AddNewBuff("bdBungusForm", Assets.mainAssetBundle.LoadAsset<Sprite>("texBungusBuffIcon"), new Color(0.1f, 7f, 0.5f), canStack: false, isDebuff: false); wungusFormBuff = AddNewBuff("bdWungusForm", Assets.mainAssetBundle.LoadAsset<Sprite>("texWungusBuffIcon"), new Color(0.8f, 0.4f, 0.8f), canStack: false, isDebuff: false); wungusBoostBuff = AddNewBuff("bdWungusBoost", LegacyResourcesAPI.Load<BuffDef>("BuffDefs/CloakSpeed").iconSprite, new Color(0.8f, 0.4f, 0.8f), canStack: false, isDebuff: false); } internal static BuffDef AddNewBuff(string buffName, Sprite buffIcon, Color buffColor, bool canStack, bool isDebuff) { //IL_0010: Unknown result type (might be due to invalid IL or missing references) //IL_0011: Unknown result type (might be due to invalid IL or missing references) BuffDef val = ScriptableObject.CreateInstance<BuffDef>(); ((Object)val).name = buffName; val.buffColor = buffColor; val.canStack = canStack; val.isDebuff = isDebuff; val.eliteDef = null; val.iconSprite = buffIcon; Content.AddBuffDef(val); return val; } } public static class FormDefs { public static FormDef bungusSuperFormDef; public static FormDef wungusSuperFormDef; public static void Initialize() { //IL_0021: Unknown result type (might be due to invalid IL or missing references) //IL_0030: Unknown result type (might be due to invalid IL or missing references) //IL_0042: Unknown result type (might be due to invalid IL or missing references) //IL_005c: Unknown result type (might be due to invalid IL or missing references) //IL_0089: Unknown result type (might be due to invalid IL or missing references) //IL_0090: Unknown result type (might be due to invalid IL or missing references) //IL_0096: Unknown result type (might be due to invalid IL or missing references) //IL_00b2: Unknown result type (might be due to invalid IL or missing references) //IL_00cc: Unknown result type (might be due to invalid IL or missing references) bungusSuperFormDef = Forms.CreateFormDef("DS_GAMING_BUNGUS_SUPER_FORMS_BUNGUS_SUPER_FORM", FormBuffs.bungusFormBuff, 30f, true, false, false, 1, false, false, false, new SerializableEntityStateType(typeof(BungusState)), new SerializableEntityStateType(typeof(TransformationAnimation)), (Dictionary<string, RenderReplacements>)null, typeof(FormHandler), new AllowedBodyList { whitelist = false, bodyNames = Array.Empty<string>() }, (KeyCode)98); wungusSuperFormDef = Forms.CreateFormDef("DS_GAMING_BUNGUS_SUPER_FORMS_WUNGUS_SUPER_FORM", FormBuffs.wungusFormBuff, 30f, true, false, false, 1, false, true, true, new SerializableEntityStateType(typeof(WungusState)), default(SerializableEntityStateType), BungusSuperFormsPlugin.sonicModLoaded ? CreateSonicRenderDictionary() : null, typeof(FormHandler), new AllowedBodyList { whitelist = false, bodyNames = Array.Empty<string>() }, (KeyCode)98); FormCatalog.AddFormDefs((FormDef[])(object)new FormDef[2] { bungusSuperFormDef, wungusSuperFormDef }); } private static Dictionary<string, RenderReplacements> CreateSonicRenderDictionary() { //IL_000e: 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) return new Dictionary<string, RenderReplacements> { { "DS_GAMING_SONIC_THE_HEDGEHOG_BODY_DEFAULT_SKIN_NAME", new RenderReplacements { material = null, mesh = Assets.superSonicMesh } } }; } [SystemInitializer(new Type[] { typeof(ItemCatalog) })] public static void InitializeFormItemRequirements() { //IL_0010: Unknown result type (might be due to invalid IL or missing references) //IL_001d: Unknown result type (might be due to invalid IL or missing references) //IL_0022: 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_0030: Unknown result type (might be due to invalid IL or missing references) //IL_0049: Unknown result type (might be due to invalid IL or missing references) //IL_0056: Unknown result type (might be due to invalid IL or missing references) //IL_005b: Unknown result type (might be due to invalid IL or missing references) //IL_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) bungusSuperFormDef.neededItems = (NeededItem[])(object)new NeededItem[1] { new NeededItem { item = Items.Mushroom.itemIndex, count = 7 } }; wungusSuperFormDef.neededItems = (NeededItem[])(object)new NeededItem[1] { new NeededItem { item = Items.MushroomVoid.itemIndex, count = 7 } }; } } public static class Language { public static void Initialize() { LanguageAPI.Add("DS_GAMING_BUNGUS_SUPER_FORMS_BUNGUS_SUPER_FORM", "Bungus"); LanguageAPI.Add("DS_GAMING_BUNGUS_SUPER_FORMS_BUNGUS_SUPER_FORM_PREFIX", "Bustling {0}"); LanguageAPI.Add("DS_GAMING_BUNGUS_SUPER_FORMS_WUNGUS_SUPER_FORM", "Wungus"); LanguageAPI.Add("DS_GAMING_BUNGUS_SUPER_FORMS_WUNGUS_SUPER_FORM_PREFIX", "Weeping {0}"); LanguageAPI.Add("DS_GAMING_BUNGUS_SUPER_FORMS_UTILITY_WUNGUS_BOOST_NAME", "Weeping Boost"); LanguageAPI.Add("DS_GAMING_BUNGUS_SUPER_FORMS_UTILITY_WUNGUS_BOOST_DESCRIPTION", "<style=cIsUtility>Move 65% faster</style> than normal."); } } public static class SkillDefs { public static RequiresFormBoostSkillDef wungusBoost; public static void Initialize() { if (BungusSuperFormsPlugin.sonicModLoaded) { CreateSonicWungusBoost(); } } private static void CreateSonicWungusBoost() { //IL_0065: 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_0092: Unknown result type (might be due to invalid IL or missing references) wungusBoost = Helpers.CopyBoostSkillDef<RequiresFormBoostSkillDef>(SonicSkillDefs.boostSkillDef); ((SkillDef)wungusBoost).skillName = "DS_GAMING_BUNGUS_SUPER_FORMS_UTILITY_WUNGUS_BOOST_NAME"; ((SkillDef)wungusBoost).skillNameToken = "DS_GAMING_BUNGUS_SUPER_FORMS_UTILITY_WUNGUS_BOOST_NAME"; ((SkillDef)wungusBoost).skillDescriptionToken = "DS_GAMING_BUNGUS_SUPER_FORMS_UTILITY_WUNGUS_BOOST_DESCRIPTION"; ((SkillDef)wungusBoost).icon = Assets.mainAssetBundle.LoadAsset<Sprite>("texWungusBoostIcon"); ((SkillDef)wungusBoost).activationState = new SerializableEntityStateType(typeof(WungusBoost)); ((RequiresFormSkillDef)wungusBoost).requiredForm = FormDefs.wungusSuperFormDef; wungusBoost.boostHUDColor = new Color(0.8f, 0.4f, 0.8f); if (BungusSuperFormsPlugin.ancientScepterLoaded) { AncientScepter.Initialize(); } } } public class SkillReplacer : MonoBehaviour { private FormComponent formComponent; private CharacterBody body; [SystemInitializer(new Type[] { typeof(BodyCatalog) })] internal static void AddSkillReplacerComponent() { if (BungusSuperFormsPlugin.sonicModLoaded) { BodyCatalog.FindBodyPrefab("SonicTheHedgehog").AddComponent<SkillReplacer>(); } } public void Start() { formComponent = ((Component)this).GetComponent<FormComponent>(); if (Object.op_Implicit((Object)(object)formComponent)) { body = ((Component)this).GetComponent<CharacterBody>(); formComponent.OnFormChanged += FormChanged; } else { Object.Destroy((Object)(object)this); } } public void OnDestroy() { formComponent.OnFormChanged -= FormChanged; } public void FormChanged(FormDef previous, FormDef active) { if (Util.HasEffectiveAuthority(((Component)this).gameObject) && (Object)(object)active == (Object)(object)FormDefs.wungusSuperFormDef) { SkillOverrides(); } } public void SkillOverrides() { if (Object.op_Implicit((Object)(object)body) && Object.op_Implicit((Object)(object)body.skillLocator) && Object.op_Implicit((Object)(object)body.skillLocator.utility) && (Object)(object)body.skillLocator.utility.baseSkill == (Object)(object)SonicSkillDefs.boostSkillDef) { body.skillLocator.utility.SetSkillOverride((object)this, (SkillDef)(object)SkillDefs.wungusBoost, (SkillOverridePriority)2); } } } public static class States { internal static void RegisterStates() { Content.AddEntityState(typeof(BungusState)); Content.AddEntityState(typeof(WungusState)); Content.AddEntityState(typeof(TransformationAnimation)); if (BungusSuperFormsPlugin.sonicModLoaded) { RegisterSonicStates(); if (BungusSuperFormsPlugin.ancientScepterLoaded) { RegisterScepterStates(); } } } internal static void RegisterSonicStates() { Content.AddEntityState(typeof(WungusBoost)); } internal static void RegisterScepterStates() { Content.AddEntityState(typeof(ScepterWungusBoost)); } } public static class Stats { [CompilerGenerated] private static class <>O { public static StatHookEventHandler <0>__RecalculateStats; public static hook_RecalculateStats <1>__RecalcStatAPIDoesntHaveAcceleration; } public static void Initialize() { //IL_0011: Unknown result type (might be due to invalid IL or missing references) //IL_0016: Unknown result type (might be due to invalid IL or missing references) //IL_001c: Expected O, but got Unknown //IL_0032: Unknown result type (might be due to invalid IL or missing references) //IL_0037: Unknown result type (might be due to invalid IL or missing references) //IL_003d: Expected O, but got Unknown object obj = <>O.<0>__RecalculateStats; if (obj == null) { StatHookEventHandler val = RecalculateStats; <>O.<0>__RecalculateStats = val; obj = (object)val; } RecalculateStatsAPI.GetStatCoefficients += (StatHookEventHandler)obj; object obj2 = <>O.<1>__RecalcStatAPIDoesntHaveAcceleration; if (obj2 == null) { hook_RecalculateStats val2 = RecalcStatAPIDoesntHaveAcceleration; <>O.<1>__RecalcStatAPIDoesntHaveAcceleration = val2; obj2 = (object)val2; } CharacterBody.RecalculateStats += (hook_RecalculateStats)obj2; } public static void RecalculateStats(CharacterBody self, StatHookEventArgs stats) { if (self.HasBuff(FormBuffs.bungusFormBuff)) { stats.moveSpeedReductionMultAdd += 0.5f; stats.armorAdd += 200f; stats.healthMultAdd += 1f; if (Object.op_Implicit((Object)(object)self.inventory)) { stats.damageMultAdd += 0.06f * (float)self.inventory.GetItemCount(Items.Mushroom); } } if (self.HasBuff(FormBuffs.wungusFormBuff)) { stats.sprintSpeedAdd += 0.5f; stats.healthMultAdd += 1f; if (Object.op_Implicit((Object)(object)self.inventory)) { stats.damageMultAdd += 0.04f * (float)self.inventory.GetItemCount(Items.MushroomVoid); } } if (self.HasBuff(FormBuffs.wungusBoostBuff)) { BoostLogic.BoostStats(self, stats, 0.65f); stats.armorAdd += 50f; } } private static void RecalcStatAPIDoesntHaveAcceleration(orig_RecalculateStats orig, CharacterBody self) { orig.Invoke(self); if (self.HasBuff(FormBuffs.wungusFormBuff)) { self.acceleration *= 3f; } } } } namespace BungusSuperFormsMod.MyEntityStates { public class BungusState : FormStateBase { private TemporaryOverlayInstance temporaryOverlay; public override void OnEnter() { ((FormStateBase)this).OnEnter(); ((FormStateBase)this).Heal(1f); ((FormStateBase)this).ApplyOverlay(ref temporaryOverlay, Assets.bungusSuperFormOverlay); ((FormStateBase)this).Flash(0.5f); } public override void OnExit() { ((FormStateBase)this).RemoveOverlay(ref temporaryOverlay); ((FormStateBase)this).Flash(0.5f); ((FormStateBase)this).OnExit(); } public override void FixedUpdate() { ((FormStateBase)this).FixedUpdate(); } } public class ScepterWungusBoost : ScepterBoostBase { protected override BuffDef buff => FormBuffs.wungusBoostBuff; public override void OnEnter() { ((ScepterBoostBase)this).OnEnter(); } public override void OnExit() { ((ScepterBoostBase)this).OnExit(); } public override GameObject GetFlashPrefab() { return AncientScepter.scepterWungusBoostFlash; } public override GameObject GetAuraPrefab() { return Assets.wungusBoostAura; } public override Material GetOverlayMaterial() { return null; } } public class TransformationAnimation : GenericTransformationBase { private static float cameraDistance = -7f; private CharacterCameraParamsData cameraParams = new CharacterCameraParamsData { maxPitch = BlendableFloat.op_Implicit(70f), minPitch = BlendableFloat.op_Implicit(-70f), pivotVerticalOffset = BlendableFloat.op_Implicit(0.5f), idealLocalCameraPos = BlendableVector3.op_Implicit(new Vector3(0f, 0f, cameraDistance)), wallCushion = BlendableFloat.op_Implicit(0.1f) }; private CameraParamsOverrideHandle camOverrideHandle; protected override float duration => 1.4f; public override void OnEnter() { //IL_002c: Unknown result type (might be due to invalid IL or missing references) //IL_0035: Unknown result type (might be due to invalid IL or missing references) //IL_003a: Unknown result type (might be due to invalid IL or missing references) //IL_004b: Unknown result type (might be due to invalid IL or missing references) //IL_0058: Unknown result type (might be due to invalid IL or missing references) //IL_005d: Unknown result type (might be due to invalid IL or missing references) ((GenericTransformationBase)this).OnEnter(); if (((TransformationBase)this).fromTeamSuper || ((EntityState)this).isAuthority) { } camOverrideHandle = ((EntityState)this).cameraTargetParams.AddParamsOverride(new CameraParamsOverrideRequest { cameraParamsData = cameraParams, priority = 1f }, ((GenericTransformationBase)this).duration / 2f); } public override void Transform() { //IL_0020: Unknown result type (might be due to invalid IL or missing references) //IL_002a: Unknown result type (might be due to invalid IL or missing references) ((GenericTransformationBase)this).Transform(); Util.PlaySound("Play_hedgehogutils_super_transform", ((EntityState)this).gameObject); ((EntityState)this).cameraTargetParams.RemoveParamsOverride(camOverrideHandle, 0.2f); } } public class WungusBoost : Boost { protected override BuffDef buff => FormBuffs.wungusBoostBuff; public override void OnEnter() { ((Boost)this).OnEnter(); if (Object.op_Implicit((Object)(object)((EntityState)this).modelLocator)) { ((EntityState)this).modelLocator.normalizeToFloor = true; } } public override void OnExit() { if (Object.op_Implicit((Object)(object)((EntityState)this).modelLocator)) { ((EntityState)this).modelLocator.normalizeToFloor = false; } ((Boost)this).OnExit(); } public override GameObject GetFlashPrefab() { return Assets.wungusBoostFlash; } public override GameObject GetAuraPrefab() { return Assets.wungusBoostAura; } public override Material GetOverlayMaterial() { return null; } } public class WungusState : FormStateBase { private TemporaryOverlayInstance temporaryOverlay; protected BoostLogic boostLogic; public override void OnEnter() { ((FormStateBase)this).OnEnter(); Util.PlaySound("Play_item_void_critGlasses", ((EntityState)this).gameObject); ((FormStateBase)this).Heal(1f); ((FormStateBase)this).ApplyOverlay(ref temporaryOverlay, Assets.wungusSuperFormOverlay); ((FormStateBase)this).Flash(0.5f); boostLogic = ((EntityState)this).GetComponent<BoostLogic>(); if (Object.op_Implicit((Object)(object)boostLogic)) { boostLogic.alwaysMaxBoost = true; } } public override void OnExit() { ((FormStateBase)this).RemoveOverlay(ref temporaryOverlay); ((FormStateBase)this).Flash(0.5f); if (Object.op_Implicit((Object)(object)boostLogic)) { boostLogic.alwaysMaxBoost = false; } ((FormStateBase)this).OnExit(); } public override void FixedUpdate() { ((FormStateBase)this).FixedUpdate(); } } } namespace BungusSuperFormsMod.Internal { internal class ContentPacks : IContentPackProvider { [CompilerGenerated] private sealed class <FinalizeAsync>d__21 : IEnumerator<object>, IEnumerator, IDisposable { private int <>1__state; private object <>2__current; public FinalizeAsyncArgs args; public ContentPacks <>4__this; object IEnumerator<object>.Current { [DebuggerHidden] get { return <>2__current; } } object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } [DebuggerHidden] public <FinalizeAsync>d__21(int <>1__state) { this.<>1__state = <>1__state; } [DebuggerHidden] void IDisposable.Dispose() { <>1__state = -2; } private bool MoveNext() { if (<>1__state != 0) { return false; } <>1__state = -1; args.ReportProgress(1f); return false; } bool IEnumerator.MoveNext() { //ILSpy generated this explicit interface implementation from .override directive in MoveNext return this.MoveNext(); } [DebuggerHidden] void IEnumerator.Reset() { throw new NotSupportedException(); } } [CompilerGenerated] private sealed class <GenerateContentPackAsync>d__20 : IEnumerator<object>, IEnumerator, IDisposable { private int <>1__state; private object <>2__current; public GetContentPackAsyncArgs args; public ContentPacks <>4__this; object IEnumerator<object>.Current { [DebuggerHidden] get { return <>2__current; } } object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } [DebuggerHidden] public <GenerateContentPackAsync>d__20(int <>1__state) { this.<>1__state = <>1__state; } [DebuggerHidden] void IDisposable.Dispose() { <>1__state = -2; } private bool MoveNext() { if (<>1__state != 0) { return false; } <>1__state = -1; ContentPack.Copy(<>4__this.contentPack, args.output); args.ReportProgress(1f); return false; } bool IEnumerator.MoveNext() { //ILSpy generated this explicit interface implementation from .override directive in MoveNext return this.MoveNext(); } [DebuggerHidden] void IEnumerator.Reset() { throw new NotSupportedException(); } } [CompilerGenerated] private sealed class <LoadStaticContentAsync>d__19 : IEnumerator<object>, IEnumerator, IDisposable { private int <>1__state; private object <>2__current; public LoadStaticContentAsyncArgs args; public ContentPacks <>4__this; object IEnumerator<object>.Current { [DebuggerHidden] get { return <>2__current; } } object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } [DebuggerHidden] public <LoadStaticContentAsync>d__19(int <>1__state) { this.<>1__state = <>1__state; } [DebuggerHidden] void IDisposable.Dispose() { <>1__state = -2; } private bool MoveNext() { if (<>1__state != 0) { return false; } <>1__state = -1; <>4__this.contentPack.identifier = <>4__this.identifier; <>4__this.contentPack.bodyPrefabs.Add(bodyPrefabs.ToArray()); <>4__this.contentPack.masterPrefabs.Add(masterPrefabs.ToArray()); <>4__this.contentPack.projectilePrefabs.Add(projectilePrefabs.ToArray()); <>4__this.contentPack.networkedObjectPrefabs.Add(networkedObjectPrefabs.ToArray()); <>4__this.contentPack.survivorDefs.Add(survivorDefs.ToArray()); <>4__this.contentPack.unlockableDefs.Add(unlockableDefs.ToArray()); <>4__this.contentPack.skillDefs.Add(skillDefs.ToArray()); <>4__this.contentPack.skillFamilies.Add(skillFamilies.ToArray()); <>4__this.contentPack.entityStateTypes.Add(entityStates.ToArray()); <>4__this.contentPack.buffDefs.Add(buffDefs.ToArray()); <>4__this.contentPack.effectDefs.Add(effectDefs.ToArray()); <>4__this.contentPack.itemTierDefs.Add(itemTierDefs.ToArray()); <>4__this.contentPack.itemDefs.Add(itemDefs.ToArray()); <>4__this.contentPack.networkSoundEventDefs.Add(networkSoundEventDefs.ToArray()); args.ReportProgress(1f); return false; } bool IEnumerator.MoveNext() { //ILSpy generated this explicit interface implementation from .override directive in MoveNext return this.MoveNext(); } [DebuggerHidden] void IEnumerator.Reset() { throw new NotSupportedException(); } } internal ContentPack contentPack = new ContentPack(); public static List<GameObject> bodyPrefabs = new List<GameObject>(); public static List<GameObject> masterPrefabs = new List<GameObject>(); public static List<GameObject> projectilePrefabs = new List<GameObject>(); public static List<GameObject> networkedObjectPrefabs = new List<GameObject>(); public static List<SurvivorDef> survivorDefs = new List<SurvivorDef>(); public static List<UnlockableDef> unlockableDefs = new List<UnlockableDef>(); public static List<SkillFamily> skillFamilies = new List<SkillFamily>(); public static List<SkillDef> skillDefs = new List<SkillDef>(); public static List<Type> entityStates = new List<Type>(); public static List<BuffDef> buffDefs = new List<BuffDef>(); public static List<EffectDef> effectDefs = new List<EffectDef>(); public static List<ItemTierDef> itemTierDefs = new List<ItemTierDef>(); public static List<ItemDef> itemDefs = new List<ItemDef>(); public static List<NetworkSoundEventDef> networkSoundEventDefs = new List<NetworkSoundEventDef>(); public string identifier => "com.ds_gaming.BungusSuperForms"; public void Initialize() { //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_0012: Expected O, but got Unknown ContentManager.collectContentPackProviders += new CollectContentPackProvidersDelegate(ContentManager_collectContentPackProviders); } private void ContentManager_collectContentPackProviders(AddContentPackProviderDelegate addContentPackProvider) { addContentPackProvider.Invoke((IContentPackProvider)(object)this); } [IteratorStateMachine(typeof(<LoadStaticContentAsync>d__19))] public IEnumerator LoadStaticContentAsync(LoadStaticContentAsyncArgs args) { //yield-return decompiler failed: Unexpected instruction in Iterator.Dispose() return new <LoadStaticContentAsync>d__19(0) { <>4__this = this, args = args }; } [IteratorStateMachine(typeof(<GenerateContentPackAsync>d__20))] public IEnumerator GenerateContentPackAsync(GetContentPackAsyncArgs args) { //yield-return decompiler failed: Unexpected instruction in Iterator.Dispose() return new <GenerateContentPackAsync>d__20(0) { <>4__this = this, args = args }; } [IteratorStateMachine(typeof(<FinalizeAsync>d__21))] public IEnumerator FinalizeAsync(FinalizeAsyncArgs args) { //yield-return decompiler failed: Unexpected instruction in Iterator.Dispose() return new <FinalizeAsync>d__21(0) { <>4__this = this, args = args }; } } internal class Content { public static void AddCharacterBodyPrefab(GameObject bprefab) { ContentPacks.bodyPrefabs.Add(bprefab); } public static void AddMasterPrefab(GameObject prefab) { ContentPacks.masterPrefabs.Add(prefab); } public static void AddProjectilePrefab(GameObject prefab) { ContentPacks.projectilePrefabs.Add(prefab); } public static void AddNetworkedObjectPrefab(GameObject prefab) { ContentPacks.networkedObjectPrefabs.Add(prefab); } public static void AddSurvivorDef(SurvivorDef survivorDef) { ContentPacks.survivorDefs.Add(survivorDef); } public static void AddUnlockableDef(UnlockableDef unlockableDef) { ContentPacks.unlockableDefs.Add(unlockableDef); } public static void AddSkillDef(SkillDef skillDef) { ContentPacks.skillDefs.Add(skillDef); } public static void AddSkillFamily(SkillFamily skillFamily) { ContentPacks.skillFamilies.Add(skillFamily); } public static void AddEntityState(Type entityState) { ContentPacks.entityStates.Add(entityState); } public static void AddBuffDef(BuffDef buffDef) { ContentPacks.buffDefs.Add(buffDef); } public static void AddEffectDef(EffectDef effectDef) { ContentPacks.effectDefs.Add(effectDef); } public static void AddItemDef(ItemDef itemDef) { ContentPacks.itemDefs.Add(itemDef); } public static void AddItemTierDef(ItemTierDef itemDef) { ContentPacks.itemTierDefs.Add(itemDef); } public static void AddNetworkSoundEventDef(NetworkSoundEventDef networkSoundEventDef) { ContentPacks.networkSoundEventDefs.Add(networkSoundEventDef); } } internal static class Log { private static ManualLogSource _logSource; internal static void Init(ManualLogSource logSource) { _logSource = logSource; } internal static void Debug(object data) { _logSource.LogDebug(data); } internal static void Error(object data) { _logSource.LogError(data); } internal static void Fatal(object data) { _logSource.LogFatal(data); } internal static void Info(object data) { _logSource.LogInfo(data); } internal static void Message(object data) { _logSource.LogMessage(data); } internal static void Warning(object data) { _logSource.LogWarning(data); } } }