Please disclose if your mod was created primarily using AI tools by adding the 'AI Generated' category. Failing to do so may result in the mod being removed from Thunderstore.
Decompiled source of Shawesomes Dark Gift v2.0.3
Shawesomes_Dark_Gift.dll
Decompiled a month ago
The result has been truncated due to the large size, download it to view full contents!
using System; using System.Collections; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using System.Runtime.Versioning; using System.Security; using System.Security.Permissions; using BepInEx; using BepInEx.Configuration; using BepInEx.Logging; using HarmonyLib; using Jotunn.Configs; using Jotunn.Entities; using Jotunn.Managers; using Jotunn.Utils; using Microsoft.CodeAnalysis; using Shawesomes_Dark_Gift.Core; using Shawesomes_Dark_Gift.Patches; using Shawesomes_Dark_Gift.Registration; using Shawesomes_Dark_Gift.Shader; 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("Shawesomes_Infinte_Multiverse")] [assembly: AssemblyDescription("")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("")] [assembly: AssemblyProduct("Shawesomes_Infinte_Multiverse")] [assembly: AssemblyCopyright("Copyright © 2023")] [assembly: AssemblyTrademark("")] [assembly: ComVisible(false)] [assembly: Guid("e0e26f8d-a8f0-41a7-a502-951624fa6f31")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: TargetFramework(".NETFramework,Version=v4.8", FrameworkDisplayName = ".NET Framework 4.8")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.0.0.0")] [module: UnverifiableCode] namespace Microsoft.CodeAnalysis { [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] internal sealed class EmbeddedAttribute : Attribute { } } namespace System.Runtime.CompilerServices { [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] [AttributeUsage(AttributeTargets.Class | AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Event | AttributeTargets.Parameter | AttributeTargets.ReturnValue | AttributeTargets.GenericParameter, AllowMultiple = false, Inherited = false)] internal sealed class NullableAttribute : Attribute { public readonly byte[] NullableFlags; public NullableAttribute(byte P_0) { NullableFlags = new byte[1] { P_0 }; } public NullableAttribute(byte[] P_0) { NullableFlags = P_0; } } [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] [AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Method | AttributeTargets.Interface | AttributeTargets.Delegate, AllowMultiple = false, Inherited = false)] internal sealed class NullableContextAttribute : Attribute { public readonly byte Flag; public NullableContextAttribute(byte P_0) { Flag = P_0; } } } namespace Shawesomes_Dark_Gift { [BepInPlugin("Shawesome.Shawesomes_Dark_Gift", "Shawesomes_Dark_Gift", "2.0.3")] [BepInDependency(/*Could not decode attribute arguments.*/)] public class Shawesomes_Dark_Gift : BaseUnityPlugin { public static GameObject Root = null; public static ManualLogSource logger = null; public static ManualLogSource harmonyLog = null; private static AssetBundle Shawcassets = null; public static List<GameObject> EffectList = new List<GameObject>(); public string version = "1.0.0"; public Harmony harmony = null; public static AssetBundle GetAssetBundle() { return Shawcassets; } public void Awake() { //IL_0018: Unknown result type (might be due to invalid IL or missing references) //IL_0022: Expected O, but got Unknown //IL_0187: Unknown result type (might be due to invalid IL or missing references) //IL_0191: Expected O, but got Unknown logger = ((BaseUnityPlugin)this).Logger; VanillaShaders.InitLogFilter(); harmony = new Harmony("IDshawesome4u5"); harmony.PatchAll(typeof(VampireConsumptionPatch)); harmony.PatchAll(typeof(VampireRespawnPatch)); harmony.PatchAll(typeof(ObjectDBAwakePatch)); harmony.PatchAll(typeof(SimpleMountController.MountControlsPatch)); harmony.PatchAll(typeof(SimpleMountController.FlightControlPatch)); harmony.PatchAll(typeof(SimpleMountController.EnableFlightOnMount)); harmony.PatchAll(typeof(SimpleMountController.DisableFlightOnDismount)); harmony.PatchAll(typeof(SimpleMountController.InputUpdatePatch)); harmony.PatchAll(typeof(SimpleMountController.DisableGravityWhileFlying)); harmony.PatchAll(typeof(SimpleMountController.FlyingPhysicsPatch)); harmony.PatchAll(typeof(DragonEggImprinting)); harmony.PatchAll(typeof(SaddleActivationPatch)); harmony.PatchAll(typeof(SaddleArmorSystem)); harmony.PatchAll(typeof(HomingProjectilePatch)); harmony.PatchAll(typeof(VampireEquipmentRestrictionPatch)); harmony.PatchAll(typeof(VampireEquipmentUseRestrictionPatch)); Root = new GameObject("Shaw Root"); harmonyLog = ((BaseUnityPlugin)this).Logger; harmonyLog.LogWarning((object)"The Bird of Hermes is my name, eating my wings to make me tame..."); Shawcassets = AssetUtils.LoadAssetBundleFromResources("shaw_v", Assembly.GetExecutingAssembly()); LoadAssets(); VampireConfig.Initialize(((BaseUnityPlugin)this).Config); Root.AddComponent<VampireSystem>(); Root.AddComponent<VampireGift>(); Root.AddComponent<ClockUI>(); Root.AddComponent<BloodHungerHUD>(); Root.AddComponent<ElixirConsumption>(); Root.AddComponent<BatCommandSystem>(); Root.AddComponent<BatSummonSystem>(); Root.AddComponent<SaddleArmorHUD>(); PrefabManager.OnVanillaPrefabsAvailable += additems; ZoneManager.OnVanillaLocationsAvailable += AddLocations; PrefabManager.OnPrefabsRegistered += delegate { AddEffectsToZNet(); AddBloodDropsToCreatures(); }; } public static void LoadAssets() { EffectList.Add(Shawcassets.LoadAsset<GameObject>("Assets/ShawesomeVampire/Bat1.prefab")); EffectList.Add(Shawcassets.LoadAsset<GameObject>("Assets/ShawesomeVampire/Batdraculaspawn.prefab")); EffectList.Add(Shawcassets.LoadAsset<GameObject>("Assets/ShawesomeVampire/drac_taunt.prefab")); EffectList.Add(Shawcassets.LoadAsset<GameObject>("Assets/ShawesomeVampire/sfx_fenring_howl1.prefab")); EffectList.Add(Shawcassets.LoadAsset<GameObject>("Assets/ShawesomeVampHunter/sfx_whip_hit.prefab")); EffectList.Add(Shawcassets.LoadAsset<GameObject>("Assets/ShawesomeVampHunter/sfx_whip_start.prefab")); EffectList.Add(Shawcassets.LoadAsset<GameObject>("Assets/ShawesomeVampire/sfx_Puke_maleV.prefab")); EffectList.Add(Shawcassets.LoadAsset<GameObject>("Assets/ShawesomeVampire/caverock_ice_wall_destruction1.prefab")); EffectList.Add(Shawcassets.LoadAsset<GameObject>("Assets/ShawesomeVampire/caverock_ice_stalagmite_destruction1.prefab")); EffectList.Add(Shawcassets.LoadAsset<GameObject>("Assets/ShawesomeVampire/fx_PukeV.prefab")); EffectList.Add(Shawcassets.LoadAsset<GameObject>("Assets/ShawesomeVampire/_VampireDragon/Assets/Fireball/Prefabs/vampdragon_fireball_projectile.prefab")); EffectList.Add(Shawcassets.LoadAsset<GameObject>("Assets/ShawesomeVampire/_VampireDragon/Assets/Fireball/Prefabs/vampdragon_spitball_projectile1.prefab")); EffectList.Add(Shawcassets.LoadAsset<GameObject>("Assets/ShawesomeVampire/_VampireDragon/Assets/Fireball/Prefabs/fx_fireball_staff_explosiondragon.prefab")); EffectList.Add(Shawcassets.LoadAsset<GameObject>("Assets/ShawesomeVampire/sfx_dragonball_explosion.prefab")); EffectList.Add(Shawcassets.LoadAsset<GameObject>("Assets/ShawesomeVampire/vfx_Bloodshwsm.prefab")); EffectList.Add(Shawcassets.LoadAsset<GameObject>("Assets/ShawesomeVampire/_VampireDragon/Assets/Firebreath/Prefabs/fx_vdrag_flames.prefab")); EffectList.Add(Shawcassets.LoadAsset<GameObject>("Assets/ShawesomeVampire/_VampireDragon/Resources/FX/sfx_sdg_vampiredragon_groundslam.prefab")); EffectList.Add(Shawcassets.LoadAsset<GameObject>("Assets/ShawesomeVampire/_VampireDragon/Resources/FX/fx_sdg_vampiredragon_groundslam.prefab")); EffectList.Add(Shawcassets.LoadAsset<GameObject>("Assets/ShawesomeVampire/_VampireDragon/Resources/FX/vdragpoff_ring.prefab")); EffectList.Add(Shawcassets.LoadAsset<GameObject>("Assets/PrefabInstance/vdrac_attack_claw.prefab")); EffectList.Add(Shawcassets.LoadAsset<GameObject>("Assets/PrefabInstance/Vdrac_attack_kick.prefab")); EffectList.Add(Shawcassets.LoadAsset<GameObject>("Assets/ShawesomeVampire/shwsm_Dragulia_Ragdoll.prefab")); EffectList.Add(Shawcassets.LoadAsset<GameObject>("Assets/ShawesomeVampire/sfx_vampdrag_fireball_launch.prefab")); EffectList.Add(Shawcassets.LoadAsset<GameObject>("Assets/ShawesomeVampire/sdg_vampiredragon_ragdoll.prefab")); EffectList.Add(Shawcassets.LoadAsset<GameObject>("Assets/ShawesomeVampire/sfx_vampdragon_scream.prefab")); EffectList.Add(Shawcassets.LoadAsset<GameObject>("Assets/ShawesomeVampire/windparent.prefab")); EffectList.Add(Shawcassets.LoadAsset<GameObject>("Assets/Shawesome/fx_vdragonlightning_red.prefab")); EffectList.Add(Shawcassets.LoadAsset<GameObject>("Assets/ShawesomeVampire/_VampireDragon/Assets/Firebreath/Prefabs/fx_vdrag_flamesstart.prefab")); VampireGift.VampireSkinMaterial_Tier1 = Shawcassets.LoadAsset<Material>("vI_mat"); VampireGift.VampireSkinMaterial_Tier2 = Shawcassets.LoadAsset<Material>("vII_mat"); VampireGift.VampireSkinMaterial_Tier3 = Shawcassets.LoadAsset<Material>("vIII_mat"); VampireGift.VampireSkinMaterial_Tier4 = Shawcassets.LoadAsset<Material>("vIV_mat"); } public static void AddEffectsToZNet() { foreach (GameObject effect in EffectList) { if ((Object)(object)effect == (Object)null) { ManualLogSource obj = logger; if (obj != null) { obj.LogWarning((object)"Skipping null effect in EffectList"); } } else { int stableHashCode = StringExtensionMethods.GetStableHashCode(((Object)effect).name); if ((Object)(object)ZNetScene.instance != (Object)null && !ZNetScene.instance.m_namedPrefabs.ContainsKey(stableHashCode)) { PrefabManager.Instance.RegisterToZNetScene(effect); } } } } public static void AddLocations() { AddDraculaAltar(); ZoneManager.OnVanillaLocationsAvailable -= AddLocations; } private static void AddDraculaAltar() { //IL_0018: Unknown result type (might be due to invalid IL or missing references) //IL_001e: Expected O, but got Unknown //IL_00df: Unknown result type (might be due to invalid IL or missing references) //IL_00e5: Expected O, but got Unknown GameObject val = Shawcassets.LoadAsset<GameObject>("Assets/ShawesomeVampire/Shwsmdracaltar.prefab"); RegisterLocationClutter(val); LocationConfig val2 = new LocationConfig(); val2.Biome = (Biome)64; val2.Quantity = 10; val2.Priotized = true; val2.ExteriorRadius = 25f; val2.ClearArea = true; val2.MinAltitude = 10f; val2.MaxAltitude = 100f; val2.MinTerrainDelta = 0f; val2.MaxTerrainDelta = 2f; val2.InForest = false; val2.ForestTresholdMin = 0f; val2.ForestTrasholdMax = 2.19f; val2.MinDistance = 500f; val2.MaxDistance = 50000f; val2.MinDistanceFromSimilar = 1350f; val2.Unique = false; val2.Group = "DraculaAltar"; val2.BiomeArea = (BiomeArea)3; CustomLocation val3 = new CustomLocation(val, true, val2); ZoneManager.Instance.AddCustomLocation(val3); } private static void RegisterLocationClutter(GameObject locationPrefab) { ZNetView[] componentsInChildren = locationPrefab.GetComponentsInChildren<ZNetView>(true); ZNetView[] array = componentsInChildren; foreach (ZNetView val in array) { if (!((Object)(object)((Component)val).gameObject == (Object)(object)locationPrefab)) { int stableHashCode = StringExtensionMethods.GetStableHashCode(((Object)((Component)val).gameObject).name); if ((Object)(object)ZNetScene.instance != (Object)null && !ZNetScene.instance.m_namedPrefabs.ContainsKey(stableHashCode)) { PrefabManager.Instance.RegisterToZNetScene(((Component)val).gameObject); } } } } public static void additems() { Adddraculaboss(); Addvdragon(); AddDragonegg(); Addsaddle(); AddVampireDragonWeapons(); AddBlood(); Adddbeitr(); Addsunblock(); AddDarkGift(); AddDarkGiftII(); AddDarkGiftIII(); AddDarkGiftIV(); AddCure(); Addvsword(); Adddwhip(); Addchainmace(); Adddvcape(); Adddvlegs(); Adddvschest(); Adddvshelm(); Addfvslegs(); Addfvschest(); Addfvshelm(); Addberserklegs(); Addberserkchest(); Addberserkhelm(); Addslayerbow(); Addslayersword(); Addslayersword2(); Addboc(); Addboc1(); PrefabManager.OnVanillaPrefabsAvailable -= additems; } public static void Adddvcape() { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0007: Expected O, but got Unknown //IL_0012: Unknown result type (might be due to invalid IL or missing references) //IL_001c: Expected O, but got Unknown //IL_0026: Unknown result type (might be due to invalid IL or missing references) //IL_0030: Expected O, but got Unknown //IL_003c: Unknown result type (might be due to invalid IL or missing references) //IL_0046: Expected O, but got Unknown //IL_006e: Unknown result type (might be due to invalid IL or missing references) //IL_0074: Expected O, but got Unknown ItemConfig val = new ItemConfig(); val.AddRequirement(new RequirementConfig("FlametalNew", 30, 15, false)); val.AddRequirement(new RequirementConfig("GemstoneRed", 4, 1, false)); val.AddRequirement(new RequirementConfig("BlackMetal", 20, 10, false)); val.CraftingStation = CraftingStations.BlackForge; val.MinStationLevel = 1; GameObject val2 = Shawcassets.LoadAsset<GameObject>("Assets/ShawesomeVampire/shwsmdvarmorcape.prefab"); CustomItem val3 = new CustomItem(val2, true, val); ItemManager.Instance.AddItem(val3); } public static void Adddvlegs() { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0007: Expected O, but got Unknown //IL_0012: Unknown result type (might be due to invalid IL or missing references) //IL_001c: Expected O, but got Unknown //IL_0026: Unknown result type (might be due to invalid IL or missing references) //IL_0030: Expected O, but got Unknown //IL_003c: Unknown result type (might be due to invalid IL or missing references) //IL_0046: Expected O, but got Unknown //IL_006e: Unknown result type (might be due to invalid IL or missing references) //IL_0074: Expected O, but got Unknown ItemConfig val = new ItemConfig(); val.AddRequirement(new RequirementConfig("FlametalNew", 30, 15, false)); val.AddRequirement(new RequirementConfig("GemstoneRed", 4, 1, false)); val.AddRequirement(new RequirementConfig("BlackMetal", 20, 10, false)); val.CraftingStation = CraftingStations.BlackForge; val.MinStationLevel = 1; GameObject val2 = Shawcassets.LoadAsset<GameObject>("Assets/ShawesomeVampire/shwsmdvarmorlegs.prefab"); CustomItem val3 = new CustomItem(val2, true, val); ItemManager.Instance.AddItem(val3); } public static void Adddvschest() { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0007: Expected O, but got Unknown //IL_0012: Unknown result type (might be due to invalid IL or missing references) //IL_001c: Expected O, but got Unknown //IL_0026: Unknown result type (might be due to invalid IL or missing references) //IL_0030: Expected O, but got Unknown //IL_003c: Unknown result type (might be due to invalid IL or missing references) //IL_0046: Expected O, but got Unknown //IL_006e: Unknown result type (might be due to invalid IL or missing references) //IL_0074: Expected O, but got Unknown ItemConfig val = new ItemConfig(); val.AddRequirement(new RequirementConfig("FlametalNew", 30, 15, false)); val.AddRequirement(new RequirementConfig("GemstoneRed", 4, 1, false)); val.AddRequirement(new RequirementConfig("BlackMetal", 20, 10, false)); val.CraftingStation = CraftingStations.BlackForge; val.MinStationLevel = 1; GameObject val2 = Shawcassets.LoadAsset<GameObject>("Assets/ShawesomeVampire/shwsmdvarmorchest.prefab"); CustomItem val3 = new CustomItem(val2, true, val); ItemManager.Instance.AddItem(val3); } public static void Adddvshelm() { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0007: Expected O, but got Unknown //IL_0012: Unknown result type (might be due to invalid IL or missing references) //IL_001c: Expected O, but got Unknown //IL_0026: Unknown result type (might be due to invalid IL or missing references) //IL_0030: Expected O, but got Unknown //IL_003c: Unknown result type (might be due to invalid IL or missing references) //IL_0046: Expected O, but got Unknown //IL_006e: Unknown result type (might be due to invalid IL or missing references) //IL_0074: Expected O, but got Unknown ItemConfig val = new ItemConfig(); val.AddRequirement(new RequirementConfig("FlametalNew", 30, 15, false)); val.AddRequirement(new RequirementConfig("GemstoneRed", 4, 1, false)); val.AddRequirement(new RequirementConfig("BlackMetal", 20, 10, false)); val.CraftingStation = CraftingStations.BlackForge; val.MinStationLevel = 1; GameObject val2 = Shawcassets.LoadAsset<GameObject>("Assets/ShawesomeVampire/shwsmdvarmorhead.prefab"); CustomItem val3 = new CustomItem(val2, true, val); ItemManager.Instance.AddItem(val3); } public static void Addfvslegs() { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0007: Expected O, but got Unknown //IL_0012: Unknown result type (might be due to invalid IL or missing references) //IL_001c: Expected O, but got Unknown //IL_0026: Unknown result type (might be due to invalid IL or missing references) //IL_0030: Expected O, but got Unknown //IL_003c: Unknown result type (might be due to invalid IL or missing references) //IL_0046: Expected O, but got Unknown //IL_006e: Unknown result type (might be due to invalid IL or missing references) //IL_0074: Expected O, but got Unknown ItemConfig val = new ItemConfig(); val.AddRequirement(new RequirementConfig("FlametalNew", 30, 15, false)); val.AddRequirement(new RequirementConfig("GemstoneRed", 4, 1, false)); val.AddRequirement(new RequirementConfig("BlackMetal", 20, 10, false)); val.CraftingStation = CraftingStations.BlackForge; val.MinStationLevel = 1; GameObject val2 = Shawcassets.LoadAsset<GameObject>("Assets/ShawesomeVampHunter/shwsmfvhlegs.prefab"); CustomItem val3 = new CustomItem(val2, true, val); ItemManager.Instance.AddItem(val3); } public static void Addfvschest() { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0007: Expected O, but got Unknown //IL_0012: Unknown result type (might be due to invalid IL or missing references) //IL_001c: Expected O, but got Unknown //IL_0026: Unknown result type (might be due to invalid IL or missing references) //IL_0030: Expected O, but got Unknown //IL_003c: Unknown result type (might be due to invalid IL or missing references) //IL_0046: Expected O, but got Unknown //IL_006e: Unknown result type (might be due to invalid IL or missing references) //IL_0074: Expected O, but got Unknown ItemConfig val = new ItemConfig(); val.AddRequirement(new RequirementConfig("FlametalNew", 30, 15, false)); val.AddRequirement(new RequirementConfig("GemstoneRed", 4, 1, false)); val.AddRequirement(new RequirementConfig("BlackMetal", 20, 10, false)); val.CraftingStation = CraftingStations.BlackForge; val.MinStationLevel = 1; GameObject val2 = Shawcassets.LoadAsset<GameObject>("Assets/ShawesomeVampHunter/shwsmfvhchest.prefab"); CustomItem val3 = new CustomItem(val2, true, val); ItemManager.Instance.AddItem(val3); } public static void Addfvshelm() { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0007: Expected O, but got Unknown //IL_0012: Unknown result type (might be due to invalid IL or missing references) //IL_001c: Expected O, but got Unknown //IL_0026: Unknown result type (might be due to invalid IL or missing references) //IL_0030: Expected O, but got Unknown //IL_003c: Unknown result type (might be due to invalid IL or missing references) //IL_0046: Expected O, but got Unknown //IL_006e: Unknown result type (might be due to invalid IL or missing references) //IL_0074: Expected O, but got Unknown ItemConfig val = new ItemConfig(); val.AddRequirement(new RequirementConfig("FlametalNew", 30, 15, false)); val.AddRequirement(new RequirementConfig("GemstoneRed", 4, 1, false)); val.AddRequirement(new RequirementConfig("BlackMetal", 20, 10, false)); val.CraftingStation = CraftingStations.BlackForge; val.MinStationLevel = 1; GameObject val2 = Shawcassets.LoadAsset<GameObject>("Assets/ShawesomeVampHunter/shwsmfvhhelm.prefab"); CustomItem val3 = new CustomItem(val2, true, val); ItemManager.Instance.AddItem(val3); } public static void Addboc1() { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0007: Expected O, but got Unknown //IL_0012: Unknown result type (might be due to invalid IL or missing references) //IL_001c: Expected O, but got Unknown //IL_0026: Unknown result type (might be due to invalid IL or missing references) //IL_0030: Expected O, but got Unknown //IL_003a: Unknown result type (might be due to invalid IL or missing references) //IL_0044: Expected O, but got Unknown //IL_0050: Unknown result type (might be due to invalid IL or missing references) //IL_005a: Expected O, but got Unknown //IL_0082: Unknown result type (might be due to invalid IL or missing references) //IL_0088: Expected O, but got Unknown ItemConfig val = new ItemConfig(); val.AddRequirement(new RequirementConfig("FlametalNew", 10, 10, false)); val.AddRequirement(new RequirementConfig("TrophyFader", 1, 0, false)); val.AddRequirement(new RequirementConfig("GemstoneRed", 1, 1, false)); val.AddRequirement(new RequirementConfig("BlackMetal", 10, 10, false)); val.CraftingStation = CraftingStations.BlackForge; val.MinStationLevel = 1; GameObject val2 = Shawcassets.LoadAsset<GameObject>("Assets/ShawesomeVampHunter/shwsm_BOC_chains.prefab"); CustomItem val3 = new CustomItem(val2, true, val); ItemManager.Instance.AddItem(val3); } public static void Addboc() { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0007: Expected O, but got Unknown //IL_0012: Unknown result type (might be due to invalid IL or missing references) //IL_001c: Expected O, but got Unknown //IL_0026: Unknown result type (might be due to invalid IL or missing references) //IL_0030: Expected O, but got Unknown //IL_003a: Unknown result type (might be due to invalid IL or missing references) //IL_0044: Expected O, but got Unknown //IL_0050: Unknown result type (might be due to invalid IL or missing references) //IL_005a: Expected O, but got Unknown //IL_0082: Unknown result type (might be due to invalid IL or missing references) //IL_0088: Expected O, but got Unknown ItemConfig val = new ItemConfig(); val.AddRequirement(new RequirementConfig("FlametalNew", 10, 10, false)); val.AddRequirement(new RequirementConfig("TrophyFader", 1, 0, false)); val.AddRequirement(new RequirementConfig("GemstoneRed", 1, 1, false)); val.AddRequirement(new RequirementConfig("BlackMetal", 10, 10, false)); val.CraftingStation = CraftingStations.BlackForge; val.MinStationLevel = 1; GameObject val2 = Shawcassets.LoadAsset<GameObject>("Assets/ShawesomeVampHunter/shwsmboc.prefab"); CustomItem val3 = new CustomItem(val2, true, val); ItemManager.Instance.AddItem(val3); } public static void Addslayersword2() { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0007: Expected O, but got Unknown //IL_0012: Unknown result type (might be due to invalid IL or missing references) //IL_001c: Expected O, but got Unknown //IL_0026: Unknown result type (might be due to invalid IL or missing references) //IL_0030: Expected O, but got Unknown //IL_003a: Unknown result type (might be due to invalid IL or missing references) //IL_0044: Expected O, but got Unknown //IL_0050: Unknown result type (might be due to invalid IL or missing references) //IL_005a: Expected O, but got Unknown //IL_0082: Unknown result type (might be due to invalid IL or missing references) //IL_0088: Expected O, but got Unknown ItemConfig val = new ItemConfig(); val.AddRequirement(new RequirementConfig("FlametalNew", 10, 10, false)); val.AddRequirement(new RequirementConfig("TrophyFader", 1, 0, false)); val.AddRequirement(new RequirementConfig("GemstoneRed", 1, 1, false)); val.AddRequirement(new RequirementConfig("BlackMetal", 10, 10, false)); val.CraftingStation = CraftingStations.BlackForge; val.MinStationLevel = 1; GameObject val2 = Shawcassets.LoadAsset<GameObject>("Assets/ShawesomeVampHunter/shwsmdsds1.prefab"); CustomItem val3 = new CustomItem(val2, true, val); ItemManager.Instance.AddItem(val3); } public static void Addslayersword() { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0007: Expected O, but got Unknown //IL_0012: Unknown result type (might be due to invalid IL or missing references) //IL_001c: Expected O, but got Unknown //IL_0026: Unknown result type (might be due to invalid IL or missing references) //IL_0030: Expected O, but got Unknown //IL_003b: Unknown result type (might be due to invalid IL or missing references) //IL_0045: Expected O, but got Unknown //IL_004f: Unknown result type (might be due to invalid IL or missing references) //IL_0059: Expected O, but got Unknown //IL_0081: Unknown result type (might be due to invalid IL or missing references) //IL_0087: Expected O, but got Unknown ItemConfig val = new ItemConfig(); val.AddRequirement(new RequirementConfig("FlametalNew", 60, 15, false)); val.AddRequirement(new RequirementConfig("TrophyFader", 1, 1, false)); val.AddRequirement(new RequirementConfig("GemstoneRed", 10, 4, false)); val.AddRequirement(new RequirementConfig("shwsmdsds1", 1, 0, false)); val.CraftingStation = CraftingStations.BlackForge; val.MinStationLevel = 1; GameObject val2 = Shawcassets.LoadAsset<GameObject>("Assets/ShawesomeVampHunter/shwsmdsds.prefab"); CustomItem val3 = new CustomItem(val2, true, val); ItemManager.Instance.AddItem(val3); } public static void Addslayerbow() { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0007: Expected O, but got Unknown //IL_0011: Unknown result type (might be due to invalid IL or missing references) //IL_001b: Expected O, but got Unknown //IL_0025: Unknown result type (might be due to invalid IL or missing references) //IL_002f: Expected O, but got Unknown //IL_003b: Unknown result type (might be due to invalid IL or missing references) //IL_0045: Expected O, but got Unknown //IL_006d: Unknown result type (might be due to invalid IL or missing references) //IL_0073: Expected O, but got Unknown ItemConfig val = new ItemConfig(); val.AddRequirement(new RequirementConfig("FlametalNew", 5, 10, false)); val.AddRequirement(new RequirementConfig("GemstoneRed", 1, 1, false)); val.AddRequirement(new RequirementConfig("BlackMetal", 10, 10, false)); val.CraftingStation = CraftingStations.BlackForge; val.MinStationLevel = 1; GameObject val2 = Shawcassets.LoadAsset<GameObject>("Assets/ShawesomeVampHunter/shwsmdsbow.prefab"); CustomItem val3 = new CustomItem(val2, true, val); ItemManager.Instance.AddItem(val3); } public static void Addberserklegs() { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0007: Expected O, but got Unknown //IL_0012: Unknown result type (might be due to invalid IL or missing references) //IL_001c: Expected O, but got Unknown //IL_0026: Unknown result type (might be due to invalid IL or missing references) //IL_0030: Expected O, but got Unknown //IL_003c: Unknown result type (might be due to invalid IL or missing references) //IL_0046: Expected O, but got Unknown //IL_006e: Unknown result type (might be due to invalid IL or missing references) //IL_0074: Expected O, but got Unknown ItemConfig val = new ItemConfig(); val.AddRequirement(new RequirementConfig("FlametalNew", 30, 15, false)); val.AddRequirement(new RequirementConfig("GemstoneRed", 4, 1, false)); val.AddRequirement(new RequirementConfig("BlackMetal", 20, 10, false)); val.CraftingStation = CraftingStations.BlackForge; val.MinStationLevel = 1; GameObject val2 = Shawcassets.LoadAsset<GameObject>("Assets/ShawesomeVampHunter/shwsmdslegs.prefab"); CustomItem val3 = new CustomItem(val2, true, val); ItemManager.Instance.AddItem(val3); } public static void Addberserkchest() { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0007: Expected O, but got Unknown //IL_0012: Unknown result type (might be due to invalid IL or missing references) //IL_001c: Expected O, but got Unknown //IL_0026: Unknown result type (might be due to invalid IL or missing references) //IL_0030: Expected O, but got Unknown //IL_003c: Unknown result type (might be due to invalid IL or missing references) //IL_0046: Expected O, but got Unknown //IL_006e: Unknown result type (might be due to invalid IL or missing references) //IL_0074: Expected O, but got Unknown ItemConfig val = new ItemConfig(); val.AddRequirement(new RequirementConfig("FlametalNew", 30, 15, false)); val.AddRequirement(new RequirementConfig("GemstoneRed", 4, 1, false)); val.AddRequirement(new RequirementConfig("BlackMetal", 20, 10, false)); val.CraftingStation = CraftingStations.BlackForge; val.MinStationLevel = 1; GameObject val2 = Shawcassets.LoadAsset<GameObject>("Assets/ShawesomeVampHunter/shwsmdschest.prefab"); CustomItem val3 = new CustomItem(val2, true, val); ItemManager.Instance.AddItem(val3); } public static void Addberserkhelm() { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0007: Expected O, but got Unknown //IL_0012: Unknown result type (might be due to invalid IL or missing references) //IL_001c: Expected O, but got Unknown //IL_0026: Unknown result type (might be due to invalid IL or missing references) //IL_0030: Expected O, but got Unknown //IL_003c: Unknown result type (might be due to invalid IL or missing references) //IL_0046: Expected O, but got Unknown //IL_006e: Unknown result type (might be due to invalid IL or missing references) //IL_0074: Expected O, but got Unknown ItemConfig val = new ItemConfig(); val.AddRequirement(new RequirementConfig("FlametalNew", 30, 15, false)); val.AddRequirement(new RequirementConfig("GemstoneRed", 4, 1, false)); val.AddRequirement(new RequirementConfig("BlackMetal", 20, 10, false)); val.CraftingStation = CraftingStations.BlackForge; val.MinStationLevel = 1; GameObject val2 = Shawcassets.LoadAsset<GameObject>("Assets/ShawesomeVampHunter/shwsmdshelm.prefab"); CustomItem val3 = new CustomItem(val2, true, val); ItemManager.Instance.AddItem(val3); } public static void Addchainmace() { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0007: Expected O, but got Unknown //IL_0012: Unknown result type (might be due to invalid IL or missing references) //IL_001c: Expected O, but got Unknown //IL_0026: Unknown result type (might be due to invalid IL or missing references) //IL_0030: Expected O, but got Unknown //IL_003c: Unknown result type (might be due to invalid IL or missing references) //IL_0046: Expected O, but got Unknown //IL_006e: Unknown result type (might be due to invalid IL or missing references) //IL_0074: Expected O, but got Unknown ItemConfig val = new ItemConfig(); val.AddRequirement(new RequirementConfig("FlametalNew", 30, 15, false)); val.AddRequirement(new RequirementConfig("GemstoneRed", 4, 4, false)); val.AddRequirement(new RequirementConfig("BlackMetal", 20, 10, false)); val.CraftingStation = CraftingStations.BlackForge; val.MinStationLevel = 1; GameObject val2 = Shawcassets.LoadAsset<GameObject>("Assets/ShawesomeVampHunter/shwsm_vslayer_mace.prefab"); CustomItem val3 = new CustomItem(val2, true, val); ItemManager.Instance.AddItem(val3); } public static void Addsaddle() { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0007: Expected O, but got Unknown //IL_0012: Unknown result type (might be due to invalid IL or missing references) //IL_001c: Expected O, but got Unknown //IL_0026: Unknown result type (might be due to invalid IL or missing references) //IL_0030: Expected O, but got Unknown //IL_003b: Unknown result type (might be due to invalid IL or missing references) //IL_0045: Expected O, but got Unknown //IL_0051: Unknown result type (might be due to invalid IL or missing references) //IL_005b: Expected O, but got Unknown //IL_0083: Unknown result type (might be due to invalid IL or missing references) //IL_0089: Expected O, but got Unknown ItemConfig val = new ItemConfig(); val.AddRequirement(new RequirementConfig("FlametalNew", 50, 10, false)); val.AddRequirement(new RequirementConfig("TrophyFader", 1, 0, false)); val.AddRequirement(new RequirementConfig("YggdrasilWood", 40, 0, false)); val.AddRequirement(new RequirementConfig("BlackMetal", 20, 10, false)); val.CraftingStation = CraftingStations.BlackForge; val.MinStationLevel = 1; GameObject val2 = Shawcassets.LoadAsset<GameObject>("Assets/ShawesomeVampire/shwsmvdracsaddle.prefab"); CustomItem val3 = new CustomItem(val2, true, val); ItemManager.Instance.AddItem(val3); } public static void AddVampireDragonWeapons() { //IL_0021: Unknown result type (might be due to invalid IL or missing references) //IL_0028: Expected O, but got Unknown //IL_0056: Unknown result type (might be due to invalid IL or missing references) //IL_005d: Expected O, but got Unknown //IL_008b: Unknown result type (might be due to invalid IL or missing references) //IL_0092: Expected O, but got Unknown //IL_00c0: Unknown result type (might be due to invalid IL or missing references) //IL_00c7: Expected O, but got Unknown //IL_00f8: Unknown result type (might be due to invalid IL or missing references) //IL_00ff: Expected O, but got Unknown //IL_0130: Unknown result type (might be due to invalid IL or missing references) //IL_0137: Expected O, but got Unknown //IL_0168: Unknown result type (might be due to invalid IL or missing references) //IL_016f: Expected O, but got Unknown //IL_01a0: Unknown result type (might be due to invalid IL or missing references) //IL_01a7: Expected O, but got Unknown GameObject val = Shawcassets.LoadAsset<GameObject>("Assets/ShawesomeVampire/_VampireDragon/Prefabs/Attacks/VampireDragonLeftClawSlam.prefab"); if ((Object)(object)val != (Object)null) { CustomItem val2 = new CustomItem(val, false); ItemManager.Instance.AddItem(val2); } GameObject val3 = Shawcassets.LoadAsset<GameObject>("Assets/ShawesomeVampire/_VampireDragon/Prefabs/Attacks/VampireDragonRightClawSwipe.prefab"); if ((Object)(object)val3 != (Object)null) { CustomItem val4 = new CustomItem(val3, false); ItemManager.Instance.AddItem(val4); } GameObject val5 = Shawcassets.LoadAsset<GameObject>("Assets/ShawesomeVampire/_VampireDragon/Prefabs/Attacks/VampireDragonFirebreath.prefab"); if ((Object)(object)val5 != (Object)null) { CustomItem val6 = new CustomItem(val5, false); ItemManager.Instance.AddItem(val6); } GameObject val7 = Shawcassets.LoadAsset<GameObject>("Assets/ShawesomeVampire/_VampireDragon/Prefabs/Attacks/VampireDragonFireball.prefab"); if ((Object)(object)val7 != (Object)null) { CustomItem val8 = new CustomItem(val7, false); ItemManager.Instance.AddItem(val8); } GameObject val9 = Shawcassets.LoadAsset<GameObject>("Assets/ShawesomeVampire/_VampireDragon/Prefabs/Attacks/VampireDragonFireballflying.prefab"); if ((Object)(object)val9 != (Object)null) { CustomItem val10 = new CustomItem(val9, false); ItemManager.Instance.AddItem(val10); } GameObject val11 = Shawcassets.LoadAsset<GameObject>("Assets/ShawesomeVampire/_VampireDragon/Prefabs/Attacks/VampireDragonFirebreathflying.prefab"); if ((Object)(object)val11 != (Object)null) { CustomItem val12 = new CustomItem(val11, false); ItemManager.Instance.AddItem(val12); } GameObject val13 = Shawcassets.LoadAsset<GameObject>("Assets/ShawesomeVampire/_VampireDragon/Prefabs/Attacks/VampireDragonStunt.prefab"); if ((Object)(object)val13 != (Object)null) { CustomItem val14 = new CustomItem(val13, false); ItemManager.Instance.AddItem(val14); } GameObject val15 = Shawcassets.LoadAsset<GameObject>("Assets/ShawesomeVampire/_VampireDragon/Prefabs/Attacks/VampireDragonspitfireflying.prefab"); if ((Object)(object)val15 != (Object)null) { CustomItem val16 = new CustomItem(val15, false); ItemManager.Instance.AddItem(val16); } } public static void Addvdragon() { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0007: Expected O, but got Unknown //IL_001a: Unknown result type (might be due to invalid IL or missing references) //IL_0020: Expected O, but got Unknown CreatureConfig val = new CreatureConfig(); GameObject val2 = Shawcassets.LoadAsset<GameObject>("Assets/ShawesomeVampire/sdg_vampiredragon.prefab"); CustomCreature val3 = new CustomCreature(val2, true, val); CreatureManager.Instance.AddCreature(val3); } public static void Adddraculaboss() { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0007: Expected O, but got Unknown //IL_001a: Unknown result type (might be due to invalid IL or missing references) //IL_0020: Expected O, but got Unknown CreatureConfig val = new CreatureConfig(); GameObject val2 = Shawcassets.LoadAsset<GameObject>("Assets/ShawesomeVampire/shwsm_Dragulia.prefab"); CustomCreature val3 = new CustomCreature(val2, true, val); CreatureManager.Instance.AddCreature(val3); } public static void Addsunblock() { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0007: Expected O, but got Unknown //IL_0011: Unknown result type (might be due to invalid IL or missing references) //IL_001b: Expected O, but got Unknown //IL_0025: Unknown result type (might be due to invalid IL or missing references) //IL_002f: Expected O, but got Unknown //IL_003a: Unknown result type (might be due to invalid IL or missing references) //IL_0044: Expected O, but got Unknown //IL_0075: Unknown result type (might be due to invalid IL or missing references) //IL_007b: Expected O, but got Unknown ItemConfig val = new ItemConfig(); val.AddRequirement(new RequirementConfig("Tar", 10, 0, false)); val.AddRequirement(new RequirementConfig("DragonTear", 1, 0, false)); val.AddRequirement(new RequirementConfig("AncientSeed", 10, 0, false)); val.CraftingStation = CraftingStations.Cauldron; val.MinStationLevel = 1; val.Amount = 10; GameObject val2 = Shawcassets.LoadAsset<GameObject>("Assets/ShawesomeVampire/shwsmsunblock.prefab"); CustomItem val3 = new CustomItem(val2, true, val); ItemManager.Instance.AddItem(val3); } public static void Adddbeitr() { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0007: Expected O, but got Unknown //IL_0010: Unknown result type (might be due to invalid IL or missing references) //IL_001a: Expected O, but got Unknown //IL_0025: Unknown result type (might be due to invalid IL or missing references) //IL_002f: Expected O, but got Unknown //IL_003a: Unknown result type (might be due to invalid IL or missing references) //IL_0044: Expected O, but got Unknown //IL_006c: Unknown result type (might be due to invalid IL or missing references) //IL_0072: Expected O, but got Unknown ItemConfig val = new ItemConfig(); val.AddRequirement(new RequirementConfig("Sap", 5, 0, false)); val.AddRequirement(new RequirementConfig("SBlood", 10, 0, false)); val.AddRequirement(new RequirementConfig("Honey", 20, 0, false)); val.CraftingStation = CraftingStations.Cauldron; val.MinStationLevel = 1; GameObject val2 = Shawcassets.LoadAsset<GameObject>("Assets/ShawesomeVampire/shwsmbloodeitr.prefab"); CustomItem val3 = new CustomItem(val2, true, val); ItemManager.Instance.AddItem(val3); } public static void Addvsword() { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0007: Expected O, but got Unknown //IL_0012: Unknown result type (might be due to invalid IL or missing references) //IL_001c: Expected O, but got Unknown //IL_0026: Unknown result type (might be due to invalid IL or missing references) //IL_0030: Expected O, but got Unknown //IL_003a: Unknown result type (might be due to invalid IL or missing references) //IL_0044: Expected O, but got Unknown //IL_0050: Unknown result type (might be due to invalid IL or missing references) //IL_005a: Expected O, but got Unknown //IL_0082: Unknown result type (might be due to invalid IL or missing references) //IL_0088: Expected O, but got Unknown ItemConfig val = new ItemConfig(); val.AddRequirement(new RequirementConfig("FlametalNew", 50, 20, false)); val.AddRequirement(new RequirementConfig("TrophyFader", 1, 0, false)); val.AddRequirement(new RequirementConfig("GemstoneRed", 4, 4, false)); val.AddRequirement(new RequirementConfig("BlackMetal", 50, 20, false)); val.CraftingStation = CraftingStations.BlackForge; val.MinStationLevel = 1; GameObject val2 = Shawcassets.LoadAsset<GameObject>("Assets/ShawesomeVampire/shwsmvblade.prefab"); CustomItem val3 = new CustomItem(val2, true, val); ItemManager.Instance.AddItem(val3); } public static void Adddwhip() { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0007: Expected O, but got Unknown //IL_0012: Unknown result type (might be due to invalid IL or missing references) //IL_001c: Expected O, but got Unknown //IL_0026: Unknown result type (might be due to invalid IL or missing references) //IL_0030: Expected O, but got Unknown //IL_003c: Unknown result type (might be due to invalid IL or missing references) //IL_0046: Expected O, but got Unknown //IL_006e: Unknown result type (might be due to invalid IL or missing references) //IL_0074: Expected O, but got Unknown ItemConfig val = new ItemConfig(); val.AddRequirement(new RequirementConfig("FlametalNew", 30, 15, false)); val.AddRequirement(new RequirementConfig("GemstoneRed", 4, 4, false)); val.AddRequirement(new RequirementConfig("BlackMetal", 20, 10, false)); val.CraftingStation = CraftingStations.BlackForge; val.MinStationLevel = 1; GameObject val2 = Shawcassets.LoadAsset<GameObject>("Assets/ShawesomeVampHunter/shwsm_vslayer_whip.prefab"); CustomItem val3 = new CustomItem(val2, true, val); ItemManager.Instance.AddItem(val3); } public static void AddDragonegg() { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0007: Expected O, but got Unknown //IL_001a: Unknown result type (might be due to invalid IL or missing references) //IL_0020: Expected O, but got Unknown //IL_002c: Unknown result type (might be due to invalid IL or missing references) //IL_0032: Expected O, but got Unknown ItemConfig val = new ItemConfig(); GameObject val2 = Shawcassets.LoadAsset<GameObject>("Assets/ShawesomeVampire/shwsmvdragegg.prefab"); CustomItem val3 = new CustomItem(val2, true, val); ItemManager.Instance.AddItem(val3); Drop val4 = new Drop(); val4.m_chance = 0.5f; val4.m_dontScale = true; val4.m_levelMultiplier = false; val4.m_prefab = PrefabManager.Instance.GetPrefab(((Object)val3.ItemPrefab).name); val4.m_amountMax = 1; val4.m_amountMin = 1; GameObject prefab = PrefabManager.Instance.GetPrefab("shwsm_Dragulia"); if ((Object)(object)prefab != (Object)null && (Object)(object)prefab.GetComponent<CharacterDrop>() != (Object)null) { prefab.GetComponent<CharacterDrop>().m_drops.Add(val4); } } public static void AddDarkGiftIV() { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0007: Expected O, but got Unknown //IL_001a: Unknown result type (might be due to invalid IL or missing references) //IL_0020: Expected O, but got Unknown //IL_002c: Unknown result type (might be due to invalid IL or missing references) //IL_0032: Expected O, but got Unknown ItemConfig val = new ItemConfig(); GameObject val2 = Shawcassets.LoadAsset<GameObject>("Assets/ShawesomeVampire/shwsmDarkGiftIV.prefab"); CustomItem val3 = new CustomItem(val2, true, val); ItemManager.Instance.AddItem(val3); Drop val4 = new Drop(); val4.m_chance = 0.8f; val4.m_dontScale = true; val4.m_levelMultiplier = false; val4.m_prefab = PrefabManager.Instance.GetPrefab(((Object)val3.ItemPrefab).name); val4.m_amountMax = 4; val4.m_amountMin = 1; GameObject prefab = PrefabManager.Instance.GetPrefab("shwsm_Dragulia"); if ((Object)(object)prefab != (Object)null && (Object)(object)prefab.GetComponent<CharacterDrop>() != (Object)null) { prefab.GetComponent<CharacterDrop>().m_drops.Add(val4); } } public static void AddDarkGiftIII() { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0007: Expected O, but got Unknown //IL_001a: Unknown result type (might be due to invalid IL or missing references) //IL_0020: Expected O, but got Unknown //IL_002c: Unknown result type (might be due to invalid IL or missing references) //IL_0032: Expected O, but got Unknown ItemConfig val = new ItemConfig(); GameObject val2 = Shawcassets.LoadAsset<GameObject>("Assets/ShawesomeVampire/shwsmDarkGiftIII.prefab"); CustomItem val3 = new CustomItem(val2, true, val); ItemManager.Instance.AddItem(val3); Drop val4 = new Drop(); val4.m_chance = 0.8f; val4.m_dontScale = true; val4.m_levelMultiplier = false; val4.m_prefab = PrefabManager.Instance.GetPrefab(((Object)val3.ItemPrefab).name); val4.m_amountMax = 4; val4.m_amountMin = 1; GameObject prefab = PrefabManager.Instance.GetPrefab("SeekerQueen"); prefab.GetComponent<CharacterDrop>().m_drops.Add(val4); } public static void AddDarkGiftII() { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0007: Expected O, but got Unknown //IL_001a: Unknown result type (might be due to invalid IL or missing references) //IL_0020: Expected O, but got Unknown //IL_002c: Unknown result type (might be due to invalid IL or missing references) //IL_0032: Expected O, but got Unknown ItemConfig val = new ItemConfig(); GameObject val2 = Shawcassets.LoadAsset<GameObject>("Assets/ShawesomeVampire/shwsmDarkGiftII.prefab"); CustomItem val3 = new CustomItem(val2, true, val); ItemManager.Instance.AddItem(val3); Drop val4 = new Drop(); val4.m_chance = 0.8f; val4.m_dontScale = true; val4.m_levelMultiplier = false; val4.m_prefab = PrefabManager.Instance.GetPrefab(((Object)val3.ItemPrefab).name); val4.m_amountMax = 4; val4.m_amountMin = 1; GameObject prefab = PrefabManager.Instance.GetPrefab("GoblinKing"); prefab.GetComponent<CharacterDrop>().m_drops.Add(val4); } public static void AddDarkGift() { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0007: Expected O, but got Unknown //IL_001a: Unknown result type (might be due to invalid IL or missing references) //IL_0020: Expected O, but got Unknown //IL_002c: Unknown result type (might be due to invalid IL or missing references) //IL_0032: Expected O, but got Unknown ItemConfig val = new ItemConfig(); GameObject val2 = Shawcassets.LoadAsset<GameObject>("Assets/ShawesomeVampire/shwsmDarkGift.prefab"); CustomItem val3 = new CustomItem(val2, true, val); ItemManager.Instance.AddItem(val3); Drop val4 = new Drop(); val4.m_chance = 0.8f; val4.m_dontScale = true; val4.m_levelMultiplier = false; val4.m_prefab = PrefabManager.Instance.GetPrefab(((Object)val3.ItemPrefab).name); val4.m_amountMax = 4; val4.m_amountMin = 1; GameObject prefab = PrefabManager.Instance.GetPrefab("Dragon"); prefab.GetComponent<CharacterDrop>().m_drops.Add(val4); } public static void AddCure() { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0007: Expected O, but got Unknown //IL_001a: Unknown result type (might be due to invalid IL or missing references) //IL_0020: Expected O, but got Unknown //IL_002c: Unknown result type (might be due to invalid IL or missing references) //IL_0032: Expected O, but got Unknown ItemConfig val = new ItemConfig(); GameObject val2 = Shawcassets.LoadAsset<GameObject>("Assets/ShawesomeVampire/shwsmcure.prefab"); CustomItem val3 = new CustomItem(val2, true, val); ItemManager.Instance.AddItem(val3); Drop val4 = new Drop(); val4.m_chance = 0.8f; val4.m_dontScale = true; val4.m_levelMultiplier = false; val4.m_prefab = PrefabManager.Instance.GetPrefab(((Object)val3.ItemPrefab).name); val4.m_amountMax = 4; val4.m_amountMin = 1; GameObject prefab = PrefabManager.Instance.GetPrefab("shwsm_Dragulia"); if ((Object)(object)prefab != (Object)null && (Object)(object)prefab.GetComponent<CharacterDrop>() != (Object)null) { prefab.GetComponent<CharacterDrop>().m_drops.Add(val4); } } public static void AddBlood() { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0007: Expected O, but got Unknown //IL_001a: Unknown result type (might be due to invalid IL or missing references) //IL_0020: Expected O, but got Unknown ItemConfig val = new ItemConfig(); GameObject val2 = Shawcassets.LoadAsset<GameObject>("Assets/ShawesomeVampire/SBlood.prefab"); CustomItem val3 = new CustomItem(val2, true, val); ItemManager.Instance.AddItem(val3); } public static void RegisterVampireStatusEffectsToObjectDB(ObjectDB objectDB) { if ((Object)(object)objectDB == (Object)null) { return; } string[] array = new string[4] { "Assets/ShawesomeVampire/Vampire1_se.asset", "Assets/ShawesomeVampire/Vampire1_se1.asset", "Assets/ShawesomeVampire/Vampire1_se2.asset", "Assets/ShawesomeVampire/Vampire1_se3.asset" }; string[] array2 = array; foreach (string text in array2) { StatusEffect val = Shawcassets.LoadAsset<StatusEffect>(text); if ((Object)(object)val == (Object)null) { continue; } bool flag = false; foreach (StatusEffect statusEffect in objectDB.m_StatusEffects) { if ((Object)(object)statusEffect != (Object)null && ((Object)statusEffect).name == ((Object)val).name) { flag = true; break; } } if (!flag) { objectDB.m_StatusEffects.Add(val); } } StatusEffect val2 = Shawcassets.LoadAsset<StatusEffect>("Assets/ShawesomeVampire/PukeV.asset"); if ((Object)(object)val2 != (Object)null) { bool flag2 = false; foreach (StatusEffect statusEffect2 in objectDB.m_StatusEffects) { if ((Object)(object)statusEffect2 != (Object)null && ((Object)statusEffect2).name == ((Object)val2).name) { flag2 = true; break; } } if (!flag2) { objectDB.m_StatusEffects.Add(val2); ManualLogSource obj = logger; if (obj != null) { obj.LogInfo((object)("Registered " + ((Object)val2).name + " status effect from asset bundle")); } } } else { ManualLogSource obj2 = logger; if (obj2 != null) { obj2.LogWarning((object)"Could not load PukeV.asset from asset bundle!"); } } } public static void AddBloodDropsToCreatures() { //IL_0021: Unknown result type (might be due to invalid IL or missing references) //IL_0027: Expected O, but got Unknown GameObject prefab = PrefabManager.Instance.GetPrefab("SBlood"); if ((Object)(object)prefab == (Object)null) { return; } Drop val = new Drop(); val.m_chance = 0.7f; val.m_dontScale = true; val.m_levelMultiplier = false; val.m_prefab = prefab; val.m_amountMax = 3; val.m_amountMin = 1; if (!((Object)(object)ZNetScene.instance != (Object)null) || ZNetScene.instance.m_prefabs == null) { return; } int num = 0; foreach (GameObject prefab2 in ZNetScene.instance.m_prefabs) { if (!((Object)(object)prefab2 == (Object)null)) { CharacterDrop component = prefab2.GetComponent<CharacterDrop>(); if ((Object)(object)component != (Object)null && ((Object)(object)prefab2.GetComponent<Humanoid>() != (Object)null || (Object)(object)prefab2.GetComponent<Character>() != (Object)null)) { component.m_drops.Add(val); num++; } } } } public static T CopyIntoParent<T>(T go, T parent) where T : Component { //IL_0055: Unknown result type (might be due to invalid IL or missing references) T val = Object.Instantiate<T>(go); ((Object)(object)val).name = ((Object)(object)go).name; ((Component)val).transform.parent = ((Component)parent).transform; ((Component)val).transform.localPosition = new Vector3(0f, 0f, 0f); return val; } } } namespace Shawesomes_Dark_Gift.Shader { public static class VanillaShaders { private static bool s_logFilterInitialized; private static readonly HashSet<string> s_registeredPrefabs = new HashSet<string>(); public static void RegisterPrefab(string prefabName) { s_registeredPrefabs.Add(prefabName); } public static void AutoRegisterAllEffects() { if ((Object)(object)ZNetScene.instance == (Object)null) { Debug.LogWarning((object)"[VanillaShaders] ZNetScene not ready - cannot auto-register effects. Call this after ZNetScene is initialized."); return; } int num = 0; foreach (KeyValuePair<int, GameObject> namedPrefab in ZNetScene.instance.m_namedPrefabs) { GameObject value = namedPrefab.Value; if (!((Object)(object)value == (Object)null)) { string name = ((Object)value).name; if (!s_registeredPrefabs.Contains(name) && ((Object)(object)value.GetComponentInChildren<ParticleSystem>() != (Object)null || (Object)(object)value.GetComponentInChildren<Light>() != (Object)null || (Object)(object)value.GetComponentInChildren<AudioSource>() != (Object)null || value.GetComponent<EffectList>() != null)) { s_registeredPrefabs.Add(name); num++; } } } } public static void InitLogFilter() { //IL_0017: Unknown result type (might be due to invalid IL or missing references) //IL_001d: Expected O, but got Unknown //IL_0065: Unknown result type (might be due to invalid IL or missing references) //IL_0073: Expected O, but got Unknown if (s_logFilterInitialized) { return; } s_logFilterInitialized = true; Harmony val = new Harmony("Shawesomes_Dark_Gift.VanillaShaders.LogFilter"); Type type = Type.GetType("BepInEx.Logging.UnityLogSource, BepInEx"); if (type != null) { MethodInfo method = type.GetMethod("OnUnityLogMessageReceived", BindingFlags.Static | BindingFlags.NonPublic); if (method != null) { val.Patch((MethodBase)method, new HarmonyMethod(typeof(VanillaShaders), "FilterUnityLogMessage", (Type[])null), (HarmonyMethod)null, (HarmonyMethod)null, (HarmonyMethod)null, (HarmonyMethod)null); } } } private static bool FilterUnityLogMessage(string message) { if (message != null && message.Contains("Failed to find expected binary shader data")) { return false; } return true; } } } namespace Shawesomes_Dark_Gift.Registration { public static class VampireConfig { public static ConfigEntry<float> TickInterval { get; set; } public static ConfigEntry<bool> Clock_Enabled { get; set; } public static ConfigEntry<bool> Clock_Use24HourFormat { get; set; } public static ConfigEntry<float> Clock_PositionX { get; set; } public static ConfigEntry<float> Clock_PositionY { get; set; } public static ConfigEntry<int> Clock_FontSize { get; set; } public static ConfigEntry<bool> BloodMeter_Enabled { get; set; } public static ConfigEntry<float> BloodMeter_PositionX { get; set; } public static ConfigEntry<float> BloodMeter_PositionY { get; set; } public static ConfigEntry<int> BloodMeter_FontSize { get; set; } public static ConfigEntry<float> BloodHunger_Tier1_Interval { get; set; } public static ConfigEntry<float> BloodHunger_Tier1_Damage { get; set; } public static ConfigEntry<float> BloodHunger_Tier1_HealthRestore { get; set; } public static ConfigEntry<float> BloodHunger_Tier2_Interval { get; set; } public static ConfigEntry<float> BloodHunger_Tier2_Damage { get; set; } public static ConfigEntry<float> BloodHunger_Tier2_HealthRestore { get; set; } public static ConfigEntry<float> BloodHunger_Tier3_Interval { get; set; } public static ConfigEntry<float> BloodHunger_Tier3_Damage { get; set; } public static ConfigEntry<float> BloodHunger_Tier3_HealthRestore { get; set; } public static ConfigEntry<float> BloodHunger_Tier4_Interval { get; set; } public static ConfigEntry<float> BloodHunger_Tier4_Damage { get; set; } public static ConfigEntry<float> BloodHunger_Tier4_HealthRestore { get; set; } public static ConfigEntry<string> BloodItem_Prefab { get; set; } public static ConfigEntry<string> CureItem_Prefab { get; set; } public static ConfigEntry<string> WhitelistItem_Prefab { get; set; } public static ConfigEntry<string> VampireOnlyEquipment_Prefab { get; set; } public static ConfigEntry<bool> WeatherProtection_Enabled { get; set; } public static ConfigEntry<string> WeatherProtection_Environments { get; set; } public static ConfigEntry<string> SunscreenItem_Prefab { get; set; } public static ConfigEntry<float> SunscreenItem_Duration { get; set; } public static ConfigEntry<bool> DarkGiftI_Enabled { get; set; } public static ConfigEntry<bool> DarkGiftI_EnableSFX { get; set; } public static ConfigEntry<bool> DarkGiftI_EnableVFX { get; set; } public static ConfigEntry<string> DarkGiftI_SFXPrefab { get; set; } public static ConfigEntry<string> DarkGiftI_VFXPrefab { get; set; } public static ConfigEntry<float> DarkGiftI_TickDamage { get; set; } public static ConfigEntry<float> DarkGiftI_DayStartHour { get; set; } public static ConfigEntry<float> DarkGiftI_DayEndHour { get; set; } public static ConfigEntry<float> DarkGiftI_WarningMinutesBefore { get; set; } public static ConfigEntry<string> DarkGiftI_WarningMessage { get; set; } public static ConfigEntry<float> DarkGiftI_SunsetWarningMinutesBefore { get; set; } public static ConfigEntry<string> DarkGiftI_SunsetWarningMessage { get; set; } public static ConfigEntry<bool> DarkGiftII_Enabled { get; set; } public static ConfigEntry<bool> DarkGiftII_EnableSFX { get; set; } public static ConfigEntry<bool> DarkGiftII_EnableVFX { get; set; } public static ConfigEntry<string> DarkGiftII_SFXPrefab { get; set; } public static ConfigEntry<string> DarkGiftII_VFXPrefab { get; set; } public static ConfigEntry<float> DarkGiftII_TickDamage { get; set; } public static ConfigEntry<float> DarkGiftII_DayStartHour { get; set; } public static ConfigEntry<float> DarkGiftII_DayEndHour { get; set; } public static ConfigEntry<float> DarkGiftII_WarningMinutesBefore { get; set; } public static ConfigEntry<string> DarkGiftII_WarningMessage { get; set; } public static ConfigEntry<float> DarkGiftII_SunsetWarningMinutesBefore { get; set; } public static ConfigEntry<string> DarkGiftII_SunsetWarningMessage { get; set; } public static ConfigEntry<bool> DarkGiftIII_Enabled { get; set; } public static ConfigEntry<bool> DarkGiftIII_EnableSFX { get; set; } public static ConfigEntry<bool> DarkGiftIII_EnableVFX { get; set; } public static ConfigEntry<string> DarkGiftIII_SFXPrefab { get; set; } public static ConfigEntry<string> DarkGiftIII_VFXPrefab { get; set; } public static ConfigEntry<float> DarkGiftIII_TickDamage { get; set; } public static ConfigEntry<float> DarkGiftIII_DayStartHour { get; set; } public static ConfigEntry<float> DarkGiftIII_DayEndHour { get; set; } public static ConfigEntry<float> DarkGiftIII_WarningMinutesBefore { get; set; } public static ConfigEntry<string> DarkGiftIII_WarningMessage { get; set; } public static ConfigEntry<float> DarkGiftIII_SunsetWarningMinutesBefore { get; set; } public static ConfigEntry<string> DarkGiftIII_SunsetWarningMessage { get; set; } public static ConfigEntry<bool> DarkGiftIV_Enabled { get; set; } public static ConfigEntry<bool> DarkGiftIV_EnableSFX { get; set; } public static ConfigEntry<bool> DarkGiftIV_EnableVFX { get; set; } public static ConfigEntry<string> DarkGiftIV_SFXPrefab { get; set; } public static ConfigEntry<string> DarkGiftIV_VFXPrefab { get; set; } public static ConfigEntry<float> DarkGiftIV_TickDamage { get; set; } public static ConfigEntry<float> DarkGiftIV_DayStartHour { get; set; } public static ConfigEntry<float> DarkGiftIV_DayEndHour { get; set; } public static ConfigEntry<float> DarkGiftIV_WarningMinutesBefore { get; set; } public static ConfigEntry<string> DarkGiftIV_WarningMessage { get; set; } public static ConfigEntry<float> DarkGiftIV_SunsetWarningMinutesBefore { get; set; } public static ConfigEntry<string> DarkGiftIV_SunsetWarningMessage { get; set; } public static ConfigEntry<string> Tier4_SkinToggleHotkey { get; set; } public static ConfigEntry<float> Tier4_SkinToggleCooldown { get; set; } public static ConfigEntry<float> RespawnSunDamageGracePeriod { get; set; } public static ConfigEntry<bool> BatCommand_Enabled { get; set; } public static ConfigEntry<string> BatCommand_Hotkey { get; set; } public static ConfigEntry<float> BatCommand_Radius { get; set; } public static ConfigEntry<bool> BatSummon_Enabled { get; set; } public static ConfigEntry<string> BatSummon_Hotkey { get; set; } public static ConfigEntry<bool> BatSummon_EnableSFX { get; set; } public static ConfigEntry<bool> BatSummon_EnableVFX { get; set; } public static ConfigEntry<string> BatSummon_SFXPrefab { get; set; } public static ConfigEntry<string> BatSummon_VFXPrefab { get; set; } public static ConfigEntry<int> BatSummon_Tier1_MaxBats { get; set; } public static ConfigEntry<float> BatSummon_Tier1_Cooldown { get; set; } public static ConfigEntry<int> BatSummon_Tier2_MaxBats { get; set; } public static ConfigEntry<float> BatSummon_Tier2_Cooldown { get; set; } public static ConfigEntry<int> BatSummon_Tier3_MaxBats { get; set; } public static ConfigEntry<float> BatSummon_Tier3_Cooldown { get; set; } public static ConfigEntry<int> BatSummon_Tier4_MaxBats { get; set; } public static ConfigEntry<float> BatSummon_Tier4_Cooldown { get; set; } public static ConfigEntry<bool> HomingProjectile_Enabled { get; set; } public static ConfigEntry<string> HomingProjectile_Whitelist { get; set; } public static void Initialize(ConfigFile config) { TickInterval = config.Bind<float>("01 - General", "01 - TickInterval", 2f, "How often (in seconds) to check for sun damage and apply it."); RespawnSunDamageGracePeriod = config.Bind<float>("01 - General", "02 - Respawn Grace Period", 120f, "Grace period in seconds after respawning before sun damage starts. Prevents death loops when spawning outside shelter."); Clock_Enabled = config.Bind<bool>("02 - Clock", "01 - Enabled", true, "Enable the in-game clock display."); Clock_Use24HourFormat = config.Bind<bool>("02 - Clock", "02 - Use 24 Hour Format", true, "Use 24-hour format (true) or 12-hour format with AM/PM (false)."); Clock_PositionX = config.Bind<float>("02 - Clock", "03 - Position X", 0.5f, "Horizontal position of the clock (0 = left, 1 = right)."); Clock_PositionY = config.Bind<float>("02 - Clock", "04 - Position Y", 5.7f, "Vertical position of the clock (0 = bottom, 1 = top)."); Clock_FontSize = config.Bind<int>("02 - Clock", "05 - Font Size", 14, "Font size for the clock display."); BloodMeter_Enabled = config.Bind<bool>("02 - Clock", "06 - Blood Meter Enabled", true, "Enable the blood hunger meter HUD display below the clock."); BloodMeter_PositionX = config.Bind<float>("02 - Clock", "07 - Blood Meter Position X", 0.5f, "Horizontal position of the blood meter (0 = left, 1 = right)."); BloodMeter_PositionY = config.Bind<float>("02 - Clock", "08 - Blood Meter Position Y", 5.3f, "Vertical position of the blood meter (0 = bottom, 1 = top). Default is below the clock."); BloodMeter_FontSize = config.Bind<int>("02 - Clock", "09 - Blood Meter Font Size", 18, "Font size for the blood meter display."); BloodHunger_Tier1_Interval = config.Bind<float>("03 - Blood Hunger", "01 - Tier 1 Interval", 90f, "Time in seconds before blood hunger damage starts for Tier 1 (default 1.5 minutes - low tier needs blood often)."); BloodHunger_Tier1_Damage = config.Bind<float>("03 - Blood Hunger", "02 - Tier 1 Damage", 10f, "Damage per tick when starving from blood hunger (Tier 1)."); BloodHunger_Tier1_HealthRestore = config.Bind<float>("03 - Blood Hunger", "03 - Tier 1 Health Restore %", 30f, "Percentage of max health restored when feeding blood (Tier 1)."); BloodHunger_Tier2_Interval = config.Bind<float>("03 - Blood Hunger", "04 - Tier 2 Interval", 120f, "Time in seconds before blood hunger damage starts for Tier 2 (default 2 minutes)."); BloodHunger_Tier2_Damage = config.Bind<float>("03 - Blood Hunger", "05 - Tier 2 Damage", 15f, "Damage per tick when starving from blood hunger (Tier 2)."); BloodHunger_Tier2_HealthRestore = config.Bind<float>("03 - Blood Hunger", "06 - Tier 2 Health Restore %", 50f, "Percentage of max health restored when feeding blood (Tier 2)."); BloodHunger_Tier3_Interval = config.Bind<float>("03 - Blood Hunger", "07 - Tier 3 Interval", 150f, "Time in seconds before blood hunger damage starts for Tier 3 (default 2.5 minutes)."); BloodHunger_Tier3_Damage = config.Bind<float>("03 - Blood Hunger", "08 - Tier 3 Damage", 20f, "Damage per tick when starving from blood hunger (Tier 3)."); BloodHunger_Tier3_HealthRestore = config.Bind<float>("03 - Blood Hunger", "09 - Tier 3 Health Restore %", 70f, "Percentage of max health restored when feeding blood (Tier 3)."); BloodHunger_Tier4_Interval = config.Bind<float>("03 - Blood Hunger", "10 - Tier 4 Interval", 240f, "Time in seconds before blood hunger damage starts for Tier 4 (default 4 minutes - high tier lasts longest)."); BloodHunger_Tier4_Damage = config.Bind<float>("03 - Blood Hunger", "11 - Tier 4 Damage", 30f, "Damage per tick when starving from blood hunger (Tier 4)."); BloodHunger_Tier4_HealthRestore = config.Bind<float>("03 - Blood Hunger", "12 - Tier 4 Health Restore %", 100f, "Percentage of max health restored when feeding blood (Tier 4)."); BloodItem_Prefab = config.Bind<string>("03 - Blood Hunger", "13 - Blood Item Prefab", "SBlood,shwsmbloodeitr", "Comma-separated list of prefab names that can be used to feed blood hunger (e.g., 'SBlood,BloodBag')."); CureItem_Prefab = config.Bind<string>("03 - Blood Hunger", "14 - Cleanse Item Prefab", "shwsmcure", "Comma-separated list of prefab names that Cleanse the vampire gift (e.g., 'MeadHealthMedium,MeadTasty')."); WhitelistItem_Prefab = config.Bind<string>("03 - Blood Hunger", "15 - Whitelist Item Prefab", "BloodPudding,MeadEitrMinor,MeadEitrLingering,MeadLightfoot,MeadHasty,MeadTamer,MeadStrength,MeadSwimmer,MeadBugRepellent,MeadTrollPheromones,MeadTasty,BarleyWine,MeadPoisonResist,MeadFrostResist,MeadStaminaLingering,MeadStaminaMedium,MeadStaminaMinor,MeadHealthLingering,MeadHealthMajor,MeadHealthMedium,MeadHealthMinor,", "Comma-separated list of prefab names that vampires can consume without triggering puke effect (e.g., 'MeadHealthMedium,MeadStaminaMedium'). Useful for potions and special items."); VampireOnlyEquipment_Prefab = config.Bind<string>("03 - Blood Hunger", "16 - Vampire-Only Equipment Prefab", "shwsmvblade", "Comma-separated list of prefab names that can ONLY be equipped by vampires (e.g., 'VampireSword,DarkBow'). Non-vampires will be unable to equip these items. Leave empty to disable this feature."); WeatherProtection_Enabled = config.Bind<bool>("04 - Sun Protection", "01 - Weather Protection Enabled", true, "Enable weather-based sun damage protection. Certain weather types (rain, thunderstorm, fog) will block sunlight and prevent sun damage."); WeatherProtection_Environments = config.Bind<string>("04 - Sun Protection", "02 - Weather Protection Environments", "LightRain,Rain,ThunderStorm,Twilight_Rain,Twilight_SnowStorm,SnowStorm,Twilight_Snow,Snow,Foggy,nofogts,Ashlands_ashrain,Ashlands_meteorshower,Ashlands_CinderRain,Ashlands_ashrain_clear,Ashlands_storm,Mistlands_thunder,Misty,Eikthyr,GDKing,Bonemass,Moder,Yagluth,GoblinKing,Queen,Fader,Crypt,SunkenCrypt", "Comma-separated list of environment names that provide sun protection. Common weather types: Rain, ThunderStorm, LightRain, SnowStorm, Ashrain, Misty, Mistlands_clear."); SunscreenItem_Prefab = config.Bind<string>("04 - Sun Protection", "03 - Sunblock Elixir Prefab", "shwsmsunblock", "Comma-separated list of prefab names that act as sunscreen, providing temporary sun protection when consumed (e.g., 'BarleyWine,Honey')."); SunscreenItem_Duration = config.Bind<float>("04 - Sun Protection", "04 - Sunscreen Duration", 300f, "Duration in seconds that sunscreen items provide sun protection (default 5 minutes)."); DarkGiftI_Enabled = config.Bind<bool>("05 - Dark Gift I", "01 - Enabled", true, "Enable sun damage for Dark Gift I."); DarkGiftI_EnableSFX = config.Bind<bool>("05 - Dark Gift I", "02 - EnableSFX", true, "Enable sound effects when taking sun damage."); DarkGiftI_EnableVFX = config.Bind<bool>("05 - Dark Gift I", "03 - EnableVFX", true, "Enable visual effects when taking sun damage."); DarkGiftI_SFXPrefab = config.Bind<string>("05 - Dark Gift I", "04 - SFXPrefab", "sfx_torch_burning", "Prefab name for the sound effect to play."); DarkGiftI_VFXPrefab = config.Bind<string>("05 - Dark Gift I", "05 - VFXPrefab", "vfx_FireAddFuel", "Prefab name for the visual effect to play."); DarkGiftI_TickDamage = config.Bind<float>("05 - Dark Gift I", "06 - TickDamage", 5f, "Damage dealt per tick when exposed to sunlight."); DarkGiftI_DayStartHour = config.Bind<float>("05 - Dark Gift I", "07 - DayStartHour", 7f, "Hour when sun damage starts (0-24 format). Use decimals: 7.5 = 07:30, 18.75 = 18:45. Default 7 = 07:00 (7:00 AM)."); DarkGiftI_DayEndHour = config.Bind<float>("05 - Dark Gift I", "08 - DayEndHour", 17f, "Hour when sun damage ends (0-24 format). Use decimals: 17.5 = 17:30, 18.75 = 18:45. Default 17 = 17:00 (5:00 PM)."); DarkGiftI_WarningMinutesBefore = config.Bind<float>("05 - Dark Gift I", "09 - WarningMinutesBefore", 5f, "Minutes before sunrise to show warning message."); DarkGiftI_WarningMessage = config.Bind<string>("05 - Dark Gift I", "10 - WarningMessage", "The sun rises soon... Seek shelter!", "Warning message shown before sunrise."); DarkGiftI_SunsetWarningMinutesBefore = config.Bind<float>("05 - Dark Gift I", "11 - SunsetWarningMinutesBefore", 5f, "Minutes before sunset to show warning message."); DarkGiftI_SunsetWarningMessage = config.Bind<string>("05 - Dark Gift I", "12 - SunsetWarningMessage", "The sun sets soon... You may roam freely!", "Warning message shown before sunset."); DarkGiftII_Enabled = config.Bind<bool>("06 - Dark Gift II", "01 - Enabled", true, "Enable sun damage for Dark Gift II."); DarkGiftII_EnableSFX = config.Bind<bool>("06 - Dark Gift II", "02 - EnableSFX", true, "Enable sound effects when taking sun damage."); DarkGiftII_EnableVFX = config.Bind<bool>("06 - Dark Gift II", "03 - EnableVFX", true, "Enable visual effects when taking sun damage."); DarkGiftII_SFXPrefab = config.Bind<string>("06 - Dark Gift II", "04 - SFXPrefab", "sfx_torch_burning", "Prefab name for the sound effect to play."); DarkGiftII_VFXPrefab = config.Bind<string>("06 - Dark Gift II", "05 - VFXPrefab", "vfx_FireAddFuel", "Prefab name for the visual effect to play."); DarkGiftII_TickDamage = config.Bind<float>("06 - Dark Gift II", "06 - TickDamage", 10f, "Damage dealt per tick when exposed to sunlight."); DarkGiftII_DayStartHour = config.Bind<float>("06 - Dark Gift II", "07 - DayStartHour", 7f, "Hour when sun damage starts (0-24 format). Use decimals: 7.5 = 07:30, 18.75 = 18:45. Default 7 = 07:00 (7:00 AM)."); DarkGiftII_DayEndHour = config.Bind<float>("06 - Dark Gift II", "08 - DayEndHour", 17f, "Hour when sun damage ends (0-24 format). Use decimals: 17.5 = 17:30, 18.75 = 18:45. Default 17 = 17:00 (5:00 PM)."); DarkGiftII_WarningMinutesBefore = config.Bind<float>("06 - Dark Gift II", "09 - WarningMinutesBefore", 5f, "Minutes before sunrise to show warning message."); DarkGiftII_WarningMessage = config.Bind<string>("06 - Dark Gift II", "10 - WarningMessage", "The sun rises soon... Seek shelter!", "Warning message shown before sunrise."); DarkGiftII_SunsetWarningMinutesBefore = config.Bind<float>("06 - Dark Gift II", "11 - SunsetWarningMinutesBefore", 5f, "Minutes before sunset to show warning message."); DarkGiftII_SunsetWarningMessage = config.Bind<string>("06 - Dark Gift II", "12 - SunsetWarningMessage", "The sun sets soon... You may roam freely!", "Warning message shown before sunset."); DarkGiftIII_Enabled = config.Bind<bool>("07 - Dark Gift III", "01 - Enabled", true, "Enable sun damage for Dark Gift III."); DarkGiftIII_EnableSFX = config.Bind<bool>("07 - Dark Gift III", "02 - EnableSFX", true, "Enable sound effects when taking sun damage."); DarkGiftIII_EnableVFX = config.Bind<bool>("07 - Dark Gift III", "03 - EnableVFX", true, "Enable visual effects when taking sun damage."); DarkGiftIII_SFXPrefab = config.Bind<string>("07 - Dark Gift III", "04 - SFXPrefab", "sfx_torch_burning", "Prefab name for the sound effect to play."); DarkGiftIII_VFXPrefab = config.Bind<string>("07 - Dark Gift III", "05 - VFXPrefab", "vfx_FireAddFuel", "Prefab name for the visual effect to play."); DarkGiftIII_TickDamage = config.Bind<float>("07 - Dark Gift III", "06 - TickDamage", 15f, "Damage dealt per tick when exposed to sunlight."); DarkGiftIII_DayStartHour = config.Bind<float>("07 - Dark Gift III", "07 - DayStartHour", 7f, "Hour when sun damage starts (0-24 format). Use decimals: 7.5 = 07:30, 18.75 = 18:45. Default 7 = 07:00 (7:00 AM)."); DarkGiftIII_DayEndHour = config.Bind<float>("07 - Dark Gift III", "08 - DayEndHour", 17f, "Hour when sun damage ends (0-24 format). Use decimals: 17.5 = 17:30, 18.75 = 18:45. Default 17 = 17:00 (5:00 PM)."); DarkGiftIII_WarningMinutesBefore = config.Bind<float>("07 - Dark Gift III", "09 - WarningMinutesBefore", 5f, "Minutes before sunrise to show warning message."); DarkGiftIII_WarningMessage = config.Bind<string>("07 - Dark Gift III", "10 - WarningMessage", "The sun rises soon... Seek shelter!", "Warning message shown before sunrise."); DarkGiftIII_SunsetWarningMinutesBefore = config.Bind<float>("07 - Dark Gift III", "11 - SunsetWarningMinutesBefore", 5f, "Minutes before sunset to show warning message."); DarkGiftIII_SunsetWarningMessage = config.Bind<string>("07 - Dark Gift III", "12 - SunsetWarningMessage", "The sun sets soon... You may roam freely!", "Warning message shown before sunset."); DarkGiftIV_Enabled = config.Bind<bool>("08 - Dark Gift IV", "01 - Enabled", true, "Enable sun damage for Dark Gift IV."); DarkGiftIV_EnableSFX = config.Bind<bool>("08 - Dark Gift IV", "02 - EnableSFX", true, "Enable sound effects when taking sun damage."); DarkGiftIV_EnableVFX = config.Bind<bool>("08 - Dark Gift IV", "03 - EnableVFX", true, "Enable visual effects when taking sun damage."); DarkGiftIV_SFXPrefab = config.Bind<string>("08 - Dark Gift IV", "04 - SFXPrefab", "sfx_torch_burning", "Prefab name for the sound effect to play."); DarkGiftIV_VFXPrefab = config.Bind<string>("08 - Dark Gift IV", "05 - VFXPrefab", "vfx_FireAddFuel", "Prefab name for the visual effect to play."); DarkGiftIV_TickDamage = config.Bind<float>("08 - Dark Gift IV", "06 - TickDamage", 20f, "Damage dealt per tick when exposed to sunlight."); DarkGiftIV_DayStartHour = config.Bind<float>("08 - Dark Gift IV", "07 - DayStartHour", 7f, "Hour when sun damage starts (0-24 format). Use decimals: 7.5 = 07:30, 18.75 = 18:45. Default 7 = 07:00 (7:00 AM)."); DarkGiftIV_DayEndHour = config.Bind<float>("08 - Dark Gift IV", "08 - DayEndHour", 17f, "Hour when sun damage ends (0-24 format). Use decimals: 17.5 = 17:30, 18.75 = 18:45. Default 17 = 17:00 (5:00 PM)."); DarkGiftIV_WarningMinutesBefore = config.Bind<float>("08 - Dark Gift IV", "09 - WarningMinutesBefore", 5f, "Minutes before sunrise to show warning message."); DarkGiftIV_WarningMessage = config.Bind<string>("08 - Dark Gift IV", "10 - WarningMessage", "The sun rises soon... Seek shelter!", "Warning message shown before sunrise."); DarkGiftIV_SunsetWarningMinutesBefore = config.Bind<float>("08 - Dark Gift IV", "11 - SunsetWarningMinutesBefore", 5f, "Minutes before sunset to show warning message."); DarkGiftIV_SunsetWarningMessage = config.Bind<string>("08 - Dark Gift IV", "12 - SunsetWarningMessage", "The sun sets soon... You may roam freely!", "Warning message shown before sunset."); Tier4_SkinToggleHotkey = config.Bind<string>("08 - Dark Gift IV", "13 - Skin Toggle Hotkey", "V", "Hotkey to toggle vampire skin visibility for Tier 4 vampires. Allows master vampires to blend in with mortals."); Tier4_SkinToggleCooldown = config.Bind<float>("08 - Dark Gift IV", "14 - Skin Toggle Cooldown", 120f, "Cooldown in seconds between vampire skin toggles to prevent spam."); BatCommand_Enabled = config.Bind<bool>("09 - Bat Command", "01 - Enabled", true, "Enable the ability to command nearby tamed bats with a hotkey."); BatCommand_Hotkey = config.Bind<string>("09 - Bat Command", "02 - Hotkey", "C", "Hotkey to command all nearby tamed bats to follow you."); BatCommand_Radius = config.Bind<float>("09 - Bat Command", "03 - Command Radius", 50f, "Radius in meters to detect and command tamed bats."); BatSummon_Enabled = config.Bind<bool>("10 - Bat Summon", "01 - Enabled", true, "Enable the ability to summon bat familiars with a hotkey."); BatSummon_Hotkey = config.Bind<string>("10 - Bat Summon", "02 - Hotkey", "B", "Hotkey to summon bat familiars. Each vampire tier can summon a different number of bats."); BatSummon_EnableSFX = config.Bind<bool>("10 - Bat Summon", "03 - Enable SFX", true, "Enable sound effects when summoning bats."); BatSummon_EnableVFX = config.Bind<bool>("10 - Bat Summon", "04 - Enable VFX", false, "Enable visual effects when summoning bats."); BatSummon_SFXPrefab = config.Bind<string>("10 - Bat Summon", "05 - SFX Prefab", "sfx_fenring_howl1", "Prefab name for the sound effect to play when summoning bats."); BatSummon_VFXPrefab = config.Bind<string>("10 - Bat Summon", "06 - VFX Prefab", "", "Prefab name for the visual effect to play when summoning bats."); BatSummon_Tier1_MaxBats = config.Bind<int>("10 - Bat Summon", "07 - Tier 1 Max Bats", 1, "Maximum number of bats that can be summoned at Tier 1."); BatSummon_Tier1_Cooldown = config.Bind<float>("10 - Bat Summon", "08 - Tier 1 Cooldown", 2f, "Cooldown in seconds between bat summons for Tier 1 (default 2 minutes)."); BatSummon_Tier2_MaxBats = config.Bind<int>("10 - Bat Summon", "09 - Tier 2 Max Bats", 2, "Maximum number of bats that can be summoned at Tier 2."); BatSummon_Tier2_Cooldown = config.Bind<float>("10 - Bat Summon", "10 - Tier 2 Cooldown", 2f, "Cooldown in seconds between bat summons for Tier 2 (default 2 minutes)."); BatSummon_Tier3_MaxBats = config.Bind<int>("10 - Bat Summon", "11 - Tier 3 Max Bats", 3, "Maximum number of bats that can be summoned at Tier 3."); BatSummon_Tier3_Cooldown = config.Bind<float>("10 - Bat Summon", "12 - Tier 3 Cooldown", 2f, "Cooldown in seconds between bat summons for Tier 3 (default 2 minutes)."); BatSummon_Tier4_MaxBats = config.Bind<int>("10 - Bat Summon", "13 - Tier 4 Max Bats", 4, "Maximum number of bats that can be summoned at Tier 4."); BatSummon_Tier4_Cooldown = config.Bind<float>("10 - Bat Summon", "14 - Tier 4 Cooldown", 2f, "Cooldown in seconds between bat summons for Tier 4 (default 2 minutes)."); HomingProjectile_Enabled = config.Bind<bool>("11 - Homing Projectiles", "01 - Enabled", true, "Enable homing behavior for projectiles. Projectiles will fly straight briefly, then track the nearest enemy."); HomingProjectile_Whitelist = config.Bind<string>("11 - Homing Projectiles", "02 - Projectile Whitelist", "vampdragon_fireball_projectile,vampdragon_spitball_projectile", "Comma-separated list of projectile prefab names that should have homing behavior (e.g., 'vampdragon_fireball_projectile,arrow_fire'). Add any attack projectiles you want to make homing."); } } } namespace Shawesomes_Dark_Gift.Patches { [HarmonyPatch(typeof(EggGrow))] public static class DragonEggImprinting { private static Vector3 s_lastEggPosition; private static bool s_dragonEggHatching; [HarmonyPatch("GrowUpdate")] [HarmonyPrefix] private static void GrowUpdate_Prefix(EggGrow __instance) { //IL_0050: 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) if (!((Object)(object)__instance == (Object)null) && !((Object)(object)__instance.m_grownPrefab == (Object)null) && !((Object)(object)((Component)__instance).transform == (Object)null)) { string name = ((Object)__instance.m_grownPrefab).name; if (!(name != "sdg_vampiredragon")) { s_lastEggPosition = ((Component)__instance).transform.position; s_dragonEggHatching = true; } } } [HarmonyPatch("GrowUpdate")] [HarmonyPostfix] private static void GrowUpdate_Postfix(EggGrow __instance) { //IL_0036: Unknown result type (might be due to invalid IL or missing references) if (!((Object)(object)__instance == (Object)null) && s_dragonEggHatching) { s_dragonEggHatching = false; if ((Object)(object)ZNetScene.instance != (Object)null) { ((MonoBehaviour)ZNetScene.instance).StartCoroutine(ImprintDragonNextFrame(s_lastEggPosition)); } } } private static IEnumerator ImprintDragonNextFrame(Vector3 eggPosition) { //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_0008: Unknown result type (might be due to invalid IL or missing references) yield return null; Character dragon = null; float searchRadius = 5f; List<Character> allCharacters = Character.GetAllCharacters(); if (allCharacters == null) { yield break; } foreach (Character character in allCharacters) { if ((Object)(object)character == (Object)null || (Object)(object)((Component)character).gameObject == (Object)null || (Object)(object)((Component)character).transform == (Object)null) { continue; } string prefabName = ((Object)((Component)character).gameObject).name.Replace("(Clone)", "").Trim(); if (!(prefabName != "sdg_vampiredragon")) { float distance = Vector3.Distance(eggPosition, ((Component)character).transform.position); if (distance <= searchRadius) { dragon = character; break; } } } if (!((Object)(object)dragon == (Object)null)) { if (!dragon.IsTamed()) { yield return null; } ImprintDragon(dragon, eggPosition); } } private static void ImprintDragon(Character dragon, Vector3 position) { //IL_00f6: Unknown result type (might be due to invalid IL or missing references) //IL_00fe: Unknown result type (might be due to invalid IL or missing references) if ((Object)(object)dragon == (Object)null) { return; } Tameable component = ((Component)dragon).GetComponent<Tameable>(); if ((Object)(object)component == (Object)null) { return; } string hoverName = component.GetHoverName(); if (hoverName.Contains("'s Dragon Familiar")) { return; } Player val = null; float num = float.MaxValue; float num2 = 5f; VampireGift vampireGift = Object.FindObjectOfType<VampireGift>(); foreach (Player allPlayer in Player.GetAllPlayers()) { if ((Object)(object)allPlayer == (Object)null || (Object)(object)((Component)allPlayer).transform == (Object)null) { continue; } if ((Object)(object)vampireGift != (Object)null && (Object)(object)allPlayer == (Object)(object)Player.m_localPlayer) { if (!vampireGift.IsVampire || vampireGift.VampireTier < 4) { continue; } } else if ((Object)(object)allPlayer != (Object)(object)Player.m_localPlayer) { continue; } float num3 = Vector3.Distance(position, ((Component)allPlayer).transform.position); if (num3 < num && num3 <= num2) { num = num3; val = allPlayer; } } if (!((Object)(object)val != (Object)null)) { return; } string playerName = val.GetPlayerName(); string text = playerName + "'s Dragon Familiar"; if ((Object)(object)component.m_nview != (Object)null && component.m_nview.IsValid()) { component.m_nview.GetZDO().Set(ZDOVars.s_tamedName, text); if ((Object)(object)MessageHud.instance != (Object)null && (Object)(object)val == (Object)(object)Player.m_localPlayer) { MessageHud.instance.ShowMessage((MessageType)2, "A dragon has imprinted on you!", 0, (Sprite)null, false); } } } } [HarmonyPatch(typeof(Projectile), "Setup")] public static class HomingProjectilePatch { [HarmonyPostfix] private static void Projectile_Setup_Postfix(Projectile __instance, Character owner) { if (VampireConfig.HomingProjectile_Enabled.Value && !((Object)(object)__instance == (Object)null) && !((Object)(object)((Component)__instance).gameObject == (Object)null) && !((Object)(object)owner == (Object)null)) { string value = ((Object)((Component)__instance).gameObject).name.Replace("(Clone)", "").Trim(); string[] source = (from s in VampireConfig.HomingProjectile_Whitelist.Value.Split(new char[1] { ',' }) select s.Trim() into s where !string.IsNullOrEmpty(s) select s).ToArray(); if (source.Contains(value)) { HomingProjectile homingProjectile = ((Component)__instance).gameObject.AddComponent<HomingProjectile>(); homingProjectile.Initialize(owner); } } } } [HarmonyPatch(typeof(Tameable))] public static class SaddleActivationPatch { private static readonly Dictionary<string, List<string>> SaddleObjectPrefixes = new Dictionary<string, List<string>> { { "sdg_vampiredragon", new List<string> { "Mat", "Rune" } } }; [HarmonyPatch("SetSaddle")] [HarmonyPostfix] private static void SetSaddle_Postfix(Tameable __instance, bool enabled) { if ((Object)(object)__instance == (Object)null || (Object)(object)__instance.m_saddle == (Object)null) { return; } Character component = ((Component)__instance).GetComponent<Character>(); if ((Object)(object)component == (Object)null) { return; } string key = ((Object)((Component)component).gameObject).name.Replace("(Clone)", "").Trim(); if (!SaddleObjectPrefixes.ContainsKey(key)) { return; } List<string> list = SaddleObjectPrefixes[key]; if (list == null || list.Count == 0) { return; } Transform transform = ((Component)component).transform; foreach (string item in list) { List<Transform> list2 = FindAllChildrenWithPrefix(transform, item); foreach (Transform item2 in list2) { ((Component)item2).gameObject.SetActive(enabled); } } } private static List<Transform> FindAllChildrenWithPrefix(Transform parent, string prefix) { List<Transform> list = new List<Transform>(); FindAllChildrenWithPrefixRecursive(parent, prefix, list); return list; } private static void FindAllChildrenWithPrefixRecursive(Transform parent, string prefix, List<Transform> results) { //IL_0011: Unknown result type (might be due to invalid IL or missing references) //IL_0017: Expected O, but got Unknown foreach (Transform item in parent) { Transform val = item; if (((Object)val).name.StartsWith(prefix)) { results.Add(val); } FindAllChildrenWithPrefixRecursive(val, prefix, results); } } } [HarmonyPatch(typeof(Character))] public static class SaddleArmorSystem { public class ArmorConfig { public float MaxArmor { get; set; } public float ArmorPerLevel { get; set; } public float RegenDelay { get; set; } public float RegenRate { get; set; } public string? EffectGameObjectPrefix { get; set; } = ""; } private static readonly Dictionary<string, ArmorConfig> CreatureArmorConfigs = new Dictionary<string, ArmorConfig> { { "sdg_vampiredragon", new ArmorConfig { MaxArmor = 2000f, ArmorPerLevel = 500f, RegenDelay = 30f, RegenRate = 10f, EffectGameObjectPrefix = "Rune" } } }; private const string ARMOR_HP_KEY = "SaddleArmorHP"; private const string LAST_DAMAGE_TIME_KEY = "SaddleArmorLastDamage"; [HarmonyPatch("ApplyDamage")] [HarmonyPrefix] private static void ApplyDamage_Prefix(Character __instance, ref HitData hit) { if ((Object)(object)__instance == (Object)null || hit == null) { return; } Tameable component = ((Component)__instance).GetComponent<Tameable>(); if ((Object)(object)component == (Object)null || !component.HaveSaddle()) { return; } string key = ((Object)((Component)__instance).gameObject).name.Replace("(Clone)", "").Trim(); if (!CreatureArmorConfigs.ContainsKey(key)) { return; } ZNetView component2 = ((Component)__instance).GetComponent<ZNetView>(); if ((Object)(object)component2 == (Object)null || !component2.IsValid()) { return; } float maxArmorHP = GetMaxArmorHP(__instance); float @float = component2.GetZDO().GetFloat("SaddleArmorHP", maxArmorHP); if (@float > 0f) { float totalDamage = hit.GetTotalDamage(); if (totalDamage <= @float) { @float -= totalDamage; ((DamageTypes)(ref hit.m_damage)).Modify(0f); } else { float num = totalDamage - @float; @float = 0f; ((DamageTypes)(ref hit.m_damage)).Modify(num / totalDamage); } component2.GetZDO().Set("SaddleArmorHP", @float); component2.GetZDO().Set("SaddleArmorLastDamage", Time.time); } } [HarmonyPatch("Awake")] [HarmonyPostfix] private static void Awake_Postfix(Character __instance) { if ((Object)(object)__instance == (Object)null) { return; } Tameable component = ((Component)__instance).GetComponent<Tameable>(); if ((Object)(object)component == (Object)null) { return; } string key = ((Object)((Component)__instance).gameObject).name.Replace("(Clone)", "").Trim(); if (CreatureArmorConfigs.ContainsKey(key)) { SaddleArmorRegen component2 = ((Component)__instance).gameObject.GetComponent<SaddleArmorRegen>(); if ((Object)(object)component2 == (Object)null) { ((Component)__instance).gameObject.AddComponent<SaddleArmorRegen>(); } } } public static float GetArmorHP(Character character) { if ((Object)(object)character == (Object)null) { return 0f; } Tameable component = ((Component)character).GetComponent<Tameable>(); if ((Object)(object)component == (Object)null || !component.HaveSaddle()) { return 0f; } string key = ((Object)((Component)character).gameObject).name.Replace("(Clone)", "").Trim(); if (!CreatureArmorConfigs.ContainsKey(key)) { return 0f; } ZNetView component2 = ((Component)character).GetComponent<ZNetView>(); if ((Object)(object)component2 == (Object)null || !component2.IsValid()) { return 0f; } float maxArmorHP = GetMaxArmorHP(character); return component2.GetZDO().GetFloat("SaddleArmorHP", maxArmorHP); } public static float GetMaxArmorHP(Character character) { if ((Object)(object)character == (Object)null) { return 0f; } string key = ((Object)((Component)character).gameObject).name.Replace("(Clone)", "").Trim(); if (!CreatureArmorConfigs.ContainsKey(key)) { return 0f; } ArmorConfig armorConfig = CreatureArmorConfigs[key]; int saddleQuality = GetSaddleQuality(character); return armorConfig.MaxArmor + armorConfig.ArmorPerLevel * (float)(saddleQuality - 1); } private static int GetSaddleQuality(Character character) { Tameable component = ((Component)character).GetComponent<Tameable>(); if ((Object)(object)component == (Object)null || (Object)(object)component.m_saddleItem == (Object)null) { return 1; } return component.m_saddleItem.m_itemData.m_quality; } public static ArmorConfig? GetArmorConfig(string prefabName) { if (CreatureArmorConfigs.ContainsKey(prefabName)) { return CreatureArmorConfigs[prefabName]; } return null; } } public class SaddleArmorRegen : MonoBehaviour { private Character? _character = null; private Tameable? _tameable = null; private ZNetView? _nview = null; private string? _prefabName = null; private List<GameObject> _effectObjects = new List<GameObject>(); private bool _lastArmorState = true; private void Awake() { _character = ((Component)this).GetComponent<Character>(); _tameable = ((Component)this).GetComponent<Tameable>(); _nview = ((Component)this).GetComponent<ZNetView>(); _prefabName = ((Object)((Component)this).gameObject).name.Replace("(Clone)", "").Trim(); } private void Start() { if (_prefabName == null) { return; } SaddleArmorSystem.ArmorConfig armorConfig = SaddleArmorSystem.GetArmorConfig(_prefabName); if (armorConfig != null && !string.IsNullOrEmpty(armorConfig.EffectGameObjectPrefix)) { FindAllChildrenWithPrefix(((Component)this).transform, armorConfig.EffectGameObjectPrefix, _effectObjects); if (_effectObjects.Count > 0) { UpdateEffectState(active: true); } } } private void FixedUpdate() { if ((Object)(object)_character == (Object)null || (Object)(object)_tameable == (Object)null || !_tameable.HaveSaddle()) { UpdateEffectState(active: false); } else { if ((Object)(object)_nview == (Object)null || !_nview.IsValid() || !_nview.IsOwner() || _prefabName == null) { return; } SaddleArmorSystem.ArmorConfig armorConfig = SaddleArmorSystem.GetArmorConfig(_prefabName); if (armorConfig == null) { return; } float maxArmorHP = SaddleArmorSystem.GetMaxArmorHP(_character); float @float = _nview.GetZDO().GetFloat("SaddleArmorHP", maxArmorHP); bool active = @float > 0f; UpdateEffectState(active); if (!(@float < maxArmorHP)) { return; } float float2 = _nview.GetZDO().GetFloat("SaddleArmorLastDamage", 0f); float num = Time.time - float2; if (num >= armorConfig.RegenDelay) { @float += armorConfig.RegenRate * Time.fixedDeltaTime; if (@float > maxArmorHP) { @float = maxArmorHP; } _nview.GetZDO().Set("SaddleArmorHP", @float); } } } private void UpdateEffectState(bool active) { if (_effectObjects.Count <= 0 || _lastArmorState == active) { return; } foreach (GameObject effectObject in _effectObjects) { if ((Object)(object)effectObject != (Object)null) { effectObject.SetActive(active); } } _lastArmorState = active; } private void FindAllChildrenWithPrefix(Transform parent, string prefix, List<GameObject> results) { //IL_0011: Unknown result type (might be due to invalid IL or missing references) //IL_0017: Expected O, but got Unknown foreach (Transform item in parent) { Transform val = item; if (((Object)val).name.StartsWith(prefix)) { results.Add(((Component)val).gameObject); } FindAllChildrenWithPrefix(val, prefix, results); } } } public static class SimpleMountController { public class AttackMapping { public KeyCode Key { get; set; } public int AttackIndex { get; set; } = -1; public string? AttackPrefab { get; set; } = null; public float StaminaCost { get; set; } = 0f; public float Cooldown { get; set; } = 0.5f; } public class CreatureAttackConfig { public List<AttackMapping>? GroundAttacks { get; set; } public List<AttackMapping>? AirAttacks { get; set; } } [HarmonyPatch(typeof(Player), "SetControls")] [HarmonyPriority(800)] public static class MountControlsPatch { private static List<ItemData>? s_cachedWeapons; private static float s_lastWeaponCacheTime; private const float WEAPON_CACHE_DURATION = 1f; private static void Prefix(Player __instance, ref bool attack, ref bool secondaryAttack, ref bool block, ref bool jump) { //IL_016f: Unknown result type (might be due to invalid IL or missing references) //IL_017d: Unknown result type (might be due to invalid IL or missing references) //IL_0187: Invalid comparison between Unknown and I4 //IL_0190: Unknown result type (might be due to invalid IL or missing references) //IL_019a: Invalid comparison between Unknown and I4 //IL_01c2: Unknown result type (might be due to invalid IL or missing references) if (!((Character)__instance).IsRiding()) { return; } IDoodadController doodadController = __instance.m_doodadController; Sadle val = (Sadle)(object)((doodadController is Sadle) ? doodadController : null); if ((Object)(object)val == (Object)null || (Object)(object)val.m_character == (Object)null) { return; } string text = ((Object)((Component)val.m_character).gameObject).name.Replace("(Clone)", "").Trim(); if (!ManagedCreatures.Contains(text)) { return; } if (IsUIOpen()) { s_flightKeyPressed = false; s_attackKeysPressed.Clear(); attack = false; secondaryAttack = false; jump = false; return; } if (CanFly(val) && GetFlightKeyDown()) { ToggleFlight(val); } bool flag = CanFly(val) && val.m_character.IsFlying(); if (flag & jump) { jump = false; } if (jump && !flag) { val.m_character.Jump(false); jump = false; } if (AttackConfigs.TryGetValue(text, out CreatureAttackConfig value)) { List<AttackMapping> list = (flag ? value.AirAttacks : value.GroundAttacks); if (list == null) { return; } foreach (AttackMapping item in list) { if (!GetAttackKeyDown(item.Key) && !(((int)item.Key == 323) & attack) && !(((int)item.Key == 324) & block)) { continue; } string key = $"{((object)val).GetHashCode()}_{item.Key}"; if (s_attackCooldowns.TryGetValue(key, out var value2) && Time.time < value2) { break; } if (item.StaminaCost > 0f && !HasEnoughStamina(val, item.StaminaCost)) { Player localPlayer = Player.m_localPlayer; if (localPlayer != null) { ((Character)localPlayer).Message((MessageType)2, "Not enough stamina!", 0, (Sprite)null); } break; } int attackIndex = ResolveAttackIndex(val, item, flag); if (item.StaminaCost > 0f) { ConsumeStamina(val, item.StaminaCost); } HandleAttack(val, attackIndex); s_attackCooldowns[key] = Time.time + item.Cooldown; break; } } attack = false; secondaryAttack = false; block = false; } private static bool IsUIOpen() { return ((Object)(object)Chat.instance != (Object)null && Chat.instance.HasFocus()) || Console.IsVisible() || TextInput.IsVisible() || Menu.IsVisible() || InventoryGui.IsVisible() || StoreGui.IsVisible() || Minimap.IsOpen(); } private static void ToggleFlight(Sadle sadle) { if ((Object)(object)sadle == (Object)null || (Object)(object)sadle.m_character == (Object)null) { return; } sadle.m_character.m_flying = !sadle.m_character.m_flying; if ((Object)(object)sadle.m_character.m_animator != (Object)null) { if (sadle.m_character.m_flying) { sadle.m_character.m_animator.SetTrigger(TakeoffAnimationTrigger); } else { sadle.m_character.m_animator.SetTrigger(LandingAnimationTrigger); } } string text = (sadle.m_character.m_flying ? "Flight enabled" : "Flight disabled"); Player localPlayer = Player.m_localPlayer; if (localPlayer != null) { ((Character)localPlayer).Message((MessageType)2, text, 0, (