Some mods may be broken due to the recent Alloyed Collective update.
Decompiled source of MountainCount v0.2.2
plugins/MountainCount/MountainCount.dll
Decompiled 7 months 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 }); } } } }