using 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
});
}
}
}
}