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 MountainCount v0.2.2
plugins/MountainCount/MountainCount.dll
Decompiled a year agousing System; using System.Diagnostics; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using System.Security; using System.Security.Permissions; using System.Text; using BepInEx; using BepInEx.Bootstrap; using BepInEx.Configuration; using BepInEx.Logging; using ExtraChallengeShrines; using ExtraChallengeShrines.Interactables; using HG; using IL.RoR2; using Microsoft.CodeAnalysis; using MonoMod.Cil; using On.RoR2; using R2API; using R2API.Utils; using RiskOfOptions; using RiskOfOptions.OptionConfigs; using RiskOfOptions.Options; using RoR2; 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("MountainCount")] [assembly: AssemblyConfiguration("Release")] [assembly: AssemblyDescription("Mod for Risk of Rain 2")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0+f64c7df5bb36979dda8402b2d24ed75ae42e6d1c")] [assembly: AssemblyProduct("MountainCount")] [assembly: AssemblyTitle("MountainCount")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.0.0.0")] [module: UnverifiableCode] namespace Microsoft.CodeAnalysis { [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] internal sealed class EmbeddedAttribute : Attribute { } } namespace System.Runtime.CompilerServices { [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] [AttributeUsage(AttributeTargets.Class | AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Event | AttributeTargets.Parameter | AttributeTargets.ReturnValue | AttributeTargets.GenericParameter, AllowMultiple = false, Inherited = false)] internal sealed class NullableAttribute : Attribute { public readonly byte[] NullableFlags; public NullableAttribute(byte P_0) { NullableFlags = new byte[1] { P_0 }; } public NullableAttribute(byte[] P_0) { NullableFlags = P_0; } } [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] [AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Method | AttributeTargets.Interface | AttributeTargets.Delegate, AllowMultiple = false, Inherited = false)] internal sealed class NullableContextAttribute : Attribute { public readonly byte Flag; public NullableContextAttribute(byte P_0) { Flag = P_0; } } } namespace System.Diagnostics.CodeAnalysis { [AttributeUsage(AttributeTargets.Method | AttributeTargets.Property, Inherited = false, AllowMultiple = true)] [ExcludeFromCodeCoverage] [DebuggerNonUserCode] internal sealed class MemberNotNullAttribute : Attribute { public string[] Members { get; } public MemberNotNullAttribute(string member) { Members = new string[1] { member }; } public MemberNotNullAttribute(params string[] members) { Members = members; } } [AttributeUsage(AttributeTargets.Method | AttributeTargets.Property, Inherited = false, AllowMultiple = true)] [ExcludeFromCodeCoverage] [DebuggerNonUserCode] internal sealed class MemberNotNullWhenAttribute : Attribute { public bool ReturnValue { get; } public string[] Members { get; } public MemberNotNullWhenAttribute(bool returnValue, string member) { ReturnValue = returnValue; Members = new string[1] { member }; } public MemberNotNullWhenAttribute(bool returnValue, params string[] members) { ReturnValue = returnValue; Members = members; } } } namespace MountainCount { public class Assets { public abstract class ShrineReferenceBase { public abstract string SayCountToken { get; } public abstract string AppendToken { get; } public string SayCountExpandedToken => SayCountToken + "_EXPANDED"; [MethodImpl(MethodImplOptions.NoInlining | MethodImplOptions.NoOptimization)] public abstract int GetCount(); [MethodImpl(MethodImplOptions.NoInlining | MethodImplOptions.NoOptimization)] public abstract void GetCountExpanded(out object value1, out object value2, out object value3); public abstract void ModifyShrineUseToken(ref SubjectFormatChatMessage subjectFormatChatMessage); [MethodImpl(MethodImplOptions.NoInlining | MethodImplOptions.NoOptimization)] public virtual void AppendInfo() { MountainCountPlugin.Append(Language.GetStringFormatted(AppendToken, new object[1] { GetCount() })); } public virtual void SayCount() { if (Object.op_Implicit((Object)(object)TeleporterInteraction.instance)) { if (Config.cfgExpandedInfo.Value) { SayCountExpanded(); } else { SayCountLimited(); } } } [MethodImpl(MethodImplOptions.NoInlining | MethodImplOptions.NoOptimization)] public virtual void SayCountLimited() { //IL_0000: Unknown result type (might be due to invalid IL or missing references) //IL_0006: Expected O, but got Unknown SimpleChatMessage val = new SimpleChatMessage(); val.baseToken = SayCountToken; val.paramTokens = new string[1] { GetCount().ToString() }; Chat.SendBroadcastChat((ChatMessageBase)(object)val); } [MethodImpl(MethodImplOptions.NoInlining | MethodImplOptions.NoOptimization)] public abstract void SayCountExpanded(); } public class ShrineMountain : ShrineReferenceBase { public override string SayCountToken => "MOUNTAINCOUNT_SAYAMOUNT_MOUNTAIN"; public override string AppendToken => "MOUNTAINCOUNT_SAYAMOUNT_MOUNTAIN_COMBINED"; public override int GetCount() { if (Object.op_Implicit((Object)(object)TeleporterInteraction.instance)) { return TeleporterInteraction.instance.shrineBonusStacks; } return 0; } public override void GetCountExpanded(out object expectedLimitedValue, out object expandedValue1, out object expandedValue2) { expectedLimitedValue = GetCount(); expandedValue1 = (int)expectedLimitedValue + 1; if ((int)expectedLimitedValue == 0) { expandedValue1 = 0; } expandedValue2 = -1; } public override void ModifyShrineUseToken(ref SubjectFormatChatMessage subjectFormatChatMessage) { ((SubjectChatMessage)subjectFormatChatMessage).baseToken = "MOUNTAINCOUNT_SHRINE_BOSS_USE_MESSAGE"; subjectFormatChatMessage.paramTokens = new string[1] { GetCount().ToString() }; } public override void SayCountExpanded() { //IL_000c: Unknown result type (might be due to invalid IL or missing references) //IL_0012: Expected O, but got Unknown GetCountExpanded(out var value, out var value2, out var _); SimpleChatMessage val = new SimpleChatMessage(); val.baseToken = base.SayCountExpandedToken; val.paramTokens = new string[2] { value.ToString(), value2.ToString() }; Chat.SendBroadcastChat((ChatMessageBase)(object)val); } } public static int GetStackingLinear(int baseValue, int stackValue, int count) { if (count == 0) { return 0; } return baseValue + stackValue * (count - 1); } } public static class Config { public static ConfigEntry<string> cfgPrintOnTeleporterEnd; public static ConfigEntry<bool> cfgEditLanguage; public static ConfigEntry<bool> cfgAddChatMessage; public static ConfigEntry<bool> cfgExpandedInfo; public static void Initialize(ConfigFile Config) { cfgPrintOnTeleporterEnd = Config.Bind<string>("", "Message On Teleporter Completion", "xtotal?", "If true, then this chat message will be sent to the server by the server. Recommended usage is x? or xtotal?"); cfgEditLanguage = Config.Bind<bool>("", "Edit Language", true, "Modifies boss shrine usage text to show the current amount."); cfgAddChatMessage = Config.Bind<bool>("", "Add Command", true, "If true, adds a chat message.\n'x?' will show the amount."); cfgExpandedInfo = Config.Bind<bool>("", "Expanded Information", true, "If true, then the query messages will be changed based on the info needed.\nExample: Mountain info will also show the amount of items each person gets."); cfgPrintOnTeleporterEnd.SettingChanged += CfgPrintOnTeleporterEnd_SettingChanged; cfgAddChatMessage.SettingChanged += CfgAddChatMessage_SettingChanged; cfgAddChatMessage.SettingChanged += CfgAddChatMessage_SettingChanged; } public static void CfgAddChatMessage_SettingChanged(object sender, EventArgs e) { //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_0011: Expected O, but got Unknown //IL_0030: Unknown result type (might be due to invalid IL or missing references) //IL_003a: Expected O, but got Unknown Chat.SendBroadcastChat_ChatMessageBase -= new hook_SendBroadcastChat_ChatMessageBase(MountainCountPlugin.Chat_SendBroadcastChat_ChatMessageBase); if (cfgAddChatMessage.Value || cfgEditLanguage.Value) { Chat.SendBroadcastChat_ChatMessageBase += new hook_SendBroadcastChat_ChatMessageBase(MountainCountPlugin.Chat_SendBroadcastChat_ChatMessageBase); } } public static void CfgPrintOnTeleporterEnd_SettingChanged(object sender, EventArgs e) { //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_0011: Expected O, but got Unknown //IL_0029: Unknown result type (might be due to invalid IL or missing references) //IL_0033: Expected O, but got Unknown BossGroup.DropRewards -= new hook_DropRewards(MountainCountPlugin.BossGroup_DropRewards); if (!Utility.IsNullOrWhiteSpace(cfgPrintOnTeleporterEnd.Value)) { BossGroup.DropRewards += new hook_DropRewards(MountainCountPlugin.BossGroup_DropRewards); } } } public static class ModSupport { public static class MC_ExtraChallengeShrines { public abstract class ExtraChallengeShrinesShrineReferenceBase : Assets.ShrineReferenceBase { private ExtraChallengeShrinesTeleporterComponent _teleporterComponent; public ExtraChallengeShrinesTeleporterComponent TeleporterComponent { get { if (!modloaded_ExtraChallengeShrines) { MountainCountPlugin._logger.LogWarning((object)"ExtraChallengeShrinesShrineReferenceBase.ExtraChallengeShrinesTeleporterComponent is loaded despite extra challenge shrines not being loaded. Some things may break!!"); } ExtraChallengeShrinesTeleporterComponent teleporterComponent = default(ExtraChallengeShrinesTeleporterComponent); if (!Object.op_Implicit((Object)(object)_teleporterComponent) && Object.op_Implicit((Object)(object)TeleporterInteraction.instance) && ((Component)TeleporterInteraction.instance).TryGetComponent<ExtraChallengeShrinesTeleporterComponent>(ref teleporterComponent)) { _teleporterComponent = teleporterComponent; } return _teleporterComponent; } set { _teleporterComponent = value; } } } public class ShrineCrown : ExtraChallengeShrinesShrineReferenceBase { public override string SayCountToken => "MOUNTAINCOUNT_EXTRACHALLENGESHRINES_SAYAMOUNT_CROWN"; public override string AppendToken => "MOUNTAINCOUNT_EXTRACHALLENGESHRINES_SAYAMOUNT_CROWN_COMBINED"; public override int GetCount() { if (Object.op_Implicit((Object)(object)base.TeleporterComponent)) { return base.TeleporterComponent.crownShrineStacks; } return 0; } public override void GetCountExpanded(out object getCount, out object total, out object _) { int value = ShrineCrown.redDrops.Value; int value2 = ShrineCrown.redDropsPerStack.Value; getCount = GetCount(); total = Assets.GetStackingLinear(value, value2, (int)getCount); _ = null; } public override void ModifyShrineUseToken(ref SubjectFormatChatMessage subjectFormatChatMessage) { ((SubjectChatMessage)subjectFormatChatMessage).baseToken = "MOUNTAINCOUNT_EXTRACHALLENGESHRINES_SHRINE_CROWN_USE_MESSAGE"; subjectFormatChatMessage.paramTokens = new string[1] { GetCount().ToString() }; } public override void SayCountExpanded() { //IL_000c: Unknown result type (might be due to invalid IL or missing references) //IL_0012: Expected O, but got Unknown GetCountExpanded(out var value, out var value2, out var _); SimpleChatMessage val = new SimpleChatMessage(); val.baseToken = base.SayCountExpandedToken; val.paramTokens = new string[2] { value.ToString(), value2.ToString() }; Chat.SendBroadcastChat((ChatMessageBase)(object)val); } } public class ShrineRock : ExtraChallengeShrinesShrineReferenceBase { public override string SayCountToken => "MOUNTAINCOUNT_EXTRACHALLENGESHRINES_SAYAMOUNT_ROCK"; public override string AppendToken => "MOUNTAINCOUNT_EXTRACHALLENGESHRINES_SAYAMOUNT_ROCK_COMBINED"; public override int GetCount() { if (Object.op_Implicit((Object)(object)base.TeleporterComponent)) { return base.TeleporterComponent.rockShrineStacks; } return -1; } public override void GetCountExpanded(out object useCount, out object totalValue, out object _) { useCount = GetCount(); int value = ShrineRock.extraDrops.Value; int value2 = ShrineRock.extraDropsPerStack.Value; totalValue = Assets.GetStackingLinear(value, value2, (int)useCount); _ = null; } public override void ModifyShrineUseToken(ref SubjectFormatChatMessage subjectFormatChatMessage) { ((SubjectChatMessage)subjectFormatChatMessage).baseToken = "MOUNTAINCOUNT_EXTRACHALLENGESHRINES_SHRINE_ROCK_USE_MESSAGE"; subjectFormatChatMessage.paramTokens = new string[1] { GetCount().ToString() }; } public override void SayCountExpanded() { //IL_000c: Unknown result type (might be due to invalid IL or missing references) //IL_0012: Expected O, but got Unknown GetCountExpanded(out var value, out var value2, out var _); SimpleChatMessage val = new SimpleChatMessage(); val.baseToken = base.SayCountExpandedToken; val.paramTokens = new string[2] { value.ToString(), value2.ToString() }; Chat.SendBroadcastChat((ChatMessageBase)(object)val); } } public class ShrineEye : ExtraChallengeShrinesShrineReferenceBase { public override string SayCountToken => "MOUNTAINCOUNT_EXTRACHALLENGESHRINES_SAYAMOUNT_EYE"; public override string AppendToken => "MOUNTAINCOUNT_EXTRACHALLENGESHRINES_SAYAMOUNT_EYE_COMBINED"; public override int GetCount() { if (Object.op_Implicit((Object)(object)base.TeleporterComponent)) { return base.TeleporterComponent.eyeShrineStacks; } return -1; } public override void GetCountExpanded(out object chanceString, out object _, out object __) { float bossDropChance = base.TeleporterComponent.bossGroup.bossDropChance; chanceString = ((int)bossDropChance).ToString("##.0%"); _ = null; __ = null; } public string GetSelectedBossName() { //IL_0013: Unknown result type (might be due to invalid IL or missing references) //IL_0019: Invalid comparison between Unknown and I4 //IL_0021: Unknown result type (might be due to invalid IL or missing references) if (Object.op_Implicit((Object)(object)base.TeleporterComponent) && (int)base.TeleporterComponent.eyeSelectedBody != -1) { CharacterBody bodyPrefabBodyComponent = BodyCatalog.GetBodyPrefabBodyComponent(base.TeleporterComponent.eyeSelectedBody); if (!Object.op_Implicit((Object)(object)bodyPrefabBodyComponent)) { return string.Empty; } return Language.GetString(bodyPrefabBodyComponent.baseNameToken); } return string.Empty; } public override void AppendInfo() { MountainCountPlugin.Append(Language.GetStringFormatted(AppendToken, new object[2] { GetCount(), GetSelectedBossName() })); } public override void SayCountLimited() { //IL_0000: Unknown result type (might be due to invalid IL or missing references) //IL_0006: Expected O, but got Unknown SimpleChatMessage val = new SimpleChatMessage(); val.baseToken = SayCountToken; val.paramTokens = new string[2] { GetCount().ToString(), GetSelectedBossName() }; Chat.SendBroadcastChat((ChatMessageBase)(object)val); } public override void SayCountExpanded() { //IL_000c: Unknown result type (might be due to invalid IL or missing references) //IL_0012: Expected O, but got Unknown GetCountExpanded(out var value, out var _, out var _); SimpleChatMessage val = new SimpleChatMessage(); val.baseToken = base.SayCountExpandedToken; val.paramTokens = new string[3] { GetCount().ToString(), GetSelectedBossName(), value.ToString() }; Chat.SendBroadcastChat((ChatMessageBase)(object)val); } public override void ModifyShrineUseToken(ref SubjectFormatChatMessage subjectFormatChatMessage) { ((SubjectChatMessage)subjectFormatChatMessage).baseToken = "MOUNTAINCOUNT_EXTRACHALLENGESHRINES_SHRINE_EYE_USE_MESSAGE"; subjectFormatChatMessage.paramTokens = new string[2] { GetCount().ToString(), GetSelectedBossName() }; } } public static AssetBundle ecs_AssetBundle; public static ShrineCrown shrineCrown; public static ShrineRock shrineRock; public static ShrineEye shrineEye; [MethodImpl(MethodImplOptions.NoInlining | MethodImplOptions.NoOptimization)] public static void Initialize() { ecs_AssetBundle = ExtraChallengeShrinesPlugin.AssetBundle; shrineCrown = new ShrineCrown(); shrineRock = new ShrineRock(); shrineEye = new ShrineEye(); } } public static class MC_RiskOfOptions { [MethodImpl(MethodImplOptions.NoInlining | MethodImplOptions.NoOptimization)] public static void Initialize() { //IL_0019: Unknown result type (might be due to invalid IL or missing references) //IL_0023: Expected O, but got Unknown //IL_0028: Unknown result type (might be due to invalid IL or missing references) //IL_0032: Expected O, but got Unknown //IL_0037: Unknown result type (might be due to invalid IL or missing references) //IL_0041: Expected O, but got Unknown //IL_0048: Unknown result type (might be due to invalid IL or missing references) //IL_0052: Expected O, but got Unknown ModSettingsManager.SetModDescription("Announces the amount of teleporter shrines used.", "com.DestroyedClone.MountainCount", "Mountain Count"); ModSettingsManager.AddOption((BaseOption)new StringInputFieldOption(Config.cfgPrintOnTeleporterEnd)); ModSettingsManager.AddOption((BaseOption)new CheckBoxOption(Config.cfgEditLanguage)); ModSettingsManager.AddOption((BaseOption)new CheckBoxOption(Config.cfgAddChatMessage)); RoR2Application.OnLoad += new Manipulator(RoR2Application_OnLoad); } private static void RoR2Application_OnLoad(ILContext il) { //IL_0005: Unknown result type (might be due to invalid IL or missing references) //IL_000a: Unknown result type (might be due to invalid IL or missing references) //IL_001a: Expected O, but got Unknown //IL_0015: Unknown result type (might be due to invalid IL or missing references) //IL_001f: Expected O, but got Unknown ModSettingsManager.AddOption((BaseOption)new CheckBoxOption(Config.cfgExpandedInfo, new CheckBoxConfig { description = GetExpandedInfoDescription() })); } [MethodImpl(MethodImplOptions.NoInlining | MethodImplOptions.NoOptimization)] public static string GetExpandedInfoDescription() { StringBuilder stringBuilder = StringBuilderPool.RentStringBuilder(); AppendResolvedTokenAddExtension(MountainCountPlugin.shrineMountain.SayCountToken); if (modloaded_ExtraChallengeShrines) { AppendResolvedTokenAddExtension(MC_ExtraChallengeShrines.shrineCrown.SayCountToken); AppendResolvedTokenAddExtension(MC_ExtraChallengeShrines.shrineEye.SayCountToken); AppendResolvedTokenAddExtension(MC_ExtraChallengeShrines.shrineRock.SayCountToken); } string result = stringBuilder.ToString(); StringBuilderPool.ReturnStringBuilder(stringBuilder); return result; void AppendResolvedTokenAddExtension(string text) { stringBuilder.AppendLine(Language.GetString("DEFAULT_SKIN") + ": " + Language.GetString(text)); stringBuilder.AppendLine(Language.GetString("NEW_UNLOCKABLE") + ": " + Language.GetString(text + "_EXPANDED")); } } } public static bool IsAnyModLoaded; public static bool modloaded_ExtraChallengeShrines; public static bool modloaded_RiskOfOptions; public static void Initialize() { modloaded_ExtraChallengeShrines = IsModLoaded("com.themysticsword.extrachallengeshrines"); modloaded_RiskOfOptions = IsModLoaded("com.rune580.riskofoptions"); if (modloaded_ExtraChallengeShrines) { MC_ExtraChallengeShrines.Initialize(); } if (modloaded_RiskOfOptions) { MC_RiskOfOptions.Initialize(); } static bool IsModLoaded(string key) { bool flag = Chainloader.PluginInfos.ContainsKey(key); IsAnyModLoaded |= flag; return flag; } } } [BepInPlugin("com.DestroyedClone.MountainCount", "MountainCount", "0.2.2")] [BepInDependency("com.bepis.r2api", "5.0.10")] [BepInDependency(/*Could not decode attribute arguments.*/)] [NetworkCompatibility(/*Could not decode attribute arguments.*/)] public class MountainCountPlugin : BaseUnityPlugin { public static Assets.ShrineMountain shrineMountain; public static StringBuilder ModStringBuilder; public static ManualLogSource _logger; public void Start() { //IL_0042: Unknown result type (might be due to invalid IL or missing references) //IL_004c: Expected O, but got Unknown //IL_006b: Unknown result type (might be due to invalid IL or missing references) //IL_0075: Expected O, but got Unknown shrineMountain = new Assets.ShrineMountain(); ModStringBuilder = new StringBuilder(); _logger = ((BaseUnityPlugin)this).Logger; Config.Initialize(((BaseUnityPlugin)this).Config); if (!Utility.IsNullOrWhiteSpace(Config.cfgPrintOnTeleporterEnd.Value)) { BossGroup.DropRewards += new hook_DropRewards(BossGroup_DropRewards); } if (Config.cfgAddChatMessage.Value || Config.cfgEditLanguage.Value) { Chat.SendBroadcastChat_ChatMessageBase += new hook_SendBroadcastChat_ChatMessageBase(Chat_SendBroadcastChat_ChatMessageBase); } Language.onCurrentLanguageChanged += AutoGenerateLanguageTokens; ModSupport.Initialize(); } private void AutoGenerateLanguageTokens() { Add("SHRINE_BOSS_USE_MESSAGE"); Add("EXTRACHALLENGESHRINES_SHRINE_CROWN_USE_MESSAGE"); Add("EXTRACHALLENGESHRINES_SHRINE_ROCK_USE_MESSAGE"); Add("EXTRACHALLENGESHRINES_SHRINE_EYE_USE_MESSAGE", " (x{1}|{2})"); static void Add(string originalToken, string appendingString = " (x{1})") { LanguageAPI.Add("MOUNTAINCOUNT_" + originalToken, Language.GetString(originalToken, Language.currentLanguage.name) + appendingString, Language.currentLanguage.name); LanguageAPI.Add("MOUNTAINCOUNT_" + originalToken + "_2P", Language.GetString(originalToken + "_2P", Language.currentLanguage.name) + appendingString, Language.currentLanguage.name); } } public static void Chat_SendBroadcastChat_ChatMessageBase(orig_SendBroadcastChat_ChatMessageBase orig, ChatMessageBase message) { if (Config.cfgEditLanguage.Value) { SubjectFormatChatMessage subjectFormatChatMessage = (SubjectFormatChatMessage)(object)((message is SubjectFormatChatMessage) ? message : null); if (subjectFormatChatMessage != null) { switch (((SubjectChatMessage)subjectFormatChatMessage).baseToken) { case "SHRINE_BOSS_USE_MESSAGE": shrineMountain.ModifyShrineUseToken(ref subjectFormatChatMessage); break; case "EXTRACHALLENGESHRINES_SHRINE_CROWN_USE_MESSAGE": ModSupport.MC_ExtraChallengeShrines.shrineCrown.ModifyShrineUseToken(ref subjectFormatChatMessage); break; case "EXTRACHALLENGESHRINES_SHRINE_ROCK_USE_MESSAGE": ModSupport.MC_ExtraChallengeShrines.shrineRock.ModifyShrineUseToken(ref subjectFormatChatMessage); break; case "EXTRACHALLENGESHRINES_SHRINE_EYE_USE_MESSAGE": ModSupport.MC_ExtraChallengeShrines.shrineEye.ModifyShrineUseToken(ref subjectFormatChatMessage); break; } } } bool flag = false; bool flag2 = false; bool flag3 = false; bool flag4 = false; bool flag5 = false; bool flag6 = false; if (Config.cfgAddChatMessage.Value) { UserChatMessage val = (UserChatMessage)(object)((message is UserChatMessage) ? message : null); if (val != null) { switch (val.text.ToLower()) { case "x ?": case "x?": if (ModSupport.modloaded_ExtraChallengeShrines) { flag5 = true; } else { flag = true; } break; case "xm?": case "xmtn?": case "xГоры?": flag = true; break; case "xsky?": case "xНеба?": flag2 = true; break; case "xЗемли?": case "xearth?": flag3 = true; break; case "xwind?": case "xВетра?": flag4 = true; break; case "xtotal?": case "xdc?": case "xdr?": flag6 = true; break; } } } orig.Invoke(message); if (!Object.op_Implicit((Object)(object)Run.instance)) { return; } SetupStringBuilder(); if (flag5) { shrineMountain.AppendInfo(); if (ModSupport.modloaded_ExtraChallengeShrines) { ModSupport.MC_ExtraChallengeShrines.shrineCrown?.AppendInfo(); ModSupport.MC_ExtraChallengeShrines.shrineEye?.AppendInfo(); ModSupport.MC_ExtraChallengeShrines.shrineRock?.AppendInfo(); } } else { if (flag) { shrineMountain.SayCount(); } if (ModSupport.modloaded_ExtraChallengeShrines) { if (flag2) { ModSupport.MC_ExtraChallengeShrines.shrineCrown.SayCount(); } if (flag3) { ModSupport.MC_ExtraChallengeShrines.shrineRock.SayCount(); } if (flag4) { ModSupport.MC_ExtraChallengeShrines.shrineEye.SayCount(); } } if (flag6) { SetupStringBuilder(); int num = 1; num += shrineMountain.GetCount(); if (ModSupport.modloaded_ExtraChallengeShrines) { ModSupport.MC_ExtraChallengeShrines.shrineCrown.GetCountExpanded(out var value, out var value2, out var value3); int num2 = (int)value2; num += num2; ModSupport.MC_ExtraChallengeShrines.shrineRock.GetCountExpanded(out value3, out var value4, out value); num += (int)value4; } Append(Language.GetStringFormatted("MOUNTAINCOUNT_SAYAMOUNT_EXPECTEDPERPERSON", new object[1] { num })); } } SayStringBuilder(); } public static void SetupStringBuilder() { ModStringBuilder.Clear(); } public static void Append(object line) { ModStringBuilder.Append("|" + line); } public static void SayStringBuilder() { //IL_0013: Unknown result type (might be due to invalid IL or missing references) //IL_0018: Unknown result type (might be due to invalid IL or missing references) //IL_0024: Expected O, but got Unknown string text = ModStringBuilder.ToString(); if (!Utility.IsNullOrWhiteSpace(text)) { Chat.SendBroadcastChat((ChatMessageBase)new SimpleChatMessage { baseToken = text }); } } public static void BossGroup_DropRewards(orig_DropRewards orig, BossGroup self) { //IL_0023: 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_003d: Expected O, but got Unknown orig.Invoke(self); TeleporterInteraction instance = TeleporterInteraction.instance; if (Object.op_Implicit((Object)(object)instance) && (Object)(object)self == (Object)(object)instance.bossGroup) { Chat.SendBroadcastChat((ChatMessageBase)new UserChatMessage { text = Config.cfgPrintOnTeleporterEnd.Value }); } } } }