Decompiled source of Minionz v1.0.0
Minionz.dll
Decompiled 2 weeks 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.Concurrent; using System.Collections.Generic; using System.Collections.ObjectModel; using System.ComponentModel; using System.Diagnostics; using System.Diagnostics.CodeAnalysis; using System.Globalization; using System.IO; using System.IO.Compression; using System.Linq; using System.Linq.Expressions; using System.Reflection; using System.Reflection.Emit; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using System.Runtime.Serialization; using System.Runtime.Versioning; using System.Security; using System.Security.Permissions; using System.Text; using System.Text.RegularExpressions; using BepInEx; using BepInEx.Bootstrap; using BepInEx.Configuration; using HarmonyLib; using ItemManager; using JetBrains.Annotations; using LocalizationManager; using Microsoft.CodeAnalysis; using Minionz.Functions; using ServerSync; using TMPro; using UnityEngine; using YamlDotNet.Core; using YamlDotNet.Core.Events; using YamlDotNet.Core.Tokens; using YamlDotNet.Helpers; using YamlDotNet.Serialization; using YamlDotNet.Serialization.Converters; using YamlDotNet.Serialization.EventEmitters; using YamlDotNet.Serialization.NamingConventions; using YamlDotNet.Serialization.NodeDeserializers; using YamlDotNet.Serialization.NodeTypeResolvers; using YamlDotNet.Serialization.ObjectFactories; using YamlDotNet.Serialization.ObjectGraphTraversalStrategies; using YamlDotNet.Serialization.ObjectGraphVisitors; using YamlDotNet.Serialization.Schemas; using YamlDotNet.Serialization.TypeInspectors; using YamlDotNet.Serialization.TypeResolvers; using YamlDotNet.Serialization.Utilities; using YamlDotNet.Serialization.ValueDeserializers; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)] [assembly: AssemblyTitle("Minionz")] [assembly: AssemblyDescription("")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("blacks7ar")] [assembly: AssemblyProduct("Minionz")] [assembly: AssemblyCopyright("Copyright © 2024")] [assembly: AssemblyTrademark("")] [assembly: ComVisible(false)] [assembly: Guid("012767FA-8A90-44AC-815C-204EEE66ABB8")] [assembly: AssemblyFileVersion("1.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] [module: RefSafetyRules(11)] namespace Microsoft.CodeAnalysis { [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] internal sealed class EmbeddedAttribute : Attribute { } } namespace System.Runtime.CompilerServices { [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] [AttributeUsage(AttributeTargets.Module, AllowMultiple = false, Inherited = false)] internal sealed class RefSafetyRulesAttribute : Attribute { public readonly int Version; public RefSafetyRulesAttribute(int P_0) { Version = P_0; } } } namespace Minionz { [BepInPlugin("blacks7ar.Minionz", "Minionz", "1.0.0")] public class Plugin : BaseUnityPlugin { public enum Toggle { On = 1, Off = 0 } private const string modGUID = "blacks7ar.Minionz"; public const string modName = "Minionz"; public const string modAuthor = "blacks7ar"; public const string modVersion = "1.0.0"; public const string modLink = ""; private static readonly Harmony _harmony = new Harmony("blacks7ar.Minionz"); private static readonly ConfigSync _configSync = new ConfigSync("blacks7ar.Minionz") { DisplayName = "Minionz", CurrentVersion = "1.0.0", MinimumRequiredVersion = "1.0.0", ModRequired = true }; private static ConfigEntry<Toggle> _serverConfigLocked; public static ConfigEntry<KeyboardShortcut> _unSummonKey; public ConfigEntry<T> config<T>(string group, string name, T value, ConfigDescription description, bool _synchronizedConfig = true) { //IL_002a: Unknown result type (might be due to invalid IL or missing references) //IL_0030: Expected O, but got Unknown ConfigDescription val = new ConfigDescription(description.Description + (_synchronizedConfig ? " [Synced with Server]" : " [Not Synced with Server]"), description.AcceptableValues, description.Tags); ConfigEntry<T> val2 = ((BaseUnityPlugin)this).Config.Bind<T>(group, name, value, val); _configSync.AddConfigEntry<T>(val2).SynchronizedConfig = _synchronizedConfig; return val2; } public void Awake() { //IL_0028: Unknown result type (might be due to invalid IL or missing references) //IL_0033: Expected O, but got Unknown //IL_0063: Unknown result type (might be due to invalid IL or missing references) //IL_0073: Unknown result type (might be due to invalid IL or missing references) //IL_007e: Expected O, but got Unknown Localizer.Load(); ((BaseUnityPlugin)this).Config.SaveOnConfigSet = false; _serverConfigLocked = config("1- ServerSync", "Lock Configuration", Toggle.On, new ConfigDescription("If On, the configuration is locked and can be changed by server admins only.", (AcceptableValueBase)null, Array.Empty<object>())); _configSync.AddLockingConfigEntry<Toggle>(_serverConfigLocked); _unSummonKey = config<KeyboardShortcut>("2- General", "UnSummon Key", new KeyboardShortcut((KeyCode)102, (KeyCode[])(object)new KeyCode[1] { (KeyCode)304 }), new ConfigDescription("Hotkey combination to unsummon minion.", (AcceptableValueBase)null, Array.Empty<object>()), _synchronizedConfig: false); MinionHelper.CloneContainer(); PrefabSetups.Init(); ((BaseUnityPlugin)this).Config.SaveOnConfigSet = true; ((BaseUnityPlugin)this).Config.Save(); Assembly executingAssembly = Assembly.GetExecutingAssembly(); _harmony.PatchAll(executingAssembly); } private void OnDestroy() { ((BaseUnityPlugin)this).Config.Save(); } } } namespace Minionz.Functions { public static class Helper { public static void AddClonedObject(this ZNetScene zNetScene, GameObject gameObject, bool overWrite = true) { GameObject prefab; if ((Object)(object)(prefab = zNetScene.GetPrefab(((Object)gameObject).name)) != (Object)null) { if (!overWrite) { return; } zNetScene.m_prefabs.Remove(prefab); zNetScene.m_namedPrefabs.Remove(StringExtensionMethods.GetStableHashCode(((Object)gameObject).name)); } zNetScene.m_prefabs.Add(gameObject); zNetScene.m_namedPrefabs.Add(StringExtensionMethods.GetStableHashCode(((Object)gameObject).name), gameObject); } public static bool ZNetSceneAwake() { if ((Object)(object)ZNetScene.instance != (Object)null && ZNetScene.instance.m_prefabs.Count != 0) { return (Object)(object)ZNetScene.instance.GetPrefab("piece_workbench") != (Object)null; } return false; } } public static class MinionHelper { private static GameObject _CloneContainer; public static void CreateMinions(ZNetScene zNetScene) { //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_005c: Unknown result type (might be due to invalid IL or missing references) //IL_0085: Unknown result type (might be due to invalid IL or missing references) //IL_00ae: Unknown result type (might be due to invalid IL or missing references) //IL_00d7: Unknown result type (might be due to invalid IL or missing references) //IL_0100: Unknown result type (might be due to invalid IL or missing references) //IL_0129: Unknown result type (might be due to invalid IL or missing references) //IL_0152: Unknown result type (might be due to invalid IL or missing references) //IL_017b: Unknown result type (might be due to invalid IL or missing references) //IL_01a4: Unknown result type (might be due to invalid IL or missing references) //IL_01cd: Unknown result type (might be due to invalid IL or missing references) //IL_01f6: Unknown result type (might be due to invalid IL or missing references) //IL_021f: Unknown result type (might be due to invalid IL or missing references) //IL_0248: Unknown result type (might be due to invalid IL or missing references) //IL_0271: Unknown result type (might be due to invalid IL or missing references) //IL_029a: Unknown result type (might be due to invalid IL or missing references) //IL_02c3: Unknown result type (might be due to invalid IL or missing references) //IL_02ec: Unknown result type (might be due to invalid IL or missing references) //IL_0315: Unknown result type (might be due to invalid IL or missing references) //IL_033e: Unknown result type (might be due to invalid IL or missing references) //IL_0367: Unknown result type (might be due to invalid IL or missing references) //IL_0390: Unknown result type (might be due to invalid IL or missing references) //IL_03b9: Unknown result type (might be due to invalid IL or missing references) //IL_03e2: Unknown result type (might be due to invalid IL or missing references) //IL_040b: Unknown result type (might be due to invalid IL or missing references) //IL_0434: Unknown result type (might be due to invalid IL or missing references) //IL_045d: Unknown result type (might be due to invalid IL or missing references) //IL_0486: Unknown result type (might be due to invalid IL or missing references) //IL_04af: Unknown result type (might be due to invalid IL or missing references) //IL_04d8: Unknown result type (might be due to invalid IL or missing references) //IL_0501: Unknown result type (might be due to invalid IL or missing references) //IL_052a: Unknown result type (might be due to invalid IL or missing references) //IL_0553: Unknown result type (might be due to invalid IL or missing references) //IL_057c: Unknown result type (might be due to invalid IL or missing references) //IL_05a5: Unknown result type (might be due to invalid IL or missing references) //IL_05ce: Unknown result type (might be due to invalid IL or missing references) //IL_05f7: Unknown result type (might be due to invalid IL or missing references) //IL_0620: Unknown result type (might be due to invalid IL or missing references) //IL_0649: Unknown result type (might be due to invalid IL or missing references) //IL_0672: Unknown result type (might be due to invalid IL or missing references) //IL_069b: Unknown result type (might be due to invalid IL or missing references) //IL_06c4: Unknown result type (might be due to invalid IL or missing references) //IL_06ed: Unknown result type (might be due to invalid IL or missing references) //IL_0716: Unknown result type (might be due to invalid IL or missing references) //IL_073f: Unknown result type (might be due to invalid IL or missing references) CloneContainer(); Create(zNetScene, "Abomination", "BVM_AbominationMinion", "$bvm_abominationminion", new Vector3(0.15f, 0.15f, 0.15f)); Create(zNetScene, new StringBuilder().Append("Asksvin").ToString(), "BVM_AsksvinMinion", "$bvm_asksvinminion", new Vector3(0.3f, 0.3f, 0.3f)); Create(zNetScene, "Bat", "BVM_BatMinion", "$bvm_batminion", new Vector3(0.5f, 0.5f, 0.5f)); Create(zNetScene, "Blob", "BVM_BlobMinion", "$bvm_blobminion", new Vector3(0.35f, 0.35f, 0.35f)); Create(zNetScene, "BlobElite", "BVM_BlobEliteMinion", "$bvm_blobeliteminion", new Vector3(0.3f, 0.3f, 0.3f)); Create(zNetScene, "BlobLava", "BVM_BlobLavaMinion", "$bvm_bloblavaminion", new Vector3(0.25f, 0.25f, 0.25f)); Create(zNetScene, "BlobTar", "BVM_BlobTarMinion", "$bvm_blobtarminion", new Vector3(0.35f, 0.35f, 0.35f)); Create(zNetScene, "Boar", "BVM_BoarMinion", "$bvm_boarminion", new Vector3(0.55f, 0.55f, 0.55f)); Create(zNetScene, "Bonemass", "BVM_BonemassMinion", "$bvm_bonemassminion", new Vector3(0.12f, 0.12f, 0.12f)); Create(zNetScene, "Hen", "BVM_HenMinion", "$bvm_henminion", new Vector3(0.6f, 0.6f, 0.6f)); Create(zNetScene, "Deathsquito", "BVM_DeathsquitoMinion", "$bvm_deathsquitominion", new Vector3(0.5f, 0.5f, 0.5f)); Create2(zNetScene, "Deer", "BVM_DeerMinion", "$bvm_deerminion", new Vector3(0.4f, 0.4f, 0.4f)); Create(zNetScene, "Dragon", "BVM_DragonMinion", "$bvm_dragonminion", new Vector3(0.09f, 0.09f, 0.09f)); Create(zNetScene, "Draugr", "BVM_DraugrMinion", "$bvm_draugrminion", new Vector3(0.45f, 0.45f, 0.45f)); Create(zNetScene, "Eikthyr", "BVM_EikthyrMinion", "$bvm_eikthyrminion", new Vector3(0.22f, 0.22f, 0.22f)); Create(zNetScene, "Fader", "BVM_FaderMinion", "$bvm_faderminion", new Vector3(0.1f, 0.1f, 0.1f)); Create(zNetScene, "FallenValkyrie", "BVM_FallenValkyrieMinion", "$bvm_fallenvalkyrieminion", new Vector3(0.1f, 0.1f, 0.1f)); Create(zNetScene, "Fenring", "BVM_FenringMinion", "$bvm_fenringminion", new Vector3(0.35f, 0.35f, 0.35f)); Create(zNetScene, "Fenring_Cultist", "BVM_FenringCultistMinion", "$bvm_fenringcultistminion", new Vector3(0.35f, 0.35f, 0.35f)); Create(zNetScene, "Gjall", "BVM_GjallMinion", "$bvm_gjallminion", new Vector3(0.1f, 0.1f, 0.1f)); Create(zNetScene, "Goblin", "BVM_GoblinMinion", "$bvm_goblinminion", new Vector3(0.55f, 0.55f, 0.55f)); Create(zNetScene, "GoblinBrute", "BVM_GoblinBruteMinion", "$bvm_goblinbruteminion", new Vector3(0.25f, 0.25f, 0.25f)); Create(zNetScene, "GoblinKing", "BVM_GoblinKingMinion", "$bvm_goblinkingminion", new Vector3(0.12f, 0.12f, 0.12f)); Create(zNetScene, "GoblinShaman", "BVM_GoblinShamanMinion", "$bvm_goblinshamanminion", new Vector3(0.55f, 0.55f, 0.55f)); Create(zNetScene, "Greydwarf", "BVM_GreydwarfMinion", "$bvm_greydwarfminion", new Vector3(0.35f, 0.35f, 0.35f)); Create(zNetScene, "Greydwarf_Elite", "BVM_GreydwarfEliteMinion", "$bvm_greydwarfeliteminion", new Vector3(0.3f, 0.3f, 0.3f)); Create(zNetScene, "Greydwarf_Shaman", "BVM_GreydwarfShamanMinion", "$bvm_greydwarfshamanminion", new Vector3(0.35f, 0.35f, 0.35f)); Create(zNetScene, "gd_king", "BVM_ElderMinion", "$bvm_elderminion", new Vector3(0.1f, 0.1f, 0.1f)); Create3(zNetScene, "Hare", "BVM_HareMinion", "$bvm_hareminion", new Vector3(0.45f, 0.45f, 0.45f)); Create(zNetScene, "Hatchling", "BVM_HatchlingMinion", "$bvm_hatchlingminion", new Vector3(0.3f, 0.3f, 0.3f)); Create(zNetScene, "Lox", "BVM_LoxMinion", "$bvm_loxminion", new Vector3(0.15f, 0.15f, 0.15f)); Create(zNetScene, "Neck", "BVM_NeckMinion", "$bvm_neckminion", new Vector3(0.5f, 0.5f, 0.5f)); Create(zNetScene, "Seeker", "BVM_SeekerMinion", "$bvm_seekerminion", new Vector3(0.35f, 0.35f, 0.35f)); Create(zNetScene, "SeekerBrute", "BVM_SeekerBruteMinion", "$bvm_seekerbruteminion", new Vector3(0.25f, 0.25f, 0.25f)); Create(zNetScene, "SeekerQueen", "BVM_SeekerQueenMinion", "$bvm_seekerqueenminion", new Vector3(0.08f, 0.08f, 0.08f)); Create(zNetScene, "Skeleton", "BVM_SkeletonMinion", "$bvm_skeletonminion", new Vector3(0.35f, 0.35f, 0.35f)); Create(zNetScene, "Skeleton_Poison", "BVM_SkeletonPoisonMinion", "$bvm_skeletonpoisonminion", new Vector3(0.3f, 0.3f, 0.3f)); Create(zNetScene, "StoneGolem", "BVM_StoneGolemMinion", "$bvm_stonegolemminion", new Vector3(0.15f, 0.15f, 0.15f)); Create(zNetScene, "Surtling", "BVM_SurtlingMinion", "$bvm_surtlingminion", new Vector3(0.5f, 0.5f, 0.5f)); Create(zNetScene, "Charred_Melee", "BVM_CharredMeleeMinion", "$bvm_charredmeleeminion", new Vector3(0.35f, 0.35f, 0.35f)); Create(zNetScene, "Troll", "BVM_TrollMinion", "$bvm_trollminion", new Vector3(0.12f, 0.12f, 0.12f)); Create(zNetScene, "Ulv", "BVM_UlvMinion", "$bvm_ulvminion", new Vector3(0.4f, 0.4f, 0.4f)); Create(zNetScene, "Volture", "BVM_VoltureMinion", "$bvm_voltureminion", new Vector3(0.25f, 0.25f, 0.25f)); Create(zNetScene, "Wolf", "BVM_WolfMinion", "$bvm_wolfminion", new Vector3(0.4f, 0.4f, 0.4f)); Create(zNetScene, "Wraith", "BVM_WraithMinion", "$bvm_wraithminion", new Vector3(0.3f, 0.3f, 0.3f)); SetupAbomination(zNetScene); SetupBonemass(zNetScene); SetupElder(zNetScene); SetupFallenValkyrie(zNetScene); SetupYagluth(zNetScene); SetupFader(zNetScene); SetupGjall(zNetScene); } private static void Create(ZNetScene zNetScene, string prefabName, string newPrefabName, string name, Vector3 scale) { //IL_002f: Unknown result type (might be due to invalid IL or missing references) //IL_005c: Unknown result type (might be due to invalid IL or missing references) //IL_00a5: Unknown result type (might be due to invalid IL or missing references) //IL_00aa: Unknown result type (might be due to invalid IL or missing references) //IL_00bb: Unknown result type (might be due to invalid IL or missing references) //IL_00c2: Unknown result type (might be due to invalid IL or missing references) //IL_00ca: Expected O, but got Unknown //IL_00d2: Unknown result type (might be due to invalid IL or missing references) //IL_00db: Unknown result type (might be due to invalid IL or missing references) //IL_00e3: Unknown result type (might be due to invalid IL or missing references) //IL_00eb: Unknown result type (might be due to invalid IL or missing references) //IL_00f3: Unknown result type (might be due to invalid IL or missing references) //IL_00fb: Unknown result type (might be due to invalid IL or missing references) //IL_0103: Unknown result type (might be due to invalid IL or missing references) //IL_010b: Unknown result type (might be due to invalid IL or missing references) //IL_0113: Unknown result type (might be due to invalid IL or missing references) //IL_011b: Unknown result type (might be due to invalid IL or missing references) //IL_0123: Unknown result type (might be due to invalid IL or missing references) //IL_0128: Unknown result type (might be due to invalid IL or missing references) //IL_0129: Unknown result type (might be due to invalid IL or missing references) //IL_0212: Unknown result type (might be due to invalid IL or missing references) //IL_0217: Unknown result type (might be due to invalid IL or missing references) //IL_0228: Unknown result type (might be due to invalid IL or missing references) //IL_022f: Unknown result type (might be due to invalid IL or missing references) //IL_0237: Expected O, but got Unknown //IL_024a: Unknown result type (might be due to invalid IL or missing references) //IL_024f: Unknown result type (might be due to invalid IL or missing references) //IL_0260: Unknown result type (might be due to invalid IL or missing references) //IL_0267: Unknown result type (might be due to invalid IL or missing references) //IL_026f: Expected O, but got Unknown GameObject val = zNetScene.GetPrefab(StringExtensionMethods.GetStableHashCode(prefabName)).Clone(newPrefabName); val.transform.SetParent(_CloneContainer.transform, false); val.transform.localScale = scale; Humanoid component = val.GetComponent<Humanoid>(); ((Character)component).m_name = name; ((Character)component).m_group = "PlayerMinion"; ((Character)component).m_defeatSetGlobalKey = ""; ((Character)component).m_faction = (Faction)0; ((Character)component).m_boss = false; ((Character)component).m_dontHideBossHud = false; ((Character)component).m_bossEvent = ""; ((Character)component).m_aiSkipTarget = true; ((Character)component).m_walkSpeed = 5f; ((Character)component).m_runSpeed = 8f; ((Character)component).m_deathEffects.m_effectPrefabs = (EffectData[])(object)new EffectData[1] { new EffectData { m_prefab = zNetScene.GetPrefab("vfx_Place_workbench"), m_enabled = true, m_variant = -1 } }; ((Character)component).m_damageModifiers = new DamageModifiers { m_blunt = (DamageModifier)3, m_slash = (DamageModifier)3, m_pierce = (DamageModifier)3, m_chop = (DamageModifier)3, m_pickaxe = (DamageModifier)3, m_fire = (DamageModifier)3, m_frost = (DamageModifier)3, m_lightning = (DamageModifier)3, m_poison = (DamageModifier)3, m_spirit = (DamageModifier)3 }; component.m_defaultItems = Array.Empty<GameObject>(); component.m_randomWeapon = Array.Empty<GameObject>(); component.m_randomShield = Array.Empty<GameObject>(); component.m_randomSets = Array.Empty<ItemSet>(); MonsterAI component2 = val.GetComponent<MonsterAI>(); ((BaseAI)component2).m_viewRange = 0f; ((BaseAI)component2).m_hearRange = 0f; component2.m_alertRange = 0f; ((BaseAI)component2).m_idleSound.m_effectPrefabs = Array.Empty<EffectData>(); ((BaseAI)component2).m_spawnMessage = ""; ((BaseAI)component2).m_deathMessage = ""; ((BaseAI)component2).m_flyAltitudeMin = 1f; component2.m_sleeping = false; component2.m_enableHuntPlayer = false; component2.m_attackPlayerObjects = false; val.RemoveComponent(typeof(CharacterDrop)); val.RemoveComponent(typeof(Procreation)); if (!Object.op_Implicit((Object)(object)val.GetComponent<Tameable>())) { Tameable val2 = val.AddComponent<Tameable>(); val2.m_startsTamed = true; val2.m_sootheEffect.m_effectPrefabs = (EffectData[])(object)new EffectData[1] { new EffectData { m_prefab = zNetScene.GetPrefab("vfx_creature_soothed"), m_enabled = true, m_variant = -1 } }; val2.m_petEffect.m_effectPrefabs = (EffectData[])(object)new EffectData[1] { new EffectData { m_prefab = zNetScene.GetPrefab("fx_skeleton_pet"), m_enabled = true, m_variant = -1 } }; val2.m_commandable = false; val2.m_unsummonDistance = 0f; val2.m_unsummonOnOwnerLogoutSeconds = 0f; val2.m_unSummonEffect = ((Character)component).m_deathEffects; } else { Tameable component3 = val.GetComponent<Tameable>(); component3.m_startsTamed = true; component3.m_commandable = false; component3.m_unsummonDistance = 0f; component3.m_unsummonOnOwnerLogoutSeconds = 0f; component3.m_unSummonEffect = ((Character)component).m_deathEffects; component3.m_saddleItem = null; component3.m_saddle = null; component3.m_dropSaddleOnDeath = false; } val.RemoveComponent(typeof(MovementDamage)); zNetScene.AddClonedObject(val); } private static void Create2(ZNetScene zNetScene, string prefabName, string newPrefabName, string name, Vector3 scale) { //IL_002a: Unknown result type (might be due to invalid IL or missing references) //IL_005c: Unknown result type (might be due to invalid IL or missing references) //IL_0137: Unknown result type (might be due to invalid IL or missing references) //IL_0189: Unknown result type (might be due to invalid IL or missing references) //IL_018e: Unknown result type (might be due to invalid IL or missing references) //IL_019f: Unknown result type (might be due to invalid IL or missing references) //IL_01a6: Unknown result type (might be due to invalid IL or missing references) //IL_01ae: Expected O, but got Unknown //IL_01c1: Unknown result type (might be due to invalid IL or missing references) //IL_01c6: Unknown result type (might be due to invalid IL or missing references) //IL_01d7: Unknown result type (might be due to invalid IL or missing references) //IL_01de: Unknown result type (might be due to invalid IL or missing references) //IL_01e6: Expected O, but got Unknown //IL_0200: Unknown result type (might be due to invalid IL or missing references) //IL_0209: Unknown result type (might be due to invalid IL or missing references) //IL_0211: Unknown result type (might be due to invalid IL or missing references) //IL_0219: Unknown result type (might be due to invalid IL or missing references) //IL_0221: Unknown result type (might be due to invalid IL or missing references) //IL_0229: Unknown result type (might be due to invalid IL or missing references) //IL_0231: Unknown result type (might be due to invalid IL or missing references) //IL_0239: Unknown result type (might be due to invalid IL or missing references) //IL_0241: Unknown result type (might be due to invalid IL or missing references) //IL_0249: Unknown result type (might be due to invalid IL or missing references) //IL_0251: Unknown result type (might be due to invalid IL or missing references) //IL_0256: Unknown result type (might be due to invalid IL or missing references) //IL_0258: Unknown result type (might be due to invalid IL or missing references) //IL_0298: Unknown result type (might be due to invalid IL or missing references) //IL_029d: Unknown result type (might be due to invalid IL or missing references) //IL_02ae: Unknown result type (might be due to invalid IL or missing references) //IL_02b5: Unknown result type (might be due to invalid IL or missing references) //IL_02bd: Expected O, but got Unknown //IL_02ea: Unknown result type (might be due to invalid IL or missing references) //IL_03bd: Unknown result type (might be due to invalid IL or missing references) //IL_03c2: Unknown result type (might be due to invalid IL or missing references) //IL_03d3: Unknown result type (might be due to invalid IL or missing references) //IL_03da: Unknown result type (might be due to invalid IL or missing references) //IL_03e2: Expected O, but got Unknown //IL_03f5: Unknown result type (might be due to invalid IL or missing references) //IL_03fa: Unknown result type (might be due to invalid IL or missing references) //IL_040b: Unknown result type (might be due to invalid IL or missing references) //IL_0412: Unknown result type (might be due to invalid IL or missing references) //IL_041a: Expected O, but got Unknown //IL_044a: Unknown result type (might be due to invalid IL or missing references) //IL_044f: Unknown result type (might be due to invalid IL or missing references) //IL_0460: Unknown result type (might be due to invalid IL or missing references) //IL_0467: Unknown result type (might be due to invalid IL or missing references) //IL_046f: Expected O, but got Unknown GameObject val = zNetScene.GetPrefab(prefabName).Clone(newPrefabName); val.transform.SetParent(_CloneContainer.transform, false); val.transform.localScale = scale; val.RemoveComponent(typeof(Character)); Humanoid val2 = val.AddComponent<Humanoid>(); ((Character)val2).m_name = name; ((Character)val2).m_group = "PlayerMinion"; ((Character)val2).m_faction = (Faction)0; ((Character)val2).m_aiSkipTarget = true; ((Character)val2).m_crouchSpeed = 2f; ((Character)val2).m_walkSpeed = 5f; ((Character)val2).m_speed = 1.5f; ((Character)val2).m_turnSpeed = 80f; ((Character)val2).m_runSpeed = 8f; ((Character)val2).m_runTurnSpeed = 200f; ((Character)val2).m_flySlowSpeed = 5f; ((Character)val2).m_flyFastSpeed = 12f; ((Character)val2).m_flyTurnSpeed = 12f; ((Character)val2).m_acceleration = 0.5f; ((Character)val2).m_jumpForce = 10f; ((Character)val2).m_jumpForceForward = 0f; ((Character)val2).m_jumpForceTiredFactor = 0.7f; ((Character)val2).m_airControl = 0.1f; ((Character)val2).m_canSwim = true; ((Character)val2).m_swimDepth = 1.2f; ((Character)val2).m_swimSpeed = 2f; ((Character)val2).m_swimTurnSpeed = 100f; ((Character)val2).m_swimAcceleration = 0.05f; ((Character)val2).m_groundTilt = (GroundTiltType)1; ((Character)val2).m_groundTiltSpeed = 50f; ((Character)val2).m_flying = false; ((Character)val2).m_jumpStaminaUsage = 10f; ((Character)val2).m_disableWhileSleeping = false; ((Character)val2).m_eye = ((Component)val2).gameObject.transform.Find("EyePos"); ((Character)val2).m_deathEffects.m_effectPrefabs = (EffectData[])(object)new EffectData[1] { new EffectData { m_prefab = zNetScene.GetPrefab("vfx_Place_workbench"), m_enabled = true, m_variant = -1 } }; ((Character)val2).m_waterEffects.m_effectPrefabs = (EffectData[])(object)new EffectData[1] { new EffectData { m_prefab = zNetScene.GetPrefab("vfx_water_surface"), m_enabled = true, m_variant = -1 } }; ((Character)val2).m_tolerateWater = true; ((Character)val2).m_health = 10f; ((Character)val2).m_damageModifiers = new DamageModifiers { m_blunt = (DamageModifier)3, m_slash = (DamageModifier)3, m_pierce = (DamageModifier)3, m_chop = (DamageModifier)3, m_pickaxe = (DamageModifier)3, m_fire = (DamageModifier)3, m_frost = (DamageModifier)3, m_lightning = (DamageModifier)3, m_poison = (DamageModifier)3, m_spirit = (DamageModifier)3 }; val.RemoveComponent(typeof(AnimalAI)); MonsterAI val3 = val.AddComponent<MonsterAI>(); ((BaseAI)val3).m_viewRange = 0f; ((BaseAI)val3).m_hearRange = 0f; ((BaseAI)val3).m_alertedEffects.m_effectPrefabs = (EffectData[])(object)new EffectData[1] { new EffectData { m_prefab = zNetScene.GetPrefab("sfx_deer_alerted"), m_enabled = true, m_variant = -1 } }; ((BaseAI)val3).m_idleSound.m_effectPrefabs = Array.Empty<EffectData>(); ((BaseAI)val3).m_idleSoundInterval = 15f; ((BaseAI)val3).m_idleSoundChance = 0.5f; ((BaseAI)val3).m_pathAgentType = (AgentType)4; ((BaseAI)val3).m_moveMinAngle = 90f; ((BaseAI)val3).m_smoothMovement = true; ((BaseAI)val3).m_jumpInterval = 0f; ((BaseAI)val3).m_randomCircleInterval = 2f; ((BaseAI)val3).m_randomMoveInterval = 60f; ((BaseAI)val3).m_randomMoveRange = 10f; ((BaseAI)val3).m_avoidFire = true; ((BaseAI)val3).m_afraidOfFire = true; ((BaseAI)val3).m_avoidWater = true; ((BaseAI)val3).m_avoidLava = true; ((BaseAI)val3).m_aggravatable = false; ((BaseAI)val3).m_passiveAggresive = false; val3.m_alertRange = 0f; val3.m_attackPlayerObjects = false; val3.m_sleeping = false; val3.m_consumeRange = 1f; val3.m_consumeSearchRange = 10f; val3.m_consumeSearchInterval = 10f; val.RemoveComponent(typeof(CharacterDrop)); Tameable val4 = val.AddComponent<Tameable>(); val4.m_startsTamed = true; val4.m_sootheEffect.m_effectPrefabs = (EffectData[])(object)new EffectData[1] { new EffectData { m_prefab = zNetScene.GetPrefab("vfx_creature_soothed"), m_enabled = true, m_variant = -1 } }; val4.m_petEffect.m_effectPrefabs = (EffectData[])(object)new EffectData[1] { new EffectData { m_prefab = zNetScene.GetPrefab("fx_skeleton_pet"), m_enabled = true, m_variant = -1 } }; val4.m_commandable = false; val4.m_unsummonDistance = 0f; val4.m_unsummonOnOwnerLogoutSeconds = 0f; val4.m_unSummonEffect.m_effectPrefabs = (EffectData[])(object)new EffectData[1] { new EffectData { m_prefab = zNetScene.GetPrefab("vfx_Place_workbench"), m_enabled = true, m_variant = -1 } }; zNetScene.AddClonedObject(val); } private static void Create3(ZNetScene zNetScene, string prefabName, string newPrefabName, string name, Vector3 scale) { //IL_002a: Unknown result type (might be due to invalid IL or missing references) //IL_005c: Unknown result type (might be due to invalid IL or missing references) //IL_0137: Unknown result type (might be due to invalid IL or missing references) //IL_0189: Unknown result type (might be due to invalid IL or missing references) //IL_018e: Unknown result type (might be due to invalid IL or missing references) //IL_019f: Unknown result type (might be due to invalid IL or missing references) //IL_01a6: Unknown result type (might be due to invalid IL or missing references) //IL_01ae: Expected O, but got Unknown //IL_01c1: Unknown result type (might be due to invalid IL or missing references) //IL_01c6: Unknown result type (might be due to invalid IL or missing references) //IL_01d7: Unknown result type (might be due to invalid IL or missing references) //IL_01de: Unknown result type (might be due to invalid IL or missing references) //IL_01e6: Expected O, but got Unknown //IL_0200: Unknown result type (might be due to invalid IL or missing references) //IL_0209: Unknown result type (might be due to invalid IL or missing references) //IL_0211: Unknown result type (might be due to invalid IL or missing references) //IL_0219: Unknown result type (might be due to invalid IL or missing references) //IL_0221: Unknown result type (might be due to invalid IL or missing references) //IL_0229: Unknown result type (might be due to invalid IL or missing references) //IL_0231: Unknown result type (might be due to invalid IL or missing references) //IL_0239: Unknown result type (might be due to invalid IL or missing references) //IL_0241: Unknown result type (might be due to invalid IL or missing references) //IL_0249: Unknown result type (might be due to invalid IL or missing references) //IL_0251: Unknown result type (might be due to invalid IL or missing references) //IL_0256: Unknown result type (might be due to invalid IL or missing references) //IL_0258: Unknown result type (might be due to invalid IL or missing references) //IL_0298: Unknown result type (might be due to invalid IL or missing references) //IL_029d: Unknown result type (might be due to invalid IL or missing references) //IL_02ae: Unknown result type (might be due to invalid IL or missing references) //IL_02b5: Unknown result type (might be due to invalid IL or missing references) //IL_02bd: Expected O, but got Unknown //IL_02ea: Unknown result type (might be due to invalid IL or missing references) //IL_03cd: Unknown result type (might be due to invalid IL or missing references) //IL_03d2: Unknown result type (might be due to invalid IL or missing references) //IL_03e3: Unknown result type (might be due to invalid IL or missing references) //IL_03ea: Unknown result type (might be due to invalid IL or missing references) //IL_03f2: Expected O, but got Unknown //IL_0405: Unknown result type (might be due to invalid IL or missing references) //IL_040a: Unknown result type (might be due to invalid IL or missing references) //IL_041b: Unknown result type (might be due to invalid IL or missing references) //IL_0422: Unknown result type (might be due to invalid IL or missing references) //IL_042a: Expected O, but got Unknown //IL_045a: Unknown result type (might be due to invalid IL or missing references) //IL_045f: Unknown result type (might be due to invalid IL or missing references) //IL_0470: Unknown result type (might be due to invalid IL or missing references) //IL_0477: Unknown result type (might be due to invalid IL or missing references) //IL_047f: Expected O, but got Unknown GameObject val = zNetScene.GetPrefab(prefabName).Clone(newPrefabName); val.transform.SetParent(_CloneContainer.transform, false); val.transform.localScale = scale; val.RemoveComponent(typeof(Character)); Humanoid val2 = val.AddComponent<Humanoid>(); ((Character)val2).m_name = name; ((Character)val2).m_group = "PlayerMinion"; ((Character)val2).m_faction = (Faction)0; ((Character)val2).m_aiSkipTarget = true; ((Character)val2).m_crouchSpeed = 1f; ((Character)val2).m_walkSpeed = 5f; ((Character)val2).m_speed = 4f; ((Character)val2).m_turnSpeed = 200f; ((Character)val2).m_runSpeed = 8f; ((Character)val2).m_runTurnSpeed = 300f; ((Character)val2).m_flySlowSpeed = 5f; ((Character)val2).m_flyFastSpeed = 12f; ((Character)val2).m_flyTurnSpeed = 12f; ((Character)val2).m_acceleration = 0.9f; ((Character)val2).m_jumpForce = 10f; ((Character)val2).m_jumpForceForward = 0f; ((Character)val2).m_jumpForceTiredFactor = 0.7f; ((Character)val2).m_airControl = 0.1f; ((Character)val2).m_canSwim = true; ((Character)val2).m_swimDepth = 0.72f; ((Character)val2).m_swimSpeed = 2f; ((Character)val2).m_swimTurnSpeed = 100f; ((Character)val2).m_swimAcceleration = 0.05f; ((Character)val2).m_groundTilt = (GroundTiltType)1; ((Character)val2).m_groundTiltSpeed = 200f; ((Character)val2).m_flying = false; ((Character)val2).m_jumpStaminaUsage = 10f; ((Character)val2).m_disableWhileSleeping = false; ((Character)val2).m_eye = ((Component)val2).gameObject.transform.Find("EyePos"); ((Character)val2).m_deathEffects.m_effectPrefabs = (EffectData[])(object)new EffectData[1] { new EffectData { m_prefab = zNetScene.GetPrefab("vfx_Place_workbench"), m_enabled = true, m_variant = -1 } }; ((Character)val2).m_waterEffects.m_effectPrefabs = (EffectData[])(object)new EffectData[1] { new EffectData { m_prefab = zNetScene.GetPrefab("vfx_water_surface"), m_enabled = true, m_variant = -1 } }; ((Character)val2).m_tolerateWater = true; ((Character)val2).m_health = 10f; ((Character)val2).m_damageModifiers = new DamageModifiers { m_blunt = (DamageModifier)3, m_slash = (DamageModifier)3, m_pierce = (DamageModifier)3, m_chop = (DamageModifier)3, m_pickaxe = (DamageModifier)3, m_fire = (DamageModifier)3, m_frost = (DamageModifier)3, m_lightning = (DamageModifier)3, m_poison = (DamageModifier)3, m_spirit = (DamageModifier)3 }; val.RemoveComponent(typeof(AnimalAI)); MonsterAI val3 = val.AddComponent<MonsterAI>(); ((BaseAI)val3).m_viewRange = 0f; ((BaseAI)val3).m_hearRange = 0f; ((BaseAI)val3).m_alertedEffects.m_effectPrefabs = (EffectData[])(object)new EffectData[1] { new EffectData { m_prefab = zNetScene.GetPrefab("sfx_deer_alerted"), m_enabled = true, m_variant = -1 } }; ((BaseAI)val3).m_idleSound.m_effectPrefabs = Array.Empty<EffectData>(); ((BaseAI)val3).m_idleSoundInterval = 15f; ((BaseAI)val3).m_idleSoundChance = 0.5f; ((BaseAI)val3).m_pathAgentType = (AgentType)1; ((BaseAI)val3).m_moveMinAngle = 90f; ((BaseAI)val3).m_smoothMovement = true; ((BaseAI)val3).m_jumpInterval = 0f; ((BaseAI)val3).m_randomCircleInterval = 2f; ((BaseAI)val3).m_randomMoveInterval = 11f; ((BaseAI)val3).m_randomMoveRange = 20f; ((BaseAI)val3).m_avoidFire = true; ((BaseAI)val3).m_afraidOfFire = true; ((BaseAI)val3).m_avoidWater = true; ((BaseAI)val3).m_avoidLava = true; ((BaseAI)val3).m_aggravatable = false; ((BaseAI)val3).m_passiveAggresive = false; val3.m_alertRange = 0f; val3.m_attackPlayerObjects = false; val3.m_sleeping = false; val3.m_consumeRange = 1f; val3.m_consumeSearchRange = 10f; val3.m_consumeSearchInterval = 10f; val.RemoveComponent(typeof(CharacterDrop)); val.RemoveComponent(typeof(Procreation)); Tameable val4 = val.AddComponent<Tameable>(); val4.m_startsTamed = true; val4.m_sootheEffect.m_effectPrefabs = (EffectData[])(object)new EffectData[1] { new EffectData { m_prefab = zNetScene.GetPrefab("vfx_creature_soothed"), m_enabled = true, m_variant = -1 } }; val4.m_petEffect.m_effectPrefabs = (EffectData[])(object)new EffectData[1] { new EffectData { m_prefab = zNetScene.GetPrefab("fx_skeleton_pet"), m_enabled = true, m_variant = -1 } }; val4.m_commandable = false; val4.m_unsummonDistance = 0f; val4.m_unsummonOnOwnerLogoutSeconds = 0f; val4.m_unSummonEffect.m_effectPrefabs = (EffectData[])(object)new EffectData[1] { new EffectData { m_prefab = zNetScene.GetPrefab("vfx_Place_workbench"), m_enabled = true, m_variant = -1 } }; zNetScene.AddClonedObject(val); } private static GameObject Clone(this GameObject gameObject, string name) { GameObject obj = Object.Instantiate<GameObject>(gameObject, _CloneContainer.transform, false); ((Object)obj).name = name; obj.transform.SetParent(_CloneContainer.transform, false); return obj; } public static void CloneContainer() { //IL_0005: Unknown result type (might be due to invalid IL or missing references) //IL_000f: Expected O, but got Unknown _CloneContainer = new GameObject("BVM_ClonedPrefabs"); _CloneContainer.SetActive(false); Object.DontDestroyOnLoad((Object)(object)_CloneContainer); } private static void RemoveComponent(this GameObject target, Type type) { Component component = target.GetComponent(type); if ((Object)(object)component != (Object)null) { Object.Destroy((Object)(object)component); } } private static void SetupAbomination(ZNetScene zNetScene) { GameObject prefab = zNetScene.GetPrefab("BVM_AbominationMinion"); ((Component)Utils.FindChild(prefab.transform, "particles", (IterativeSearchType)0)).gameObject.SetActive(false); LODGroup componentInChildren = prefab.GetComponentInChildren<LODGroup>(true); LOD[] lODs = componentInChildren.GetLODs(); lODs[0].screenRelativeTransitionHeight = 0.1f; lODs[1].screenRelativeTransitionHeight = 0.06f; componentInChildren.SetLODs(lODs); componentInChildren.RecalculateBounds(); } private static void SetupBonemass(ZNetScene zNetScene) { GameObject prefab = zNetScene.GetPrefab("BVM_BonemassMinion"); ((Component)Utils.FindChild(prefab.transform, "particles", (IterativeSearchType)0)).gameObject.SetActive(false); LODGroup componentInChildren = prefab.GetComponentInChildren<LODGroup>(true); LOD[] lODs = componentInChildren.GetLODs(); lODs[0].screenRelativeTransitionHeight = 0.06f; componentInChildren.SetLODs(lODs); componentInChildren.RecalculateBounds(); } private static void SetupFallenValkyrie(ZNetScene zNetScene) { GameObject prefab = zNetScene.GetPrefab("BVM_FallenValkyrieMinion"); ((Component)Utils.FindChild(prefab.transform, "Smoke", (IterativeSearchType)0)).gameObject.SetActive(false); ((Component)prefab.transform.Find("Visual/FallenValkyrie/Armature/root/hip/spine0/spine1/spine2/l_shoulder/l_arm0/l_arm1/l_arm2/Smoke_local")).gameObject.SetActive(false); ((Component)prefab.transform.Find("Visual/FallenValkyrie/Armature/root/hip/spine0/spine1/spine2/l_shoulder/l_arm0/l_arm1/Smoke_local")).gameObject.SetActive(false); ((Component)prefab.transform.Find("Visual/FallenValkyrie/Armature/root/hip/spine0/spine1/spine2/neck/head/Smoke_local")).gameObject.SetActive(false); ((Component)prefab.transform.Find("Visual/FallenValkyrie/Armature/root/hip/spine0/spine1/spine2/r_shoulder/r_arm0/r_arm1/r_arm2/Smoke_local")).gameObject.SetActive(false); ((Component)prefab.transform.Find("Visual/FallenValkyrie/Armature/root/hip/spine0/spine1/spine2/r_shoulder/r_arm0/r_arm1/Smoke_local")).gameObject.SetActive(false); ((Component)prefab.transform.Find("Visual/FallenValkyrie/Armature/root/hip/spine0/spine1/Spores_World")).gameObject.SetActive(false); } private static void SetupYagluth(ZNetScene zNetScene) { GameObject prefab = zNetScene.GetPrefab("BVM_GoblinKingMinion"); ((Component)Utils.FindChild(prefab.transform, "smoke", (IterativeSearchType)0)).gameObject.SetActive(false); Transform obj = prefab.transform.Find("Visual/Armature/Root/Root2/Hip/Spine1/Spine2/Spine3/Point light"); ((Component)obj).gameObject.SetActive(false); ((Behaviour)((Component)obj).gameObject.GetComponent<Light>()).enabled = false; Transform obj2 = prefab.transform.Find("Visual/Armature/Root/Root2/Hip/Spine1/Spine2/Spine3/Neck/Bone.007/Point light (2)"); ((Component)obj2).gameObject.SetActive(false); ((Behaviour)((Component)obj2).gameObject.GetComponent<Light>()).enabled = false; } private static void SetupElder(ZNetScene zNetScene) { ((Component)Utils.FindChild(zNetScene.GetPrefab("BVM_ElderMinion").transform, "particles", (IterativeSearchType)0)).gameObject.SetActive(false); } private static void SetupFader(ZNetScene zNetScene) { LODGroup componentInChildren = zNetScene.GetPrefab("BVM_FaderMinion").GetComponentInChildren<LODGroup>(true); LOD[] lODs = componentInChildren.GetLODs(); lODs[0].screenRelativeTransitionHeight = 0.06f; componentInChildren.SetLODs(lODs); componentInChildren.RecalculateBounds(); } private static void SetupGjall(ZNetScene zNetScene) { LODGroup componentInChildren = zNetScene.GetPrefab("BVM_GjallMinion").GetComponentInChildren<LODGroup>(true); LOD[] lODs = componentInChildren.GetLODs(); lODs[0].screenRelativeTransitionHeight = 0.06f; componentInChildren.SetLODs(lODs); componentInChildren.RecalculateBounds(); } } public static class MinionSetup { public static void Init(ZNetScene zNetScene) { LinkSummon(zNetScene, "bvm_minionsummon_abomination", "BVM_AbominationMinion"); LinkSummon(zNetScene, "bvm_minionsummon_asksvin", "BVM_AsksvinMinion"); LinkSummon(zNetScene, "bvm_minionsummon_bat", "BVM_BatMinion"); LinkSummon(zNetScene, "bvm_minionsummon_blob", "BVM_BlobMinion"); LinkSummon(zNetScene, "bvm_minionsummon_blobelite", "BVM_BlobEliteMinion"); LinkSummon(zNetScene, "bvm_minionsummon_bloblava", "BVM_BlobLavaMinion"); LinkSummon(zNetScene, "bvm_minionsummon_blobtar", "BVM_BlobTarMinion"); LinkSummon(zNetScene, "bvm_minionsummon_boar", "BVM_BoarMinion"); LinkSummon(zNetScene, "bvm_minionsummon_bonemass", "BVM_BonemassMinion"); LinkSummon(zNetScene, "bvm_minionsummon_charred", "BVM_CharredMeleeMinion"); LinkSummon(zNetScene, "bvm_minionsummon_deathsquito", "BVM_DeathsquitoMinion"); LinkSummon(zNetScene, "bvm_minionsummon_deer", "BVM_DeerMinion"); LinkSummon(zNetScene, "bvm_minionsummon_draugr", "BVM_DraugrMinion"); LinkSummon(zNetScene, "bvm_minionsummon_eikthyr", "BVM_EikthyrMinion"); LinkSummon(zNetScene, "bvm_minionsummon_elder", "BVM_ElderMinion"); LinkSummon(zNetScene, "bvm_minionsummon_fader", "BVM_FaderMinion"); LinkSummon(zNetScene, "bvm_minionsummon_fallenvalkyrie", "BVM_FallenValkyrieMinion"); LinkSummon(zNetScene, "bvm_minionsummon_fenring", "BVM_FenringMinion"); LinkSummon(zNetScene, "bvm_minionsummon_fenringcultist", "BVM_FenringCultistMinion"); LinkSummon(zNetScene, "bvm_minionsummon_gjall", "BVM_GjallMinion"); LinkSummon(zNetScene, "bvm_minionsummon_goblin", "BVM_GoblinMinion"); LinkSummon(zNetScene, "bvm_minionsummon_goblinbrute", "BVM_GoblinBruteMinion"); LinkSummon(zNetScene, "bvm_minionsummon_goblinshaman", "BVM_GoblinShamanMinion"); LinkSummon(zNetScene, "bvm_minionsummon_greydwarf", "BVM_GreydwarfMinion"); LinkSummon(zNetScene, "bvm_minionsummon_greydwarfelite", "BVM_GreydwarfEliteMinion"); LinkSummon(zNetScene, "bvm_minionsummon_greydwarfshaman", "BVM_GreydwarfShamanMinion"); LinkSummon(zNetScene, "bvm_minionsummon_hare", "BVM_HareMinion"); LinkSummon(zNetScene, "bvm_minionsummon_hatchling", "BVM_HatchlingMinion"); LinkSummon(zNetScene, "bvm_minionsummon_hen", "BVM_HenMinion"); LinkSummon(zNetScene, "bvm_minionsummon_lox", "BVM_LoxMinion"); LinkSummon(zNetScene, "bvm_minionsummon_moder", "BVM_DragonMinion"); LinkSummon(zNetScene, "bvm_minionsummon_neck", "BVM_NeckMinion"); LinkSummon(zNetScene, "bvm_minionsummon_seeker", "BVM_SeekerMinion"); LinkSummon(zNetScene, "bvm_minionsummon_seekerbrute", "BVM_SeekerBruteMinion"); LinkSummon(zNetScene, "bvm_minionsummon_seekerqueen", "BVM_SeekerQueenMinion"); LinkSummon(zNetScene, "bvm_minionsummon_skeleton", "BVM_SkeletonMinion"); LinkSummon(zNetScene, "bvm_minionsummon_skeletonpoison", "BVM_SkeletonPoisonMinion"); LinkSummon(zNetScene, "bvm_minionsummon_stonegolem", "BVM_StoneGolemMinion"); LinkSummon(zNetScene, "bvm_minionsummon_surtling", "BVM_SurtlingMinion"); LinkSummon(zNetScene, "bvm_minionsummon_troll", "BVM_TrollMinion"); LinkSummon(zNetScene, "bvm_minionsummon_ulv", "BVM_UlvMinion"); LinkSummon(zNetScene, "bvm_minionsummon_volture", "BVM_VoltureMinion"); LinkSummon(zNetScene, "bvm_minionsummon_wolf", "BVM_WolfMinion"); LinkSummon(zNetScene, "bvm_minionsummon_wraith", "BVM_WraithMinion"); LinkSummon(zNetScene, "bvm_minionsummon_yagluth", "BVM_GoblinKingMinion"); } private static void LinkSummon(ZNetScene zNetScene, string projectileName, string summonName) { //IL_0040: Unknown result type (might be due to invalid IL or missing references) //IL_0045: Unknown result type (might be due to invalid IL or missing references) //IL_0056: Unknown result type (might be due to invalid IL or missing references) //IL_005d: Unknown result type (might be due to invalid IL or missing references) //IL_0065: Expected O, but got Unknown SpawnAbility component = PrefabSetups._minionBundle.LoadAsset<GameObject>(projectileName).GetComponent<SpawnAbility>(); component.m_preSpawnDelay = 1f; component.m_spawnPrefab = (GameObject[])(object)new GameObject[1] { zNetScene.GetPrefab(summonName) }; component.m_preSpawnEffects.m_effectPrefabs = (EffectData[])(object)new EffectData[1] { new EffectData { m_prefab = zNetScene.GetPrefab("fx_himminafl_aoe"), m_enabled = true, m_variant = -1 } }; } } [HarmonyPatch] public class Patches { [HarmonyPostfix] [HarmonyPatch(typeof(ZNetScene), "Awake")] private static void ZNetSceneAwake_Postfix(ZNetScene __instance) { MinionHelper.CreateMinions(__instance); MinionSetup.Init(__instance); } [HarmonyPostfix] [HarmonyPatch(typeof(Tameable), "GetHoverText")] private static void GetHoverText_Postfix(Tameable __instance, ref string __result) { //IL_0068: Unknown result type (might be due to invalid IL or missing references) //IL_006d: Unknown result type (might be due to invalid IL or missing references) if ((Object)(object)__instance == (Object)null || __instance.m_character.IsDead() || !__instance.m_character.IsTamed() || !__instance.m_nview.IsValid() || !__instance.m_nview.IsOwner() || !((Object)((Component)__instance).gameObject).name.StartsWith("BVM_")) { return; } __result += "\n[<color=yellow><b>Left Shift+F</b></color>] Unsummon"; KeyboardShortcut value = Plugin._unSummonKey.Value; if (!((KeyboardShortcut)(ref value)).IsDown()) { return; } if (((Object)((Component)__instance).gameObject).name.Contains("AbominationMinion")) { __instance.UnSummon(); GameObject itemPrefab = ObjectDB.instance.GetItemPrefab("BVM_Abomination_MonsterDisk"); if (((Humanoid)Player.m_localPlayer).m_inventory.AddItem(itemPrefab, 1)) { ((Character)Player.m_localPlayer).ShowPickupMessage(itemPrefab.GetComponent<ItemDrop>().m_itemData, 1); } else { ((Character)Player.m_localPlayer).Message((MessageType)2, "$msg_noroom", 0, (Sprite)null); } } else if (((Object)((Component)__instance).gameObject).name.Contains("AsksvinMinion")) { __instance.UnSummon(); GameObject itemPrefab2 = ObjectDB.instance.GetItemPrefab("BVM_Asksvin_MonsterDisk"); if (((Humanoid)Player.m_localPlayer).m_inventory.AddItem(itemPrefab2, 1)) { ((Character)Player.m_localPlayer).ShowPickupMessage(itemPrefab2.GetComponent<ItemDrop>().m_itemData, 1); } else { ((Character)Player.m_localPlayer).Message((MessageType)2, "$msg_noroom", 0, (Sprite)null); } } else if (((Object)((Component)__instance).gameObject).name.Contains("BatMinion")) { __instance.UnSummon(); GameObject itemPrefab3 = ObjectDB.instance.GetItemPrefab("BVM_Bat_MonsterDisk"); if (((Humanoid)Player.m_localPlayer).m_inventory.AddItem(itemPrefab3, 1)) { ((Character)Player.m_localPlayer).ShowPickupMessage(itemPrefab3.GetComponent<ItemDrop>().m_itemData, 1); } else { ((Character)Player.m_localPlayer).Message((MessageType)2, "$msg_noroom", 0, (Sprite)null); } } else if (((Object)((Component)__instance).gameObject).name.Contains("BlobMinion")) { __instance.UnSummon(); GameObject itemPrefab4 = ObjectDB.instance.GetItemPrefab("BVM_Blob_MonsterDisk"); if (((Humanoid)Player.m_localPlayer).m_inventory.AddItem(itemPrefab4, 1)) { ((Character)Player.m_localPlayer).ShowPickupMessage(itemPrefab4.GetComponent<ItemDrop>().m_itemData, 1); } else { ((Character)Player.m_localPlayer).Message((MessageType)2, "$msg_noroom", 0, (Sprite)null); } } else if (((Object)((Component)__instance).gameObject).name.Contains("BlobEliteMinion")) { __instance.UnSummon(); GameObject itemPrefab5 = ObjectDB.instance.GetItemPrefab("BVM_BlobElite_MonsterDisk"); if (((Humanoid)Player.m_localPlayer).m_inventory.AddItem(itemPrefab5, 1)) { ((Character)Player.m_localPlayer).ShowPickupMessage(itemPrefab5.GetComponent<ItemDrop>().m_itemData, 1); } else { ((Character)Player.m_localPlayer).Message((MessageType)2, "$msg_noroom", 0, (Sprite)null); } } else if (((Object)((Component)__instance).gameObject).name.Contains("BlobLavaMinion")) { __instance.UnSummon(); GameObject itemPrefab6 = ObjectDB.instance.GetItemPrefab("BVM_BlobLava_MonsterDisk"); if (((Humanoid)Player.m_localPlayer).m_inventory.AddItem(itemPrefab6, 1)) { ((Character)Player.m_localPlayer).ShowPickupMessage(itemPrefab6.GetComponent<ItemDrop>().m_itemData, 1); } else { ((Character)Player.m_localPlayer).Message((MessageType)2, "$msg_noroom", 0, (Sprite)null); } } else if (((Object)((Component)__instance).gameObject).name.Contains("BlobTarMinion")) { __instance.UnSummon(); GameObject itemPrefab7 = ObjectDB.instance.GetItemPrefab("BVM_BlobTar_MonsterDisk"); if (((Humanoid)Player.m_localPlayer).m_inventory.AddItem(itemPrefab7, 1)) { ((Character)Player.m_localPlayer).ShowPickupMessage(itemPrefab7.GetComponent<ItemDrop>().m_itemData, 1); } else { ((Character)Player.m_localPlayer).Message((MessageType)2, "$msg_noroom", 0, (Sprite)null); } } else if (((Object)((Component)__instance).gameObject).name.Contains("BoarMinion")) { __instance.UnSummon(); GameObject itemPrefab8 = ObjectDB.instance.GetItemPrefab("BVM_Boar_MonsterDisk"); if (((Humanoid)Player.m_localPlayer).m_inventory.AddItem(itemPrefab8, 1)) { ((Character)Player.m_localPlayer).ShowPickupMessage(itemPrefab8.GetComponent<ItemDrop>().m_itemData, 1); } else { ((Character)Player.m_localPlayer).Message((MessageType)2, "$msg_noroom", 0, (Sprite)null); } } else if (((Object)((Component)__instance).gameObject).name.Contains("BonemassMinion")) { __instance.UnSummon(); GameObject itemPrefab9 = ObjectDB.instance.GetItemPrefab("BVM_Bonemass_MonsterDisk"); if (((Humanoid)Player.m_localPlayer).m_inventory.AddItem(itemPrefab9, 1)) { ((Character)Player.m_localPlayer).ShowPickupMessage(itemPrefab9.GetComponent<ItemDrop>().m_itemData, 1); } else { ((Character)Player.m_localPlayer).Message((MessageType)2, "$msg_noroom", 0, (Sprite)null); } } else if (((Object)((Component)__instance).gameObject).name.Contains("HenMinion")) { __instance.UnSummon(); GameObject itemPrefab10 = ObjectDB.instance.GetItemPrefab("BVM_Hen_MonsterDisk"); if (((Humanoid)Player.m_localPlayer).m_inventory.AddItem(itemPrefab10, 1)) { ((Character)Player.m_localPlayer).ShowPickupMessage(itemPrefab10.GetComponent<ItemDrop>().m_itemData, 1); } else { ((Character)Player.m_localPlayer).Message((MessageType)2, "$msg_noroom", 0, (Sprite)null); } } else if (((Object)((Component)__instance).gameObject).name.Contains("DeathsquitoMinion")) { __instance.UnSummon(); GameObject itemPrefab11 = ObjectDB.instance.GetItemPrefab("BVM_Deathsquito_MonsterDisk"); if (((Humanoid)Player.m_localPlayer).m_inventory.AddItem(itemPrefab11, 1)) { ((Character)Player.m_localPlayer).ShowPickupMessage(itemPrefab11.GetComponent<ItemDrop>().m_itemData, 1); } else { ((Character)Player.m_localPlayer).Message((MessageType)2, "$msg_noroom", 0, (Sprite)null); } } else if (((Object)((Component)__instance).gameObject).name.Contains("DeerMinion")) { __instance.UnSummon(); GameObject itemPrefab12 = ObjectDB.instance.GetItemPrefab("BVM_Deer_MonsterDisk"); if (((Humanoid)Player.m_localPlayer).m_inventory.AddItem(itemPrefab12, 1)) { ((Character)Player.m_localPlayer).ShowPickupMessage(itemPrefab12.GetComponent<ItemDrop>().m_itemData, 1); } else { ((Character)Player.m_localPlayer).Message((MessageType)2, "$msg_noroom", 0, (Sprite)null); } } else if (((Object)((Component)__instance).gameObject).name.Contains("DragonMinion")) { __instance.UnSummon(); GameObject itemPrefab13 = ObjectDB.instance.GetItemPrefab("BVM_Moder_MonsterDisk"); if (((Humanoid)Player.m_localPlayer).m_inventory.AddItem(itemPrefab13, 1)) { ((Character)Player.m_localPlayer).ShowPickupMessage(itemPrefab13.GetComponent<ItemDrop>().m_itemData, 1); } else { ((Character)Player.m_localPlayer).Message((MessageType)2, "$msg_noroom", 0, (Sprite)null); } } else if (((Object)((Component)__instance).gameObject).name.Contains("DraugrMinion")) { __instance.UnSummon(); GameObject itemPrefab14 = ObjectDB.instance.GetItemPrefab("BVM_Draugr_MonsterDisk"); if (((Humanoid)Player.m_localPlayer).m_inventory.AddItem(itemPrefab14, 1)) { ((Character)Player.m_localPlayer).ShowPickupMessage(itemPrefab14.GetComponent<ItemDrop>().m_itemData, 1); } else { ((Character)Player.m_localPlayer).Message((MessageType)2, "$msg_noroom", 0, (Sprite)null); } } else if (((Object)((Component)__instance).gameObject).name.Contains("DvergerMinion")) { __instance.UnSummon(); GameObject itemPrefab15 = ObjectDB.instance.GetItemPrefab("BVM_Dverger_MonsterDisk"); if (((Humanoid)Player.m_localPlayer).m_inventory.AddItem(itemPrefab15, 1)) { ((Character)Player.m_localPlayer).ShowPickupMessage(itemPrefab15.GetComponent<ItemDrop>().m_itemData, 1); } else { ((Character)Player.m_localPlayer).Message((MessageType)2, "$msg_noroom", 0, (Sprite)null); } } else if (((Object)((Component)__instance).gameObject).name.Contains("EikthyrMinion")) { __instance.UnSummon(); GameObject itemPrefab16 = ObjectDB.instance.GetItemPrefab("BVM_Eikthyr_MonsterDisk"); if (((Humanoid)Player.m_localPlayer).m_inventory.AddItem(itemPrefab16, 1)) { ((Character)Player.m_localPlayer).ShowPickupMessage(itemPrefab16.GetComponent<ItemDrop>().m_itemData, 1); } else { ((Character)Player.m_localPlayer).Message((MessageType)2, "$msg_noroom", 0, (Sprite)null); } } else if (((Object)((Component)__instance).gameObject).name.Contains("FaderMinion")) { __instance.UnSummon(); GameObject itemPrefab17 = ObjectDB.instance.GetItemPrefab("BVM_Fader_MonsterDisk"); if (((Humanoid)Player.m_localPlayer).m_inventory.AddItem(itemPrefab17, 1)) { ((Character)Player.m_localPlayer).ShowPickupMessage(itemPrefab17.GetComponent<ItemDrop>().m_itemData, 1); } else { ((Character)Player.m_localPlayer).Message((MessageType)2, "$msg_noroom", 0, (Sprite)null); } } else if (((Object)((Component)__instance).gameObject).name.Contains("FallenValkyrieMinion")) { __instance.UnSummon(); GameObject itemPrefab18 = ObjectDB.instance.GetItemPrefab("BVM_FallenValkyrie_MonsterDisk"); if (((Humanoid)Player.m_localPlayer).m_inventory.AddItem(itemPrefab18, 1)) { ((Character)Player.m_localPlayer).ShowPickupMessage(itemPrefab18.GetComponent<ItemDrop>().m_itemData, 1); } else { ((Character)Player.m_localPlayer).Message((MessageType)2, "$msg_noroom", 0, (Sprite)null); } } else if (((Object)((Component)__instance).gameObject).name.Contains("FenringMinion")) { __instance.UnSummon(); GameObject itemPrefab19 = ObjectDB.instance.GetItemPrefab("BVM_Fenring_MonsterDisk"); if (((Humanoid)Player.m_localPlayer).m_inventory.AddItem(itemPrefab19, 1)) { ((Character)Player.m_localPlayer).ShowPickupMessage(itemPrefab19.GetComponent<ItemDrop>().m_itemData, 1); } else { ((Character)Player.m_localPlayer).Message((MessageType)2, "$msg_noroom", 0, (Sprite)null); } } else if (((Object)((Component)__instance).gameObject).name.Contains("FenringCultistMinion")) { __instance.UnSummon(); GameObject itemPrefab20 = ObjectDB.instance.GetItemPrefab("BVM_FenringCultist_MonsterDisk"); if (((Humanoid)Player.m_localPlayer).m_inventory.AddItem(itemPrefab20, 1)) { ((Character)Player.m_localPlayer).ShowPickupMessage(itemPrefab20.GetComponent<ItemDrop>().m_itemData, 1); } else { ((Character)Player.m_localPlayer).Message((MessageType)2, "$msg_noroom", 0, (Sprite)null); } } else if (((Object)((Component)__instance).gameObject).name.Contains("GjallMinion")) { __instance.UnSummon(); GameObject itemPrefab21 = ObjectDB.instance.GetItemPrefab("BVM_Gjall_MonsterDisk"); if (((Humanoid)Player.m_localPlayer).m_inventory.AddItem(itemPrefab21, 1)) { ((Character)Player.m_localPlayer).ShowPickupMessage(itemPrefab21.GetComponent<ItemDrop>().m_itemData, 1); } else { ((Character)Player.m_localPlayer).Message((MessageType)2, "$msg_noroom", 0, (Sprite)null); } } else if (((Object)((Component)__instance).gameObject).name.Contains("GoblinMinion")) { __instance.UnSummon(); GameObject itemPrefab22 = ObjectDB.instance.GetItemPrefab("BVM_Goblin_MonsterDisk"); if (((Humanoid)Player.m_localPlayer).m_inventory.AddItem(itemPrefab22, 1)) { ((Character)Player.m_localPlayer).ShowPickupMessage(itemPrefab22.GetComponent<ItemDrop>().m_itemData, 1); } else { ((Character)Player.m_localPlayer).Message((MessageType)2, "$msg_noroom", 0, (Sprite)null); } } else if (((Object)((Component)__instance).gameObject).name.Contains("GoblinBruteMinion")) { __instance.UnSummon(); GameObject itemPrefab23 = ObjectDB.instance.GetItemPrefab("BVM_GoblinBrute_MonsterDisk"); if (((Humanoid)Player.m_localPlayer).m_inventory.AddItem(itemPrefab23, 1)) { ((Character)Player.m_localPlayer).ShowPickupMessage(itemPrefab23.GetComponent<ItemDrop>().m_itemData, 1); } else { ((Character)Player.m_localPlayer).Message((MessageType)2, "$msg_noroom", 0, (Sprite)null); } } else if (((Object)((Component)__instance).gameObject).name.Contains("GoblinKingMinion")) { __instance.UnSummon(); GameObject itemPrefab24 = ObjectDB.instance.GetItemPrefab("BVM_Yagluth_MonsterDisk"); if (((Humanoid)Player.m_localPlayer).m_inventory.AddItem(itemPrefab24, 1)) { ((Character)Player.m_localPlayer).ShowPickupMessage(itemPrefab24.GetComponent<ItemDrop>().m_itemData, 1); } else { ((Character)Player.m_localPlayer).Message((MessageType)2, "$msg_noroom", 0, (Sprite)null); } } else if (((Object)((Component)__instance).gameObject).name.Contains("GoblinShamanMinion")) { __instance.UnSummon(); GameObject itemPrefab25 = ObjectDB.instance.GetItemPrefab("BVM_GoblinShaman_MonsterDisk"); if (((Humanoid)Player.m_localPlayer).m_inventory.AddItem(itemPrefab25, 1)) { ((Character)Player.m_localPlayer).ShowPickupMessage(itemPrefab25.GetComponent<ItemDrop>().m_itemData, 1); } else { ((Character)Player.m_localPlayer).Message((MessageType)2, "$msg_noroom", 0, (Sprite)null); } } else if (((Object)((Component)__instance).gameObject).name.Contains("GreydwarfMinion")) { __instance.UnSummon(); GameObject itemPrefab26 = ObjectDB.instance.GetItemPrefab("BVM_Greydwarf_MonsterDisk"); if (((Humanoid)Player.m_localPlayer).m_inventory.AddItem(itemPrefab26, 1)) { ((Character)Player.m_localPlayer).ShowPickupMessage(itemPrefab26.GetComponent<ItemDrop>().m_itemData, 1); } else { ((Character)Player.m_localPlayer).Message((MessageType)2, "$msg_noroom", 0, (Sprite)null); } } else if (((Object)((Component)__instance).gameObject).name.Contains("GreydwarfEliteMinion")) { __instance.UnSummon(); GameObject itemPrefab27 = ObjectDB.instance.GetItemPrefab("BVM_GreydwarfElite_MonsterDisk"); if (((Humanoid)Player.m_localPlayer).m_inventory.AddItem(itemPrefab27, 1)) { ((Character)Player.m_localPlayer).ShowPickupMessage(itemPrefab27.GetComponent<ItemDrop>().m_itemData, 1); } else { ((Character)Player.m_localPlayer).Message((MessageType)2, "$msg_noroom", 0, (Sprite)null); } } else if (((Object)((Component)__instance).gameObject).name.Contains("GreydwarfShamanMinion")) { __instance.UnSummon(); GameObject itemPrefab28 = ObjectDB.instance.GetItemPrefab("BVM_GreydwarfShaman_MonsterDisk"); if (((Humanoid)Player.m_localPlayer).m_inventory.AddItem(itemPrefab28, 1)) { ((Character)Player.m_localPlayer).ShowPickupMessage(itemPrefab28.GetComponent<ItemDrop>().m_itemData, 1); } else { ((Character)Player.m_localPlayer).Message((MessageType)2, "$msg_noroom", 0, (Sprite)null); } } else if (((Object)((Component)__instance).gameObject).name.Contains("ElderMinion")) { __instance.UnSummon(); GameObject itemPrefab29 = ObjectDB.instance.GetItemPrefab("BVM_Elder_MonsterDisk"); if (((Humanoid)Player.m_localPlayer).m_inventory.AddItem(itemPrefab29, 1)) { ((Character)Player.m_localPlayer).ShowPickupMessage(itemPrefab29.GetComponent<ItemDrop>().m_itemData, 1); } else { ((Character)Player.m_localPlayer).Message((MessageType)2, "$msg_noroom", 0, (Sprite)null); } } else if (((Object)((Component)__instance).gameObject).name.Contains("HareMinion")) { __instance.UnSummon(); GameObject itemPrefab30 = ObjectDB.instance.GetItemPrefab("BVM_Hare_MonsterDisk"); if (((Humanoid)Player.m_localPlayer).m_inventory.AddItem(itemPrefab30, 1)) { ((Character)Player.m_localPlayer).ShowPickupMessage(itemPrefab30.GetComponent<ItemDrop>().m_itemData, 1); } else { ((Character)Player.m_localPlayer).Message((MessageType)2, "$msg_noroom", 0, (Sprite)null); } } else if (((Object)((Component)__instance).gameObject).name.Contains("HatchlingMinion")) { __instance.UnSummon(); GameObject itemPrefab31 = ObjectDB.instance.GetItemPrefab("BVM_Hatchling_MonsterDisk"); if (((Humanoid)Player.m_localPlayer).m_inventory.AddItem(itemPrefab31, 1)) { ((Character)Player.m_localPlayer).ShowPickupMessage(itemPrefab31.GetComponent<ItemDrop>().m_itemData, 1); } else { ((Character)Player.m_localPlayer).Message((MessageType)2, "$msg_noroom", 0, (Sprite)null); } } else if (((Object)((Component)__instance).gameObject).name.Contains("LoxMinion")) { __instance.UnSummon(); GameObject itemPrefab32 = ObjectDB.instance.GetItemPrefab("BVM_Lox_MonsterDisk"); if (((Humanoid)Player.m_localPlayer).m_inventory.AddItem(itemPrefab32, 1)) { ((Character)Player.m_localPlayer).ShowPickupMessage(itemPrefab32.GetComponent<ItemDrop>().m_itemData, 1); } else { ((Character)Player.m_localPlayer).Message((MessageType)2, "$msg_noroom", 0, (Sprite)null); } } else if (((Object)((Component)__instance).gameObject).name.Contains("NeckMinion")) { __instance.UnSummon(); GameObject itemPrefab33 = ObjectDB.instance.GetItemPrefab("BVM_Neck_MonsterDisk"); if (((Humanoid)Player.m_localPlayer).m_inventory.AddItem(itemPrefab33, 1)) { ((Character)Player.m_localPlayer).ShowPickupMessage(itemPrefab33.GetComponent<ItemDrop>().m_itemData, 1); } else { ((Character)Player.m_localPlayer).Message((MessageType)2, "$msg_noroom", 0, (Sprite)null); } } else if (((Object)((Component)__instance).gameObject).name.Contains("SeekerMinion")) { __instance.UnSummon(); GameObject itemPrefab34 = ObjectDB.instance.GetItemPrefab("BVM_Seeker_MonsterDisk"); if (((Humanoid)Player.m_localPlayer).m_inventory.AddItem(itemPrefab34, 1)) { ((Character)Player.m_localPlayer).ShowPickupMessage(itemPrefab34.GetComponent<ItemDrop>().m_itemData, 1); } else { ((Character)Player.m_localPlayer).Message((MessageType)2, "$msg_noroom", 0, (Sprite)null); } } else if (((Object)((Component)__instance).gameObject).name.Contains("SeekerBruteMinion")) { __instance.UnSummon(); GameObject itemPrefab35 = ObjectDB.instance.GetItemPrefab("BVM_SeekerBrute_MonsterDisk"); if (((Humanoid)Player.m_localPlayer).m_inventory.AddItem(itemPrefab35, 1)) { ((Character)Player.m_localPlayer).ShowPickupMessage(itemPrefab35.GetComponent<ItemDrop>().m_itemData, 1); } else { ((Character)Player.m_localPlayer).Message((MessageType)2, "$msg_noroom", 0, (Sprite)null); } } else if (((Object)((Component)__instance).gameObject).name.Contains("SeekerQueenMinion")) { __instance.UnSummon(); GameObject itemPrefab36 = ObjectDB.instance.GetItemPrefab("BVM_SeekerQueen_MonsterDisk"); if (((Humanoid)Player.m_localPlayer).m_inventory.AddItem(itemPrefab36, 1)) { ((Character)Player.m_localPlayer).ShowPickupMessage(itemPrefab36.GetComponent<ItemDrop>().m_itemData, 1); } else { ((Character)Player.m_localPlayer).Message((MessageType)2, "$msg_noroom", 0, (Sprite)null); } } else if (((Object)((Component)__instance).gameObject).name.Contains("SkeletonMinion")) { __instance.UnSummon(); GameObject itemPrefab37 = ObjectDB.instance.GetItemPrefab("BVM_Skeleton_MonsterDisk"); if (((Humanoid)Player.m_localPlayer).m_inventory.AddItem(itemPrefab37, 1)) { ((Character)Player.m_localPlayer).ShowPickupMessage(itemPrefab37.GetComponent<ItemDrop>().m_itemData, 1); } else { ((Character)Player.m_localPlayer).Message((MessageType)2, "$msg_noroom", 0, (Sprite)null); } } else if (((Object)((Component)__instance).gameObject).name.Contains("SkeletonPoisonMinion")) { __instance.UnSummon(); GameObject itemPrefab38 = ObjectDB.instance.GetItemPrefab("BVM_SkeletonPoison_MonsterDisk"); if (((Humanoid)Player.m_localPlayer).m_inventory.AddItem(itemPrefab38, 1)) { ((Character)Player.m_localPlayer).ShowPickupMessage(itemPrefab38.GetComponent<ItemDrop>().m_itemData, 1); } else { ((Character)Player.m_localPlayer).Message((MessageType)2, "$msg_noroom", 0, (Sprite)null); } } else if (((Object)((Component)__instance).gameObject).name.Contains("StoneGolemMinion")) { __instance.UnSummon(); GameObject itemPrefab39 = ObjectDB.instance.GetItemPrefab("BVM_StoneGolem_MonsterDisk"); if (((Humanoid)Player.m_localPlayer).m_inventory.AddItem(itemPrefab39, 1)) { ((Character)Player.m_localPlayer).ShowPickupMessage(itemPrefab39.GetComponent<ItemDrop>().m_itemData, 1); } else { ((Character)Player.m_localPlayer).Message((MessageType)2, "$msg_noroom", 0, (Sprite)null); } } else if (((Object)((Component)__instance).gameObject).name.Contains("SurtlingMinion")) { __instance.UnSummon(); GameObject itemPrefab40 = ObjectDB.instance.GetItemPrefab("BVM_Surtling_MonsterDisk"); if (((Humanoid)Player.m_localPlayer).m_inventory.AddItem(itemPrefab40, 1)) { ((Character)Player.m_localPlayer).ShowPickupMessage(itemPrefab40.GetComponent<ItemDrop>().m_itemData, 1); } else { ((Character)Player.m_localPlayer).Message((MessageType)2, "$msg_noroom", 0, (Sprite)null); } } else if (((Object)((Component)__instance).gameObject).name.Contains("CharredMeleeMinion")) { __instance.UnSummon(); GameObject itemPrefab41 = ObjectDB.instance.GetItemPrefab("BVM_Charred_MonsterDisk"); if (((Humanoid)Player.m_localPlayer).m_inventory.AddItem(itemPrefab41, 1)) { ((Character)Player.m_localPlayer).ShowPickupMessage(itemPrefab41.GetComponent<ItemDrop>().m_itemData, 1); } else { ((Character)Player.m_localPlayer).Message((MessageType)2, "$msg_noroom", 0, (Sprite)null); } } else if (((Object)((Component)__instance).gameObject).name.Contains("TrollMinion")) { __instance.UnSummon(); GameObject itemPrefab42 = ObjectDB.instance.GetItemPrefab("BVM_Troll_MonsterDisk"); if (((Humanoid)Player.m_localPlayer).m_inventory.AddItem(itemPrefab42, 1)) { ((Character)Player.m_localPlayer).ShowPickupMessage(itemPrefab42.GetComponent<ItemDrop>().m_itemData, 1); } else { ((Character)Player.m_localPlayer).Message((MessageType)2, "$msg_noroom", 0, (Sprite)null); } } else if (((Object)((Component)__instance).gameObject).name.Contains("UlvMinion")) { __instance.UnSummon(); GameObject itemPrefab43 = ObjectDB.instance.GetItemPrefab("BVM_Ulv_MonsterDisk"); if (((Humanoid)Player.m_localPlayer).m_inventory.AddItem(itemPrefab43, 1)) { ((Character)Player.m_localPlayer).ShowPickupMessage(itemPrefab43.GetComponent<ItemDrop>().m_itemData, 1); } else { ((Character)Player.m_localPlayer).Message((MessageType)2, "$msg_noroom", 0, (Sprite)null); } } else if (((Object)((Component)__instance).gameObject).name.Contains("VoltureMinion")) { __instance.UnSummon(); GameObject itemPrefab44 = ObjectDB.instance.GetItemPrefab("BVM_Volture_MonsterDisk"); if (((Humanoid)Player.m_localPlayer).m_inventory.AddItem(itemPrefab44, 1)) { ((Character)Player.m_localPlayer).ShowPickupMessage(itemPrefab44.GetComponent<ItemDrop>().m_itemData, 1); } else { ((Character)Player.m_localPlayer).Message((MessageType)2, "$msg_noroom", 0, (Sprite)null); } } else if (((Object)((Component)__instance).gameObject).name.Contains("WolfMinion")) { __instance.UnSummon(); GameObject itemPrefab45 = ObjectDB.instance.GetItemPrefab("BVM_Wolf_MonsterDisk"); if (((Humanoid)Player.m_localPlayer).m_inventory.AddItem(itemPrefab45, 1)) { ((Character)Player.m_localPlayer).ShowPickupMessage(itemPrefab45.GetComponent<ItemDrop>().m_itemData, 1); } else { ((Character)Player.m_localPlayer).Message((MessageType)2, "$msg_noroom", 0, (Sprite)null); } } else if (((Object)((Component)__instance).gameObject).name.Contains("WraithMinion")) { __instance.UnSummon(); GameObject itemPrefab46 = ObjectDB.instance.GetItemPrefab("BVM_Wraith_MonsterDisk"); if (((Humanoid)Player.m_localPlayer).m_inventory.AddItem(itemPrefab46, 1)) { ((Character)Player.m_localPlayer).ShowPickupMessage(itemPrefab46.GetComponent<ItemDrop>().m_itemData, 1); } else { ((Character)Player.m_localPlayer).Message((MessageType)2, "$msg_noroom", 0, (Sprite)null); } } } [HarmonyPrefix] [HarmonyPatch(typeof(SpawnAbility), "Spawn")] private static bool Spawn_Prefix(SpawnAbility __instance) { if (!((Object)(object)__instance == (Object)null) && __instance.m_weapon != null) { Character owner = __instance.m_owner; Player player = (Player)(object)((owner is Player) ? owner : null); if (player != null) { if (!((Object)__instance.m_weapon.m_dropPrefab).name.EndsWith("_MonsterDisk")) { return true; } if ((from character in Character.GetAllCharacters() where ((Object)((Component)character).gameObject).name.StartsWith("BVM_") select ((Component)character).GetComponent<ZNetView>() into nView where (Object)(object)nView != (Object)null select nView.GetZDO() into zDo where zDo != null select zDo.GetString(ZDOVars.s_follow, "")).Any((string text) => text == player.GetPlayerName())) { ((Character)player).Message((MessageType)2, "<size=28>Only one minion can be active!", 0, (Sprite)null); ((Humanoid)player).UnequipItem(__instance.m_weapon, true); return false; } ((Humanoid)player).UnequipItem(__instance.m_weapon, true); ((Humanoid)player).m_inventory.RemoveItem(__instance.m_weapon); return true; } } return true; } [HarmonyPostfix] [HarmonyPatch(typeof(Player), "TeleportTo")] private static void TeleportTo_Postfix(Player __instance, ref Vector3 pos, ref Quaternion rot) { //IL_00a2: Unknown result type (might be due to invalid IL or missing references) //IL_00b2: Unknown result type (might be due to invalid IL or missing references) //IL_00b7: Unknown result type (might be due to invalid IL or missing references) //IL_00c7: Unknown result type (might be due to invalid IL or missing references) if ((Object)(object)__instance == (Object)null) { return; } foreach (Character item in from character in Character.GetAllCharacters() let tamable = ((Component)character).GetComponent<Tameable>() where character.IsTamed() && (Object)(object)tamable.m_monsterAI.GetFollowTarget() == (Object)(object)((Component)__instance).gameObject && ((Object)((Component)character).gameObject).name.StartsWith("BVM_") select character) { ((Component)item).transform.position = pos + ((Component)__instance).transform.forward; ((Component)item).transform.rotation = rot; } } } public static class PrefabSetups { public static AssetBundle _minionBundle; public static void Init() { _minionBundle = PrefabManager.RegisterAssetBundle("minionbundle"); Item item = new Item(_minionBundle, "BVM_Abomination_MonsterDisk"); item.Crafting.Add(CraftingTable.Workbench, 1); item.RequiredItems.Add("TrophyAbomination", 1); item.RequiredItems.Add("Stone", 10); item.Configurable = Configurability.Recipe; PrefabManager.RegisterPrefab(_minionBundle, "bvm_abominationminion_projectile"); PrefabManager.RegisterPrefab(_minionBundle, "bvm_minionsummon_abomination"); Item item2 = new Item(_minionBundle, "BVM_Asksvin_MonsterDisk"); item2.Crafting.Add(CraftingTable.Workbench, 1); item2.RequiredItems.Add("TrophyAsksvin", 1); item2.RequiredItems.Add("Stone", 10); item2.Configurable = Configurability.Recipe; PrefabManager.RegisterPrefab(_minionBundle, "bvm_asksvinminion_projectile"); PrefabManager.RegisterPrefab(_minionBundle, "bvm_minionsummon_asksvin"); Item item3 = new Item(_minionBundle, "BVM_Bat_MonsterDisk"); item3.Crafting.Add(CraftingTable.Workbench, 1); item3.RequiredItems.Add("Bloodbag", 1); item3.RequiredItems.Add("Stone", 10); item3.Configurable = Configurability.Recipe; PrefabManager.RegisterPrefab(_minionBundle, "bvm_batminion_projectile"); PrefabManager.RegisterPrefab(_minionBundle, "bvm_minionsummon_bat"); Item item4 = new Item(_minionBundle, "BVM_Blob_MonsterDisk"); item4.Crafting.Add(CraftingTable.Workbench, 1); item4.RequiredItems.Add("TrophyBlob", 1); item4.RequiredItems.Add("Stone", 10); item4.Configurable = Configurability.Recipe; PrefabManager.RegisterPrefab(_minionBundle, "bvm_blobminion_projectile"); PrefabManager.RegisterPrefab(_minionBundle, "bvm_minionsummon_blob"); Item item5 = new Item(_minionBundle, "BVM_BlobElite_MonsterDisk"); item5.Crafting.Add(CraftingTable.Workbench, 1); item5.RequiredItems.Add("TrophyBlob", 2); item5.RequiredItems.Add("Stone", 10); item5.Configurable = Configurability.Recipe; PrefabManager.RegisterPrefab(_minionBundle, "bvm_blobeliteminion_projectile"); PrefabManager.RegisterPrefab(_minionBundle, "bvm_minionsummon_blobelite"); Item item6 = new Item(_minionBundle, "BVM_BlobLava_MonsterDisk"); item6.Crafting.Add(CraftingTable.Workbench, 1); item6.RequiredItems.Add("SulfurStone", 1); item6.RequiredItems.Add("ProustitePowder", 1); item6.RequiredItems.Add("Stone", 10); item6.Configurable = Configurability.Recipe; PrefabManager.RegisterPrefab(_minionBundle, "bvm_bloblavaminion_projectile"); PrefabManager.RegisterPrefab(_minionBundle, "bvm_minionsummon_bloblava"); Item item7 = new Item(_minionBundle, "BVM_BlobTar_MonsterDisk"); item7.Crafting.Add(CraftingTable.Workbench, 1); item7.RequiredItems.Add("TrophyGrowth", 1); item7.RequiredItems.Add("Stone", 10); item7.Configurable = Configurability.Recipe; PrefabManager.RegisterPrefab(_minionBundle, "bvm_blobtarminion_projectile"); PrefabManager.RegisterPrefab(_minionBundle, "bvm_minionsummon_blobtar"); Item item8 = new Item(_minionBundle, "BVM_Boar_MonsterDisk"); item8.Crafting.Add(CraftingTable.Workbench, 1); item8.RequiredItems.Add("TrophyBoar", 1); item8.RequiredItems.Add("Stone", 10); item8.Configurable = Configurability.Recipe; PrefabManager.RegisterPrefab(_minionBundle, "bvm_boarminion_projectile"); PrefabManager.RegisterPrefab(_minionBundle, "bvm_minionsummon_boar"); Item item9 = new Item(_minionBundle, "BVM_Bonemass_MonsterDisk"); item9.Crafting.Add(CraftingTable.Workbench, 1); item9.RequiredItems.Add("TrophyBonemass", 1); item9.RequiredItems.Add("Stone", 10); item9.Configurable = Configurability.Recipe; PrefabManager.RegisterPrefab(_minionBundle, "bvm_bonemassminion_projectile"); PrefabManager.RegisterPrefab(_minionBundle, "bvm_minionsummon_bonemass"); Item item10 = new Item(_minionBundle, "BVM_Charred_MonsterDisk"); item10["$bvm_charred_monsterdisk 1"].Crafting.Add(CraftingTable.Workbench, 1); item10["$bvm_charred_monsterdisk 1"].RequiredItems.Add("TrophyCharredArcher", 1); item10["$bvm_charred_monsterdisk 1"].RequiredItems.Add("Stone", 10); item10["$bvm_charred_monsterdisk 2"].Crafting.Add(CraftingTable.Workbench, 1); item10["$bvm_charred_monsterdisk 2"].RequiredItems.Add("TrophyCharredMage", 1); item10["$bvm_charred_monsterdisk 2"].RequiredItems.Add("Stone", 10); item10["$bvm_charred_monsterdisk 3"].Crafting.Add(CraftingTable.Workbench, 1); item10["$bvm_charred_monsterdisk 3"].RequiredItems.Add("TrophyCharredMelee", 1); item10["$bvm_charred_monsterdisk 3"].RequiredItems.Add("Stone", 10); item10.Configurable = Configurability.Recipe; PrefabManager.RegisterPrefab(_minionBundle, "bvm_charredminion_projectile"); PrefabManager.RegisterPrefab(_minionBundle, "bvm_minionsummon_charred"); Item item11 = new Item(_minionBundle, "BVM_Deathsquito_MonsterDisk"); item11.Crafting.Add(CraftingTable.Workbench, 1); item11.RequiredItems.Add("TrophyDeathsquito", 1); item11.RequiredItems.Add("Stone", 10); item11.Configurable = Configurability.Recipe; PrefabManager.RegisterPrefab(_minionBundle, "bvm_deathsquitominion_projectile"); PrefabManager.RegisterPrefab(_minionBundle, "bvm_minionsummon_deathsquito"); Item item12 = new Item(_minionBundle, "BVM_Deer_MonsterDisk"); item12.Crafting.Add(CraftingTable.Workbench, 1); item12.RequiredItems.Add("TrophyDeer", 1); item12.RequiredItems.Add("Stone", 10); item12.Configurable = Configurability.Recipe; PrefabManager.RegisterPrefab(_minionBundle, "bvm_deerminion_projectile"); PrefabManager.RegisterPrefab(_minionBundle, "bvm_minionsummon_deer"); Item item13 = new Item(_minionBundle, "BVM_Draugr_MonsterDisk"); item13["$bvm_draugr_monsterdisk 1"].Crafting.Add(CraftingTable.Workbench, 1); item13["$bvm_draugr_monsterdisk 1"].RequiredItems.Add("TrophyDraugr", 1); item13["$bvm_draugr_monsterdisk 1"].RequiredItems.Add("Stone", 10); item13["$bvm_draugr_monsterdisk 2"].Crafting.Add(CraftingTable.Workbench, 1); item13["$bvm_draugr_monsterdisk 2"].RequiredItems.Add("TrophyDraugrElite", 1); item13["$bvm_draugr_monsterdisk 2"].RequiredItems.Add("Stone", 10); item13["$bvm_draugr_monsterdisk 3"].Crafting.Add(CraftingTable.Workbench, 1); item13["$bvm_draugr_monsterdisk 3"].RequiredItems.Add("TrophyDraugrFem", 1); item13["$bvm_draugr_monsterdisk 3"].RequiredItems.Add("Stone", 10); item13.Configurable = Configurability.Recipe; PrefabManager.RegisterPrefab(_minionBundle, "bvm_draugrminion_projectile"); PrefabManager.RegisterPrefab(_minionBundle, "bvm_minionsummon_draugr"); Item item14 = new Item(_minionBundle, "BVM_Eikthyr_MonsterDisk"); item14.Crafting.Add(CraftingTable.Workbench, 1); item14.RequiredItems.Add("TrophyEikthyr", 1); item14.RequiredItems.Add("Stone", 10); item14.Configurable = Configurability.Recipe; PrefabManager.RegisterPrefab(_minionBundle, "bvm_eikthyrminion_projectile"); PrefabManager.RegisterPrefab(_minionBundle, "bvm_minionsummon_eikthyr"); Item item15 = new Item(_minionBundle, "BVM_Elder_MonsterDisk"); item15.Crafting.Add(CraftingTable.Workbench, 1); item15.RequiredItems.Add("TrophyTheElder", 1); item15.RequiredItems.Add("Stone", 10); item15.Configurable = Configurability.Recipe; PrefabManager.RegisterPrefab(_minionBundle, "bvm_elderminion_projectile"); PrefabManager.RegisterPrefab(_minionBundle, "bvm_minionsummon_elder"); Item item16 = new Item(_minionBundle, "BVM_Fader_MonsterDisk"); item16.Crafting.Add(CraftingTable.Workbench, 1); item16.RequiredItems.Add("TrophyFader", 1); item16.RequiredItems.Add("Stone", 10); item16.Configurable = Configurability.Recipe; PrefabManager.RegisterPrefab(_minionBundle, "bvm_faderminion_projectile"); PrefabManager.RegisterPrefab(_minionBundle, "bvm_minionsummon_fader"); Item item17 = new Item(_minionBundle, "BVM_FallenValkyrie_MonsterDisk"); item17.Crafting.Add(CraftingTable.Workbench, 1); item17.RequiredItems.Add("TrophyFallenValkyrie", 1); item17.RequiredItems.Add("Stone", 10); item17.Configurable = Configurability.Recipe; PrefabManager.RegisterPrefab(_minionBundle, "bvm_fallenvalkyrieminion_projectile"); PrefabManager.RegisterPrefab(_minionBundle, "bvm_minionsummon_fallenvalkyrie"); Item item18 = new Item(_minionBundle, "BVM_Fenring_MonsterDisk"); item18.Crafting.Add(CraftingTable.Workbench, 1); item18.RequiredItems.Add("TrophyFenring", 1); item18.RequiredItems.Add("Stone", 10); item18.Configurable = Configurability.Recipe; PrefabManager.RegisterPrefab(_minionBundle, "bvm_fenringminion_projectile"); PrefabManager.RegisterPrefab(_minionBundle, "bvm_minionsummon_fenring"); Item item19 = new Item(_minionBundle, "BVM_FenringCultist_MonsterDisk"); item19.Crafting.Add(CraftingTable.Workbench, 1); item19.RequiredItems.Add("TrophyCultist", 1); item19.RequiredItems.Add("Stone", 10); item19.Configurable = Configurability.Recipe; PrefabManager.RegisterPrefab(_minionBundle, "bvm_fenringcultistminion_projectile"); PrefabManager.RegisterPrefab(_minionBundle, "bvm_minionsummon_fenringcultist"); Item item20 = new Item(_minionBundle, "BVM_Gjall_MonsterDisk"); item20.Crafting.Add(CraftingTable.Workbench, 1); item20.RequiredItems.Add("TrophyGjall", 1); item20.RequiredItems.Add("Stone", 10); item20.Configurable = Configurability.Recipe; PrefabManager.RegisterPrefab(_minionBundle, "bvm_gjallminion_projectile"); PrefabManager.RegisterPrefab(_minionBundle, "bvm_minionsummon_gjall"); Item item21 = new Item(_minionBundle, "BVM_Goblin_MonsterDisk"); item21.Crafting.Add(CraftingTable.Workbench, 1); item21.RequiredItems.Add("TrophyGoblin", 1); item21.RequiredItems.Add("Stone", 10); item21.Configurable = Configurability.Recipe; PrefabManager.RegisterPrefab(_minionBundle, "bvm_goblinminion_projectile"); PrefabManager.RegisterPrefab(_minionBundle, "bvm_minionsummon_goblin"); Item item22 = new Item(_minionBundle, "BVM_GoblinBrute_MonsterDisk"); item22.Crafting.Add(CraftingTable.Workbench, 1); item22.RequiredItems.Add("TrophyGoblinBrute", 1); item22.RequiredItems.Add("Stone", 10); item22.Configurable = Configurability.Recipe; PrefabManager.RegisterPrefab(_minionBundle, "bvm_goblinbruteminion_projectile"); PrefabManager.RegisterPrefab(_minionBundle, "bvm_minionsummon_goblinbrute"); Item item23 = new Item(_minionBundle, "BVM_GoblinShaman_MonsterDisk"); item23.Crafting.Add(CraftingTable.Workbench, 1); item23.RequiredItems.Add("TrophyGoblinShaman", 1); item23.RequiredItems.Add("Stone", 10); item23.Configurable = Configurability.Recipe; PrefabManager.RegisterPrefab(_minionBundle, "bvm_goblinshamanminion_projectile"); PrefabManager.RegisterPrefab(_minionBundle, "bvm_minionsummon_goblinshaman"); Item item24 = new Item(_minionBundle, "BVM_Greydwarf_MonsterDisk"); item24.Crafting.Add(CraftingTable.Workbench, 1); item24.RequiredItems.Add("TrophyGreydwarf", 1); item24.RequiredItems.Add("Stone", 10); item24.Configurable = Configurability.Recipe; PrefabManager.RegisterPrefab(_minionBundle, "bvm_greydwarfminion_projectile"); PrefabManager.RegisterPrefab(_minionBundle, "bvm_minionsummon_greydwarf"); Item item25 = new Item(_minionBundle, "BVM_Hare_MonsterDisk"); item25.Crafting.Add(CraftingTable.Workbench, 1); item25.RequiredItems.Add("TrophyHare", 1); item25.RequiredItems.Add("Stone", 10); item25.Configurable = Configurability.Recipe; PrefabManager.RegisterPrefab(_minionBundle, "bvm_hareminion_projectile"); PrefabManager.RegisterPrefab(_minionBundle, "bvm_minionsummon_hare"); Item item26 = new Item(_minionBundle, "BVM_Hatchling_MonsterDisk"); item26.Crafting.Add(CraftingTable.Workbench, 1); item26.RequiredItems.Add("TrophyHatchling", 1); item26.RequiredItems.Add("Stone", 10); item26.Configurable = Configurability.Recipe; PrefabManager.RegisterPrefab(_minionBundle, "bvm_hatchlingminion_projectile"); PrefabManager.RegisterPrefab(_minionBundle, "bvm_minionsummon_hatchling"); Item item27 = new Item(_minionBundle, "BVM_Hen_MonsterDisk"); item27.Crafting.Add(CraftingTable.Workbench, 1); item27.RequiredItems.Add("ChickenEgg", 1); item27.RequiredItems.Add("Stone", 10); item27.Configurable = Configurability.Recipe; PrefabManager.RegisterPrefab(_minionBundle, "bvm_henminion_projectile"); PrefabManager.RegisterPrefab(_minionBundle, "bvm_minionsummon_hen"); Item item28 = new Item(_minionBundle, "BVM_Lox_MonsterDisk"); item28.Crafting.Add(CraftingTable.Workbench, 1); item28.RequiredItems.Add("TrophyLox", 1); item28.RequiredItems.Add("Stone", 10); item28.Configurable = Configurability.Recipe; PrefabManager.RegisterPrefab(_minionBundle, "bvm_loxminion_projectile"); PrefabManager.RegisterPrefab(_minionBundle, "bvm_minionsummon_lox"); Item item29 = new Item(_minionBundle, "BVM_Moder_MonsterDisk"); item29.Crafting.Add(CraftingTable.Workbench, 1); item29.RequiredItems.Add("TrophyDragonQueen", 1); item29.RequiredItems.Add("Stone", 10); item29.Configurable = Configurability.Recipe; PrefabManager.RegisterPrefab(_minionBundle, "bvm_moderminion_projectile"); PrefabManager.RegisterPrefab(_minionBundle, "bvm_minionsummon_moder"); Item item30 = new Item(_minionBundle, "BVM_Neck_MonsterDisk"); item30.Crafting.Add(CraftingTable.Workbench, 1); item30.RequiredItems.Add("TrophyNeck", 1); item30.RequiredItems.Add("Stone", 10); item30.Configurable = Configurability.Recipe; PrefabManager.RegisterPrefab(_minionBundle, "bvm_neckminion_projectile"); PrefabManager.RegisterPrefab(_minionBundle, "bvm_minionsummon_neck"); Item item31 = new Item(_minionBundle, "BVM_Seeker_MonsterDisk"); item31.Crafting.Add(CraftingTable.Workbench, 1); item31.RequiredItems.Add("TrophySeeker", 1); item31.RequiredItems.Add("Stone", 10); item31.Configurable = Configurability.Recipe; PrefabManager.RegisterPrefab(_minionBundle, "bvm_seekerminion_projectile"); PrefabManager.RegisterPrefab(_minionBundle, "bvm_minionsummon_seeker"); Item item32 = new Item(_minionBundle, "BVM_SeekerBrute_MonsterDisk"); item32.Crafting.Add(CraftingTable.Workbench, 1); item32.RequiredItems.Add("TrophySeekerBrute", 1); item32.RequiredItems.Add("Stone", 10); item32.Configurable = Configurability.Recipe; PrefabManager.RegisterPrefab(_minionBundle, "bvm_seekerbruteminion_projectile"); PrefabManager.RegisterPrefab(_minionBundle, "bvm_minionsummon_seekerbrute"); Item item33 = new Item(_minionBundle, "BVM_SeekerQueen_MonsterDisk"); item33.Crafting.Add(CraftingTable.Workbench, 1); item33.RequiredItems.Add("TrophySeekerQueen", 1); item33.RequiredItems.Add("Stone", 10); item33.Configurable = Configurability.Recipe; PrefabManager.RegisterPrefab(_minionBundle, "bvm_seekerqueenminion_projectile"); PrefabManager.RegisterPrefab(_minionBundle, "bvm_minionsummon_seekerqueen"); Item item34 = new Item(_minionBundle, "BVM_Skeleton_MonsterDisk"); item34.Crafting.Add(CraftingTable.Workbench, 1); item34.RequiredItems.Add("TrophySkeleton", 1); item34.RequiredItems.Add("Stone", 10); item34.Configurable = Configurability.Recipe; PrefabManager.RegisterPrefab(_minionBundle, "bvm_skeletonminion_projectile"); PrefabManager.RegisterPrefab(_minionBundle, "bvm_minionsummon_skeleton"); Item item35 = new Item(_minionBundle, "BVM_SkeletonPoison_MonsterDisk"); item35.Crafting.Add(CraftingTable.Workbench, 1); item35.RequiredItems.Add("TrophySkeletonPoison", 1); item35.RequiredItems.Add("Stone", 10); item35.Configurable = Configurability.Recipe; PrefabManager.RegisterPrefab(_minionBundle, "bvm_skeletonpoisonminion_projectile"); PrefabManager.RegisterPrefab(_minionBundle, "bvm_minionsummon_skeletonpoison"); Item item36 = new Item(_minionBundle, "BVM_StoneGolem_MonsterDisk"); item36.Crafting.Add(CraftingTable.Workbench, 1); item36.RequiredItems.Add("TrophySGolem", 1); item36.RequiredItems.Add("Stone", 10); item36.Configurable = Configurability.Recipe; PrefabManager.RegisterPrefab(_minionBundle, "bvm_stonegolemminion_projectile"); PrefabManager.RegisterPrefab(_minionBundle, "bvm_minionsummon_stonegolem"); Item item37 = new Item(_minionBundle, "BVM_Surtling_MonsterDisk"); item37.Crafting.Add(CraftingTable.Workbench, 1); item37.RequiredItems.Add("TrophySurtling", 1); item37.RequiredItems.Add("Stone", 10); item37.Configurable = Configurability.Recipe; PrefabManager.RegisterPrefab(_minionBundle, "bvm_surtlingminion_projectile"); PrefabManager.RegisterPrefab(_minionBundle, "bvm_minionsummon_surtling"); Item item38 = new Item(_minionBundle, "BVM_Troll_MonsterDisk"); item38.Crafting.Add(CraftingTable.Workbench, 1); item38.RequiredItems.Add("TrophyForestTroll", 1); item38.RequiredItems.Add("Stone", 10); item38.Configurable = Configurability.Recipe; PrefabManager.RegisterPrefab(_minionBundle, "bvm_trollminion_projectile"); PrefabManager.RegisterPrefab(_minionBundle, "bvm_minionsummon_troll"); Item item39 = new Item(_minionBundle, "BVM_Ulv_MonsterDisk"); item39.Crafting.Add(CraftingTable.Workbench, 1); item39.RequiredItems.Add("TrophyUlv", 1); item39.RequiredItems.Add("Stone", 10); item39.Configurable = Configurability.Recipe; PrefabManager.RegisterPrefab(_minionBundle, "bvm_ulvminion_projectile"); PrefabManager.RegisterPrefab(_minionBundle, "bvm_minionsummon_ulv"); Item item40 = new Item(_minionBundle, "BVM_Volture_MonsterDisk"); item40.Crafting.Add(CraftingTable.Workbench, 1); item40.RequiredItems.Add("TrophyVolture", 1); item40.RequiredItems.Add("Stone", 10); item40.Configurable = Configurability.Recipe; PrefabManager.RegisterPrefab(_minionBundle, "bvm_voltureminion_projectile"); PrefabManager.RegisterPrefab(_minionBundle, "bvm_minionsummon_volture"); Item item41 = new Item(_minionBundle, "BVM_Wolf_MonsterDisk"); item41.Crafting.Add(CraftingTable.Workbench, 1); item41.RequiredItems.Add("TrophyWolf", 1); item41.RequiredItems.Add("Stone", 10); item41.Configurable = Configurability.Recipe; PrefabManager.RegisterPrefab(_minionBundle, "bvm_wolfminion_projectile"); PrefabManager.RegisterPrefab(_minionBundle, "bvm_minionsummon_wolf"); Item item42 = new Item(_minionBundle, "BVM_Wraith_MonsterDisk"); item42.Crafting.Add(CraftingTable.Workbench, 1); item42.RequiredItems.Add("TrophyWraith", 1); item42.RequiredItems.Add("Stone", 10); item42.Configurable = Configurability.Recipe; PrefabManager.RegisterPrefab(_minionBundle, "bvm_wraithminion_projectile"); PrefabManager.RegisterPrefab(_minionBundle, "bvm_minionsummon_wraith"); Item item43 = new Item(_minionBundle, "BVM_Yagluth_MonsterDisk"); item43.Crafting.Add(CraftingTable.Workbench, 1); item43.RequiredItems.Add("TrophyGoblinKing", 1); item43.RequiredItems.Add("Stone", 10); item43.Configurable = Configurability.Recipe; PrefabManager.RegisterPrefab(_minionBundle, "bvm_yagluthminion_projectile"); PrefabManager.RegisterPrefab(_minionBundle, "bvm_minionsummon_yagluth"); Item item44 = new Item(_minionBundle, "BVM_GreydwarfElite_MonsterDisk"); item44.Crafting.Add(CraftingTable.Workbench, 1); item44.RequiredItems.Add("TrophyGreydwarfBrute", 1); item44.RequiredItems.Add("Stone", 10); item44.Configurable = Configurability.Recipe; PrefabManager.RegisterPrefab(_minionBundle, "bvm_greydwarfeliteminion_projectile"); PrefabManager.RegisterPrefab(_minionBundle, "bvm_minionsummon_greydwarfelite"); Item item45 = new Item(_minionBundle, "BVM_GreydwarfShaman_MonsterDisk"); item45.Crafting.Add(CraftingTable.Workbench, 1); item45.RequiredItems.Add("TrophyGreydwarfShaman", 1); item45.RequiredItems.Add("Stone", 10); item45.Configurable = Configurability.Recipe; PrefabManager.RegisterPrefab(_minionBundle, "bvm_greydwarfshamanminion_projectile"); PrefabManager.RegisterPrefab(_minionBundle, "bvm_minionsummon_greydwarfshaman"); PrefabManager.RegisterPrefab(_minionBundle, "bvm_fx_block_camshake"); PrefabManager.RegisterPrefab(_minionBundle, "bvm_sfx_bomb_throw"); PrefabManager.RegisterPrefab(_minionBundle, "bvm_sfx_wood_blocked"); PrefabManager.RegisterPrefab(_minionBundle, "bvm_vfx_blocked"); } } } 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 ItemManager { [PublicAPI] internal enum CraftingTable { Disabled, Inventory, [InternalName("piece_workbench")] Workbench, [InternalName("piece_cauldron")] Cauldron, [InternalName("forge")] Forge, [InternalName("piece_artisanstation")] ArtisanTable, [InternalName("piece_stonecutter")] StoneCutter, [InternalName("piece_magetable")] MageTable, [InternalName("blackforge")] BlackForge, Custom } [PublicAPI] internal enum ConversionPiece { Disabled, [InternalName("smelter")] Smelter, [InternalName("charcoal_kiln")] CharcoalKiln, [InternalName("blastfurnace")] BlastFurnace, [InternalName("windmill")] Windmill, [InternalName("piece_spinningwheel")] SpinningWheel, [InternalName("eitrrefinery")] EitrRefinery, Custom } internal class InternalName : Attribute { public readonly string internalName; public InternalName(string internalName) { this.internalName = internalName; } } [PublicAPI] internal class RequiredResourceList { public readonly List<Requirement> Requirements = new List<Requirement>(); public bool Free; public void Add(string itemName, int amount, int quality = 0) { Requirements.Add(new Requirement { itemName = itemName, amount = amount, quality = quality }); } public void Add(string itemName, ConfigEntry<int> amountConfig, int quality = 0) { Requirements.Add(new Requirement { itemName = itemName, amountConfig = amountConfig, quality = quality }); } } [PublicAPI] internal class CraftingStationList { public readonly List<CraftingStationConfig> Stations = new List<CraftingStationConfig>(); public void Add(CraftingTable table, int level) { Stations.Add(new CraftingStationConfig { Table = table, level = level }); } public void Add(string customTable, int level) { Stations.Add(new CraftingStationConfig { Table = CraftingTable.Custom, level = level, custom = customTable }); } } [PublicAPI] internal class ItemRecipe { public readonly RequiredResourceList RequiredItems = new RequiredResourceList(); public readonly RequiredResourceList RequiredUpgradeItems = new RequiredResourceList(); public readonly CraftingStationList Crafting = new CraftingStationList(); public int CraftAmount = 1; public bool RequireOnlyOneIngredient; public float QualityResultAmountMultiplier = 1f; public ConfigEntryBase? RecipeIsActive; } [PublicAPI] internal class Trade { public Trader Trader; public uint Price; public uint Stack = 1u; public string? RequiredGlobalKey; } [PublicAPI] [Flags] internal enum Trader { None = 0, Haldor = 1, Hildir = 2 } internal struct Requirement { public string itemName; public int amount; public ConfigEntry<int>? amountConfig; [Description("Set to a non-zero value to apply the requirement only for a specific quality")] public int quality; } internal struct CraftingStationConfig { public CraftingTable Table; public int level; public string? custom; } [Flags] internal enum Configurability { Disabled = 0, Recipe = 1, Stats = 2, Drop = 4, Trader = 8, Full = 0xF } [PublicAPI] internal class DropTargets { public readonly List<DropTarget> Drops = new List<DropTarget>(); public void Add(string creatureName, float chance, int min = 1, int? max = null, bool levelMultiplier = true) { Drops.Add(new DropTarget { creature = creatureName, chance = chance, min = min, max = max.GetValueOrDefault(min), levelMultiplier = levelMultiplier }); } } internal struct DropTarget { public string creature; public int min; public int max; public float chance; public bool levelMultiplier; } internal enum Toggle { On = 1, Off =