using System; using System.Collections.Generic; using System.Diagnostics; using System.IO; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using System.Runtime.Versioning; using System.Security.Permissions; using BepInEx; using BepInEx.Configuration; using HarmonyLib; using Jotunn.Configs; using Jotunn.Entities; using Jotunn.Managers; using Jotunn.Utils; using TMPro; using UnityEngine; using UnityEngine.UI; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] [assembly: AssemblyTitle("FehuBows")] [assembly: AssemblyDescription("")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("")] [assembly: AssemblyProduct("FehuBows")] [assembly: AssemblyCopyright("Copyright © 2021")] [assembly: AssemblyTrademark("")] [assembly: ComVisible(false)] [assembly: Guid("e3243d22-4307-4008-ba36-9f326008cde5")] [assembly: AssemblyFileVersion("1.0.5")] [assembly: TargetFramework(".NETFramework,Version=v4.8", FrameworkDisplayName = ".NET Framework 4.8")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.0.5.0")] namespace FehuBows; [BepInPlugin("com.jotunn.FehuBows", "FehuBows", "1.0.5")] [BepInDependency(/*Could not decode attribute arguments.*/)] [NetworkCompatibility(/*Could not decode attribute arguments.*/)] internal class FehuBows : BaseUnityPlugin { public static class FehuBowsConfig { public static ConfigEntry EikthyrbowCraftingStation; public static ConfigEntry EikthyrbowRepairStation; public static ConfigEntry EikthyrbowRequirements; public static ConfigEntry ElderbowCraftingStation; public static ConfigEntry ElderbowRepairStation; public static ConfigEntry ElderbowRequirements; public static ConfigEntry BonemassbowCraftingStation; public static ConfigEntry BonemassbowRepairStation; public static ConfigEntry BonemassbowRequirements; public static ConfigEntry ModerbowCraftingStation; public static ConfigEntry ModerbowRepairStation; public static ConfigEntry ModerbowRequirements; public static ConfigEntry YagluthbowCraftingStation; public static ConfigEntry YagluthbowRepairStation; public static ConfigEntry YagluthbowRequirements; public static ConfigEntry QueenbowCraftingStation; public static ConfigEntry QueenbowRepairStation; public static ConfigEntry QueenbowRequirements; public static ConfigEntry FaderbowCraftingStation; public static ConfigEntry FaderbowRepairStation; public static ConfigEntry FaderbowRequirements; public static void Bind(ConfigFile config) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_000f: Expected O, but got Unknown //IL_002f: Unknown result type (might be due to invalid IL or missing references) //IL_0039: Expected O, but got Unknown //IL_005e: Unknown result type (might be due to invalid IL or missing references) //IL_0068: Expected O, but got Unknown //IL_008d: Unknown result type (might be due to invalid IL or missing references) //IL_0097: Expected O, but got Unknown //IL_00bc: Unknown result type (might be due to invalid IL or missing references) //IL_00c6: Expected O, but got Unknown //IL_00eb: Unknown result type (might be due to invalid IL or missing references) //IL_00f5: Expected O, but got Unknown //IL_011a: Unknown result type (might be due to invalid IL or missing references) //IL_0124: Expected O, but got Unknown //IL_0149: Unknown result type (might be due to invalid IL or missing references) //IL_0153: Expected O, but got Unknown //IL_0178: Unknown result type (might be due to invalid IL or missing references) //IL_0182: Expected O, but got Unknown //IL_01a7: Unknown result type (might be due to invalid IL or missing references) //IL_01b1: Expected O, but got Unknown //IL_01d6: Unknown result type (might be due to invalid IL or missing references) //IL_01e0: Expected O, but got Unknown //IL_0205: Unknown result type (might be due to invalid IL or missing references) //IL_020f: Expected O, but got Unknown //IL_0234: Unknown result type (might be due to invalid IL or missing references) //IL_023e: Expected O, but got Unknown //IL_0263: Unknown result type (might be due to invalid IL or missing references) //IL_026d: Expected O, but got Unknown //IL_0292: Unknown result type (might be due to invalid IL or missing references) //IL_029c: Expected O, but got Unknown //IL_02c1: Unknown result type (might be due to invalid IL or missing references) //IL_02cb: Expected O, but got Unknown //IL_02f0: Unknown result type (might be due to invalid IL or missing references) //IL_02fa: Expected O, but got Unknown //IL_031f: Unknown result type (might be due to invalid IL or missing references) //IL_0329: Expected O, but got Unknown //IL_034e: Unknown result type (might be due to invalid IL or missing references) //IL_0358: Expected O, but got Unknown //IL_037d: Unknown result type (might be due to invalid IL or missing references) //IL_0387: Expected O, but got Unknown //IL_03ac: Unknown result type (might be due to invalid IL or missing references) //IL_03b6: Expected O, but got Unknown //IL_03db: Unknown result type (might be due to invalid IL or missing references) //IL_03e5: Expected O, but got Unknown ConfigurationManagerAttributes val = new ConfigurationManagerAttributes { IsAdminOnly = true }; EikthyrbowCraftingStation = config.Bind("Eikthyrbow", "CraftingStation", "piece_workbench", new ConfigDescription("Crafting station for Eikthyr Bow", (AcceptableValueBase)null, new object[1] { val })); EikthyrbowRepairStation = config.Bind("Eikthyrbow", "RepairStation", "piece_workbench", new ConfigDescription("Repair Station for Eikthyr Bow", (AcceptableValueBase)null, new object[1] { val })); EikthyrbowRequirements = config.Bind("Eikthyrbow", "Requirements", "TrophyEikthyr:1:1,HardAntler:5:10,Bronze:10:15,SurtlingCore:2:4", new ConfigDescription("Craft requirement", (AcceptableValueBase)null, new object[1] { val })); ElderbowCraftingStation = config.Bind("Elderbow", "CraftingStation", "piece_workbench", new ConfigDescription("Crafting station for Elder Bow", (AcceptableValueBase)null, new object[1] { val })); ElderbowRepairStation = config.Bind("Elderbow", "RepairStation", "piece_workbench", new ConfigDescription("Repair Station for Elder Bow", (AcceptableValueBase)null, new object[1] { val })); ElderbowRequirements = config.Bind("Elderbow", "Requirements", "TrophyTheElder:1:1,Iron:30:30,ElderBark:20:30,Chain:2:3", new ConfigDescription("Craft requirement", (AcceptableValueBase)null, new object[1] { val })); BonemassbowCraftingStation = config.Bind("Bonemassbow", "CraftingStation", "piece_workbench", new ConfigDescription("Crafting station for Bonemass Bow", (AcceptableValueBase)null, new object[1] { val })); BonemassbowRepairStation = config.Bind("Bonemassbow", "RepairStation", "piece_workbench", new ConfigDescription("Repair Station for Bonemass Bow", (AcceptableValueBase)null, new object[1] { val })); BonemassbowRequirements = config.Bind("Bonemassbow", "Requirements", "TrophyBonemass:1:1,Silver:30:30,Obsidian:20:25,WolfHairBundle:10:15", new ConfigDescription("Craft requirement", (AcceptableValueBase)null, new object[1] { val })); ModerbowCraftingStation = config.Bind("Moderbow", "CraftingStation", "piece_workbench", new ConfigDescription("Crafting station for Moder Bow", (AcceptableValueBase)null, new object[1] { val })); ModerbowRepairStation = config.Bind("Moderbow", "RepairStation", "piece_workbench", new ConfigDescription("Repair Station for Moder Bow", (AcceptableValueBase)null, new object[1] { val })); ModerbowRequirements = config.Bind("Moderbow", "Requirements", "TrophyDragonQueen:1:1,BlackMetal:30:60,DragonEgg:1:1,DragonTear:5:10", new ConfigDescription("Craft requirement", (AcceptableValueBase)null, new object[1] { val })); YagluthbowCraftingStation = config.Bind("Yagluthbow", "CraftingStation", "blackforge", new ConfigDescription("Crafting station for Yagluth Bow", (AcceptableValueBase)null, new object[1] { val })); YagluthbowRepairStation = config.Bind("Yagluthbow", "RepairStation", "blackforge", new ConfigDescription("Repair Station for Yagluth Bow", (AcceptableValueBase)null, new object[1] { val })); YagluthbowRequirements = config.Bind("Yagluthbow", "Requirements", "TrophyGoblinKing:1:1,Eitr:15:30,BlackCore:5:5,YggdrasilWood:10:20", new ConfigDescription("Craft requirement", (AcceptableValueBase)null, new object[1] { val })); QueenbowCraftingStation = config.Bind("Queenbow", "CraftingStation", "blackforge", new ConfigDescription("Crafting station for Queen Bow", (AcceptableValueBase)null, new object[1] { val })); QueenbowRepairStation = config.Bind("Queenbow", "RepairStation", "blackforge", new ConfigDescription("Repair Station for Queen Bow", (AcceptableValueBase)null, new object[1] { val })); QueenbowRequirements = config.Bind("Queenbow", "Requirements", "TrophySeekerQueen:1:1,FlametalNew:60:120,Blackwood:30:100,Carapace:20:50", new ConfigDescription("Craft requirement", (AcceptableValueBase)null, new object[1] { val })); FaderbowCraftingStation = config.Bind("Faderbow", "CraftingStation", "blackforge", new ConfigDescription("Crafting station for Fader Bow", (AcceptableValueBase)null, new object[1] { val })); FaderbowRepairStation = config.Bind("Faderbow", "RepairStation", "blackforge", new ConfigDescription("Repair Station for Fader Bow", (AcceptableValueBase)null, new object[1] { val })); FaderbowRequirements = config.Bind("Faderbow", "Requirements", "TrophyFader:1:1,GemstoneBlue:10:10,GemstoneRed:10:10,GemstoneGreen:10:10", new ConfigDescription("Craft requirement", (AcceptableValueBase)null, new object[1] { val })); } } public static class RecipeHelper { public static List ParseRequirements(string input) { //IL_0069: Unknown result type (might be due to invalid IL or missing references) //IL_0073: Expected O, but got Unknown List list = new List(); string[] array = input.Split(new char[1] { ',' }); foreach (string text in array) { string[] array2 = text.Split(new char[1] { ':' }); if (array2.Length >= 3 && int.TryParse(array2[1], out var result) && int.TryParse(array2[2], out var result2)) { list.Add(new RequirementConfig(array2[0], result, result2, true)); } } return list; } } public class SE_PiercingShot : StatusEffect { private int shotCount = 0; public override void ModifyAttack(SkillType skill, ref HitData hitData) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0003: Invalid comparison between Unknown and I4 if ((int)skill == 8) { shotCount++; if (shotCount >= 5) { shotCount = 0; ((DamageTypes)(ref hitData.m_damage)).Modify(2f); } } } public override void ResetTime() { ((StatusEffect)this).ResetTime(); shotCount = 0; } } public class SE_RootShot : SE_Stats { public override void ModifySpeed(float baseSpeed, ref float speed, Character character, Vector3 dir) { speed = 0f; } public override void ModifyJump(Vector3 baseJump, ref Vector3 jump) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0007: Unknown result type (might be due to invalid IL or missing references) jump = Vector3.zero; } } public class SE_PoisonShot : SE_Stats { public override void ModifySkillLevel(SkillType skill, ref float level) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0003: Invalid comparison between Unknown and I4 if ((int)skill == 8) { level += 3f; } } public override void ModifyAttack(SkillType skill, ref HitData hitData) { hitData.m_damage.m_pierce *= 1.03f; } } public class SE_FireShot : SE_Stats { public override void ModifySkillLevel(SkillType skill, ref float level) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0003: Invalid comparison between Unknown and I4 if ((int)skill == 8) { level += 6f; } } public override void ModifyAttack(SkillType skill, ref HitData hitData) { hitData.m_damage.m_slash *= 1.06f; } } public class SE_LightningShot : SE_Stats { public override void ModifySkillLevel(SkillType skill, ref float level) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0003: Invalid comparison between Unknown and I4 if ((int)skill == 8) { level += 10f; } } public override void ModifyAttack(SkillType skill, ref HitData hitData) { hitData.m_damage.m_pierce *= 1.1f; } } public class SE_RegenShot : StatusEffect { private int shotCounter = 0; public override void ModifyAttack(SkillType skill, ref HitData hitData) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0003: Invalid comparison between Unknown and I4 if ((int)skill != 8) { return; } shotCounter++; if (shotCounter >= 4) { shotCounter = 0; if (Object.op_Implicit((Object)(object)base.m_character) && base.m_character.IsPlayer()) { ((Character)Player.m_localPlayer).AddStamina(10f); } } } } [HarmonyPatch(typeof(CharacterAnimEvent), "CustomFixedUpdate")] private static class DashOnShootSystem { private static readonly Dictionary _data_DashForce = new Dictionary(); public static void RegisterDashWeapon(GameObject weaponPrefab, float dashForce) { if ((Object)(object)weaponPrefab != (Object)null && !_data_DashForce.ContainsKey(((Object)weaponPrefab).name)) { _data_DashForce.Add(((Object)weaponPrefab).name, dashForce); } } private static void Prefix(CharacterAnimEvent __instance) { //IL_00e2: Unknown result type (might be due to invalid IL or missing references) //IL_00e7: Unknown result type (might be due to invalid IL or missing references) //IL_0114: Unknown result type (might be due to invalid IL or missing references) //IL_0118: Unknown result type (might be due to invalid IL or missing references) Player localPlayer = Player.m_localPlayer; if ((Object)(object)localPlayer == (Object)null || (Object)(object)localPlayer != (Object)(object)__instance.m_character || !((Character)localPlayer).InAttack() || !((Character)localPlayer).IsOnGround()) { return; } ItemData currentWeapon = ((Humanoid)localPlayer).GetCurrentWeapon(); if (currentWeapon == null) { return; } GameObject dropPrefab = currentWeapon.m_dropPrefab; if ((Object)(object)dropPrefab == (Object)null || ((Character)localPlayer).m_seman.HaveStatusEffect(StringExtensionMethods.GetStableHashCode("SE_HeavyShot")) || !EnableDash.Value || !_data_DashForce.TryGetValue(((Object)dropPrefab).name, out var value)) { return; } Rigidbody component = ((Component)localPlayer).GetComponent(); if ((Object)(object)component != (Object)null) { Vector3 linearVelocity = component.linearVelocity; linearVelocity.y = 0f; if (((Vector3)(ref linearVelocity)).sqrMagnitude > 0.1f) { ((Vector3)(ref linearVelocity)).Normalize(); component.AddForce(linearVelocity * value, (ForceMode)2); } } } } [HarmonyPatch(typeof(CharacterAnimEvent), "CustomFixedUpdate")] private static class AttackSpeedSystem { private static readonly Dictionary _data_Main = new Dictionary(); private static readonly Dictionary _data_Secondary = new Dictionary(); public static void RegisterMainAttacks(GameObject item, float speed) { _data_Main[((Object)item).name] = speed; } public static void RegisterSecondaryAttacks(GameObject item, float speed) { _data_Secondary[((Object)item).name] = speed; } private static void Prefix(CharacterAnimEvent __instance) { Player localPlayer = Player.m_localPlayer; if (!((Object)(object)localPlayer != (Object)(object)__instance.m_character) && ((Character)localPlayer).InAttack()) { GameObject val = ((Humanoid)localPlayer).GetCurrentWeapon()?.m_dropPrefab; float value = 0f; if (Object.op_Implicit((Object)(object)val) && _data_Main.TryGetValue(((Object)val).name, out value) && !((Humanoid)localPlayer).m_currentAttackIsSecondary) { __instance.m_animator.speed = value; } else if (Object.op_Implicit((Object)(object)val) && _data_Secondary.TryGetValue(((Object)val).name, out value) && ((Humanoid)localPlayer).m_currentAttackIsSecondary) { __instance.m_animator.speed = value; } } } } public enum BowFireMode { Normal, Fast, Heavy, Turret } public static class BowFireModeManager { public static BowFireMode CurrentMode; public static void CycleMode(Player player) { if (PlayerUtils.HasBowEquipped(player)) { CurrentMode = (BowFireMode)((int)(CurrentMode + 1) % 4); } } public static void ResetMode(Player player) { CurrentMode = BowFireMode.Normal; if (((Character)(player?)).m_seman != null) { ((Character)player).m_seman.RemoveStatusEffect(StringExtensionMethods.GetStableHashCode(((Object)StatusEffectManager.FastShot).name), false); ((Character)player).m_seman.RemoveStatusEffect(StringExtensionMethods.GetStableHashCode(((Object)StatusEffectManager.TurretShot).name), false); ((Character)player).m_seman.RemoveStatusEffect(StringExtensionMethods.GetStableHashCode(((Object)StatusEffectManager.HeavyShot).name), false); } } } public static class PlayerUtils { public static bool HasBowEquipped(Player player) { //IL_003b: Unknown result type (might be due to invalid IL or missing references) //IL_0041: Invalid comparison between Unknown and I4 if ((Object)(object)player == (Object)null) { return false; } List equippedItems = ((Humanoid)player).GetInventory().GetEquippedItems(); foreach (ItemData item in equippedItems) { if (item != null && (int)item.m_shared.m_itemType == 4) { return true; } } return false; } } [HarmonyPatch(typeof(Player), "Update")] public static class BowModeInputPatch { private static FieldInfo m_inputFieldInfo = typeof(Chat).GetField("m_input", BindingFlags.Instance | BindingFlags.NonPublic); private static bool IsChatFocused() { Chat instance = Chat.instance; if ((Object)(object)instance == (Object)null || m_inputFieldInfo == null) { return false; } object value = m_inputFieldInfo.GetValue(instance); InputField val = (InputField)((value is InputField) ? value : null); if (val != null) { return val.isFocused; } TMP_InputField val2 = (TMP_InputField)((value is TMP_InputField) ? value : null); if (val2 != null) { return val2.isFocused; } return false; } public static void Postfix(Player __instance) { //IL_0039: Unknown result type (might be due to invalid IL or missing references) if ((Object)(object)__instance != (Object)(object)Player.m_localPlayer || IsChatFocused()) { return; } if (!PlayerUtils.HasBowEquipped(__instance)) { BowFireModeManager.ResetMode(__instance); return; } if (IsKeyDown(BowModeKey.Value)) { BowFireModeManager.CycleMode(__instance); string text = BowFireModeManager.CurrentMode.ToString(); ((Character)__instance).Message((MessageType)2, "Bow Mode : " + text, 0, (Sprite)null); } ApplyBowFireModeEffect(__instance); } private static void ApplyBowFireModeEffect(Player player) { SEMan seman = ((Character)player).m_seman; seman.RemoveStatusEffect(StringExtensionMethods.GetStableHashCode(((Object)StatusEffectManager.FastShot).name), false); seman.RemoveStatusEffect(StringExtensionMethods.GetStableHashCode(((Object)StatusEffectManager.TurretShot).name), false); seman.RemoveStatusEffect(StringExtensionMethods.GetStableHashCode(((Object)StatusEffectManager.HeavyShot).name), false); switch (BowFireModeManager.CurrentMode) { case BowFireMode.Fast: seman.AddStatusEffect((StatusEffect)(object)StatusEffectManager.FastShot, false, 0, 0f); break; case BowFireMode.Heavy: seman.AddStatusEffect((StatusEffect)(object)StatusEffectManager.HeavyShot, false, 0, 0f); break; case BowFireMode.Turret: seman.AddStatusEffect((StatusEffect)(object)StatusEffectManager.TurretShot, false, 0, 0f); break; } } } public class SE_FastShot : StatusEffect { public SE_FastShot() { base.m_name = "SE_FastShot"; } public override void ModifySpeed(float baseSpeed, ref float speed, Character character, Vector3 dir) { if (character is Player) { speed = baseSpeed * 1.2f; } } public override void ModifyAttack(SkillType skill, ref HitData hitData) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0003: Invalid comparison between Unknown and I4 if ((int)skill == 8) { ((DamageTypes)(ref hitData.m_damage)).Modify(0.8f); } } } public class SE_TurretShot : StatusEffect { public SE_TurretShot() { base.m_name = "SE_TurretShot"; base.m_ttl = 0f; } public override void ModifySpeed(float baseSpeed, ref float speed, Character character, Vector3 dir) { speed = 0f; } public override void ModifyJump(Vector3 baseJump, ref Vector3 jump) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0007: Unknown result type (might be due to invalid IL or missing references) jump = Vector3.zero; } public override void UpdateStatusEffect(float dt) { ((StatusEffect)this).UpdateStatusEffect(dt); Character character = base.m_character; Player val = (Player)(object)((character is Player) ? character : null); if (val != null && (Object)(object)val == (Object)(object)Player.m_localPlayer) { ((Character)val).m_run = false; val.m_autoRun = false; } } public override void ModifyAttack(SkillType skill, ref HitData hitData) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0003: Invalid comparison between Unknown and I4 if ((int)skill == 8) { ((DamageTypes)(ref hitData.m_damage)).Modify(1.5f); } } } public class SE_HeavyShot : StatusEffect { public SE_HeavyShot() { base.m_name = "SE_HeavyShot"; } public override void ModifySpeed(float baseSpeed, ref float speed, Character character, Vector3 dir) { speed = baseSpeed * 0.8f; } public override void ModifyAttack(SkillType skill, ref HitData hitData) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0003: Invalid comparison between Unknown and I4 if ((int)skill == 8) { ((DamageTypes)(ref hitData.m_damage)).Modify(1.35f); } } } public static class StatusEffectManager { public static SE_FastShot FastShot; public static SE_HeavyShot HeavyShot; public static SE_TurretShot TurretShot; static StatusEffectManager() { FastShot = ScriptableObject.CreateInstance(); HeavyShot = ScriptableObject.CreateInstance(); TurretShot = ScriptableObject.CreateInstance(); ((Object)FastShot).name = "SE_FastShot"; ((Object)HeavyShot).name = "SE_HeavyShot"; ((Object)TurretShot).name = "SE_TurretShot"; } } public const string PluginGUID = "com.jotunn.FehuBows"; public const string PluginName = "FehuBows"; public const string PluginVersion = "1.0.5"; public static AssetBundle BossNBowBundle; public static CustomStatusEffect PiercingShotStatusEffect; public static CustomStatusEffect RootShotStatusEffect; public static CustomStatusEffect PoisonShotStatusEffect; public static CustomStatusEffect FireShotStatusEffect; public static CustomStatusEffect RegenShotStatusEffect; public static CustomStatusEffect LightningShotStatusEffect; public static ConfigEntry EnableDash; public static ConfigEntry BowModeKey; private void Awake() { FehuBowsConfig.Bind(((BaseUnityPlugin)this).Config); CreateConfig(); LoadAssets(); AddStatusEffects(); AddBows(); AddFortecaCoins(); Harmony.CreateAndPatchAll(Assembly.GetExecutingAssembly(), "com.jotunn.FehuBows"); } private void CreateConfig() { //IL_001d: Unknown result type (might be due to invalid IL or missing references) //IL_0027: Expected O, but got Unknown //IL_0043: Unknown result type (might be due to invalid IL or missing references) //IL_0056: 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) //IL_0064: Expected O, but got Unknown //IL_0064: Unknown result type (might be due to invalid IL or missing references) //IL_006e: Expected O, but got Unknown EnableDash = ((BaseUnityPlugin)this).Config.Bind("Dash Mode", "EnableDash", true, new ConfigDescription("Enable dash ability (local client setting)", (AcceptableValueBase)null, Array.Empty())); BowModeKey = ((BaseUnityPlugin)this).Config.Bind("Bow Mode Shortcut", "Bow Mode Shortcut", new KeyboardShortcut((KeyCode)103, Array.Empty()), new ConfigDescription("Shortcut for bow mode", (AcceptableValueBase)null, new object[1] { (object)new ConfigurationManagerAttributes { IsAdminOnly = false } })); } private void LoadAssets() { BossNBowBundle = AssetUtils.LoadAssetBundleFromResources("bossnbows"); } private void AddBows() { //IL_0074: Unknown result type (might be due to invalid IL or missing references) //IL_007b: Expected O, but got Unknown //IL_00bf: Unknown result type (might be due to invalid IL or missing references) //IL_00c6: Expected O, but got Unknown //IL_010b: Unknown result type (might be due to invalid IL or missing references) //IL_0112: Expected O, but got Unknown //IL_0156: Unknown result type (might be due to invalid IL or missing references) //IL_015d: Expected O, but got Unknown //IL_01bd: Unknown result type (might be due to invalid IL or missing references) //IL_01c4: Expected O, but got Unknown //IL_0208: Unknown result type (might be due to invalid IL or missing references) //IL_020f: Expected O, but got Unknown //IL_0254: Unknown result type (might be due to invalid IL or missing references) //IL_025b: Expected O, but got Unknown //IL_029f: Unknown result type (might be due to invalid IL or missing references) //IL_02a6: Expected O, but got Unknown //IL_02eb: Unknown result type (might be due to invalid IL or missing references) //IL_02f2: Expected O, but got Unknown //IL_0337: Unknown result type (might be due to invalid IL or missing references) //IL_033e: Expected O, but got Unknown //IL_0385: Unknown result type (might be due to invalid IL or missing references) //IL_038c: Expected O, but got Unknown //IL_03d1: Unknown result type (might be due to invalid IL or missing references) //IL_03d8: Expected O, but got Unknown //IL_041f: Unknown result type (might be due to invalid IL or missing references) //IL_0426: Expected O, but got Unknown //IL_046b: Unknown result type (might be due to invalid IL or missing references) //IL_0472: Expected O, but got Unknown GameObject val = BossNBowBundle.LoadAsset("assets/bossnbows/eikthyrbow.prefab"); GameObject val2 = BossNBowBundle.LoadAsset("assets/bossnbows/elderbow.prefab"); GameObject val3 = BossNBowBundle.LoadAsset("assets/bossnbows/bonemassbow.prefab"); GameObject val4 = BossNBowBundle.LoadAsset("assets/bossnbows/moderbow.prefab"); GameObject val5 = BossNBowBundle.LoadAsset("assets/bossnbows/yagluthbow.prefab"); GameObject val6 = BossNBowBundle.LoadAsset("assets/bossnbows/queenbow.prefab"); GameObject val7 = BossNBowBundle.LoadAsset("assets/bossnbows/faderbow.prefab"); ItemConfig val8 = new ItemConfig(); val8.Requirements = RecipeHelper.ParseRequirements(FehuBowsConfig.EikthyrbowRequirements.Value).ToArray(); val8.CraftingStation = FehuBowsConfig.EikthyrbowCraftingStation.Value; val8.RepairStation = FehuBowsConfig.EikthyrbowRepairStation.Value; CustomItem val9 = new CustomItem(val, true, val8); AttackSpeedSystem.RegisterMainAttacks(val, 2.2f); DashOnShootSystem.RegisterDashWeapon(val, 7f); ItemManager.Instance.AddItem(val9); val9.ItemDrop.m_itemData.m_shared.m_equipStatusEffect = PiercingShotStatusEffect.StatusEffect; ItemConfig val10 = new ItemConfig(); val10.Requirements = RecipeHelper.ParseRequirements(FehuBowsConfig.ElderbowRequirements.Value).ToArray(); val10.CraftingStation = FehuBowsConfig.ElderbowCraftingStation.Value; val10.RepairStation = FehuBowsConfig.ElderbowRepairStation.Value; CustomItem val11 = new CustomItem(val2, true, val10); AttackSpeedSystem.RegisterMainAttacks(val2, 2.2f); DashOnShootSystem.RegisterDashWeapon(val2, 7f); ItemManager.Instance.AddItem(val11); val11.ItemDrop.m_itemData.m_shared.m_attackStatusEffect = RootShotStatusEffect.StatusEffect; val11.ItemDrop.m_itemData.m_shared.m_attackStatusEffectChance = 0.15f; ItemConfig val12 = new ItemConfig(); val12.Requirements = RecipeHelper.ParseRequirements(FehuBowsConfig.BonemassbowRequirements.Value).ToArray(); val12.CraftingStation = FehuBowsConfig.BonemassbowCraftingStation.Value; val12.RepairStation = FehuBowsConfig.BonemassbowRepairStation.Value; CustomItem val13 = new CustomItem(val3, true, val12); AttackSpeedSystem.RegisterMainAttacks(val3, 2.2f); DashOnShootSystem.RegisterDashWeapon(val3, 7f); ItemManager.Instance.AddItem(val13); val13.ItemDrop.m_itemData.m_shared.m_equipStatusEffect = PoisonShotStatusEffect.StatusEffect; ItemConfig val14 = new ItemConfig(); val14.Requirements = RecipeHelper.ParseRequirements(FehuBowsConfig.ModerbowRequirements.Value).ToArray(); val14.CraftingStation = FehuBowsConfig.ModerbowCraftingStation.Value; val14.RepairStation = FehuBowsConfig.ModerbowRepairStation.Value; CustomItem val15 = new CustomItem(val4, true, val14); AttackSpeedSystem.RegisterMainAttacks(val4, 2.2f); DashOnShootSystem.RegisterDashWeapon(val4, 7f); ItemManager.Instance.AddItem(val15); val15.ItemDrop.m_itemData.m_shared.m_equipStatusEffect = PiercingShotStatusEffect.StatusEffect; ItemConfig val16 = new ItemConfig(); val16.Requirements = RecipeHelper.ParseRequirements(FehuBowsConfig.YagluthbowRequirements.Value).ToArray(); val16.CraftingStation = FehuBowsConfig.YagluthbowCraftingStation.Value; val16.RepairStation = FehuBowsConfig.YagluthbowRepairStation.Value; CustomItem val17 = new CustomItem(val5, true, val16); AttackSpeedSystem.RegisterMainAttacks(val5, 2.2f); DashOnShootSystem.RegisterDashWeapon(val5, 7f); ItemManager.Instance.AddItem(val17); val17.ItemDrop.m_itemData.m_shared.m_equipStatusEffect = FireShotStatusEffect.StatusEffect; ItemConfig val18 = new ItemConfig(); val18.Requirements = RecipeHelper.ParseRequirements(FehuBowsConfig.QueenbowRequirements.Value).ToArray(); val18.CraftingStation = FehuBowsConfig.QueenbowCraftingStation.Value; val18.RepairStation = FehuBowsConfig.QueenbowRepairStation.Value; CustomItem val19 = new CustomItem(val6, true, val18); AttackSpeedSystem.RegisterMainAttacks(val6, 2.2f); DashOnShootSystem.RegisterDashWeapon(val6, 7f); ItemManager.Instance.AddItem(val19); val19.ItemDrop.m_itemData.m_shared.m_equipStatusEffect = RegenShotStatusEffect.StatusEffect; ItemConfig val20 = new ItemConfig(); val20.Requirements = RecipeHelper.ParseRequirements(FehuBowsConfig.FaderbowRequirements.Value).ToArray(); val20.CraftingStation = FehuBowsConfig.FaderbowCraftingStation.Value; val20.RepairStation = FehuBowsConfig.FaderbowRepairStation.Value; CustomItem val21 = new CustomItem(val7, true, val20); AttackSpeedSystem.RegisterMainAttacks(val7, 2.2f); DashOnShootSystem.RegisterDashWeapon(val7, 7f); ItemManager.Instance.AddItem(val21); val21.ItemDrop.m_itemData.m_shared.m_equipStatusEffect = LightningShotStatusEffect.StatusEffect; } private void AddFortecaCoins() { //IL_0044: Unknown result type (might be due to invalid IL or missing references) //IL_004b: Expected O, but got Unknown //IL_005a: Unknown result type (might be due to invalid IL or missing references) //IL_0061: Expected O, but got Unknown //IL_0070: Unknown result type (might be due to invalid IL or missing references) //IL_0077: Expected O, but got Unknown string directoryName = Path.GetDirectoryName(((BaseUnityPlugin)this).Info.Location); GameObject val = BossNBowBundle.LoadAsset("assets/custombb/fehumark.prefab"); GameObject val2 = BossNBowBundle.LoadAsset("assets/custombb/fortecasigil.prefab"); GameObject val3 = BossNBowBundle.LoadAsset("assets/custombb/runeglyph.prefab"); CustomItem val4 = new CustomItem(val, true); ItemManager.Instance.AddItem(val4); CustomItem val5 = new CustomItem(val2, true); ItemManager.Instance.AddItem(val5); CustomItem val6 = new CustomItem(val3, true); ItemManager.Instance.AddItem(val6); } private void AddStatusEffects() { //IL_002b: Unknown result type (might be due to invalid IL or missing references) //IL_0035: Expected O, but got Unknown //IL_007a: Unknown result type (might be due to invalid IL or missing references) //IL_0084: Expected O, but got Unknown //IL_00be: Unknown result type (might be due to invalid IL or missing references) //IL_00c8: Expected O, but got Unknown //IL_0102: Unknown result type (might be due to invalid IL or missing references) //IL_010c: Expected O, but got Unknown //IL_014b: Unknown result type (might be due to invalid IL or missing references) //IL_0155: Expected O, but got Unknown //IL_0194: Unknown result type (might be due to invalid IL or missing references) //IL_019e: Expected O, but got Unknown StatusEffect val = (StatusEffect)(object)ScriptableObject.CreateInstance(); ((Object)val).name = "PiercingShot"; val.m_name = "$se_piercingshot"; val.m_tooltip = "$se_piercingshot_tooltip"; PiercingShotStatusEffect = new CustomStatusEffect(val, false); ItemManager.Instance.AddStatusEffect(PiercingShotStatusEffect); StatusEffect val2 = (StatusEffect)(object)ScriptableObject.CreateInstance(); ((Object)val2).name = "RootShot"; val2.m_name = "$se_rootshot"; val2.m_tooltip = "$se_rootshot_tooltip"; val2.m_ttl = 2f; RootShotStatusEffect = new CustomStatusEffect(val2, false); ItemManager.Instance.AddStatusEffect(RootShotStatusEffect); StatusEffect val3 = (StatusEffect)(object)ScriptableObject.CreateInstance(); ((Object)val3).name = "PoisonShot"; val3.m_name = "$se_poisonshot"; val3.m_tooltip = "$se_poisonshot_tooltip"; PoisonShotStatusEffect = new CustomStatusEffect(val3, false); ItemManager.Instance.AddStatusEffect(PoisonShotStatusEffect); StatusEffect val4 = (StatusEffect)(object)ScriptableObject.CreateInstance(); ((Object)val4).name = "FireShot"; val4.m_name = "$se_fireshot"; val4.m_tooltip = "$se_fireshot_tooltip"; FireShotStatusEffect = new CustomStatusEffect(val4, false); ItemManager.Instance.AddStatusEffect(FireShotStatusEffect); StatusEffect val5 = (StatusEffect)(object)ScriptableObject.CreateInstance(); ((Object)val5).name = "RegenShot"; val5.m_name = "$se_regenshot"; val5.m_tooltip = "$se_regenshot_tooltip"; RegenShotStatusEffect = new CustomStatusEffect(val5, false); ItemManager.Instance.AddStatusEffect(RegenShotStatusEffect); StatusEffect val6 = (StatusEffect)(object)ScriptableObject.CreateInstance(); ((Object)val6).name = "LightningShot"; val6.m_name = "$se_lightningshot"; val6.m_tooltip = "$se_lightningshot_tooltip"; LightningShotStatusEffect = new CustomStatusEffect(val6, false); ItemManager.Instance.AddStatusEffect(LightningShotStatusEffect); } private static bool IsKeyDown(KeyboardShortcut shortcut) { //IL_0019: Unknown result type (might be due to invalid IL or missing references) //IL_003f: Unknown result type (might be due to invalid IL or missing references) //IL_0044: Unknown result type (might be due to invalid IL or missing references) //IL_0047: Unknown result type (might be due to invalid IL or missing references) if (((object)(KeyboardShortcut)(ref shortcut)).Equals((object?)null)) { return false; } if (!Input.GetKeyDown(((KeyboardShortcut)(ref shortcut)).MainKey)) { return false; } foreach (KeyCode modifier in ((KeyboardShortcut)(ref shortcut)).Modifiers) { if (!Input.GetKey(modifier)) { return false; } } return true; } }