using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Reflection;
using System.Resources;
using System.Runtime.CompilerServices;
using System.Runtime.Versioning;
using System.Security;
using System.Security.Permissions;
using BepInEx;
using BepInEx.Configuration;
using CrestOptimizer.Settings;
using GlobalSettings;
using HarmonyLib;
using HutongGames.PlayMaker;
using HutongGames.PlayMaker.Actions;
using Microsoft.CodeAnalysis;
using TeamCherry.Localization;
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("CrestOptimizer")]
[assembly: AssemblyConfiguration("Release")]
[assembly: AssemblyFileVersion("0.1.1.0")]
[assembly: AssemblyInformationalVersion("0.1.1+c5db21315f09fa0346a9600fdc8ec7d3fe7c139e")]
[assembly: AssemblyProduct("CrestOptimizer")]
[assembly: AssemblyTitle("CrestOptimizer")]
[assembly: NeutralResourcesLanguage("EN")]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: AssemblyVersion("0.1.1.0")]
[module: UnverifiableCode]
[module: RefSafetyRules(11)]
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;
}
}
[CompilerGenerated]
[Microsoft.CodeAnalysis.Embedded]
[AttributeUsage(AttributeTargets.Module, AllowMultiple = false, Inherited = false)]
internal sealed class RefSafetyRulesAttribute : Attribute
{
public readonly int Version;
public RefSafetyRulesAttribute(int P_0)
{
Version = P_0;
}
}
}
namespace BepInEx
{
[AttributeUsage(AttributeTargets.Class, Inherited = false, AllowMultiple = false)]
[Conditional("CodeGeneration")]
[Microsoft.CodeAnalysis.Embedded]
internal sealed class BepInAutoPluginAttribute : Attribute
{
public BepInAutoPluginAttribute(string? id = null, string? name = null, string? version = null)
{
}
}
}
namespace BepInEx.Preloader.Core.Patching
{
[AttributeUsage(AttributeTargets.Class, Inherited = false, AllowMultiple = false)]
[Conditional("CodeGeneration")]
[Microsoft.CodeAnalysis.Embedded]
internal sealed class PatcherAutoPluginAttribute : Attribute
{
public PatcherAutoPluginAttribute(string? id = null, string? name = null, string? version = null)
{
}
}
}
namespace Microsoft.CodeAnalysis
{
[Microsoft.CodeAnalysis.Embedded]
internal sealed class EmbeddedAttribute : Attribute
{
}
}
namespace CrestOptimizer
{
[BepInPlugin("io.github.danielstegink.crestoptimizer", "CrestOptimizer", "0.1.1")]
public class CrestOptimizer : BaseUnityPlugin
{
public const string Id = "io.github.danielstegink.crestoptimizer";
internal static CrestOptimizer Instance { get; private set; }
public static string Name => "CrestOptimizer";
public static string Version => "0.1.1";
private void Awake()
{
//IL_000b: Unknown result type (might be due to invalid IL or missing references)
Instance = this;
new Harmony("io.github.danielstegink.crestoptimizer").PatchAll();
((BaseUnityPlugin)this).Logger.LogInfo((object)("Plugin " + Name + " (io.github.danielstegink.crestoptimizer) has loaded!"));
}
private void Start()
{
ConfigSettings.Initialize(((BaseUnityPlugin)this).Config);
}
internal void Log(string message)
{
((BaseUnityPlugin)this).Logger.LogInfo((object)message);
}
}
}
namespace CrestOptimizer.Settings
{
public static class ConfigSettings
{
public static ConfigEntry<int> focusHits;
public static ConfigEntry<float> focusDamage;
public static ConfigEntry<int> focusHits2;
public static ConfigEntry<float> focusDamage2;
public static ConfigEntry<int> focusHits2S;
public static ConfigEntry<float> focusDamage2S;
public static ConfigEntry<int> silkCountMultiplier;
public static ConfigEntry<int> silkValueMultiplier;
public static ConfigEntry<float> critChance;
public static ConfigEntry<float> critDamage;
public static ConfigEntry<bool> replaceTool;
public static ConfigEntry<bool> downSlashIFrames;
public static ConfigEntry<int> furyCap;
public static ConfigEntry<float> bindSizeMultiplier;
public static ConfigEntry<float> longclawBindSizeMultiplier;
public static ConfigEntry<int> witchCap;
public static ConfigEntry<bool> refundSilk;
public static ConfigEntry<int> scavengerChance;
public static ConfigEntry<int> craftMaskCount;
public static ConfigEntry<bool> noDropBind;
public static void Initialize(ConfigFile config)
{
//IL_003c: Unknown result type (might be due to invalid IL or missing references)
//IL_0043: Unknown result type (might be due to invalid IL or missing references)
//IL_00b0: Unknown result type (might be due to invalid IL or missing references)
//IL_00b7: Unknown result type (might be due to invalid IL or missing references)
//IL_0120: Unknown result type (might be due to invalid IL or missing references)
//IL_0127: Unknown result type (might be due to invalid IL or missing references)
//IL_0194: Unknown result type (might be due to invalid IL or missing references)
//IL_019b: Unknown result type (might be due to invalid IL or missing references)
//IL_0204: Unknown result type (might be due to invalid IL or missing references)
//IL_020b: Unknown result type (might be due to invalid IL or missing references)
//IL_0278: Unknown result type (might be due to invalid IL or missing references)
//IL_027f: Unknown result type (might be due to invalid IL or missing references)
//IL_02e8: Unknown result type (might be due to invalid IL or missing references)
//IL_02ef: Unknown result type (might be due to invalid IL or missing references)
//IL_0358: Unknown result type (might be due to invalid IL or missing references)
//IL_035f: Unknown result type (might be due to invalid IL or missing references)
//IL_03cc: Unknown result type (might be due to invalid IL or missing references)
//IL_03d3: Unknown result type (might be due to invalid IL or missing references)
//IL_0440: 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_04b1: Unknown result type (might be due to invalid IL or missing references)
//IL_04b9: Unknown result type (might be due to invalid IL or missing references)
//IL_0524: Unknown result type (might be due to invalid IL or missing references)
//IL_052c: Unknown result type (might be due to invalid IL or missing references)
//IL_0596: Unknown result type (might be due to invalid IL or missing references)
//IL_059d: Unknown result type (might be due to invalid IL or missing references)
//IL_060a: Unknown result type (might be due to invalid IL or missing references)
//IL_0611: Unknown result type (might be due to invalid IL or missing references)
//IL_067e: Unknown result type (might be due to invalid IL or missing references)
//IL_0685: Unknown result type (might be due to invalid IL or missing references)
//IL_06ee: Unknown result type (might be due to invalid IL or missing references)
//IL_06f5: Unknown result type (might be due to invalid IL or missing references)
//IL_075f: Unknown result type (might be due to invalid IL or missing references)
//IL_0767: Unknown result type (might be due to invalid IL or missing references)
//IL_07d1: Unknown result type (might be due to invalid IL or missing references)
//IL_07d8: Unknown result type (might be due to invalid IL or missing references)
//IL_0841: Unknown result type (might be due to invalid IL or missing references)
//IL_0848: Unknown result type (might be due to invalid IL or missing references)
//IL_08b2: Unknown result type (might be due to invalid IL or missing references)
//IL_08ba: Unknown result type (might be due to invalid IL or missing references)
LocalisedString val = default(LocalisedString);
((LocalisedString)(ref val))..ctor("Mods.io.github.danielstegink.crestoptimizer", "FOCUS_1_NAME");
LocalisedString val2 = default(LocalisedString);
((LocalisedString)(ref val2))..ctor("Mods.io.github.danielstegink.crestoptimizer", "FOCUS_1_DESC");
int num = 6;
if (((LocalisedString)(ref val)).Exists && ((LocalisedString)(ref val2)).Exists)
{
focusHits = config.Bind<int>("Hunter", LocalisedString.op_Implicit(val), num, LocalisedString.op_Implicit(val2));
}
else
{
focusHits = config.Bind<int>("Hunter", "1", num, "1");
}
((LocalisedString)(ref val))..ctor("Mods.io.github.danielstegink.crestoptimizer", "FOCUS_D1_NAME");
((LocalisedString)(ref val2))..ctor("Mods.io.github.danielstegink.crestoptimizer", "FOCUS_D1_DESC");
float num2 = 1.3f;
if (((LocalisedString)(ref val)).Exists && ((LocalisedString)(ref val2)).Exists)
{
focusDamage = config.Bind<float>("Hunter", LocalisedString.op_Implicit(val), num2, LocalisedString.op_Implicit(val2));
}
else
{
focusDamage = config.Bind<float>("Hunter", "1", num2, "2s");
}
((LocalisedString)(ref val))..ctor("Mods.io.github.danielstegink.crestoptimizer", "FOCUS_2_NAME");
((LocalisedString)(ref val2))..ctor("Mods.io.github.danielstegink.crestoptimizer", "FOCUS_2_DESC");
num = 6;
if (((LocalisedString)(ref val)).Exists && ((LocalisedString)(ref val2)).Exists)
{
focusHits2 = config.Bind<int>("Hunter", LocalisedString.op_Implicit(val), num, LocalisedString.op_Implicit(val2));
}
else
{
focusHits2 = config.Bind<int>("Hunter", "1", num, "2");
}
((LocalisedString)(ref val))..ctor("Mods.io.github.danielstegink.crestoptimizer", "FOCUS_D2_NAME");
((LocalisedString)(ref val2))..ctor("Mods.io.github.danielstegink.crestoptimizer", "FOCUS_D2_DESC");
num2 = 1.3f;
if (((LocalisedString)(ref val)).Exists && ((LocalisedString)(ref val2)).Exists)
{
focusDamage2 = config.Bind<float>("Hunter", LocalisedString.op_Implicit(val), num2, LocalisedString.op_Implicit(val2));
}
else
{
focusDamage2 = config.Bind<float>("Hunter", "1", num2, "2");
}
((LocalisedString)(ref val))..ctor("Mods.io.github.danielstegink.crestoptimizer", "FOCUS_2S_NAME");
((LocalisedString)(ref val2))..ctor("Mods.io.github.danielstegink.crestoptimizer", "FOCUS_2S_DESC");
num = 6;
if (((LocalisedString)(ref val)).Exists && ((LocalisedString)(ref val2)).Exists)
{
focusHits2S = config.Bind<int>("Hunter", LocalisedString.op_Implicit(val), num, LocalisedString.op_Implicit(val2));
}
else
{
focusHits2S = config.Bind<int>("Hunter", "1", num, "2");
}
((LocalisedString)(ref val))..ctor("Mods.io.github.danielstegink.crestoptimizer", "FOCUS_D2S_NAME");
((LocalisedString)(ref val2))..ctor("Mods.io.github.danielstegink.crestoptimizer", "FOCUS_D2S_DESC");
num2 = 1.5f;
if (((LocalisedString)(ref val)).Exists && ((LocalisedString)(ref val2)).Exists)
{
focusDamage2S = config.Bind<float>("Hunter", LocalisedString.op_Implicit(val), num2, LocalisedString.op_Implicit(val2));
}
else
{
focusDamage2S = config.Bind<float>("Hunter", "1", num2, "2");
}
((LocalisedString)(ref val))..ctor("Mods.io.github.danielstegink.crestoptimizer", "SILK_COUNT_NAME");
((LocalisedString)(ref val2))..ctor("Mods.io.github.danielstegink.crestoptimizer", "SILK_COUNT_DESC");
num = 1;
if (((LocalisedString)(ref val)).Exists && ((LocalisedString)(ref val2)).Exists)
{
silkCountMultiplier = config.Bind<int>("Reaper", LocalisedString.op_Implicit(val), num, LocalisedString.op_Implicit(val2));
}
else
{
silkCountMultiplier = config.Bind<int>("Reaper", "1", num, "2");
}
((LocalisedString)(ref val))..ctor("Mods.io.github.danielstegink.crestoptimizer", "SILK_VALUE_NAME");
((LocalisedString)(ref val2))..ctor("Mods.io.github.danielstegink.crestoptimizer", "SILK_VALUE_DESC");
num = 1;
if (((LocalisedString)(ref val)).Exists && ((LocalisedString)(ref val2)).Exists)
{
silkValueMultiplier = config.Bind<int>("Reaper", LocalisedString.op_Implicit(val), num, LocalisedString.op_Implicit(val2));
}
else
{
silkValueMultiplier = config.Bind<int>("Reaper", "1", num, "2");
}
((LocalisedString)(ref val))..ctor("Mods.io.github.danielstegink.crestoptimizer", "CRIT_CHANCE_NAME");
((LocalisedString)(ref val2))..ctor("Mods.io.github.danielstegink.crestoptimizer", "CRIT_CHANCE_DESC");
num2 = 2f;
if (((LocalisedString)(ref val)).Exists && ((LocalisedString)(ref val2)).Exists)
{
critChance = config.Bind<float>("Wanderer", LocalisedString.op_Implicit(val), num2, LocalisedString.op_Implicit(val2));
}
else
{
critChance = config.Bind<float>("Wanderer", "1", num2, "2");
}
((LocalisedString)(ref val))..ctor("Mods.io.github.danielstegink.crestoptimizer", "CRIT_NAME");
((LocalisedString)(ref val2))..ctor("Mods.io.github.danielstegink.crestoptimizer", "CRIT_DESC");
num2 = 3f;
if (((LocalisedString)(ref val)).Exists && ((LocalisedString)(ref val2)).Exists)
{
critDamage = config.Bind<float>("Wanderer", LocalisedString.op_Implicit(val), num2, LocalisedString.op_Implicit(val2));
}
else
{
critDamage = config.Bind<float>("Wanderer", "1", num2, "2");
}
((LocalisedString)(ref val))..ctor("Mods.io.github.danielstegink.crestoptimizer", "WANDERER_SLOT_NAME");
((LocalisedString)(ref val2))..ctor("Mods.io.github.danielstegink.crestoptimizer", "WANDERER_SLOT_DESC");
bool flag = false;
if (((LocalisedString)(ref val)).Exists && ((LocalisedString)(ref val2)).Exists)
{
replaceTool = config.Bind<bool>("Wanderer", LocalisedString.op_Implicit(val), flag, LocalisedString.op_Implicit(val2));
}
else
{
replaceTool = config.Bind<bool>("Wanderer", "1", flag, "2");
}
((LocalisedString)(ref val))..ctor("Mods.io.github.danielstegink.crestoptimizer", "POGO_INV_NAME");
((LocalisedString)(ref val2))..ctor("Mods.io.github.danielstegink.crestoptimizer", "POGO_INV_DESC");
flag = false;
if (((LocalisedString)(ref val)).Exists && ((LocalisedString)(ref val2)).Exists)
{
downSlashIFrames = config.Bind<bool>("Beast", LocalisedString.op_Implicit(val), flag, LocalisedString.op_Implicit(val2));
}
else
{
downSlashIFrames = config.Bind<bool>("Beast", "Down Slash I-Frames", flag, "Applies invulnerability at the start of down-slashing with the Beast Crest");
}
((LocalisedString)(ref val))..ctor("Mods.io.github.danielstegink.crestoptimizer", "FURY_CAP_NAME");
((LocalisedString)(ref val2))..ctor("Mods.io.github.danielstegink.crestoptimizer", "FURY_CAP_DESC");
num = 3;
if (((LocalisedString)(ref val)).Exists && ((LocalisedString)(ref val2)).Exists)
{
furyCap = config.Bind<int>("Beast", LocalisedString.op_Implicit(val), num, LocalisedString.op_Implicit(val2));
}
else
{
furyCap = config.Bind<int>("Beast", "Fury Heal Cap", num, "Maximum Masks that can be healed using Beast Crest's Fury mode");
}
((LocalisedString)(ref val))..ctor("Mods.io.github.danielstegink.crestoptimizer", "BIND_SIZE_NAME");
((LocalisedString)(ref val2))..ctor("Mods.io.github.danielstegink.crestoptimizer", "BIND_SIZE_DESC");
num2 = 1f;
if (((LocalisedString)(ref val)).Exists && ((LocalisedString)(ref val2)).Exists)
{
bindSizeMultiplier = config.Bind<float>("Witch", LocalisedString.op_Implicit(val), num2, LocalisedString.op_Implicit(val2));
}
else
{
bindSizeMultiplier = config.Bind<float>("Witch", "1", num2, "2");
}
((LocalisedString)(ref val))..ctor("Mods.io.github.danielstegink.crestoptimizer", "LN_BIND_SIZE_NAME");
((LocalisedString)(ref val2))..ctor("Mods.io.github.danielstegink.crestoptimizer", "LN_BIND_SIZE_DESC");
num2 = 1f;
if (((LocalisedString)(ref val)).Exists && ((LocalisedString)(ref val2)).Exists)
{
longclawBindSizeMultiplier = config.Bind<float>("Witch", LocalisedString.op_Implicit(val), num2, LocalisedString.op_Implicit(val2));
}
else
{
longclawBindSizeMultiplier = config.Bind<float>("Witch", "Witch Bind Multiplier (Longclaw)", num2, "How much to enlarge Witch Crest's tentacle bind with longclaw equipped");
}
((LocalisedString)(ref val))..ctor("Mods.io.github.danielstegink.crestoptimizer", "WITCH_CAP_NAME");
((LocalisedString)(ref val2))..ctor("Mods.io.github.danielstegink.crestoptimizer", "WITCH_CAP_DESC");
num = 3;
if (((LocalisedString)(ref val)).Exists && ((LocalisedString)(ref val2)).Exists)
{
witchCap = config.Bind<int>("Witch", LocalisedString.op_Implicit(val), num, LocalisedString.op_Implicit(val2));
}
else
{
witchCap = config.Bind<int>("Witch", "Witch Heal Cap", num, "Maximum Masks that can be healed using Witch Crest");
}
((LocalisedString)(ref val))..ctor("Mods.io.github.danielstegink.crestoptimizer", "WITCH_REFUND_NAME");
((LocalisedString)(ref val2))..ctor("Mods.io.github.danielstegink.crestoptimizer", "WITCH_REFUND_DESC");
flag = false;
if (((LocalisedString)(ref val)).Exists && ((LocalisedString)(ref val2)).Exists)
{
refundSilk = config.Bind<bool>("Witch", LocalisedString.op_Implicit(val), flag, LocalisedString.op_Implicit(val2));
}
else
{
refundSilk = config.Bind<bool>("Witch", "With Silk Refund", flag, "Refund some Silk on a failed bind");
}
((LocalisedString)(ref val))..ctor("Mods.io.github.danielstegink.crestoptimizer", "SHARD_NAME");
((LocalisedString)(ref val2))..ctor("Mods.io.github.danielstegink.crestoptimizer", "SHARD_DESC");
num = 0;
if (((LocalisedString)(ref val)).Exists && ((LocalisedString)(ref val2)).Exists)
{
scavengerChance = config.Bind<int>("Architect", LocalisedString.op_Implicit(val), num, LocalisedString.op_Implicit(val2));
}
else
{
scavengerChance = config.Bind<int>("Architect", "1", num, "2");
}
((LocalisedString)(ref val))..ctor("Mods.io.github.danielstegink.crestoptimizer", "CRAFT_MASK_NAME");
((LocalisedString)(ref val2))..ctor("Mods.io.github.danielstegink.crestoptimizer", "CRAFT_MASK_DESC");
num = 0;
if (((LocalisedString)(ref val)).Exists && ((LocalisedString)(ref val2)).Exists)
{
craftMaskCount = config.Bind<int>("Architect", LocalisedString.op_Implicit(val), num, LocalisedString.op_Implicit(val2));
}
else
{
craftMaskCount = config.Bind<int>("Architect", "1", num, "2");
}
((LocalisedString)(ref val))..ctor("Mods.io.github.danielstegink.crestoptimizer", "NO_DROP_NAME");
((LocalisedString)(ref val2))..ctor("Mods.io.github.danielstegink.crestoptimizer", "NO_DROP_DESC");
flag = false;
if (((LocalisedString)(ref val)).Exists && ((LocalisedString)(ref val2)).Exists)
{
noDropBind = config.Bind<bool>("Shaman", LocalisedString.op_Implicit(val), flag, LocalisedString.op_Implicit(val2));
}
else
{
noDropBind = config.Bind<bool>("Shaman", "1", flag, "2");
}
}
}
public static class SharedData
{
public static float witchBindMultiplier = 1f;
}
}
namespace CrestOptimizer.Helpers
{
[HarmonyPatch(typeof(BoolTest), "OnEnter")]
public static class BoolTest_OnEnter
{
[HarmonyPrefix]
public static void Prefix(BoolTest __instance)
{
if (IsShamanDropCheck(__instance) && ConfigSettings.noDropBind.Value)
{
__instance.boolVariable.Value = false;
}
}
[HarmonyPostfix]
public static void Postfix(BoolTest __instance)
{
if (IsShamanDropCheck(__instance))
{
__instance.boolVariable.Value = HeroController.instance.IsShamanCrestEquipped();
}
}
private static bool IsShamanDropCheck(BoolTest __instance)
{
if (((FsmStateAction)__instance).State.Name.Equals("Bind Air") && ((FsmStateAction)__instance).Fsm.Name.Equals("Bind"))
{
return ((NamedVariable)__instance.boolVariable).Name.Equals("Is Shaman Equipped");
}
return false;
}
}
[HarmonyPatch(typeof(FsmState), "OnExit")]
public static class FsmState_OnExit
{
private static int prevHealth;
[HarmonyPostfix]
public static void Postfix(FsmState __instance)
{
if (__instance.Name.Equals("SpinBall Antic") && __instance.Fsm.Name.Equals("Crest Attacks") && ConfigSettings.downSlashIFrames.Value)
{
HeroController.instance.StartDownspikeInvulnerabilityLong();
}
if (__instance.Name.Equals("Bind Start") && __instance.Fsm.Name.Equals("Bind"))
{
prevHealth = PlayerData.instance.GetInt("health");
}
if (__instance.Name.Equals("End Bind") && __instance.Fsm.Name.Equals("Bind") && PlayerData.instance.GetInt("health") <= prevHealth && ConfigSettings.refundSilk.Value && ((ToolBase)Gameplay.WitchCrest).IsEquipped)
{
HeroController.instance.AddSilk(5, true);
}
if (__instance.Name.Equals("Quick Craft Burst") && __instance.Fsm.Name.Equals("Bind") && ConfigSettings.craftMaskCount.Value > 0)
{
HeroController.instance.AddHealth(ConfigSettings.craftMaskCount.Value);
}
}
}
[HarmonyPatch(typeof(HealthManager), "TakeDamage")]
public static class HealthManager_TakeDamage
{
[HarmonyPostfix]
public static void Postfix(HealthManager __instance, ref HitInstance hitInstance)
{
//IL_0049: Unknown result type (might be due to invalid IL or missing references)
//IL_009b: Unknown result type (might be due to invalid IL or missing references)
//IL_00a2: Unknown result type (might be due to invalid IL or missing references)
if (HeroController.instance.IsArchitectCrestEquipped() && hitInstance.DamageDealt > 0)
{
int num = 0;
int num2;
for (num2 = ConfigSettings.scavengerChance.Value; num2 >= 100; num2 -= 100)
{
num++;
}
if (Random.Range(1, 101) <= num2)
{
num++;
}
Config val = default(Config);
val.Prefab = Gameplay.ShellShardPrefab;
val.AmountMin = num;
val.AmountMax = num;
val.SpeedMin = 15f;
val.SpeedMax = 30f;
val.AngleMin = 80f;
val.AngleMax = 100f;
FlingUtils.SpawnAndFlingShellShards(val, ((Component)__instance).transform, Vector3.zero, (List<GameObject>)null);
}
}
}
[HarmonyPatch(typeof(HeroController), "AddSilkParts", new Type[] { typeof(int) })]
public static class HeroController_AddSilkParts
{
[HarmonyPrefix]
public static void Prefix(HeroController __instance, ref int amount)
{
amount *= ConfigSettings.silkValueMultiplier.Value;
}
}
[HarmonyPatch(typeof(HeroController), "Start")]
public static class HeroController_Start
{
[HarmonyPostfix]
public static void Postfix(HeroController __instance)
{
SharedData.witchBindMultiplier = 1f;
}
}
[HarmonyPatch(typeof(HeroController), "Update")]
public static class HeroController_Update
{
[HarmonyPostfix]
public static void Postfix(HeroController __instance)
{
//IL_0024: Unknown result type (might be due to invalid IL or missing references)
//IL_0025: Unknown result type (might be due to invalid IL or missing references)
//IL_0032: Unknown result type (might be due to invalid IL or missing references)
//IL_0045: Unknown result type (might be due to invalid IL or missing references)
//IL_0046: Unknown result type (might be due to invalid IL or missing references)
ToolCrest crestByName = ToolItemManager.GetCrestByName("Wanderer");
if ((Object)(object)crestByName != (Object)null)
{
ToolItemType val = (ToolItemType)((!ConfigSettings.replaceTool.Value) ? 2 : 0);
if (val != crestByName.Slots[4].Type)
{
crestByName.Slots[4].Type = val;
__instance.UpdateConfig();
}
}
BuffTentacles();
}
private static void BuffTentacles()
{
//IL_00c8: Unknown result type (might be due to invalid IL or missing references)
//IL_00d6: Unknown result type (might be due to invalid IL or missing references)
//IL_00e0: Unknown result type (might be due to invalid IL or missing references)
//IL_00f2: Unknown result type (might be due to invalid IL or missing references)
//IL_00f8: Unknown result type (might be due to invalid IL or missing references)
float value = ConfigSettings.bindSizeMultiplier.Value;
if (((ToolBase)Gameplay.LongNeedleTool).IsEquipped)
{
value = ConfigSettings.longclawBindSizeMultiplier.Value;
}
if (SharedData.witchBindMultiplier == value || (Object)(object)GameObject.Find("Bind Effects") == (Object)null)
{
return;
}
GameObject val = GameObject.Find("Witch Bind");
if ((Object)(object)val == (Object)null)
{
return;
}
Transform[] componentsInChildren = val.GetComponentsInChildren<Transform>();
for (int i = 0; i < componentsInChildren.Length; i++)
{
GameObject gameObject = ((Component)componentsInChildren[i]).gameObject;
if (((Object)gameObject).name.Contains("Damager") || ((Object)gameObject).name.Contains("Tendril"))
{
GameObject gameObject2 = ((Component)gameObject.transform.parent).gameObject;
if ((Object)(object)gameObject2 != (Object)null && ((Object)gameObject2).name.Equals("Witch Bind"))
{
_ = gameObject.transform.localScale;
Transform transform = gameObject.transform;
transform.localScale /= SharedData.witchBindMultiplier;
Transform transform2 = gameObject.transform;
transform2.localScale *= value;
}
}
}
SharedData.witchBindMultiplier = value;
}
}
}
namespace CrestOptimizer.Helpers.Getters_HeroController
{
[HarmonyPatch(typeof(HeroController), "GetRageModeHealCap")]
public static class HeroController_GetRageModeHealCap
{
[HarmonyPostfix]
public static void Postfix(HeroController __instance, ref int __result)
{
int num = ConfigSettings.furyCap.Value;
if (((ToolBase)Gameplay.MultibindTool).IsEquipped)
{
num++;
}
__result = num;
}
}
[HarmonyPatch(typeof(HeroController), "GetReaperPayout")]
public static class HeroController_GetReaperPayout
{
[HarmonyPostfix]
public static void Postfix(HeroController __instance, ref int __result)
{
__result *= ConfigSettings.silkCountMultiplier.Value;
}
}
[HarmonyPatch(typeof(HeroController), "GetWitchHealCap")]
public static class HeroController_GetWitchHealCap
{
[HarmonyPostfix]
public static void Postfix(HeroController __instance, ref int __result)
{
int num = ConfigSettings.witchCap.Value;
if (((ToolBase)Gameplay.MultibindTool).IsEquipped)
{
num++;
}
__result = num;
}
}
}
namespace CrestOptimizer.Helpers.Getters_Gameplay
{
[HarmonyPatch(/*Could not decode attribute arguments.*/)]
public static class Gameplay_HunterCombo2DamageMult
{
[HarmonyPostfix]
public static void Postfix(Gameplay __instance, ref float __result)
{
__result = ConfigSettings.focusDamage2.Value;
}
}
[HarmonyPatch(/*Could not decode attribute arguments.*/)]
public static class Gameplay_HunterCombo2ExtraDamageMult
{
[HarmonyPostfix]
public static void Postfix(Gameplay __instance, ref float __result)
{
__result = ConfigSettings.focusDamage2S.Value;
}
}
[HarmonyPatch(/*Could not decode attribute arguments.*/)]
public static class Gameplay_HunterCombo2ExtraHits
{
[HarmonyPostfix]
public static void Postfix(Gameplay __instance, ref int __result)
{
__result = ConfigSettings.focusHits2S.Value;
}
}
[HarmonyPatch(/*Could not decode attribute arguments.*/)]
public static class Gameplay_HunterCombo2Hits
{
[HarmonyPostfix]
public static void Postfix(Gameplay __instance, ref int __result)
{
__result = ConfigSettings.focusHits2.Value;
}
}
[HarmonyPatch(/*Could not decode attribute arguments.*/)]
public static class Gameplay_HunterComboDamageMult
{
[HarmonyPostfix]
public static void Postfix(Gameplay __instance, ref float __result)
{
__result = ConfigSettings.focusDamage.Value;
}
}
[HarmonyPatch(/*Could not decode attribute arguments.*/)]
public static class Gameplay_HunterComboHits
{
[HarmonyPostfix]
public static void Postfix(Gameplay __instance, ref int __result)
{
__result = ConfigSettings.focusHits.Value;
}
}
[HarmonyPatch(/*Could not decode attribute arguments.*/)]
public static class Gameplay_WandererCritChance
{
[HarmonyPostfix]
public static void Postfix(Gameplay __instance, ref float __result)
{
__result = ConfigSettings.critChance.Value / 100f;
}
}
[HarmonyPatch(/*Could not decode attribute arguments.*/)]
public static class Gameplay_WandererCritMultiplier
{
[HarmonyPostfix]
public static void Postfix(Gameplay __instance, ref float __result)
{
__result = ConfigSettings.critDamage.Value;
}
}
}