using System;
using System.Collections;
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 DanielSteginkUtils.Utilities;
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("2.0.0.0")]
[assembly: AssemblyInformationalVersion("2.0.0+527fe9f5de7ef7a3178aabf8276537d530ddab41")]
[assembly: AssemblyProduct("CrestOptimizer")]
[assembly: AssemblyTitle("CrestOptimizer")]
[assembly: NeutralResourcesLanguage("EN")]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: AssemblyVersion("2.0.0.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
{
[BepInDependency(/*Could not decode attribute arguments.*/)]
[BepInPlugin("io.github.danielstegink.crestoptimizer", "CrestOptimizer", "2.0.0")]
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 => "2.0.0";
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<bool> beastDash;
public static ConfigEntry<bool> beastPogo;
public static ConfigEntry<Vector3> biggerUpSlash;
public static ConfigEntry<float> fotfMultiplier;
public static ConfigEntry<float> bindSizeMultiplier;
public static ConfigEntry<float> longclawBindSizeMultiplier;
public static ConfigEntry<int> witchCap;
public static ConfigEntry<bool> refundSilk;
public static ConfigEntry<bool> doubleMirror;
public static ConfigEntry<int> scavengerChance;
public static ConfigEntry<int> craftMaskCount;
public static ConfigEntry<bool> craftBindDefault;
public static ConfigEntry<bool> noDropBind;
public static ConfigEntry<bool> spellNail;
public static ConfigEntry<float> punchBonus;
public static ConfigEntry<float> punchSpeedBonus;
public static ConfigEntry<float> speedBonus;
public static ConfigEntry<float> healTime;
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_0607: Unknown result type (might be due to invalid IL or missing references)
//IL_060f: Unknown result type (might be due to invalid IL or missing references)
//IL_06d2: Unknown result type (might be due to invalid IL or missing references)
//IL_06d7: Unknown result type (might be due to invalid IL or missing references)
//IL_067a: Unknown result type (might be due to invalid IL or missing references)
//IL_0682: Unknown result type (might be due to invalid IL or missing references)
//IL_0716: Unknown result type (might be due to invalid IL or missing references)
//IL_06f1: Unknown result type (might be due to invalid IL or missing references)
//IL_06f7: Unknown result type (might be due to invalid IL or missing references)
//IL_06f9: 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_076e: Unknown result type (might be due to invalid IL or missing references)
//IL_07db: Unknown result type (might be due to invalid IL or missing references)
//IL_07e2: Unknown result type (might be due to invalid IL or missing references)
//IL_084f: Unknown result type (might be due to invalid IL or missing references)
//IL_0856: Unknown result type (might be due to invalid IL or missing references)
//IL_08bf: Unknown result type (might be due to invalid IL or missing references)
//IL_08c6: Unknown result type (might be due to invalid IL or missing references)
//IL_0930: Unknown result type (might be due to invalid IL or missing references)
//IL_0938: Unknown result type (might be due to invalid IL or missing references)
//IL_09a3: Unknown result type (might be due to invalid IL or missing references)
//IL_09ab: Unknown result type (might be due to invalid IL or missing references)
//IL_0a15: Unknown result type (might be due to invalid IL or missing references)
//IL_0a1c: Unknown result type (might be due to invalid IL or missing references)
//IL_0a85: Unknown result type (might be due to invalid IL or missing references)
//IL_0a8c: Unknown result type (might be due to invalid IL or missing references)
//IL_0af6: Unknown result type (might be due to invalid IL or missing references)
//IL_0afe: Unknown result type (might be due to invalid IL or missing references)
//IL_0b69: Unknown result type (might be due to invalid IL or missing references)
//IL_0b71: Unknown result type (might be due to invalid IL or missing references)
//IL_0bdc: Unknown result type (might be due to invalid IL or missing references)
//IL_0be4: Unknown result type (might be due to invalid IL or missing references)
//IL_0c52: Unknown result type (might be due to invalid IL or missing references)
//IL_0c59: Unknown result type (might be due to invalid IL or missing references)
//IL_0cc6: Unknown result type (might be due to invalid IL or missing references)
//IL_0ccd: Unknown result type (might be due to invalid IL or missing references)
//IL_0d3a: Unknown result type (might be due to invalid IL or missing references)
//IL_0d41: Unknown result type (might be due to invalid IL or missing references)
//IL_0dae: Unknown result type (might be due to invalid IL or missing references)
//IL_0db5: 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", "FOCUS_1_NAME", num, "FOCUS_1_DESC");
}
((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", "FOCUS_D1_NAME", num2, "FOCUS_D1_DESC");
}
((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", "FOCUS_2_NAME", num, "FOCUS_2_DESC");
}
((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", "FOCUS_D2_NAME", num2, "FOCUS_D2_DESC");
}
((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", "FOCUS_2S_NAME", num, "FOCUS_2S_DESC");
}
((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", "FOCUS_D2S_NAME", num2, "FOCUS_D2S_DESC");
}
((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", "SILK_COUNT_NAME", num, "SILK_COUNT_DESC");
}
((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", "SILK_VALUE_NAME", num, "SILK_VALUE_DESC");
}
((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", "CRIT_CHANCE_NAME", num2, "CRIT_CHANCE_DESC");
}
((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", "CRIT_NAME", num2, "CRIT_DESC");
}
((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", "WANDERER_SLOT_NAME", flag, "WANDERER_SLOT_DESC");
}
((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", "POGO_INV_NAME", flag, "POGO_INV_DESC");
}
((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_CAP_NAME", num, "FURY_CAP_DESC");
}
((LocalisedString)(ref val))..ctor("Mods.io.github.danielstegink.crestoptimizer", "BEAST_DASH_NAME");
((LocalisedString)(ref val2))..ctor("Mods.io.github.danielstegink.crestoptimizer", "BEAST_DASH_DESC");
flag = false;
if (((LocalisedString)(ref val)).Exists && ((LocalisedString)(ref val2)).Exists)
{
beastDash = config.Bind<bool>("Beast", LocalisedString.op_Implicit(val), flag, LocalisedString.op_Implicit(val2));
}
else
{
beastDash = config.Bind<bool>("Beast", "BEAST_DASH_NAME", flag, "BEAST_DASH_DESC");
}
((LocalisedString)(ref val))..ctor("Mods.io.github.danielstegink.crestoptimizer", "BEAST_POGO_NAME");
((LocalisedString)(ref val2))..ctor("Mods.io.github.danielstegink.crestoptimizer", "BEAST_POGO_DESC");
flag = false;
if (((LocalisedString)(ref val)).Exists && ((LocalisedString)(ref val2)).Exists)
{
beastPogo = config.Bind<bool>("Beast", LocalisedString.op_Implicit(val), flag, LocalisedString.op_Implicit(val2));
}
else
{
beastPogo = config.Bind<bool>("Beast", "BEAST_POGO_NAME", flag, "BEAST_POGO_DESC");
}
((LocalisedString)(ref val))..ctor("Mods.io.github.danielstegink.crestoptimizer", "BEAST_UP_NAME");
((LocalisedString)(ref val2))..ctor("Mods.io.github.danielstegink.crestoptimizer", "BEAST_UP_DESC");
Vector3 one = Vector3.one;
if (((LocalisedString)(ref val)).Exists && ((LocalisedString)(ref val2)).Exists)
{
biggerUpSlash = config.Bind<Vector3>("Beast", LocalisedString.op_Implicit(val), one, LocalisedString.op_Implicit(val2));
}
else
{
biggerUpSlash = config.Bind<Vector3>("Beast", "BEAST_UP_NAME", one, "BEAST_UP_DESC");
}
((LocalisedString)(ref val))..ctor("Mods.io.github.danielstegink.crestoptimizer", "CURSED_FURY_NAME");
((LocalisedString)(ref val2))..ctor("Mods.io.github.danielstegink.crestoptimizer", "CURSED_FURY_DESC");
num2 = 1f;
if (((LocalisedString)(ref val)).Exists && ((LocalisedString)(ref val2)).Exists)
{
fotfMultiplier = config.Bind<float>("Cursed", LocalisedString.op_Implicit(val), num2, LocalisedString.op_Implicit(val2));
}
else
{
fotfMultiplier = config.Bind<float>("Cursed", "CURSED_FURY_NAME", num2, "CURSED_FURY_DESC");
}
((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", "BIND_SIZE_NAME", num2, "BIND_SIZE_DESC");
}
((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", "LN_BIND_SIZE_NAME", num2, "LN_BIND_SIZE_DESC");
}
((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_CAP_NAME", num, "WITCH_CAP_DESC");
}
((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", "WITCH_REFUND_NAME", flag, "WITCH_REFUND_DESC");
}
((LocalisedString)(ref val))..ctor("Mods.io.github.danielstegink.crestoptimizer", "DOUBLE_MIRROR_NAME");
((LocalisedString)(ref val2))..ctor("Mods.io.github.danielstegink.crestoptimizer", "DOUBLE_MIRROR_DESC");
flag = false;
if (((LocalisedString)(ref val)).Exists && ((LocalisedString)(ref val2)).Exists)
{
doubleMirror = config.Bind<bool>("Witch", LocalisedString.op_Implicit(val), flag, LocalisedString.op_Implicit(val2));
}
else
{
doubleMirror = config.Bind<bool>("Witch", "DOUBLE_MIRROR_NAME", flag, "DOUBLE_MIRROR_DESC");
}
((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", "SHARD_NAME", num, "SHARD_DESC");
}
((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", "CRAFT_MASK_NAME", num, "CRAFT_MASK_DESC");
}
((LocalisedString)(ref val))..ctor("Mods.io.github.danielstegink.crestoptimizer", "CRAFT_DEFAULT_NAME");
((LocalisedString)(ref val2))..ctor("Mods.io.github.danielstegink.crestoptimizer", "CRAFT_DEFAULT_DESC");
flag = false;
if (((LocalisedString)(ref val)).Exists && ((LocalisedString)(ref val2)).Exists)
{
craftBindDefault = config.Bind<bool>("Architect", LocalisedString.op_Implicit(val), flag, LocalisedString.op_Implicit(val2));
}
else
{
craftBindDefault = config.Bind<bool>("Architect", "CRAFT_DEFAULT_NAME", flag, "CRAFT_DEFAULT_DESC");
}
((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", "NO_DROP_NAME", flag, "NO_DROP_DESC");
}
((LocalisedString)(ref val))..ctor("Mods.io.github.danielstegink.crestoptimizer", "SPELL_NEEDLE_NAME");
((LocalisedString)(ref val2))..ctor("Mods.io.github.danielstegink.crestoptimizer", "SPELL_NEEDLE_DESC");
flag = false;
if (((LocalisedString)(ref val)).Exists && ((LocalisedString)(ref val2)).Exists)
{
spellNail = config.Bind<bool>("Shaman", LocalisedString.op_Implicit(val), flag, LocalisedString.op_Implicit(val2));
}
else
{
spellNail = config.Bind<bool>("Shaman", "SPELL_NEEDLE_NAME", flag, "SPELL_NEEDLE_DESC");
}
((LocalisedString)(ref val))..ctor("Mods.io.github.danielstegink.crestoptimizer", "PUNCH_NAME");
((LocalisedString)(ref val2))..ctor("Mods.io.github.danielstegink.crestoptimizer", "PUNCH_DESC");
num2 = 1f;
if (((LocalisedString)(ref val)).Exists && ((LocalisedString)(ref val2)).Exists)
{
punchBonus = config.Bind<float>("Cloakless", LocalisedString.op_Implicit(val), num2, LocalisedString.op_Implicit(val2));
}
else
{
punchBonus = config.Bind<float>("Cloakless", "PUNCH_NAME", num2, "PUNCH_DESC");
}
((LocalisedString)(ref val))..ctor("Mods.io.github.danielstegink.crestoptimizer", "UNARMED_ATTACK_NAME");
((LocalisedString)(ref val2))..ctor("Mods.io.github.danielstegink.crestoptimizer", "UNARMED_ATTACK_DESC");
num2 = 1f;
if (((LocalisedString)(ref val)).Exists && ((LocalisedString)(ref val2)).Exists)
{
punchSpeedBonus = config.Bind<float>("Cloakless", LocalisedString.op_Implicit(val), num2, LocalisedString.op_Implicit(val2));
}
else
{
punchSpeedBonus = config.Bind<float>("Cloakless", "UNARMED_ATTACK_NAME", num2, "UNARMED_ATTACK_DESC");
}
((LocalisedString)(ref val))..ctor("Mods.io.github.danielstegink.crestoptimizer", "UNARMED_MOVE_NAME");
((LocalisedString)(ref val2))..ctor("Mods.io.github.danielstegink.crestoptimizer", "UNARMED_MOVE_DESC");
num2 = 1f;
if (((LocalisedString)(ref val)).Exists && ((LocalisedString)(ref val2)).Exists)
{
speedBonus = config.Bind<float>("Cloakless", LocalisedString.op_Implicit(val), num2, LocalisedString.op_Implicit(val2));
}
else
{
speedBonus = config.Bind<float>("Cloakless", "UNARMED_MOVE_NAME", num2, "UNARMED_MOVE_DESC");
}
((LocalisedString)(ref val))..ctor("Mods.io.github.danielstegink.crestoptimizer", "UNARMED_HEAL_NAME");
((LocalisedString)(ref val2))..ctor("Mods.io.github.danielstegink.crestoptimizer", "UNARMED_HEAL_DESC");
num2 = -1f;
if (((LocalisedString)(ref val)).Exists && ((LocalisedString)(ref val2)).Exists)
{
healTime = config.Bind<float>("Cloakless", LocalisedString.op_Implicit(val), num2, LocalisedString.op_Implicit(val2));
}
else
{
healTime = config.Bind<float>("Cloakless", "UNARMED_HEAL_NAME", num2, "UNARMED_HEAL_DESC");
}
}
}
public static class SharedData
{
public static float witchBindMultiplier = 1f;
}
}
namespace CrestOptimizer.Helpers
{
[HarmonyPatch(typeof(BoolTest), "OnEnter")]
public static class BoolTest_OnEnter
{
private static bool upKeyPressed;
[HarmonyPrefix]
public static void Prefix(BoolTest __instance)
{
if (IsShamanDropCheck(__instance) && ConfigSettings.noDropBind.Value)
{
__instance.boolVariable.Value = false;
}
if (IsCraftBindCheck(__instance))
{
upKeyPressed = __instance.boolVariable.Value;
if (ConfigSettings.craftBindDefault.Value)
{
__instance.boolVariable.Value = !__instance.boolVariable.Value;
}
}
}
[HarmonyPostfix]
public static void Postfix(BoolTest __instance)
{
if (IsShamanDropCheck(__instance))
{
__instance.boolVariable.Value = HeroController.instance.IsShamanCrestEquipped();
}
if (IsCraftBindCheck(__instance))
{
__instance.boolVariable.Value = upKeyPressed;
}
}
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;
}
private static bool IsCraftBindCheck(BoolTest __instance)
{
if (((FsmStateAction)__instance).State.Name.Equals("Quick Craft?"))
{
return ((FsmStateAction)__instance).Fsm.Name.Equals("Bind");
}
return false;
}
}
[HarmonyPatch(typeof(DamageEnemies), "DoDamage", new Type[]
{
typeof(GameObject),
typeof(bool)
})]
public static class DamageEnemies_DoDamage
{
[HarmonyPrefix]
public static void Prefix(DamageEnemies __instance, ref GameObject target, ref bool isFirstHit)
{
//IL_0019: Unknown result type (might be due to invalid IL or missing references)
//IL_0022: Unknown result type (might be due to invalid IL or missing references)
if (HeroController.instance.IsShamanCrestEquipped() && ConfigSettings.spellNail.Value && (int)__instance.attackType == 0)
{
__instance.attackType = (AttackTypes)2;
__instance.representingTool = (ToolItem)(object)new SpellTool();
__instance.isNailAttack = false;
__instance.DamageMultiplier = 1.4f;
}
}
}
[HarmonyPatch(typeof(FsmState), "OnExit")]
public static class FsmState_OnExit
{
[CompilerGenerated]
private sealed class <SpawnFlash>d__3 : IEnumerator<object>, IEnumerator, IDisposable
{
private int <>1__state;
private object <>2__current;
object IEnumerator<object>.Current
{
[DebuggerHidden]
get
{
return <>2__current;
}
}
object IEnumerator.Current
{
[DebuggerHidden]
get
{
return <>2__current;
}
}
[DebuggerHidden]
public <SpawnFlash>d__3(int <>1__state)
{
this.<>1__state = <>1__state;
}
[DebuggerHidden]
void IDisposable.Dispose()
{
<>1__state = -2;
}
private bool MoveNext()
{
//IL_001d: Unknown result type (might be due to invalid IL or missing references)
//IL_0027: Expected O, but got Unknown
//IL_0072: Unknown result type (might be due to invalid IL or missing references)
switch (<>1__state)
{
default:
return false;
case 0:
<>1__state = -1;
<>2__current = (object)new WaitForSeconds(0.5f);
<>1__state = 1;
return true;
case 1:
<>1__state = -1;
if ((Object)(object)HeroController.instance != (Object)null && (Object)(object)((Component)HeroController.instance).gameObject != (Object)null && (Object)(object)mirrorBurst != (Object)null)
{
ObjectPoolExtensions.Spawn(mirrorBurst, HeroController.instance.transform.position);
}
return false;
}
}
bool IEnumerator.MoveNext()
{
//ILSpy generated this explicit interface implementation from .override directive in MoveNext
return this.MoveNext();
}
[DebuggerHidden]
void IEnumerator.Reset()
{
throw new NotSupportedException();
}
}
internal static bool masksHealed;
private static GameObject? mirrorBurst;
[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"))
{
masksHealed = false;
}
if (__instance.Name.Equals("End Bind") && __instance.Fsm.Name.Equals("Bind") && !masksHealed && 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);
}
if (__instance.Name.Equals("Dazzle?") && __instance.Fsm.Name.Equals("Bind") && ((ToolBase)Gameplay.WitchCrest).IsEquipped && ((ToolBase)Gameplay.MultibindTool).IsEquipped && __instance.Fsm.Variables.GetFsmBool("Is Dazzle Equipped").Value && ConfigSettings.doubleMirror.Value)
{
mirrorBurst = __instance.Fsm.Variables.GetFsmGameObject("Dazzle Flash").Value;
((MonoBehaviour)GameManager.instance).StartCoroutine(SpawnFlash());
}
}
[IteratorStateMachine(typeof(<SpawnFlash>d__3))]
private static IEnumerator SpawnFlash()
{
//yield-return decompiler failed: Unexpected instruction in Iterator.Dispose()
return new <SpawnFlash>d__3(0);
}
}
[HarmonyPatch(typeof(HealthManager), "TakeDamage")]
public static class HealthManager_TakeDamage
{
[HarmonyPrefix]
public static void Prefix(HealthManager __instance, ref HitInstance hitInstance)
{
int damageDealt = hitInstance.DamageDealt;
if (((ToolBase)Gameplay.CursedCrest).IsEquipped && PlayerData.instance.health + PlayerData.instance.healthBlue <= 2)
{
int num = (int)((ConfigSettings.fotfMultiplier.Value - 1f) * (float)damageDealt);
hitInstance.DamageDealt += num;
}
if (((ToolBase)Gameplay.CloaklessCrest).IsEquipped)
{
int num2 = (int)((ConfigSettings.punchBonus.Value - 1f) * (float)damageDealt);
hitInstance.DamageDealt += num2;
}
}
[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), "DidAttack")]
public static class HeroController_DidAttack
{
[HarmonyPostfix]
public static void Postfix(HeroController __instance)
{
if (((ToolBase)Gameplay.CloaklessCrest).IsEquipped)
{
__instance.attack_cooldown /= ConfigSettings.punchSpeedBonus.Value;
}
}
}
[HarmonyPatch(typeof(HeroController), "Move")]
public static class HeroController_Move
{
[HarmonyPrefix]
public static void Prefix(HeroController __instance, ref float moveDirection, ref bool useInput)
{
if (((ToolBase)Gameplay.CloaklessCrest).IsEquipped)
{
moveDirection *= ConfigSettings.speedBonus.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
{
internal static Stopwatch cloaklessHealTimer = new Stopwatch();
[HarmonyPostfix]
public static void Postfix(HeroController __instance)
{
//IL_0089: Unknown result type (might be due to invalid IL or missing references)
//IL_0095: Unknown result type (might be due to invalid IL or missing references)
//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();
if (((ToolBase)Gameplay.WarriorCrest).IsEquipped && __instance.crestAttacksFSM.FsmVariables.GetFsmBool("In Crest Attack").Value)
{
Rigidbody2D rb2d = __instance.rb2d;
float value = rb2d.linearVelocity.x;
float value2 = rb2d.linearVelocity.y;
if (ConfigSettings.beastDash.Value)
{
value2 = 0f;
}
if (ConfigSettings.beastPogo.Value)
{
value = 0f;
}
Extensions.SetVelocity(rb2d, (float?)value, (float?)value2);
ClassIntegrations.SetField<HeroController>(__instance, "rb2d", (object)rb2d, BindingFlags.Instance | BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic);
}
if (GameManager.instance.isPaused)
{
cloaklessHealTimer.Stop();
}
else if (((ToolBase)Gameplay.CloaklessCrest).IsEquipped && ConfigSettings.healTime.Value > 0f)
{
cloaklessHealTimer.Start();
if ((float)cloaklessHealTimer.ElapsedMilliseconds >= ConfigSettings.healTime.Value * 1000f)
{
__instance.AddHealth(1);
cloaklessHealTimer.Restart();
}
}
else
{
cloaklessHealTimer.Stop();
}
}
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;
}
}
[HarmonyPatch(typeof(NailAttackBase), "OnSlashStarting")]
public static class NailAttackBase_OnSlashStarting
{
[HarmonyPostfix]
public static void Postfix(NailAttackBase __instance)
{
//IL_0024: Unknown result type (might be due to invalid IL or missing references)
//IL_0029: Unknown result type (might be due to invalid IL or missing references)
//IL_002f: Unknown result type (might be due to invalid IL or missing references)
//IL_0034: Unknown result type (might be due to invalid IL or missing references)
//IL_003b: Unknown result type (might be due to invalid IL or missing references)
//IL_0041: Unknown result type (might be due to invalid IL or missing references)
//IL_0048: Unknown result type (might be due to invalid IL or missing references)
//IL_004e: Unknown result type (might be due to invalid IL or missing references)
//IL_0055: Unknown result type (might be due to invalid IL or missing references)
//IL_005b: Unknown result type (might be due to invalid IL or missing references)
if (((ToolBase)Gameplay.WarriorCrest).IsEquipped && ((Object)__instance).name.Equals("UpSlash"))
{
Vector3 localScale = ((Component)__instance).transform.localScale;
Vector3 value = ConfigSettings.biggerUpSlash.Value;
((Component)__instance).transform.localScale = new Vector3(localScale.x * value.y, localScale.y * value.x, localScale.z);
}
}
}
[HarmonyPatch(typeof(PlayerData), "AddHealth")]
public static class PlayerData_AddHealth
{
[HarmonyPostfix]
public static void Postfix(PlayerData __instance, int amount)
{
FsmState_OnExit.masksHealed = true;
}
}
internal class SpellTool : ToolItem
{
public override UsageOptions Usage
{
get
{
throw new NotImplementedException();
}
}
public override LocalisedString DisplayName
{
get
{
throw new NotImplementedException();
}
}
public override LocalisedString Description
{
get
{
throw new NotImplementedException();
}
}
public override Sprite GetHudSprite(IconVariants iconVariant)
{
throw new NotImplementedException();
}
public override Sprite GetInventorySprite(IconVariants iconVariant)
{
throw new NotImplementedException();
}
internal SpellTool()
{
//IL_0008: Unknown result type (might be due to invalid IL or missing references)
base.type = (ToolItemType)3;
base.zapDamageTicks = 1;
}
}
}
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;
}
}
}
namespace CrestOptimizer.Helpers.Getters_DamageEnemies
{
[HarmonyPatch(typeof(DamageEnemies), "IsNailAttackObject")]
public static class DamageEnemies_IsNailAttackObject
{
[HarmonyPostfix]
public static void Postfix(DamageEnemies __instance, ref GameObject gameObject, ref bool __result)
{
if (HeroController.instance.IsShamanCrestEquipped() && ConfigSettings.spellNail.Value)
{
__result = false;
}
}
}
}