Some mods may be broken due to the recent Alloyed Collective update.
Decompiled source of HalcyonShrineObjectives v1.0.0
HalcyoniteObjective.dll
Decompiled 6 months agousing System; 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 BepInEx; using BepInEx.Logging; using Microsoft.CodeAnalysis; using On.RoR2; using RoR2; using RoR2.UI; using UnityEngine; [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("HalcyoniteObjective")] [assembly: AssemblyConfiguration("Release")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0")] [assembly: AssemblyProduct("HalcyoniteObjective")] [assembly: AssemblyTitle("HalcyoniteObjective")] [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 HalcyoniteObjective { [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInPlugin("Dnarok.HalcyoniteShrineObjective", "HalcyoniteShrineObjective", "1.0.0")] public class HalcyoniteObjective : BaseUnityPlugin { public class FindHalcyonShrineObjectiveTracker : ObjectiveTracker { public override string GenerateString() { return "Find and activate the <style=cShrine>Halcyon Shrine</style>"; } } public class ChargeHalcyonShrineObjectiveTracker : ObjectiveTracker { private int percent = -1; private HalcyoniteShrineInteractable interactable => (HalcyoniteShrineInteractable)base.sourceDescriptor.source; private bool ShouldBeFlashing() { //IL_0031: Unknown result type (might be due to invalid IL or missing references) //IL_0041: Unknown result type (might be due to invalid IL or missing references) //IL_0046: 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) bool result = false; if (Object.op_Implicit((Object)(object)base.sourceDescriptor.master) && Object.op_Implicit((Object)(object)interactable)) { Vector3 val = base.sourceDescriptor.master.GetBody().corePosition - ((Component)interactable).transform.position; result = ((Vector3)(ref val)).sqrMagnitude > interactable.radius * interactable.radius; } return result; } public override string GenerateString() { percent = interactable.goldDrained * 100 / interactable.maxGoldCost; string text = $"Charge the <style=cShrine>Halcyon Shrine</style> ({percent}%)"; if (ShouldBeFlashing()) { text = $"Enter the <style=cShrine>Halcyon Shrine zone!</style> ({percent}%)"; if ((int)(Time.time * 12f) % 2 == 0) { text = "<style=cDeath>" + text + "</style>"; } } return text; } public override bool IsDirty() { return true; } } public class DefeatGildedEnemiesObjectiveTracker : ObjectiveTracker { public override string GenerateString() { return "Defeat the <style=cShrine>Halcyonite</style>"; } } public const string PluginGUID = "Dnarok.HalcyoniteShrineObjective"; public const string PluginAuthor = "Dnarok"; public const string PluginName = "HalcyoniteShrineObjective"; public const string PluginVersion = "1.0.0"; public void Awake() { //IL_0012: Unknown result type (might be due to invalid IL or missing references) //IL_001c: Expected O, but got Unknown Log.Init(((BaseUnityPlugin)this).Logger); HalcyoniteShrineInteractable.Start += new hook_Start(OnStart); } public void OnStart(orig_Start orig, HalcyoniteShrineInteractable self) { ObjectivePanelController.collectObjectiveSources += findAndChargeObjectives; self.combatDirector.combatSquad.onMemberAddedServer += onObjectiveSpawned; void defeatObjective(CharacterMaster master, List<ObjectiveSourceDescriptor> list) { //IL_0028: 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) if (Object.op_Implicit((Object)(object)self) && self.combatDirector.combatSquad.memberCount > 0) { list.Add(new ObjectiveSourceDescriptor { master = master, objectiveType = typeof(DefeatGildedEnemiesObjectiveTracker), source = (Object)(object)self.combatDirector.combatSquad }); } else { ObjectivePanelController.collectObjectiveSources -= defeatObjective; } } void findAndChargeObjectives(CharacterMaster master, List<ObjectiveSourceDescriptor> list) { //IL_001d: 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_008c: Unknown result type (might be due to invalid IL or missing references) //IL_00b8: Unknown result type (might be due to invalid IL or missing references) if (Object.op_Implicit((Object)(object)self) && self.interactions == 0) { list.Add(new ObjectiveSourceDescriptor { master = master, objectiveType = typeof(FindHalcyonShrineObjectiveTracker), source = (Object)(object)self }); } else if (Object.op_Implicit((Object)(object)self) && (self.purchaseInteraction.available || self.goldDrained < self.lowGoldCost + 3)) { list.Add(new ObjectiveSourceDescriptor { master = master, objectiveType = typeof(ChargeHalcyonShrineObjectiveTracker), source = (Object)(object)self }); } else { ObjectivePanelController.collectObjectiveSources -= findAndChargeObjectives; } } void onObjectiveSpawned(CharacterMaster _) { self.combatDirector.combatSquad.onMemberAddedServer -= onObjectiveSpawned; ObjectivePanelController.collectObjectiveSources += defeatObjective; } } } 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); } } }