using System;
using System.Collections;
using System.Diagnostics;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.Versioning;
using System.Security;
using System.Security.Permissions;
using BattleMatch;
using BepInEx;
using BepInEx.Bootstrap;
using BepInEx.Configuration;
using BepInEx.Logging;
using Cards;
using HarmonyLib;
using Microsoft.CodeAnalysis;
using MoreScarabs;
using Obeliskial_Essentials;
using UnityEngine;
[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)]
[assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")]
[assembly: AssemblyCompany("com.binbin.morescarabs")]
[assembly: AssemblyConfiguration("Debug")]
[assembly: AssemblyFileVersion("1.4.0.0")]
[assembly: AssemblyInformationalVersion("1.4.0+07621f805475aa98570a068863a638b427860e4f")]
[assembly: AssemblyProduct("More Scarabs")]
[assembly: AssemblyTitle("com.binbin.morescarabs")]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: AssemblyVersion("1.4.0.0")]
[module: UnverifiableCode]
[module: RefSafetyRules(11)]
namespace Microsoft.CodeAnalysis
{
[CompilerGenerated]
[Embedded]
internal sealed class EmbeddedAttribute : Attribute
{
}
}
namespace System.Runtime.CompilerServices
{
[CompilerGenerated]
[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;
}
}
}
public static class EssentialsCompatibility
{
private static bool? _enabled;
public static bool Enabled
{
get
{
bool valueOrDefault = _enabled == true;
if (!_enabled.HasValue)
{
valueOrDefault = Chainloader.PluginInfos.ContainsKey("com.stiffmeds.obeliskialessentials");
_enabled = valueOrDefault;
}
return _enabled.Value;
}
}
[MethodImpl(MethodImplOptions.NoInlining | MethodImplOptions.NoOptimization)]
public static void EssentialsRegister()
{
Essentials.RegisterMod(Plugin.PluginName, "binbin", "More Scarabs", Plugin.PluginVersion, Plugin.ModDate, "https://github.com/binbinmods/MoreScarabs", (string[])null, "", 100, (string[])null, "", true);
Plugin.LogInfo(Plugin.PluginGUID + " " + Plugin.PluginVersion + " has loaded with Essentials!");
}
}
namespace MoreScarabs
{
[HarmonyPatch]
public class MoreScarabPatches
{
public static int i = 1;
[HarmonyPrefix]
[HarmonyPatch(typeof(Scarab), "NextturnContinue")]
public static void NextTurnContinuePrefix(MatchManager __instance)
{
//IL_01c6: Unknown result type (might be due to invalid IL or missing references)
//IL_01cb: Unknown result type (might be due to invalid IL or missing references)
//IL_01cd: Unknown result type (might be due to invalid IL or missing references)
//IL_01cf: Unknown result type (might be due to invalid IL or missing references)
//IL_01d1: Unknown result type (might be due to invalid IL or missing references)
//IL_01d4: Unknown result type (might be due to invalid IL or missing references)
//IL_01f2: Expected I4, but got Unknown
//IL_0362: Unknown result type (might be due to invalid IL or missing references)
//IL_0368: Invalid comparison between Unknown and I4
//IL_0340: Unknown result type (might be due to invalid IL or missing references)
//IL_0346: Invalid comparison between Unknown and I4
//IL_036b: Unknown result type (might be due to invalid IL or missing references)
//IL_0371: Invalid comparison between Unknown and I4
//IL_0349: Unknown result type (might be due to invalid IL or missing references)
//IL_034f: Invalid comparison between Unknown and I4
//IL_0468: Unknown result type (might be due to invalid IL or missing references)
//IL_0447: Unknown result type (might be due to invalid IL or missing references)
//IL_053d: Unknown result type (might be due to invalid IL or missing references)
//IL_051a: Unknown result type (might be due to invalid IL or missing references)
//IL_04e3: Unknown result type (might be due to invalid IL or missing references)
//IL_04c0: Unknown result type (might be due to invalid IL or missing references)
//IL_0688: Unknown result type (might be due to invalid IL or missing references)
//IL_06a9: Unknown result type (might be due to invalid IL or missing references)
//IL_0642: Unknown result type (might be due to invalid IL or missing references)
//IL_0663: Unknown result type (might be due to invalid IL or missing references)
//IL_05e5: Unknown result type (might be due to invalid IL or missing references)
//IL_0606: Unknown result type (might be due to invalid IL or missing references)
//IL_059f: Unknown result type (might be due to invalid IL or missing references)
//IL_05c0: Unknown result type (might be due to invalid IL or missing references)
if ((Object)(object)__instance == (Object)null || __instance.MatchIsOver || Traverse.Create((object)__instance).Field("gameStatus").GetValue<string>() == "EndTurn")
{
return;
}
string value = Traverse.Create((object)__instance).Field("scarabSpawned").GetValue<string>();
CombatData value2 = Traverse.Create((object)__instance).Field("combatData").GetValue<CombatData>();
int value3 = Traverse.Create((object)__instance).Field("currentRound").GetValue<int>();
NPC[] value4 = Traverse.Create((object)__instance).Field("TeamNPC").GetValue<NPC[]>();
if (value3 == 0 || value != "" || (Object)(object)value2 == (Object)null || (Object)(object)Globals.Instance.GetNodeData(AtOManager.Instance.currentMapNode) == (Object)null)
{
if ((Object)(object)value2 == (Object)null)
{
Plugin.LogDebug("null combat", "NextTurnContinuePrefix");
}
if ((Object)(object)Globals.Instance.GetNodeData(AtOManager.Instance.currentMapNode) == (Object)null)
{
Plugin.LogDebug("null mapNode", "NextTurnContinuePrefix");
}
return;
}
bool value5 = Plugin.GuaranteedSpawn.Value;
bool value6 = Plugin.OnlySpawnJades.Value;
int value7 = Plugin.PercentChanceToSpawn.Value;
int num = (value5 ? 101 : value7);
int num2 = (value6 ? 2 : MatchManager.Instance.Random.GetRandomIntRange(0, 4, "default", ""));
value = num2 switch
{
0 => "crystalscarab",
1 => "goldenscarab",
2 => "jadescarab",
_ => "scourgescarab",
};
bool flag = false;
CombatTier nodeCombatTier = Globals.Instance.GetNodeData(AtOManager.Instance.currentMapNode).NodeCombatTier;
CombatTier val = nodeCombatTier;
switch (val - 2)
{
case 0:
if (GameManager.Instance.IsObeliskChallenge())
{
flag = true;
}
break;
case 1:
flag = true;
break;
case 2:
flag = true;
break;
case 3:
flag = true;
break;
case 4:
if (GameManager.Instance.IsObeliskChallenge())
{
flag = true;
}
break;
case 5:
if (GameManager.Instance.IsObeliskChallenge())
{
flag = true;
}
break;
}
Plugin.LogDebug("Is it a valid combat to summon a scarab: " + flag, "NextTurnContinuePrefix");
if (!flag)
{
return;
}
int nPCAvailablePosition = MatchManager.Instance.TeamManager.GetNPCAvailablePosition(1);
if (nPCAvailablePosition <= -1)
{
return;
}
int randomIntRange = MatchManager.Instance.Random.GetRandomIntRange(0, 100, "default", "");
if (randomIntRange >= num)
{
return;
}
string text = "";
if (!GameManager.Instance.IsObeliskChallenge())
{
if (AtOManager.Instance.GetTownTier() == 2)
{
text = ((AtOManager.Instance.GetNgPlus(false) <= 0) ? "_b" : "_plus_b");
}
else if (AtOManager.Instance.GetNgPlus(false) > 0)
{
text = "_plus";
}
}
else if (AtOManager.Instance.GetObeliskMadness() > 8)
{
text = (((int)value2.CombatTier == 6 || (int)value2.CombatTier == 7) ? "_plus_b" : "_plus");
}
else if ((int)value2.CombatTier == 6 || (int)value2.CombatTier == 7)
{
text = "_b";
}
NPCData nPC = Globals.Instance.GetNPC(value + text);
if ((Object)(object)nPC == (Object)null)
{
Plugin.LogDebug("scarabData Null for scarab => " + value + text, "NextTurnContinuePrefix");
return;
}
Plugin.LogDebug("scarabData found for scarab => " + value + text + " spawning scarab", "NextTurnContinuePrefix");
MatchManager.Instance.TeamManager.CreateNPC(nPC, "", nPCAvailablePosition, false, "", (CardRealtimeData)null, "", 0f, false, false);
Globals.Instance.WaitForSeconds(0.5f);
if (num2 != 3)
{
((Character)value4[nPCAvailablePosition]).SetAuraCurse((Character)null, Globals.Instance.GetAuraCurseData("luckyscarab"), 1, false, (CardClass)11, true, true);
}
((Character)value4[nPCAvailablePosition]).SetAuraCurse((Character)null, Globals.Instance.GetAuraCurseData("sight"), 3, false, (CardClass)11, true, true);
switch (num2)
{
case 1:
if (AtOManager.Instance.GetNgPlus(false) == 0)
{
if (AtOManager.Instance.GetTownTier() == 1)
{
((Character)value4[nPCAvailablePosition]).SetAuraCurse((Character)null, Globals.Instance.GetAuraCurseData("zeal"), 5, false, (CardClass)11, true, true);
}
else
{
((Character)value4[nPCAvailablePosition]).SetAuraCurse((Character)null, Globals.Instance.GetAuraCurseData("zeal"), 7, false, (CardClass)11, true, true);
}
}
else if (AtOManager.Instance.GetTownTier() == 1)
{
((Character)value4[nPCAvailablePosition]).SetAuraCurse((Character)null, Globals.Instance.GetAuraCurseData("zeal"), 6, false, (CardClass)11, true, true);
}
else
{
((Character)value4[nPCAvailablePosition]).SetAuraCurse((Character)null, Globals.Instance.GetAuraCurseData("zeal"), 7, false, (CardClass)11, true, true);
}
break;
case 2:
if (AtOManager.Instance.GetNgPlus(false) == 0)
{
if (AtOManager.Instance.GetTownTier() == 1)
{
((Character)value4[nPCAvailablePosition]).SetAuraCurse((Character)null, Globals.Instance.GetAuraCurseData("evasion"), 5, false, (CardClass)11, true, true);
((Character)value4[nPCAvailablePosition]).SetAuraCurse((Character)null, Globals.Instance.GetAuraCurseData("buffer"), 5, false, (CardClass)11, true, true);
}
else
{
((Character)value4[nPCAvailablePosition]).SetAuraCurse((Character)null, Globals.Instance.GetAuraCurseData("evasion"), 7, false, (CardClass)11, true, true);
((Character)value4[nPCAvailablePosition]).SetAuraCurse((Character)null, Globals.Instance.GetAuraCurseData("buffer"), 7, false, (CardClass)11, true, true);
}
}
else if (AtOManager.Instance.GetTownTier() == 1)
{
((Character)value4[nPCAvailablePosition]).SetAuraCurse((Character)null, Globals.Instance.GetAuraCurseData("evasion"), 6, false, (CardClass)11, true, true);
((Character)value4[nPCAvailablePosition]).SetAuraCurse((Character)null, Globals.Instance.GetAuraCurseData("buffer"), 6, false, (CardClass)11, true, true);
}
else
{
((Character)value4[nPCAvailablePosition]).SetAuraCurse((Character)null, Globals.Instance.GetAuraCurseData("evasion"), 7, false, (CardClass)11, true, true);
((Character)value4[nPCAvailablePosition]).SetAuraCurse((Character)null, Globals.Instance.GetAuraCurseData("buffer"), 7, false, (CardClass)11, true, true);
}
break;
}
GameManager.Instance.PlayLibraryAudio("glitter", 0.25f);
Globals.Instance.WaitForSeconds(0.5f);
Plugin.LogDebug("Attempting to set traverses for scarab spawn", "NextTurnContinuePrefix");
Traverse.Create((object)__instance).Field("scarabSpawned").SetValue((object)value);
Traverse.Create((object)__instance).Field("combatData").SetValue((object)value2);
Traverse.Create((object)__instance).Field("teamNPC").SetValue((object)value4);
}
}
[BepInPlugin("com.binbin.morescarabs", "More Scarabs", "1.4.0")]
[BepInDependency(/*Could not decode attribute arguments.*/)]
[BepInProcess("AcrossTheObelisk.exe")]
public class Plugin : BaseUnityPlugin
{
internal static int ModDate = 20241024;
private readonly Harmony harmony = new Harmony("com.binbin.morescarabs");
internal static ManualLogSource Log;
internal static bool EssentialsInstalled = false;
internal static string debugBase = "MoreScarabs - ";
public static string PluginName;
public static string PluginVersion;
public static string PluginGUID;
public static ConfigEntry<bool> EnableDebugging { get; set; }
public static ConfigEntry<bool> GuaranteedSpawn { get; set; }
public static ConfigEntry<bool> OnlySpawnJades { get; set; }
public static ConfigEntry<int> PercentChanceToSpawn { get; set; }
private void Awake()
{
//IL_002c: Unknown result type (might be due to invalid IL or missing references)
//IL_003d: Unknown result type (might be due to invalid IL or missing references)
//IL_0047: Expected O, but got Unknown
//IL_0047: Expected O, but got Unknown
//IL_005d: Unknown result type (might be due to invalid IL or missing references)
//IL_006e: Unknown result type (might be due to invalid IL or missing references)
//IL_0078: Expected O, but got Unknown
//IL_0078: Expected O, but got Unknown
//IL_008e: Unknown result type (might be due to invalid IL or missing references)
//IL_009f: Unknown result type (might be due to invalid IL or missing references)
//IL_00a9: Expected O, but got Unknown
//IL_00a9: Expected O, but got Unknown
//IL_00bf: Unknown result type (might be due to invalid IL or missing references)
//IL_00d0: Unknown result type (might be due to invalid IL or missing references)
//IL_00da: Expected O, but got Unknown
//IL_00da: Expected O, but got Unknown
Log = ((BaseUnityPlugin)this).Logger;
Log.LogInfo((object)"com.binbin.morescarabs 1.4.0 has loaded!");
EnableDebugging = ((BaseUnityPlugin)this).Config.Bind<bool>(new ConfigDefinition("Debug", "Enable Debugging"), true, new ConfigDescription("If true, will enable debugging messages.", (AcceptableValueBase)null, Array.Empty<object>()));
GuaranteedSpawn = ((BaseUnityPlugin)this).Config.Bind<bool>(new ConfigDefinition("Debug", "Guaranteed Spawn"), true, new ConfigDescription("It true, will guarantee 1 Scarab to spawn at the start of round 2.", (AcceptableValueBase)null, Array.Empty<object>()));
OnlySpawnJades = ((BaseUnityPlugin)this).Config.Bind<bool>(new ConfigDefinition("Debug", "Only Spawn Jades"), true, new ConfigDescription("If true, will force all scarabs spawned to be Jade", (AcceptableValueBase)null, Array.Empty<object>()));
PercentChanceToSpawn = ((BaseUnityPlugin)this).Config.Bind<int>(new ConfigDefinition("Debug", "Percent Chance to Spawn"), 7, new ConfigDescription("Set the percent chance for a scarab to spawn, overwritten by Guaranteed Spawn)", (AcceptableValueBase)null, Array.Empty<object>()));
PluginName = "More Scarabs";
PluginVersion = "1.4.0";
PluginGUID = "com.binbin.morescarabs";
if (EssentialsCompatibility.Enabled)
{
EssentialsCompatibility.EssentialsRegister();
}
else
{
LogDebug("Essentials is not installed. Mod will load normally, but Essentials features are unavaiable.", "Awake");
}
harmony.PatchAll();
}
internal static void LogDebug(string msg, [CallerMemberName] string caller = "")
{
if (EnableDebugging.Value)
{
Log.LogDebug((object)(debugBase + "- " + caller + " - " + msg));
}
}
internal static void LogInfo(string msg)
{
Log.LogInfo((object)(debugBase + msg));
}
internal static void LogError(string msg, [CallerMemberName] string caller = "")
{
Log.LogError((object)(debugBase + "- " + caller + " - " + msg));
}
public static IEnumerator RunAfter(IEnumerator original, Action action)
{
while (original.MoveNext())
{
yield return original.Current;
}
action();
}
}
public static class PluginInfo
{
public const string PLUGIN_GUID = "com.binbin.morescarabs";
public const string PLUGIN_NAME = "More Scarabs";
public const string PLUGIN_VERSION = "1.4.0";
}
}