using System; using System.Diagnostics; using System.IO; 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.Halcyonite; using EntityStates.ShrineHalcyonite; using HG; using HG.Reflection; using IL.EntityStates.Halcyonite; using IL.RoR2; using Logger; using Microsoft.CodeAnalysis; using MiscFixes.Modules; using Mono.Cecil; using Mono.Cecil.Cil; using MonoMod.Cil; using On.EntityStates.Halcyonite; using On.EntityStates.ShrineHalcyonite; using On.RoR2; using RiskOfOptions; using RiskOfOptions.Options; using RoR2; using RoR2.CharacterAI; using RoR2.ContentManagement; using RoR2.Skills; using RoR2BepInExPack.GameAssetPathsBetter; using UnityEngine; using UnityEngine.AddressableAssets; using UnityEngine.Networking; using UnityEngine.ResourceManagement.AsyncOperations; [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("HalcyonKnight")] [assembly: AssemblyConfiguration("Debug")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0+9372bf8017f51de60925e7ee99bdff512003fb04")] [assembly: AssemblyProduct("HalcyonKnight")] [assembly: AssemblyTitle("HalcyonKnight")] [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 Logger { 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); } } } namespace HalcyonKnight { internal static class AntiFallOff { [CompilerGenerated] private static class <>O { public static hook_OnEnter <0>__WhirlWindPersuitCycle_OnEnter; public static hook_OnExit <1>__WhirlWindPersuitCycle_OnExit; public static hook_OnEnter <2>__WhirlWindPersuitCycle_OnEnter; public static hook_OnExit <3>__WhirlWindPersuitCycle_OnExit; public static hook_UpdateLand <4>__WhirlWindPersuitCycle_UpdateLand; } [SystemInitializer(new Type[] { })] private static void Init() { //IL_000e: 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_004b: Unknown result type (might be due to invalid IL or missing references) //IL_0050: Unknown result type (might be due to invalid IL or missing references) //IL_0056: Expected O, but got Unknown //IL_006c: Unknown result type (might be due to invalid IL or missing references) //IL_0071: Unknown result type (might be due to invalid IL or missing references) //IL_0077: Expected O, but got Unknown //IL_008d: 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) //IL_0098: Expected O, but got Unknown //IL_00ae: Unknown result type (might be due to invalid IL or missing references) //IL_00b3: Unknown result type (might be due to invalid IL or missing references) //IL_00b9: Expected O, but got Unknown //IL_00cf: 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_00da: Expected O, but got Unknown AssetReferenceT val = new AssetReferenceT(RoR2_DLC2_Halcyonite.HalcyoniteBody_prefab); AsyncOperationHandle val2 = AssetAsyncReferenceManager.LoadAsset(val, (AsyncReferenceHandleUnloadType)2); val2.Completed += delegate(AsyncOperationHandle x) { UnityObjectExtensions.EnsureComponent(x.Result); }; object obj = <>O.<0>__WhirlWindPersuitCycle_OnEnter; if (obj == null) { hook_OnEnter val3 = WhirlWindPersuitCycle_OnEnter; <>O.<0>__WhirlWindPersuitCycle_OnEnter = val3; obj = (object)val3; } WhirlWindPersuitCycle.OnEnter += (hook_OnEnter)obj; object obj2 = <>O.<1>__WhirlWindPersuitCycle_OnExit; if (obj2 == null) { hook_OnExit val4 = WhirlWindPersuitCycle_OnExit; <>O.<1>__WhirlWindPersuitCycle_OnExit = val4; obj2 = (object)val4; } WhirlWindPersuitCycle.OnExit += (hook_OnExit)obj2; object obj3 = <>O.<2>__WhirlWindPersuitCycle_OnEnter; if (obj3 == null) { hook_OnEnter val5 = WhirlWindPersuitCycle_OnEnter; <>O.<2>__WhirlWindPersuitCycle_OnEnter = val5; obj3 = (object)val5; } WhirlwindWarmUp.OnEnter += (hook_OnEnter)obj3; object obj4 = <>O.<3>__WhirlWindPersuitCycle_OnExit; if (obj4 == null) { hook_OnExit val6 = WhirlWindPersuitCycle_OnExit; <>O.<3>__WhirlWindPersuitCycle_OnExit = val6; obj4 = (object)val6; } WhirlwindWarmUp.OnExit += (hook_OnExit)obj4; object obj5 = <>O.<4>__WhirlWindPersuitCycle_UpdateLand; if (obj5 == null) { hook_UpdateLand val7 = WhirlWindPersuitCycle_UpdateLand; <>O.<4>__WhirlWindPersuitCycle_UpdateLand = val7; obj5 = (object)val7; } WhirlWindPersuitCycle.UpdateLand += (hook_UpdateLand)obj5; } private static void WhirlWindPersuitCycle_UpdateLand(orig_UpdateLand orig, WhirlWindPersuitCycle self) { //IL_000f: Unknown result type (might be due to invalid IL or missing references) //IL_0014: Unknown result type (might be due to invalid IL or missing references) //IL_0019: Unknown result type (might be due to invalid IL or missing references) //IL_002a: Unknown result type (might be due to invalid IL or missing references) //IL_0048: Unknown result type (might be due to invalid IL or missing references) //IL_0052: Expected O, but got Unknown orig.Invoke(self); RaycastHit val = default(RaycastHit); if (!Physics.Raycast(new Ray(((EntityState)self).transform.position, Vector3.down), ref val, 200f, LayerMask.op_Implicit(((LayerIndex)(ref LayerIndex.world)).mask), (QueryTriggerInteraction)1)) { ((EntityState)self).outer.SetNextState((EntityState)new WhirlwindWarmUp()); } } private static void WhirlWindPersuitCycle_OnExit(orig_OnExit orig, WhirlwindWarmUp self) { orig.Invoke(self); SetStunnable((EntityState)(object)self, stunnable: true); } private static void WhirlWindPersuitCycle_OnEnter(orig_OnEnter orig, WhirlwindWarmUp self) { orig.Invoke(self); SetStunnable((EntityState)(object)self, stunnable: false); } private static void WhirlWindPersuitCycle_OnExit(orig_OnExit orig, WhirlWindPersuitCycle self) { orig.Invoke(self); SetStunnable((EntityState)(object)self, stunnable: true); } private static void WhirlWindPersuitCycle_OnEnter(orig_OnEnter orig, WhirlWindPersuitCycle self) { orig.Invoke(self); SetStunnable((EntityState)(object)self, stunnable: false); } private static void SetStunnable(EntityState self, bool stunnable) { SetStateOnHurt val = default(SetStateOnHurt); if (self.TryGetComponent(ref val)) { val.canBeStunned = stunnable; } } } public class ExtraChanges : MonoBehaviour { private EntityStateMachine weaponStateMachine; private EntityStateMachine bodyStateMachine; private const float maxStunDuration = 0.5f; private void Awake() { EntityStateMachine[] components = ((Component)this).GetComponents(); foreach (EntityStateMachine val in components) { if (val.customName == "Weapon") { weaponStateMachine = val; } if (val.customName == "Body") { bodyStateMachine = val; } } } private void FixedUpdate() { //IL_0072: Unknown result type (might be due to invalid IL or missing references) //IL_0077: Unknown result type (might be due to invalid IL or missing references) //IL_007c: Unknown result type (might be due to invalid IL or missing references) //IL_008d: Unknown result type (might be due to invalid IL or missing references) //IL_00ab: Unknown result type (might be due to invalid IL or missing references) //IL_00b6: Expected O, but got Unknown if (!Object.op_Implicit((Object)(object)weaponStateMachine)) { return; } RaycastHit val = default(RaycastHit); if (!(weaponStateMachine.state is WhirlwindWarmUp) && !(weaponStateMachine.state is WhirlWindPersuitCycle) && !(weaponStateMachine.nextState is WhirlwindWarmUp) && !(weaponStateMachine.nextState is WhirlWindPersuitCycle) && !Physics.Raycast(new Ray(((Component)this).transform.position, Vector3.down), ref val, 200f, LayerMask.op_Implicit(((LayerIndex)(ref LayerIndex.world)).mask), (QueryTriggerInteraction)1)) { weaponStateMachine.SetInterruptState((EntityState)new WhirlwindWarmUp(), (InterruptPriority)6); } if (bodyStateMachine.state is StunState) { EntityState state = bodyStateMachine.state; StunState val2 = (StunState)(object)((state is StunState) ? state : null); if (val2.duration - ((EntityState)val2).fixedAge > 0.5f) { val2.duration = 0.5f + ((EntityState)val2).fixedAge; val2.stunDuration = 0.5f + ((EntityState)val2).fixedAge; } } } } [BepInDependency(/*Could not decode attribute arguments.*/)] internal static class Options { public static bool IsEnabled => Chainloader.PluginInfos.ContainsKey("com.rune580.riskofoptions"); public static void Init() { HalcyonKnight.ChangeShrineCredits = ((BaseUnityPlugin)HalcyonKnight.Instance).Config.Bind("General", "Increase credit cost", false, "Increase stage 1 shrine credit cost 0 -> 30 (for reference stage 2+ is 50)"); if (IsEnabled) { RiskOfOptionsConfig(); } } [MethodImpl(MethodImplOptions.NoInlining | MethodImplOptions.NoOptimization)] public static void RiskOfOptionsConfig() { //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_001a: Expected O, but got Unknown //IL_00b3: Unknown result type (might be due to invalid IL or missing references) //IL_00ba: Expected O, but got Unknown //IL_00ef: Unknown result type (might be due to invalid IL or missing references) //IL_00fe: Unknown result type (might be due to invalid IL or missing references) ModSettingsManager.AddOption((BaseOption)new CheckBoxOption(HalcyonKnight.ChangeShrineCredits), "Onyx.HalcyonKnight", "HalcyonKnight"); ModSettingsManager.SetModDescription("Options for HalcyonKnight", "Onyx.HalcyonKnight", "HalcyonKnight"); FileInfo fileInfo = null; DirectoryInfo directoryInfo = new DirectoryInfo(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location)); do { FileInfo[] files = directoryInfo.GetFiles("icon.png", SearchOption.TopDirectoryOnly); if (files != null && files.Length != 0) { fileInfo = files[0]; break; } directoryInfo = directoryInfo.Parent; } while (directoryInfo != null && directoryInfo.Exists && !string.Equals(directoryInfo.Name, "plugins", StringComparison.OrdinalIgnoreCase)); if (fileInfo != null) { Texture2D val = new Texture2D(256, 256); if (ImageConversion.LoadImage(val, File.ReadAllBytes(fileInfo.FullName))) { Sprite val2 = Sprite.Create(val, new Rect(0f, 0f, (float)((Texture)val).width, (float)((Texture)val).height), new Vector2(0.5f, 0.5f)); ((Object)val2).name = "HalcyonKnightIcon"; ModSettingsManager.SetModIcon(val2, "Onyx.HalcyonKnight", "HalcyonKnight"); } } } } [BepInPlugin("Onyx.HalcyonKnight", "HalcyonKnight", "1.1.5")] public sealed class HalcyonKnight : BaseUnityPlugin { [CompilerGenerated] private static class <>O { public static Manipulator <0>__TriLaser_FixedUpdate; public static hook_OnEnter <1>__TriLaser_OnEnter; public static hook_OnBodyStart <2>__OnBodyStart; public static hook_UpdateFindTarget <3>__UpdateFindTarget; public static Func <4>__AdjustHalcScaling; } public const string PluginGUID = "Onyx.HalcyonKnight"; public const string PluginAuthor = "Onyx"; public const string PluginName = "HalcyonKnight"; public const string PluginVersion = "1.1.5"; public static HalcyonKnight Instance; private static SpawnCard halcshrineCard; public static ConfigEntry ChangeShrineCredits { get; set; } public void Awake() { //IL_0030: 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_006a: Unknown result type (might be due to invalid IL or missing references) //IL_006f: Unknown result type (might be due to invalid IL or missing references) //IL_00a4: Unknown result type (might be due to invalid IL or missing references) //IL_00a9: Unknown result type (might be due to invalid IL or missing references) //IL_00de: Unknown result type (might be due to invalid IL or missing references) //IL_00e3: Unknown result type (might be due to invalid IL or missing references) //IL_0118: Unknown result type (might be due to invalid IL or missing references) //IL_011d: Unknown result type (might be due to invalid IL or missing references) //IL_0152: Unknown result type (might be due to invalid IL or missing references) //IL_0157: Unknown result type (might be due to invalid IL or missing references) //IL_018c: Unknown result type (might be due to invalid IL or missing references) //IL_0191: Unknown result type (might be due to invalid IL or missing references) //IL_01c7: Unknown result type (might be due to invalid IL or missing references) //IL_01cc: Unknown result type (might be due to invalid IL or missing references) //IL_0202: Unknown result type (might be due to invalid IL or missing references) //IL_0207: Unknown result type (might be due to invalid IL or missing references) //IL_023d: Unknown result type (might be due to invalid IL or missing references) //IL_0242: Unknown result type (might be due to invalid IL or missing references) //IL_027b: Unknown result type (might be due to invalid IL or missing references) //IL_0280: Unknown result type (might be due to invalid IL or missing references) //IL_0286: Expected O, but got Unknown //IL_029c: Unknown result type (might be due to invalid IL or missing references) //IL_02a1: Unknown result type (might be due to invalid IL or missing references) //IL_02a7: Expected O, but got Unknown //IL_02bd: Unknown result type (might be due to invalid IL or missing references) //IL_02c2: Unknown result type (might be due to invalid IL or missing references) //IL_02c8: Expected O, but got Unknown //IL_02f6: Unknown result type (might be due to invalid IL or missing references) //IL_0300: Expected O, but got Unknown //IL_0308: Unknown result type (might be due to invalid IL or missing references) //IL_0312: Expected O, but got Unknown //IL_031a: Unknown result type (might be due to invalid IL or missing references) //IL_0324: Expected O, but got Unknown //IL_032c: Unknown result type (might be due to invalid IL or missing references) //IL_0336: Expected O, but got Unknown //IL_033e: Unknown result type (might be due to invalid IL or missing references) //IL_0348: Expected O, but got Unknown //IL_02de: Unknown result type (might be due to invalid IL or missing references) //IL_02e3: Unknown result type (might be due to invalid IL or missing references) //IL_02e9: Expected O, but got Unknown Log.Init(((BaseUnityPlugin)this).Logger); Instance = SingletonHelper.Assign(Instance, this); Options.Init(); AssetReferenceT val = new AssetReferenceT(RoR2_DLC2_Halcyonite.EntityStates_HalcyoniteMonster_ChargeTriLaser_asset); AsyncOperationHandle val2 = AssetAsyncReferenceManager.LoadAsset(val, (AsyncReferenceHandleUnloadType)2); val2.Completed += delegate(AsyncOperationHandle x) { Extensions.TryModifyFieldValue(x.Result, "baseDuration", 1.5f); }; val = new AssetReferenceT(RoR2_DLC2_Halcyonite.EntityStates_HalcyoniteMonster_TriLaser_asset); val2 = AssetAsyncReferenceManager.LoadAsset(val, (AsyncReferenceHandleUnloadType)2); val2.Completed += delegate(AsyncOperationHandle x) { Extensions.TryModifyFieldValue(x.Result, "blastRadius", 2f); }; val = new AssetReferenceT(RoR2_DLC2_Halcyonite.EntityStates_HalcyoniteMonster_WhirlwindWarmUp_asset); val2 = AssetAsyncReferenceManager.LoadAsset(val, (AsyncReferenceHandleUnloadType)2); val2.Completed += delegate(AsyncOperationHandle x) { Extensions.TryModifyFieldValue(x.Result, "duration", 0.7f); }; val = new AssetReferenceT(RoR2_DLC2_Halcyonite.EntityStates_HalcyoniteMonster_WhirlwindPersuitCycle_asset); val2 = AssetAsyncReferenceManager.LoadAsset(val, (AsyncReferenceHandleUnloadType)2); val2.Completed += delegate(AsyncOperationHandle x) { Extensions.TryModifyFieldValue(x.Result, "dashSpeedCoefficient", 40f); Extensions.TryModifyFieldValue(x.Result, "decelerateDuration", 0.5f); Extensions.TryModifyFieldValue(x.Result, "dashSafeExitDuration", 3f); }; val = new AssetReferenceT(RoR2_DLC2_Halcyonite.EntityStates_HalcyoniteMonster_GoldenSwipe_asset); val2 = AssetAsyncReferenceManager.LoadAsset(val, (AsyncReferenceHandleUnloadType)2); val2.Completed += delegate(AsyncOperationHandle x) { Extensions.TryModifyFieldValue(x.Result, "baseDuration", 1.3f); Extensions.TryModifyFieldValue(x.Result, "pushAwayForce", 500f); }; val = new AssetReferenceT(RoR2_DLC2_Halcyonite.EntityStates_HalcyoniteMonster_GoldenSlash_asset); val2 = AssetAsyncReferenceManager.LoadAsset(val, (AsyncReferenceHandleUnloadType)2); val2.Completed += delegate(AsyncOperationHandle x) { Extensions.TryModifyFieldValue(x.Result, "pushAwayForce", 500f); Extensions.TryModifyFieldValue(x.Result, "baseDuration", 1.1f); }; AssetReferenceT val3 = new AssetReferenceT(RoR2_DLC2_Halcyonite.HalcyoniteMaster_prefab); AsyncOperationHandle val4 = AssetAsyncReferenceManager.LoadAsset(val3, (AsyncReferenceHandleUnloadType)2); val4.Completed += delegate(AsyncOperationHandle x) { //IL_0179: Unknown result type (might be due to invalid IL or missing references) //IL_00a4: Unknown result type (might be due to invalid IL or missing references) //IL_00de: Unknown result type (might be due to invalid IL or missing references) //IL_0118: Unknown result type (might be due to invalid IL or missing references) GameObject result3 = x.Result; AISkillDriver[] components = result3.GetComponents(); foreach (AISkillDriver val12 in components) { switch (val12.customName) { case "Golden Swipe": val12.minDistance = 0f; val12.movementType = (MovementType)3; val12.moveInputScale = 0.5f; val12.maxDistance = 15f; val12.driverUpdateTimerOverride = 1.5f; val12.aimVectorMaxSpeedOverride = 0f; break; case "Golden Slash": val12.movementType = (MovementType)3; val12.maxDistance = 10f; val12.driverUpdateTimerOverride = 2f; break; case "TriLaser": val12.minDistance = 15f; val12.driverUpdateTimerOverride = 2.5f; val12.movementType = (MovementType)1; break; case "WhirlwindRush": val12.minDistance = 20f; break; case "Follow Target": val12.minDistance = 5f; break; case "Follow Nodegraph": val12.minDistance = 5f; break; } } AISkillDriver val13 = result3.AddComponent(); val13.minDistance = 0f; val13.maxDistance = float.MaxValue; val13.movementType = (MovementType)3; BaseAI val14 = default(BaseAI); if (result3.TryGetComponent(ref val14)) { val14.prioritizePlayers = true; } }; val3 = new AssetReferenceT(RoR2_DLC2.ShrineHalcyonite_prefab); val4 = AssetAsyncReferenceManager.LoadAsset(val3, (AsyncReferenceHandleUnloadType)2); val4.Completed += delegate(AsyncOperationHandle x) { BossGroup val11 = UnityObjectExtensions.EnsureComponent(x.Result); x.Result.GetComponent().setUnavailableOnTeleporterActivated = true; }; AssetReferenceT val5 = new AssetReferenceT(RoR2_DLC2_Halcyonite.HalcyoniteMonsterWhirlwindRush_asset); AsyncOperationHandle val6 = AssetAsyncReferenceManager.LoadAsset(val5, (AsyncReferenceHandleUnloadType)2); val6.Completed += delegate(AsyncOperationHandle x) { SkillDef result2 = x.Result; result2.baseRechargeInterval = 15f; }; val5 = new AssetReferenceT(RoR2_DLC2_Halcyonite.HalcyoniteMonsterGoldenSlash_asset); val6 = AssetAsyncReferenceManager.LoadAsset(val5, (AsyncReferenceHandleUnloadType)2); val6.Completed += delegate(AsyncOperationHandle x) { SkillDef result = x.Result; result.baseRechargeInterval = 7f; }; object obj = <>O.<0>__TriLaser_FixedUpdate; if (obj == null) { Manipulator val7 = TriLaser_FixedUpdate; <>O.<0>__TriLaser_FixedUpdate = val7; obj = (object)val7; } TriLaser.FixedUpdate += (Manipulator)obj; object obj2 = <>O.<1>__TriLaser_OnEnter; if (obj2 == null) { hook_OnEnter val8 = TriLaser_OnEnter; <>O.<1>__TriLaser_OnEnter = val8; obj2 = (object)val8; } TriLaser.OnEnter += (hook_OnEnter)obj2; object obj3 = <>O.<2>__OnBodyStart; if (obj3 == null) { hook_OnBodyStart val9 = OnBodyStart; <>O.<2>__OnBodyStart = val9; obj3 = (object)val9; } CharacterMaster.OnBodyStart += (hook_OnBodyStart)obj3; object obj4 = <>O.<3>__UpdateFindTarget; if (obj4 == null) { hook_UpdateFindTarget val10 = UpdateFindTarget; <>O.<3>__UpdateFindTarget = val10; obj4 = (object)val10; } WhirlWindPersuitCycle.UpdateFindTarget += (hook_UpdateFindTarget)obj4; HalcyoniteShrineInteractable.DrainConditionMet += new Manipulator(DrainConditionMet); PurchaseInteraction.OnTeleporterBeginCharging += new hook_OnTeleporterBeginCharging(OnTeleporterBeginCharging); ShrineHalcyoniteBaseState.OnEnter += new hook_OnEnter(ShrineHalcyoniteBaseState_OnEnter); HalcyoniteShrineInteractable.CalculateCredits += new hook_CalculateCredits(HalcyoniteShrineInteractable_CalculateCredits); TriLaser.FireTriLaser += new hook_FireTriLaser(TriLaser_FireTriLaser); OptionChangeShrineCredits(null, null); ChangeShrineCredits.SettingChanged += OptionChangeShrineCredits; } private void OptionChangeShrineCredits(object sender, EventArgs e) { //IL_0067: Unknown result type (might be due to invalid IL or missing references) //IL_0071: Expected O, but got Unknown //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) //IL_0017: Unknown result type (might be due to invalid IL or missing references) //IL_0021: Expected O, but got Unknown //IL_002f: Unknown result type (might be due to invalid IL or missing references) //IL_0034: Unknown result type (might be due to invalid IL or missing references) if (ChangeShrineCredits.Value) { SceneDirector.GenerateInteractableCardSelection += new hook_GenerateInteractableCardSelection(GenerateInteractableCardSelection); AssetReferenceT val = new AssetReferenceT(RoR2_DLC2.iscShrineHalcyoniteTier1_asset); AsyncOperationHandle val2 = AssetAsyncReferenceManager.LoadAsset(val, (AsyncReferenceHandleUnloadType)2); val2.Completed += delegate(AsyncOperationHandle x) { x.Result.directorCreditCost = 30; halcshrineCard = x.Result; }; } else { SceneDirector.GenerateInteractableCardSelection -= new hook_GenerateInteractableCardSelection(GenerateInteractableCardSelection); AssetReferenceT val3 = new AssetReferenceT(RoR2_DLC2.iscShrineHalcyoniteTier1_asset); AsyncOperationHandle val2 = AssetAsyncReferenceManager.LoadAsset(val3, (AsyncReferenceHandleUnloadType)2); val2.Completed += delegate(AsyncOperationHandle x) { x.Result.directorCreditCost = 0; halcshrineCard = x.Result; }; } } private WeightedSelection GenerateInteractableCardSelection(orig_GenerateInteractableCardSelection orig, SceneDirector self) { //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) //IL_0016: Unknown result type (might be due to invalid IL or missing references) //IL_0032: Unknown result type (might be due to invalid IL or missing references) WeightedSelection val = orig.Invoke(self); for (int i = 0; i < val.Count; i++) { ChoiceInfo choice = val.GetChoice(i); if ((Object)(object)choice.value.spawnCard == (Object)(object)halcshrineCard) { val.ModifyChoiceWeight(i, choice.weight * 2f); } } return val; } private void ShrineHalcyoniteBaseState_OnEnter(orig_OnEnter orig, ShrineHalcyoniteBaseState self) { orig.Invoke(self); Debug.Log((object)((EntityState)self).outer.state); } private void HalcyoniteShrineInteractable_CalculateCredits(orig_CalculateCredits orig, HalcyoniteShrineInteractable self) { orig.Invoke(self); if (self.scaleMonsterCreditWithDifficultyCoefficient) { self.monsterCredit /= Math.Max(Run.instance.difficultyCoefficient * 0.3f, 1f); } } private void OnTeleporterBeginCharging(orig_OnTeleporterBeginCharging orig, TeleporterInteraction self) { orig.Invoke(self); if (!NetworkServer.active) { return; } ChildLocator val = default(ChildLocator); Transform val2 = default(Transform); foreach (PurchaseInteraction instances in InstanceTracker.GetInstancesList()) { if (((Object)instances).name == "ShrineHalcyonite(Clone)" && ((Component)instances).TryGetComponent(ref val)) { if (val.TryFindChild("GoldSiphonNearbyBodyAttachment", ref val2)) { ((Component)val2).gameObject.SetActive(false); } if (val.TryFindChild("StormPortalIndicator", ref val2)) { ((Component)val2).gameObject.SetActive(false); } if (val.TryFindChild("RangeIndicator", ref val2)) { ((Component)val2).gameObject.SetActive(false); } if (val.TryFindChild("GoldshoresPortalIndicator", ref val2)) { ((Component)val2).gameObject.SetActive(false); } } } } private void DrainConditionMet(ILContext il) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0008: Expected O, but got Unknown //IL_00d6: Unknown result type (might be due to invalid IL or missing references) //IL_00e2: Unknown result type (might be due to invalid IL or missing references) ILCursor val = new ILCursor(il); float num2 = default(float); int num = default(int); if (val.TryGotoNext(new Func[4] { (Instruction x) => ILPatternMatchingExt.MatchLdfld(x, typeof(HalcyoniteShrineInteractable), "goldDrained"), (Instruction x) => ILPatternMatchingExt.MatchConvR4(x), (Instruction x) => ILPatternMatchingExt.MatchLdcR4(x, ref num2), (Instruction x) => ILPatternMatchingExt.MatchDiv(x) }) && val.TryGotoNext((MoveType)0, new Func[1] { (Instruction x) => ILPatternMatchingExt.MatchStloc(x, ref num) })) { val.Emit(OpCodes.Pop); val.Emit(OpCodes.Ldarg_0); val.EmitDelegate>((Func)AdjustHalcScaling); } else { Log.Error(((MemberReference)il.Method).Name + " IL Hook failed!"); } static int AdjustHalcScaling(HalcyoniteShrineInteractable self) { if (self.goldDrained > self.lowGoldCost && self.goldDrained < self.midGoldCost) { return (int)(0.7 + 0.06 * (double)Run.instance.ambientLevel); } if (self.goldDrained > self.midGoldCost && self.goldDrained < self.maxGoldCost) { return (int)(1.4 + 0.12 * (double)Run.instance.ambientLevel); } if (self.goldDrained >= self.maxGoldCost) { return (int)(2.1 + 0.18 * (double)Run.instance.ambientLevel); } return 0; } } private static void UpdateFindTarget(orig_UpdateFindTarget orig, WhirlWindPersuitCycle self) { //IL_00e5: Unknown result type (might be due to invalid IL or missing references) //IL_00ea: Unknown result type (might be due to invalid IL or missing references) //IL_00ef: Unknown result type (might be due to invalid IL or missing references) //IL_0100: Unknown result type (might be due to invalid IL or missing references) //IL_005f: 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_0075: Unknown result type (might be due to invalid IL or missing references) //IL_007a: 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_0083: Unknown result type (might be due to invalid IL or missing references) //IL_008d: Unknown result type (might be due to invalid IL or missing references) //IL_0092: Unknown result type (might be due to invalid IL or missing references) //IL_0097: Unknown result type (might be due to invalid IL or missing references) //IL_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) if (!Object.op_Implicit((Object)(object)self.targetBody)) { BaseAI[] aiComponents = ((EntityState)self).characterBody.master.AiComponents; foreach (BaseAI val in aiComponents) { if (val.hasAimTarget) { self.targetBody = val.skillDriverEvaluation.target.characterBody; Vector3 footPosition = self.targetBody.footPosition; Vector3 val2 = ((EntityState)self).transform.position - self.targetBody.footPosition; self.targetPos = footPosition + ((Vector3)(ref val2)).normalized * 2f; self.findTargetTimeStamp = ((EntityState)self).fixedAge; self.startForwardDirt = ((EntityState)self).characterDirection.forward; break; } } } orig.Invoke(self); RaycastHit val3 = default(RaycastHit); if (!Object.op_Implicit((Object)(object)self.targetBody) && Physics.Raycast(new Ray(((EntityState)self).transform.position, Vector3.down), ref val3, 200f, LayerMask.op_Implicit(((LayerIndex)(ref LayerIndex.world)).mask), (QueryTriggerInteraction)1)) { ((EntityState)self).outer.SetNextStateToMain(); } } private static void OnBodyStart(orig_OnBodyStart orig, CharacterMaster self, CharacterBody body) { //IL_003f: 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) orig.Invoke(self, body); if (((Object)body).name == "HalcyoniteBody(Clone)") { body.modelLocator.modelTransform.GetChild(4).localScale = new Vector3(2.5f, 6f, 12f); body.modelLocator.modelTransform.GetChild(7).localScale = new Vector3(15f, 0.8f, 10f); body.baseMoveSpeed = 9f; body.baseNameToken = "Halcyon Knight"; body.subtitleNameToken = "Forsaken Heir"; } SetStateOnHurt val = default(SetStateOnHurt); if (((Component)body).TryGetComponent(ref val)) { val.canBeHitStunned = false; } } private static void TriLaser_OnEnter(orig_OnEnter orig, TriLaser self) { orig.Invoke(self); self.targetTimeStamp = 0.1f; self.fireCooldown = 0.3f; } private static void TriLaser_FixedUpdate(ILContext il) { //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_000e: Expected O, but got Unknown //IL_002c: Unknown result type (might be due to invalid IL or missing references) //IL_0038: Unknown result type (might be due to invalid IL or missing references) ILCursor val = new ILCursor(il); int num = 0; int laserCount = 0; while (val.TryGotoNext((MoveType)2, new Func[3] { (Instruction x) => ILPatternMatchingExt.MatchLdfld(x, typeof(TriLaser), "timesFired"), (Instruction x) => ILPatternMatchingExt.MatchLdcI4(x, ref laserCount), (Instruction x) => !ILPatternMatchingExt.MatchAdd(x) })) { int index = val.Index; val.Index = index - 1; val.Emit(OpCodes.Pop); val.Emit(OpCodes.Ldc_I4, laserCount + 2); num++; } if (num == 0) { Log.Error(((MemberReference)il.Method).Name + " IL Hook failed!"); } } private void TriLaser_FireTriLaser(orig_FireTriLaser orig, TriLaser self) { //IL_0044: Unknown result type (might be due to invalid IL or missing references) //IL_004f: Unknown result type (might be due to invalid IL or missing references) orig.Invoke(self); BaseAI[] aiComponents = ((EntityState)self).characterBody.master.AiComponents; foreach (BaseAI val in aiComponents) { if (val.hasAimTarget) { if (Vector3.Distance(val.skillDriverEvaluation.target.characterBody.transform.position, ((EntityState)self).transform.position) < 15f) { ((EntityState)self).outer.SetNextStateToMain(); } break; } } } } }