Decompiled source of balrond MonsterMayehm v0.2.1
plugins/BalrondMonsterMayhem.dll
Decompiled a month ago
The result has been truncated due to the large size, download it to view full contents!
using System; using System.Collections; using System.Collections.Generic; using System.Collections.Specialized; using System.Diagnostics; using System.Globalization; using System.IO; using System.Linq; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using System.Runtime.Versioning; using System.Security; using System.Security.Permissions; using System.Text; using BepInEx; using BepInEx.Bootstrap; using HarmonyLib; using LitJson2; using SoftReferenceableAssets; using UnityEngine; using UnityEngine.Audio; using UnityEngine.SceneManagement; using UpgradeWorld; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] [assembly: AssemblyTitle("Balrond Biomes")] [assembly: AssemblyDescription("Valheim Game Rework")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("Balrond - Worm Works Studio")] [assembly: AssemblyProduct("Balrond")] [assembly: AssemblyCopyright("Copyright © 2023")] [assembly: AssemblyTrademark("Balrond")] [assembly: ComVisible(false)] [assembly: Guid("f405ea1c-ac25-47a3-9aa2-a8f56c14bfd6")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: TargetFramework(".NETFramework,Version=v4.8", FrameworkDisplayName = ".NET Framework 4.8")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.0.0.0")] [module: UnverifiableCode] namespace UpgradeWorld { public class CommandRegistration { public string name = ""; public string description = ""; public string[] commands = new string[0]; public void AddCommand() { //IL_0014: Unknown result type (might be due to invalid IL or missing references) //IL_0027: Expected O, but got Unknown //IL_0022: Unknown result type (might be due to invalid IL or missing references) new ConsoleCommand(name, description, (ConsoleEvent)delegate(ConsoleEventArgs args) { string[] array = commands; foreach (string text in array) { args.Context.TryRunCommand(text, false, false); } }, false, false, false, false, false, (ConsoleOptionsFetcher)null, false, false, false); } } [HarmonyPatch(typeof(Terminal), "InitTerminal")] public static class Upgrade { private static List<CommandRegistration> registrations = new List<CommandRegistration>(); public const string GUID = "upgrade_world"; public static void Register(string name, string description, params string[] commands) { if (Chainloader.PluginInfos.ContainsKey("upgrade_world")) { registrations.Add(new CommandRegistration { name = name, description = description, commands = commands }); } } private static void Postfix() { foreach (CommandRegistration registration in registrations) { registration.AddCommand(); } } } } namespace BalrondNature { public class TableMapper { public static CraftingStation cauldron; public static CraftingStation workbench; public static CraftingStation heavyWorkbench; public static CraftingStation forge; public static CraftingStation ironworks; public static CraftingStation blackforge; public static CraftingStation stoneCutter; public static CraftingStation artisian; public static CraftingStation magetable; public static CraftingStation runeforge; public static CraftingStation tannery; public static CraftingStation fletcher; public static CraftingStation grill; public static CraftingStation alchemylab; public static List<GameObject> pieces = new List<GameObject>(); public static void setupTables(List<GameObject> list) { pieces = list; prepareTables(); } private static CraftingStation FindStation(List<GameObject> list, string name) { GameObject val = list.Find((GameObject x) => ((Object)x).name == name); if ((Object)(object)val != (Object)null) { return val.GetComponent<CraftingStation>(); } Debug.LogWarning((object)("TableMapper - Station not found: " + name)); return null; } private static void prepareTables() { cauldron = FindStation(pieces, "piece_cauldron"); workbench = FindStation(pieces, "piece_workbench"); heavyWorkbench = FindStation(pieces, "piece_heavy_workbench_bal"); forge = FindStation(pieces, "forge"); ironworks = FindStation(pieces, "piece_metalworks_bal"); blackforge = FindStation(pieces, "blackforge"); stoneCutter = FindStation(pieces, "piece_stonecutter"); artisian = FindStation(pieces, "piece_artisanstation"); runeforge = FindStation(pieces, "piece_runeforge_bal"); magetable = FindStation(pieces, "piece_magetable"); fletcher = FindStation(pieces, "piece_fletcher_bal"); } } } namespace BalrondExtendedAnimals { public class BalrondTranslator { public static Dictionary<string, Dictionary<string, string>> translations = new Dictionary<string, Dictionary<string, string>>(); public static Dictionary<string, string> getLanguage(string language) { Dictionary<string, string> result = null; try { result = translations[language]; } catch (Exception) { } return result; } } [Serializable] internal class MonsterHunger : MonoBehaviour { private MonsterAI monsterAI; private ZNetView zNetView; private Tameable tameable; private Humanoid humanoid; public float hungerTime = 600f; public bool canEat = true; private float currentHunger = 0f; public ItemDrop itemToConsume = null; private void Awake() { monsterAI = ((Component)this).GetComponent<MonsterAI>(); zNetView = ((Component)this).GetComponent<ZNetView>(); tameable = ((Component)this).GetComponent<Tameable>(); humanoid = ((Component)this).GetComponent<Humanoid>(); if ((Object)(object)tameable != (Object)null) { hungerTime = tameable.m_fedDuration; } float num = 0.75f; if (((Character)humanoid).m_level < 3) { num = ((Character)humanoid).m_level; } if (((Character)humanoid).m_level > 2) { num = 0.75f; } if (((Character)humanoid).m_level > 4) { num -= 0.1f; } if (((Character)humanoid).m_level > 5) { num -= 0.15f; } ((Character)humanoid).SetMaxHealth(((Character)humanoid).m_health * num); ((MonoBehaviour)this).InvokeRepeating("Hunger", 1f, 1f); } public void MonsterFoodHeal() { //IL_005f: Unknown result type (might be due to invalid IL or missing references) //IL_0064: Unknown result type (might be due to invalid IL or missing references) if (canEat) { ((BaseAI)monsterAI).m_character.Heal(((BaseAI)monsterAI).m_character.GetMaxHealth() / 5f, true); monsterAI.m_onConsumedItem(itemToConsume); humanoid.m_consumeItemEffects.Create(((Component)this).transform.position, Quaternion.identity, (Transform)null, 1f, -1); ((BaseAI)monsterAI).m_animator.SetTrigger("consume"); itemToConsume = null; canEat = false; currentHunger = 0f; Debug.LogWarning((object)("I have feasted: " + ((Object)((Component)this).gameObject).name)); } } private void Hunger() { currentHunger += 1f; if (currentHunger >= hungerTime) { canEat = true; } } } public class BaseLevelEffectSetupValue { public float scale = 1.1f; public float saturation = 0.5f; public float hue = -0.1f; public float value = -0.1f; public bool setEmmisive = false; public float sumValue = 0.05f; public LevelSetup setup = null; public GameObject enabledObject = null; public GameObject enabledObjectLevel2 = null; public GameObject enabledObjectLevel3 = null; public bool setEmissive = false; public Color emissive = Color.white; public void GetSetup(LevelEffects levelEffects) { //IL_0056: Unknown result type (might be due to invalid IL or missing references) if ((Object)(object)levelEffects == (Object)null) { Debug.LogWarning((object)"LevelEffects is null"); return; } List<LevelSetup> levelSetups = levelEffects.m_levelSetups; int num = levelSetups?.Count ?? 0; if (num > 0) { setup = levelSetups.Last(); ApplySetupValues(); } else { SetDefaultValues(num, ((Component)levelEffects).transform.localScale.y); } HandleCharacterSpecificAdjustments(levelEffects); } private void ApplySetupValues() { //IL_0087: Unknown result type (might be due to invalid IL or missing references) //IL_008c: Unknown result type (might be due to invalid IL or missing references) if (setup != null) { scale = setup.m_scale; saturation = setup.m_saturation; hue = setup.m_hue; value = setup.m_value; enabledObject = setup.m_enableObject; enabledObjectLevel2 = enabledObject; enabledObjectLevel3 = enabledObject; emissive = setup.m_emissiveColor; setEmissive = setup.m_setEmissiveColor; } } private void SetDefaultValues(int levels, float baseScale) { switch (levels) { case 0: scale = baseScale; saturation = 0f; hue = 0f; value = 0f; break; case 1: scale = baseScale + 0.05f; saturation = 0.5f; hue = -0.05f; value = -0.05f; break; case 2: scale = baseScale + 0.1f; saturation = 0.5f; hue = -0.1f; value = -0.1f; break; } } private void HandleCharacterSpecificAdjustments(LevelEffects levelEffects) { Character character = levelEffects.m_character; object obj; if (character == null) { obj = null; } else { GameObject gameObject = ((Component)character).gameObject; obj = ((gameObject != null) ? ((Object)gameObject).name : null); } string text = (string)obj; if (string.IsNullOrEmpty(text)) { return; } string text2 = text; string text3 = text2; if (!(text3 == "Deer")) { if (text3 == "Boar") { EditBoar(levelEffects); } } else { EditDeer(levelEffects); } } private void EditDeer(LevelEffects levelEffects) { if (levelEffects.m_levelSetups.Count >= 2) { GameObject enableObject = levelEffects.m_levelSetups[0].m_enableObject; GameObject enableObject2 = levelEffects.m_levelSetups[1].m_enableObject; enabledObjectLevel2 = enableObject; enabledObjectLevel3 = enableObject2; Transform parent = enableObject.transform.parent; object obj; if (parent == null) { obj = null; } else { Transform obj2 = parent.Find("Antler1"); obj = ((obj2 != null) ? ((Component)obj2).gameObject : null); } GameObject val = (GameObject)obj; if ((Object)(object)val != (Object)null) { enabledObject = val; levelEffects.m_levelSetups[0].m_enableObject = val; levelEffects.m_levelSetups[1].m_enableObject = val; } } } private void EditBoar(LevelEffects levelEffects) { } } public class LevelEffectGenerator { private readonly BaseLevelEffectSetupValue baseSetup = new BaseLevelEffectSetupValue(); public void CreateVisuals(LevelEffects levelEffects) { if (!((Object)(object)levelEffects == (Object)null)) { baseSetup.GetSetup(levelEffects); int num = levelEffects.m_levelSetups?.Count ?? 0; int num2 = Mathf.Max(0, 6 - num); for (int i = 0; i < num2; i++) { float delta = baseSetup.sumValue * (float)(i + 1); LevelSetup item = CreateSetup(delta, num2, i + 1); levelEffects.m_levelSetups.Add(item); } } } public LevelEffects CreateLevelEffectAt(Transform visual, SkinnedMeshRenderer meshRenderer) { if ((Object)(object)meshRenderer == (Object)null) { object obj; if (visual == null) { obj = null; } else { Transform parent = visual.parent; obj = ((parent != null) ? ((Object)parent).name : null); } Debug.LogWarning((object)("No renderer for visual effects: " + (string?)obj)); return null; } return InitLevelEffects(visual, meshRenderer); } public LevelEffects CreateLevelEffectComponent(Transform visual) { SkinnedMeshRenderer[] componentsInChildren = ((Component)visual).GetComponentsInChildren<SkinnedMeshRenderer>(); if (componentsInChildren.Length == 1) { return InitLevelEffects(visual, componentsInChildren[0]); } if (componentsInChildren.Length > 1) { object obj; if (visual == null) { obj = null; } else { Transform parent = visual.parent; obj = ((parent != null) ? ((Object)parent).name : null); } Debug.LogWarning((object)("Too many renderers for visual effects: " + (string?)obj)); } return null; } private LevelEffects InitLevelEffects(Transform visual, SkinnedMeshRenderer renderer) { LevelEffects val = ((Component)visual).gameObject.AddComponent<LevelEffects>(); val.m_mainRender = (Renderer)(object)renderer; Transform parent = visual.parent; val.m_character = (Character)(object)((parent != null) ? ((Component)parent).GetComponent<Humanoid>() : null); return val; } private LevelSetup CreateSetup(float delta, int maxLevels, int level) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_0019: Unknown result type (might be due to invalid IL or missing references) //IL_002c: Unknown result type (might be due to invalid IL or missing references) //IL_003f: Unknown result type (might be due to invalid IL or missing references) //IL_0052: Unknown result type (might be due to invalid IL or missing references) //IL_0060: Unknown result type (might be due to invalid IL or missing references) //IL_0071: Unknown result type (might be due to invalid IL or missing references) //IL_00b8: Unknown result type (might be due to invalid IL or missing references) //IL_00bd: Unknown result type (might be due to invalid IL or missing references) //IL_00c3: Expected O, but got Unknown return new LevelSetup { m_scale = baseSetup.scale + delta, m_saturation = baseSetup.saturation + delta, m_hue = baseSetup.hue + delta, m_value = baseSetup.value + delta, m_enableObject = PickEnabledObject(maxLevels, level), m_setEmissiveColor = baseSetup.setEmissive, m_emissiveColor = new Color(baseSetup.emissive.r + delta, baseSetup.emissive.g + delta, baseSetup.emissive.b + delta, baseSetup.emissive.a) }; } private GameObject PickEnabledObject(int maxLevels, int level) { if (maxLevels >= 6) { if (level > 4) { return baseSetup.enabledObjectLevel3; } if (level > 2) { return baseSetup.enabledObjectLevel2; } } else if (maxLevels == 3) { if (level > 3) { return baseSetup.enabledObjectLevel3; } if (level > 2) { return baseSetup.enabledObjectLevel2; } } else { switch (level) { case 2: return baseSetup.enabledObjectLevel3; case 1: return baseSetup.enabledObjectLevel2; } } return baseSetup.enabledObject; } } internal class AttackList { public static string[] attacks = new string[59] { "Frostbjorn_Attack_bal", "Frostbjorn_RageAttack_bal", "Frostbjorn_Taunt_bal", "Habrok_Bite_bal", "Habrok_Headbutt_bal", "habrok_Pounce_bal", "HabrokBirb_Bite_bal", "Greydwarf_Moss_RootSpawn_bal", "battlehog_base_attack_bal", "penguin_base_attack_bal", "polarbear_attack_bal", "bear_attack_bal", "bear_attackBite_bal", "bear_attack2_bal", "bear_attackStanding_bal", "bloodling_aoe_bal", "crabForest_attack_bal", "crabSea_attack_bal", "crabSea_attack2_bal", "crabSea_attack3_bal", "crabStone_attack_bal", "crabStone_attack2_bal", "crabStone_attack3_bal", "CrowHit_melee_bal", "Deathsquito_sting_bal", "darkbat_melee_bal", "Ell_BiteAttack_bal", "Ell_shock_bal", "Goat_charge_bal", "Goleming_attack_bal", "Goleming_throw_bal", "GreydwarfBeeKeeper_throw_bal", "Greydwarf_crasher_attack_bal", "Greydwarf_crasher_attack_left_bal", "Greydwarf_crasher_claw_bal", "Greydwarf_crasher_claw_left_bal", "GreylingBee_attack_bal", "GreylingBee_attack_left_bal", "GreylingElite_attackSlam_bal", "GreylingElite_attack_bal", "GreyWatcherAttackMelee_bal", "hog_base_attack_bal", "hog_smack_attack_bal", "Leech_PrimalBiteAttack_bal", "mossroot_attack_bal", "Moth_attack_bal", "NeckBrute_BiteAttack_bal", "NeckBrute_spit_bal", "Shark_attack_bal", "StagGhost_antler_bal", "Stag_antler_bal", "Stag_charge_bal", "StormDrake_lighting_bolt_bal", "SerpentBaby_attack_bal", "GoblinSkeleton_attack_bal", "FenringBrute_attack_claw_double_bal", "lostsoul_attack_bal", "Greydwarf_frozen_attack_bal", "Greydwarf_scorched_attack_bal" }; } internal class ItemList { public static string[] items = new string[0]; } internal class MonsterList { public static string[] monsters = new string[40] { "Doe_bal", "NeckTadpole_bal", "PolarBear_bal", "Fenring_Brute_bal", "Fox_bal", "Penguin_bal", "BattleHog_bal", "Ell_bal", "LostSoul_bal", "Bear_bal", "Bear_cub_bal", "CrabSea_bal", "CrabStone_bal", "DarkBat_bal", "Habrok_bal", "HabrokBirb_bal", "TrollOutcast_bal", "TrollBrute_bal", "Frostbjorn_bal", "GiantCrow_bal", "GoatKid_bal", "Goat_bal", "goblin_skeleton_bal", "Greydwarf_Crusher_bal", "Greydwarf_Frozen_bal", "Greydwarf_Moss_bal", "Greydwarf_Scorched_bal", "GreylingBeeKeeper_bal", "GreylingElite_bal", "Hog_bal", "LeechPrimal_bal", "MossRoot_bal", "NeckBrute_bal", "Serpentling_bal", "Shark_bal", "StagGhost_bal", "Stag_bal", "Stormdrake_bal", "TrollUndead_bal", "Fox_cub_bal" }; } internal class OtherObjectList { public static string[] other = new string[56] { "root_beam_projectile_bal", "bloodling_selfDestruct_bal", "deer_ragdoll_bal", "fx_crab_death_bal", "GreydwarfBeekeper_throw_projectile_bal", "moss_tentacle_spawn_bal", "moth_aoe_bal", "NeckBrute_Ragdoll_bal", "neck_spit_projectile_bal", "sfx_bear_alerted_bal", "sfx_bear_attack_bal", "sfx_bear_birth_bal", "sfx_bear_death_bal", "sfx_bear_hit", "sfx_bear_hit_bal", "sfx_bear_idle_bal", "sfx_goleming_alerted_bal", "sfx_goleming_attack_bal", "sfx_goleming_death_bal", "sfx_goleming_hit_bal", "sfx_goleming_idle_bal", "sfx_lootbox_poof_bal", "sfx_neckBruteSpit_bal", "sfx_rock_destroyed_bal", "sfx_wings_flying_bal", "stormdrake_lightingBolt_bal", "vfx_neckSpitHit_bal", "vfx_shark_death_bal", "sfx_penguin_hurt_bal", "sfx_penguin_idle_bal", "sfx_penguin_death_bal", "sfx_penguin_alerted_bal", "ell_shock_aoe_bal", "vfx_thunderbolt_explosion_bal", "spiritbolt_projectile_bal", "vfx_spiritbolt_explosion_bal", "fx_TrollUndead_Gibs_bal", "vfx_LostSoulDeath_bal", "Spawner_Bear_bal", "Spawner_BearCub_bal", "Spawner_CrabSea_bal", "Spawner_FenringBrute_bal", "Spawner_GoblinSkeleton_bal", "Spawner_GreydwarfFrozen_bal", "Spawner_GreydwarfScorched_bal", "Spawner_Habrok_bal", "Spawner_HabrokBirb_bal", "Spawner_LostSoul_bal", "Spawner_PolarBear_bal", "Spawner_Stag_bal", "Spawner_StagGhost_bal", "Spawner_TrollOutcat_bal", "Spawner_TrollUndead_bal", "Spawner_NeckBrute_bal", "Spawner_NeckTadpole_bal", "Spawner_GiantCrow_bal" }; } public class PlayerRace : MonoBehaviour { private ZNetView _znetView; private Player _player; private VisEquipment _visEquipment; private SkinnedMeshRenderer _meshRenderer; private Transform _visual; private GameObject _currentEars; private GameObject _currentFangs; private Material _playerMaterial; private Material _playerHair; public float bodyBuff = 0f; public float bodyHeight = 0f; public float bodyThickness = 0f; private string _currentRace = "Human"; public Dictionary<string, RaceStruct> Races { get; private set; } = new Dictionary<string, RaceStruct>(); private void Awake() { _znetView = ((Component)this).GetComponent<ZNetView>(); if (!((Object)(object)_znetView == (Object)null)) { _player = ((Component)this).GetComponent<Player>(); if (!((Object)(object)_player == (Object)null)) { ((Component)_visEquipment).GetComponent<VisEquipment>(); _meshRenderer = _visEquipment?.m_bodyModel; SkinnedMeshRenderer meshRenderer = _meshRenderer; _visual = ((meshRenderer != null) ? ((Component)meshRenderer).transform.parent : null); GetPlayerMaterials(); CheckRace(); } } } public void CheckRace() { SetRace(GetRace()); SetupRace(_currentRace); } public string GetRace() { string value; return _player.m_customData.TryGetValue("BalrondRace", out value) ? value : "Human"; } public void SetRace(string race) { string currentRace = (_player.m_customData["BalrondRace"] = race); _currentRace = currentRace; } public bool HasRaceStruct(string race = "") { return Races.ContainsKey(race); } public RaceStruct GetRaceStruct(string race = "") { RaceStruct value; return Races.TryGetValue(race, out value) ? value : default(RaceStruct); } private void GetPlayerMaterials() { if ((Object)(object)_meshRenderer == (Object)null) { return; } Material[] materials = ((Renderer)_meshRenderer).materials; foreach (Material val in materials) { if (((Object)val).name.Contains("PlayerMaterial")) { _playerMaterial = val; } if (((Object)val).name.Contains("PlayerHair")) { _playerHair = val; } } } public void SetupRace(string race = "") { //IL_002c: Unknown result type (might be due to invalid IL or missing references) if (HasRaceStruct(race)) { RaceStruct raceStruct = GetRaceStruct(race); _currentRace = race; ((Component)_visual).transform.localScale = raceStruct.scale; setMaterialTexture(raceStruct.m_body); SetRaceDetails(raceStruct); Humanoid player = (Humanoid)(object)_player; } } private void setMaterialTexture(Texture texture) { if (!((Object)(object)texture == (Object)null) && !((Object)(object)_playerMaterial == (Object)null)) { _playerMaterial.SetTexture("_mainTex", texture); } } private void SetRaceDetails(RaceStruct raceStruct) { if (raceStruct.hasEar) { if ((Object)(object)_currentEars != (Object)null) { _currentEars.SetActive(false); } Transform val = FindDeepChild(_visual, raceStruct.ears); if ((Object)(object)val != (Object)null) { _currentEars = ((Component)val).gameObject; _currentEars.SetActive(true); } } if (raceStruct.hasFangs) { if ((Object)(object)_currentFangs != (Object)null) { _currentFangs.SetActive(false); } Transform val2 = FindDeepChild(_visual, raceStruct.fangs); if ((Object)(object)val2 != (Object)null) { _currentFangs = ((Component)val2).gameObject; _currentFangs.SetActive(true); } } } public static Transform FindDeepChild(Transform parent, string name) { //IL_0011: Unknown result type (might be due to invalid IL or missing references) //IL_0017: Expected O, but got Unknown foreach (Transform item in parent) { Transform val = item; if (((Object)val).name == name) { return val; } Transform val2 = FindDeepChild(val, name); if ((Object)(object)val2 != (Object)null) { return val2; } } return null; } } [Serializable] public struct RaceStruct { public string race; public bool hasEar; public bool hasFangs; public string ears; public string fangs; public Texture m_body; public Vector3 scale; } public class ItemEdits { private List<GameObject> items; private List<GameObject> buildPieces; private GameObject FindItem(List<GameObject> list, string name) { GameObject val = list.Find((GameObject x) => ((Object)x).name == name); if ((Object)(object)val != (Object)null) { return val; } Debug.LogWarning((object)("BalrondMonsterMayhem: Item Not Found: " + name)); return null; } private Requirement createReq(string name, int amount, int amountPerLevel) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0007: Expected O, but got Unknown Requirement val = new Requirement(); val.m_recover = true; ItemDrop component = FindItem(items, name).GetComponent<ItemDrop>(); val.m_resItem = component; val.m_amount = amount; val.m_amountPerLevel = amountPerLevel; return val; } public void editItems(List<GameObject> list) { foreach (GameObject item in list) { changeItem(item); } } private void changeItem(GameObject gameObject) { string name = ((Object)gameObject).name; string text = name; } private void CheckStats(GameObject gameObject) { string name = ((Object)gameObject).name; string text = name; } private void editSpiritDamageStat(GameObject gameObject, int spiritDamage) { ItemDrop component = gameObject.GetComponent<ItemDrop>(); component.m_itemData.m_shared.m_damages.m_spirit = spiritDamage; if (((Object)gameObject).name == "skeleton_mace" || ((Object)gameObject).name == "imp_fireball_attack") { component.m_itemData.m_shared.m_damages.m_blunt += spiritDamage; } } private void editSurtlingDamageStat(GameObject gameObject, int fireDamage) { ItemDrop component = gameObject.GetComponent<ItemDrop>(); component.m_itemData.m_shared.m_damages.m_fire = fireDamage; component.m_itemData.m_shared.m_damages.m_blunt += fireDamage; } private void editStackAndWeight(GameObject gameObject, float weight = -1f, int stack = 1) { ItemDrop component = gameObject.GetComponent<ItemDrop>(); component.m_itemData.m_shared.m_weight = ((weight == -1f) ? component.m_itemData.m_shared.m_weight : weight); component.m_itemData.m_shared.m_autoStack = true; component.m_itemData.m_shared.m_maxStackSize = stack; } private void editArmorSetEffect(GameObject gameObject, int setSize, string statusName, string setName) { ItemDrop component = gameObject.GetComponent<ItemDrop>(); component.m_itemData.m_shared.m_setName = setName; component.m_itemData.m_shared.m_setSize = setSize; component.m_itemData.m_shared.m_setStatusEffect = ObjectDB.instance.m_StatusEffects.Find((StatusEffect x) => ((Object)x).name == statusName); } private void editQualityValues(GameObject gameObject, float weightRatio = 0f, int quality = 4, float weight = -1f, float sppedDebuff = 0f, float equipeSpeed = -1f) { ItemDrop component = gameObject.GetComponent<ItemDrop>(); component.m_itemData.m_shared.m_weight = ((weight == -1f) ? ((float)component.m_itemData.m_shared.m_maxQuality) : weight); component.m_itemData.m_shared.m_scaleWeightByQuality = ((weightRatio == 0f) ? component.m_itemData.m_shared.m_scaleWeightByQuality : weightRatio); component.m_itemData.m_shared.m_equipDuration = ((equipeSpeed == -1f) ? component.m_itemData.m_shared.m_equipDuration : equipeSpeed); component.m_itemData.m_shared.m_movementModifier = sppedDebuff; component.m_itemData.m_shared.m_maxQuality = quality; } private void editDefense(GameObject gameObject, float blockPower = -1f, float blockPowerPerLevel = -1f, float deflectionForce = -1f, float deflectionForcePerLevel = 0f, float blockBonus = -1f) { ItemDrop component = gameObject.GetComponent<ItemDrop>(); component.m_itemData.m_shared.m_blockPower = ((blockPower == -1f) ? component.m_itemData.m_shared.m_blockPower : blockPower); component.m_itemData.m_shared.m_blockPowerPerLevel = ((blockPowerPerLevel == -1f) ? component.m_itemData.m_shared.m_blockPowerPerLevel : blockPowerPerLevel); component.m_itemData.m_shared.m_deflectionForce = ((deflectionForce == -1f) ? component.m_itemData.m_shared.m_deflectionForce : deflectionForce); component.m_itemData.m_shared.m_deflectionForcePerLevel = ((deflectionForcePerLevel == -1f) ? component.m_itemData.m_shared.m_deflectionForcePerLevel : deflectionForcePerLevel); component.m_itemData.m_shared.m_timedBlockBonus = ((blockBonus == -1f) ? component.m_itemData.m_shared.m_timedBlockBonus : blockBonus); } private void editArmor(GameObject gameObject, float armor = -1f, float armorPerLevel = -1f) { ItemDrop component = gameObject.GetComponent<ItemDrop>(); component.m_itemData.m_shared.m_armor = ((armor == -1f) ? component.m_itemData.m_shared.m_armor : armor); component.m_itemData.m_shared.m_armorPerLevel = ((armorPerLevel == -1f) ? component.m_itemData.m_shared.m_armorPerLevel : armorPerLevel); } private void editDurability(GameObject gameObject, float durability = -1f, float durabilityPerLevel = -1f, float useDrain = -1f) { ItemDrop component = gameObject.GetComponent<ItemDrop>(); component.m_itemData.m_durability = ((durability == -1f) ? component.m_itemData.m_durability : durability); component.m_itemData.m_shared.m_durabilityPerLevel = ((durabilityPerLevel == -1f) ? component.m_itemData.m_shared.m_durabilityPerLevel : durabilityPerLevel); component.m_itemData.m_shared.m_useDurabilityDrain = ((useDrain == -1f) ? component.m_itemData.m_shared.m_useDurabilityDrain : useDrain); } private void editValueAndTeleport(GameObject gameObject, int newValue = -1, bool teleportable = true) { ItemDrop component = gameObject.GetComponent<ItemDrop>(); int value = component.m_itemData.m_shared.m_value; component.m_itemData.m_shared.m_value = ((newValue != -1) ? newValue : value); component.m_itemData.m_shared.m_teleportable = teleportable; } } public class EventBuilder { private SpawnData spawnData; private List<GameObject> prefabList; public void EditEvents(List<RandomEvent> randomEvents, List<GameObject> allPrefabs) { prefabList = allPrefabs; foreach (RandomEvent randomEvent in randomEvents) { randomEvent.m_notRequiredGlobalKeys?.Clear(); randomEvent.m_altNotRequiredPlayerKeys?.Clear(); randomEvent.m_altRequiredNotKnownItems?.Clear(); Debug.Log((object)("Editing Event: " + randomEvent.m_name)); ApplyModifications(randomEvent); } } private void ModifyEvent(RandomEvent evt, Biome biome, bool nearBase, int durationMultiplier) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0003: Unknown result type (might be due to invalid IL or missing references) evt.m_biome = biome; evt.m_nearBaseOnly = nearBase; evt.m_duration *= (float)durationMultiplier; evt.m_notRequiredGlobalKeys = new List<string>(); } private void setSpawnDataObject(SpawnData spawn = null) { if (spawnData == null && spawn != null) { spawnData = spawn; } } private void ApplyModifications(RandomEvent evt) { //IL_04cd: Unknown result type (might be due to invalid IL or missing references) //IL_04d4: Unknown result type (might be due to invalid IL or missing references) //IL_04d5: 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_03ec: Unknown result type (might be due to invalid IL or missing references) //IL_03ed: Unknown result type (might be due to invalid IL or missing references) //IL_0325: Unknown result type (might be due to invalid IL or missing references) //IL_032f: Unknown result type (might be due to invalid IL or missing references) //IL_0330: Unknown result type (might be due to invalid IL or missing references) //IL_0792: Unknown result type (might be due to invalid IL or missing references) //IL_079c: Unknown result type (might be due to invalid IL or missing references) //IL_079d: Unknown result type (might be due to invalid IL or missing references) switch (evt.m_name) { case "surtlings": ModifyEvent(evt, (Biome)571, nearBase: true, 1); setSpawnDataObject(evt.m_spawn?[0]); evt.m_pauseIfNoPlayerInArea = false; evt.m_spawn[0].m_maxLevel = 3; evt.m_spawn[0].m_groupSizeMax = 2; AddSpawner(evt, "SurtlingSpawner_bal", 10); break; case "foresttrolls": { ModifyEvent(evt, (Biome)580, nearBase: false, 1); evt.m_pauseIfNoPlayerInArea = false; SpawnData obj2 = evt.m_spawn[0]; obj2.m_maxSpawned *= 2; evt.m_spawn[0].m_maxLevel = 3; evt.m_spawn[0].m_groupSizeMax = 1; setSpawnDataObject(evt.m_spawn?[0]); evt.m_forceEnvironment = "Misty"; evt.m_requiredGlobalKeys = new List<string> { "defeated_bonemass", "KilledTroll" }; break; } case "blobs": { evt.m_biome = (Biome)(evt.m_biome | 0x200); evt.m_pauseIfNoPlayerInArea = false; evt.m_forceEnvironment = "Bonemass"; setSpawnDataObject(evt.m_spawn?[0]); SpawnData obj7 = evt.m_spawn[0]; obj7.m_maxSpawned *= 2; evt.m_spawn[0].m_maxLevel = 3; evt.m_spawn[0].m_groupSizeMax = 4; SpawnData obj8 = evt.m_spawn[1]; obj8.m_maxSpawned *= 2; evt.m_spawn[1].m_maxLevel = 3; evt.m_spawn[1].m_groupSizeMax = 2; break; } case "army_bonemass": { evt.m_biome = (Biome)(evt.m_biome | 0x260); evt.m_forceEnvironment = "Bonemass"; evt.m_pauseIfNoPlayerInArea = false; setSpawnDataObject(evt.m_spawn?[0]); SpawnData obj3 = evt.m_spawn[0]; obj3.m_maxSpawned += 2; evt.m_spawn[0].m_maxLevel = 3; evt.m_spawn[0].m_groupSizeMax = 4; evt.m_spawn[0].m_spawnChance = 75f; SpawnData obj4 = evt.m_spawn[1]; obj4.m_maxSpawned += 2; evt.m_spawn[1].m_maxLevel = 3; evt.m_spawn[1].m_groupSizeMax = 2; eventAddPoisonSkeleton(evt); eventAddSkeletonSpawner(evt); eventAddDraugrSpawner(evt); break; } case "army_moder": { evt.m_biome = (Biome)(evt.m_biome | 0x40); evt.m_forceEnvironment = "SnowStorm"; evt.m_pauseIfNoPlayerInArea = false; setSpawnDataObject(evt.m_spawn?[0]); SpawnData obj9 = evt.m_spawn[0]; obj9.m_maxSpawned *= 2; evt.m_spawn[0].m_maxLevel = 3; evt.m_spawn[0].m_groupSizeMax = 2; break; } case "army_eikthyr": evt.m_forceEnvironment = "Misty"; setSpawnDataObject(evt.m_spawn?[0]); evt.m_pauseIfNoPlayerInArea = false; evt.m_spawn[0].m_maxLevel = 2; evt.m_spawn[0].m_groupSizeMax = 1; evt.m_spawn[1].m_maxLevel = 2; evt.m_spawn[1].m_groupSizeMax = 1; AddMonster(evt, "NeckBrute_bal", 50, 1, 2); AddMonster(evt, "Stag_bal", 50, 1); AddMonster(evt, "Hog_bal", 50, 1, 2); AddMonster(evt, "Bear_bal", 25, 1); break; case "army_theelder": evt.m_forceEnvironment = "DeepForest Mist"; evt.m_pauseIfNoPlayerInArea = false; setSpawnDataObject(evt.m_spawn?[0]); evt.m_spawn[0].m_maxSpawned = 4; evt.m_spawn[0].m_maxLevel = 2; evt.m_spawn[0].m_groupSizeMax = 2; evt.m_spawn[1].m_maxSpawned = 2; evt.m_spawn[1].m_maxLevel = 2; evt.m_spawn[1].m_groupSizeMax = 2; evt.m_spawn[2].m_spawnChance = 50f; evt.m_spawn[2].m_maxSpawned = 1; evt.m_spawn[2].m_maxLevel = 2; AddMonster(evt, "Greyling", 75, 2, 3); AddMonster(evt, "GreylingElite_bal", 15, 1, 2); AddMonster(evt, "GreylingBeeKeeper_bal", 15, 1, 2); AddMonster(evt, "Greydwarf_Moss_bal", 10, 1, 2); AddMonster(evt, "Greydwarf_Crusher_bal", 5, 1); eventAddGreydwarfSpawner(evt); break; case "wolves": { evt.m_pauseIfNoPlayerInArea = false; evt.m_nearBaseOnly = false; setSpawnDataObject(evt.m_spawn?[0]); SpawnData obj = evt.m_spawn[0]; obj.m_maxSpawned *= 2; evt.m_spawn[0].m_maxLevel = 3; break; } case "skeletons": { evt.m_biome = (Biome)(evt.m_biome | 0x260); evt.m_forceEnvironment = "GdKing"; evt.m_pauseIfNoPlayerInArea = false; evt.m_nearBaseOnly = false; setSpawnDataObject(evt.m_spawn?[0]); SpawnData obj5 = evt.m_spawn[0]; obj5.m_maxSpawned *= 2; evt.m_spawn[0].m_maxLevel = 5; evt.m_spawn[0].m_groupSizeMax = 4; evt.m_spawn[0].m_spawnChance = 75f; SpawnData obj6 = evt.m_spawn[1]; obj6.m_maxSpawned *= 2; evt.m_spawn[1].m_maxLevel = 3; evt.m_spawn[1].m_groupSizeMax = 2; eventAddSkeletonSpawner(evt); AddMonster(evt, "TrollUndead_bal", 5, 1); break; } case "boss_gdking": if (spawnData != null) { AddMonster(evt, "Greyling", 20, 1, 2); AddMonster(evt, "GreylingElite_bal", 15, 1, 2); AddMonster(evt, "GreylingBeeKeeper_bal", 15, 1, 2); AddMonster(evt, "Greydwarf", 15, 1, 2); AddMonster(evt, "Greydwarf_Shaman", 10, 1, 2); AddMonster(evt, "Greydwarf_Moss_bal", 10, 1, 2); AddMonster(evt, "Greydwarf_Elite", 5, 1); AddMonster(evt, "Greydwarf_Crusher_bal", 5, 1); eventAddGreydwarfSpawner(evt); } break; case "boss_eikthyr": if (spawnData != null) { AddMonster(evt, "StagGhost_bal", 33, 3, 3); } break; case "boss_moder": if (spawnData != null) { AddMonster(evt, "Stormdrake_bal", 5, 1); AddMonster(evt, "Hatchling", 75, 3, 3); } break; case "boss_bonemass": if (spawnData != null) { AddMonster(evt, "Blob", 22, 1, 3); AddMonster(evt, "BlobElite", 33, 1, 3); eventAddSkeletonSpawner(evt); eventAddDraugrSpawner(evt); } break; case "boss_goblinking": if (spawnData != null) { AddMonster(evt, "TrollUndead_bal", 5, 1); eventAddSkeletonSpawner(evt); } break; } } private void AddSpawner(RandomEvent evt, string prefabName, int chance) { GameObject val = prefabList.Find((GameObject x) => ((Object)x).name == prefabName); if ((Object)(object)val == (Object)null) { Debug.LogWarning((object)("Couldn't find spawner prefab: " + prefabName)); return; } SpawnData val2 = CreateSpawnData(spawnData, val, "event_" + prefabName, chance, 1, 1); if (val2 != null) { evt.m_spawn.Add(val2); } } public void AddMonster(RandomEvent evt, string name, int chance = 50, int amount = 2, int maxLevel = 1) { GameObject val = prefabList.Find((GameObject x) => ((Object)x).name == name); if ((Object)(object)val == (Object)null) { Debug.LogWarning((object)("Couldn't find monster prefab: " + name)); return; } SpawnData val2 = CreateSpawnData(spawnData, val, "event_" + evt.m_name + "_" + name, chance, amount, maxLevel); if (val2 != null) { evt.m_spawn.Add(val2); } } private SpawnData CreateSpawnData(SpawnData template, GameObject prefab, string name, int chance, int amount, int maxLevel) { //IL_0004: Unknown result type (might be due to invalid IL or missing references) //IL_0009: Unknown result type (might be due to invalid IL or missing references) //IL_0010: Unknown result type (might be due to invalid IL or missing references) //IL_0017: Unknown result type (might be due to invalid IL or missing references) //IL_001e: Unknown result type (might be due to invalid IL or missing references) //IL_0025: Unknown result type (might be due to invalid IL or missing references) //IL_0030: Unknown result type (might be due to invalid IL or missing references) //IL_003b: Unknown result type (might be due to invalid IL or missing references) //IL_0041: Unknown result type (might be due to invalid IL or missing references) //IL_0046: Unknown result type (might be due to invalid IL or missing references) //IL_0048: Unknown result type (might be due to invalid IL or missing references) SpawnData val = (SpawnData)((template != null) ? ((object)template.Clone()) : ((object)new SpawnData { m_spawnAtDay = true, m_spawnAtNight = true, m_huntPlayer = true, m_canSpawnCloseToPlayer = true, m_maxAltitude = 2000f, m_minAltitude = 0f, m_biome = (Biome)895, m_biomeArea = (BiomeArea)3 })); val.m_name = name; val.m_prefab = prefab; val.m_spawnChance = chance; val.m_maxSpawned = amount; val.m_groupSizeMax = amount; val.m_groupSizeMin = 1; val.m_maxLevel = maxLevel; return val; } public RandomEvent AddAmbushEvent(List<GameObject> allPrefabs, RandomEvent baseEvent, string eventname, Biome biome, string monsterName1, string monsterName2, string globalKey = "") { //IL_00d5: 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_0149: Unknown result type (might be due to invalid IL or missing references) //IL_014b: Unknown result type (might be due to invalid IL or missing references) //IL_015d: Unknown result type (might be due to invalid IL or missing references) prefabList = allPrefabs; RandomEvent val = baseEvent.Clone(); val.m_duration = 60f; val.m_eventRange = 48f; val.m_forceEnvironment = "Misty"; val.m_forceMusic = "CombatEventL4"; val.m_nearBaseOnly = false; val.m_requiredGlobalKeys = new List<string> { globalKey }; val.m_altRequiredPlayerKeysAny = new List<string>(); val.m_notRequiredGlobalKeys = new List<string>(); val.m_altRequiredKnownItems = new List<ItemDrop>(); val.m_altRequiredNotKnownItems = new List<ItemDrop>(); val.m_random = true; val.m_enabled = true; val.m_pauseIfNoPlayerInArea = false; val.m_name = "Ambush_" + eventname; val.m_startMessage = "$tag_ambush_start_bal"; val.m_endMessage = ""; val.m_biome = biome; val.m_spawn[0].m_name = val.m_name + " - " + monsterName1; val.m_spawn[0].m_prefab = prefabList.Find((GameObject x) => ((Object)x).name == monsterName1); val.m_spawn[0].m_maxSpawned = 2; val.m_spawn[0].m_biome = biome; val.m_spawn[0].m_biomeArea = (BiomeArea)3; val.m_spawn[0].m_maxLevel = 3; val.m_spawn[0].m_groupSizeMax = 1; val.m_spawn[0].m_groupSizeMin = 1; val.m_spawn[0].m_spawnChance = 75f; val.m_spawn[0].m_minAltitude = 1f; val.m_spawn[0].m_maxAltitude = 10000f; val.m_spawn[0].m_huntPlayer = true; SpawnData val2 = val.m_spawn[0].Clone(); val2.m_prefab = prefabList.Find((GameObject x) => ((Object)x).name == monsterName2); val2.m_name = val.m_name + " - " + monsterName2; val2.m_maxSpawned = 2; val2.m_maxLevel = 2; val.m_spawn.Add(val2); return val; } public void AddNewEvents(List<RandomEvent> randomEvents, List<GameObject> allPrefabs) { prefabList = allPrefabs; string baseName = "surtlings"; RandomEvent val = randomEvents.Find((RandomEvent x) => x.m_name == baseName); if (val != null) { string forestTrollsBase = "foresttrolls"; RandomEvent baseEvent = randomEvents.Find((RandomEvent x) => x.m_name == forestTrollsBase); List<RandomEvent> collection = new List<RandomEvent> { DarkNightEvent(val), GhostNightEvent(val), BloodMoonEvent(val), FeedingTimeEvent(val), DvergerRevangeEvent(val), BlackMassEvent(val), NewForestTrolls(baseEvent) }; RandomEvent baseEvent2 = randomEvents.Find((RandomEvent x) => x.m_name == "wolves"); randomEvents.Add(AddAmbushEvent(allPrefabs, baseEvent2, "NeckHunt", (Biome)1, "Neck", "NeckBrute_bal")); randomEvents.Add(AddAmbushEvent(allPrefabs, baseEvent2, "GreylingHunt", (Biome)1, "Greyling", "GreylingElite_bal")); randomEvents.Add(AddAmbushEvent(allPrefabs, baseEvent2, "GreydwarfHunt1", (Biome)8, "Greydwarf", "Greydwarf_Elite", "defeated_eikthyr")); randomEvents.Add(AddAmbushEvent(allPrefabs, baseEvent2, "GreydwarfHunt2", (Biome)8, "Greydwarf_Shaman", "Greydwarf_Moss_bal", "defeated_eikthyr")); randomEvents.Add(AddAmbushEvent(allPrefabs, baseEvent2, "GreydwarfHunt3", (Biome)8, "Greydwarf_Elite", "Greydwarf_Crusher_bal", "defeated_gdking")); randomEvents.Add(AddAmbushEvent(allPrefabs, baseEvent2, "SkeletonHunt", (Biome)8, "Skeleton", "Skeleton_Poison", "defeated_gdking")); randomEvents.Add(AddAmbushEvent(allPrefabs, baseEvent2, "SkeletonHunt2", (Biome)2, "Skeleton_Poison", "goblin_skeleton_bal", "defeated_bonemass")); randomEvents.Add(AddAmbushEvent(allPrefabs, baseEvent2, "LeechHunt", (Biome)2, "Leech", "LeechPrimal_bal", "defeated_gdking")); randomEvents.Add(AddAmbushEvent(allPrefabs, baseEvent2, "GhostHunt", (Biome)2, "Ghost", "Wraith", "defeated_bonemass")); randomEvents.Add(AddAmbushEvent(allPrefabs, baseEvent2, "DraugrHunt", (Biome)2, "Draugr", "Draugr_Elite", "defeated_gdking")); randomEvents.Add(AddAmbushEvent(allPrefabs, baseEvent2, "FenringHunt", (Biome)4, "Fenring", "Fenring_Cultist", "defeated_bonemass")); randomEvents.Add(AddAmbushEvent(allPrefabs, baseEvent2, "FoxHunt", (Biome)16, "Fox_bal", "Fox_bal", "defeated_bonemass")); randomEvents.Add(AddAmbushEvent(allPrefabs, baseEvent2, "HabrokHunt", (Biome)16, "Habrok_bal", "Habrok_bal", "defeated_bonemass")); randomEvents.Add(AddAmbushEvent(allPrefabs, baseEvent2, "GoblinHunt1", (Biome)16, "Goblin", "GoblinShaman", "defeated_dragon")); randomEvents.Add(AddAmbushEvent(allPrefabs, baseEvent2, "GoblinHunt1", (Biome)16, "Goblin", "GoblinBrute", "defeated_dragon")); randomEvents.Add(AddAmbushEvent(allPrefabs, baseEvent2, "SeekerHunt1", (Biome)512, "SeekerBrood", "Seeker", "defeated_dragon")); randomEvents.Add(AddAmbushEvent(allPrefabs, baseEvent2, "SeekerHunt2", (Biome)512, "Seeker", "SeekerBrute", "defeated_dragon")); randomEvents.Add(AddAmbushEvent(allPrefabs, baseEvent2, "CharredHunt1", (Biome)32, "Charred_Twitcher", "Charred_Mage", "defeated_queen")); randomEvents.Add(AddAmbushEvent(allPrefabs, baseEvent2, "CharredHunt2", (Biome)32, "Charred_Archer", "Charred_Melee", "defeated_queen")); randomEvents.Add(AddAmbushEvent(allPrefabs, baseEvent2, "FaderHunt1", (Biome)32, "Charred_Twitcher_Summoned", "Charred_Archer_Fader", "defeated_queen")); randomEvents.Add(AddAmbushEvent(allPrefabs, baseEvent2, "FaderHunt2", (Biome)32, "Charred_Twitcher_Summoned", "Charred_Melee_Fader", "defeated_queen")); randomEvents.AddRange(collection); } } private RandomEvent DarkNightEvent(RandomEvent baseEvent) { Debug.Log((object)"Creating event: DarkNight"); List<string> keys = new List<string> { "defeated_gdking" }; List<SpawnData> list = new List<SpawnData>(); if (spawnData != null) { list.Add(EventCreateMonster(baseEvent, "DarkNight", "DarkBat_bal", 99, 10, 3)); } return CreateEvent(baseEvent, (Biome)27, keys, new List<string>(), list, "DarkNight", "The Darkest Night starts", "The Dark night passes", "CombatEventL2", "Darklands_dark"); } private RandomEvent GhostNightEvent(RandomEvent baseEvent) { Debug.Log((object)"Creating event: GhostNight"); List<string> keys = new List<string> { "defeated_gdking" }; List<SpawnData> list = new List<SpawnData>(); if (spawnData != null) { list.Add(EventCreateMonster(baseEvent, "GhostNight", "Ghost", 75, 3, 3)); list.Add(EventCreateMonster(baseEvent, "GhostNight", "LostSoul_bal", 75, 3, 3)); } return CreateEvent(baseEvent, (Biome)63, keys, new List<string>(), list, "GhostNightEvent", "The Spirits awaken", "The Spirits rest again", "CombatEventL1", "Crypt"); } private RandomEvent FeedingTimeEvent(RandomEvent baseEvent) { Debug.Log((object)"Creating event: FeedingTime"); List<string> keys = new List<string> { "defeated_bonemass" }; List<SpawnData> list = new List<SpawnData>(); if (spawnData != null) { list.Add(EventCreateMonster(baseEvent, "FeedingTime", "Serpentling_bal", 75, 4, 3)); list.Add(EventCreateMonster(baseEvent, "FeedingTime", "Serpent", 25, 2, 3)); } return CreateEvent(baseEvent, (Biome)256, keys, new List<string>(), list, "FeedingTime", "The Serpent Feeding Season started", "The feeding season ended", "CombatEventL3", "Misty"); } private RandomEvent BloodMoonEvent(RandomEvent baseEvent) { Debug.Log((object)"Creating event: BloodMoon"); List<string> keys = new List<string> { "defeated_bonemass", "killedFenring" }; List<SpawnData> list = new List<SpawnData>(); if (spawnData != null) { list.Add(EventCreateMonster(baseEvent, "BloodMoon", "Bat", 75, 8, 3)); list.Add(EventCreateMonster(baseEvent, "BloodMoon", "Ulv", 75, 8, 3)); list.Add(EventCreateMonster(baseEvent, "BloodMoon", "Fenring", 50, 6, 2)); list.Add(EventCreateMonster(baseEvent, "BloodMoon", "Fenring_Cultist", 25, 3, 1)); } return CreateEvent(baseEvent, (Biome)895, keys, new List<string>(), list, "BloodMoon", "The Blood Moon rises", "The Blood Moon fades away", "CombatEventL4", "Darklands_dark"); } private RandomEvent BlackMassEvent(RandomEvent baseEvent) { Debug.Log((object)"Creating event: BlackMass"); List<string> keys = new List<string> { "defeated_dragon" }; List<string> noKeys = new List<string> { "defeated_queen" }; List<SpawnData> list = new List<SpawnData>(); if (spawnData != null) { list.Add(EventCreateMonster(baseEvent, "BlackMass", "BlobTar", 75, 6, 3)); } return CreateEvent(baseEvent, (Biome)571, keys, noKeys, list, "BlackMass", "Black Mass starts", "Black Mass ends", "CombatEventL4", "Ashlands_ashrain"); } private RandomEvent NewForestTrolls(RandomEvent baseEvent) { Debug.Log((object)"Creating event: NewForestTrolls"); List<string> keys = new List<string> { "KilledTroll" }; List<SpawnData> list = new List<SpawnData>(); if (spawnData != null) { list.Add(EventCreateMonster(baseEvent, "NewForestTrolls", "TrollOutcast_bal", 75, 3, 3)); } return CreateEvent(baseEvent, (Biome)11, keys, new List<string>(), list, "NewForestTrolls", "Rush of Forest Trolls starts", "Rush of Forest Trolls ends", baseEvent.m_forceMusic, baseEvent.m_forceEnvironment); } private RandomEvent DvergerRevangeEvent(RandomEvent baseEvent) { //IL_00e4: Unknown result type (might be due to invalid IL or missing references) //IL_00e7: Unknown result type (might be due to invalid IL or missing references) Debug.Log((object)"Creating event: DvergerRevange"); List<string> keys = new List<string> { "defeated_goblinking", "killedDverger" }; List<string> noKeys = new List<string> { "defeated_queen" }; List<SpawnData> list = new List<SpawnData>(); if (spawnData != null) { list.Add(EventCreateMonster(baseEvent, "DvergerRevange", "DvergerMage_event", 75, 2, 3)); list.Add(EventCreateMonster(baseEvent, "DvergerRevange", "DvergerMageFire_event", 75, 1, 2)); list.Add(EventCreateMonster(baseEvent, "DvergerRevange", "DvergerMageIce_event", 75, 1, 2)); list.Add(EventCreateMonster(baseEvent, "DvergerRevange", "DvergerMageSupport_event", 75, 1, 2)); list.Add(EventCreateMonster(baseEvent, "DvergerRevange", "Dverger_event", 50, 2, 2)); } Biome biome = (Biome)127; return CreateEvent(baseEvent, biome, keys, noKeys, list, "DvergerRevange", "It's payback time", "Hope you learned the lesson", "CombatEventL3", "Twilight_SnowStorm", 200f); } private RandomEvent SeekerHuntEvent(RandomEvent baseEvent) { //IL_0020: Unknown result type (might be due to invalid IL or missing references) //IL_00ad: Unknown result type (might be due to invalid IL or missing references) Debug.Log((object)"Creating event: SeekerHunt"); List<string> list = new List<string>(); List<string> list2 = new List<string>(); List<SpawnData> list3 = new List<SpawnData>(); Biome biome = (Biome)127; list.Add("defeated_goblinking"); list.Add("killedSeeker"); list2.Add("defeated_queen"); if (spawnData != null) { list3.Add(EventCreateMonster(baseEvent, "SeekerHunt", "SeekerBrood", 75, 10, 3)); list3.Add(EventCreateMonster(baseEvent, "SeekerHunt", "Seeker", 50, 2, 2)); list3.Add(EventCreateMonster(baseEvent, "SeekerHunt", "SeekerBrute", 25, 1, 1)); } return CreateEvent(baseEvent, biome, list, list2, list3, "SeekerHunt", "The Hive hungers", "THe Hive have feasted", "CombatEventL2", "Eikthyr", 200f); } private RandomEvent DeathBreedingSeasonEvent(RandomEvent baseEvent) { //IL_0023: Unknown result type (might be due to invalid IL or missing references) //IL_0093: Unknown result type (might be due to invalid IL or missing references) Debug.Log((object)"Creating event: DeathBreedingSeason"); List<string> list = new List<string>(); List<string> list2 = new List<string>(); List<SpawnData> list3 = new List<SpawnData>(); Biome biome = (Biome)555; list.Add("defeated_dragon"); list.Add("killedInsecto"); list2.Add("defeated_queen"); if (spawnData != null) { list3.Add(EventCreateMonster(baseEvent, "DeathBreedingSeason", "Deathsquito_bal_event", 75, 4, 3)); list3.Add(EventCreateMonster(baseEvent, "DeathBreedingSeason", "Tick", 50, 8, 2)); } return CreateEvent(baseEvent, biome, list, list2, list3, "DeathBreedingSeason", "Breeding Season starts", "Breeding Season ends", "CombatEventL4", "Clear", 200f); } private RandomEvent CreateEvent(RandomEvent baseEvent, Biome biome, List<string> keys, List<string> noKeys, List<SpawnData> spawns, string name, string start, string stop, string music, string env, float duration = 100f, bool random = true) { //IL_0052: Unknown result type (might be due to invalid IL or missing references) //IL_0053: Unknown result type (might be due to invalid IL or missing references) RandomEvent val = baseEvent.Clone(); val.m_name = name; val.m_startMessage = start; val.m_endMessage = stop; val.m_forceMusic = music ?? val.m_forceMusic; val.m_forceEnvironment = env; val.m_requiredGlobalKeys = keys; val.m_notRequiredGlobalKeys = noKeys; val.m_spawn = spawns; val.m_biome = biome; val.m_duration = duration; val.m_random = random; return val; } private SpawnData EventCreateMonster(RandomEvent baseEvent, string eventName, string name, int chance, int amount, int maxLvl) { //IL_00f8: Unknown result type (might be due to invalid IL or missing references) //IL_00ff: Unknown result type (might be due to invalid IL or missing references) if (baseEvent == null || baseEvent.m_spawn == null || baseEvent.m_spawn.Count == 0) { return null; } GameObject val = prefabList.Find((GameObject x) => ((Object)x).name == name); if ((Object)(object)val == (Object)null) { return null; } SpawnData val2 = baseEvent.m_spawn[0].Clone(); val2.m_name = "event_" + eventName + "_" + name; val2.m_prefab = val; val2.m_spawnChance = chance; val2.m_maxSpawned = amount; val2.m_groupSizeMax = amount; val2.m_groupSizeMin = 1; val2.m_maxLevel = maxLvl; val2.m_spawnAtDay = true; val2.m_spawnAtNight = true; val2.m_huntPlayer = true; val2.m_canSpawnCloseToPlayer = true; val2.m_maxAltitude = 2000f; val2.m_minAltitude = 0f; val2.m_biome = (Biome)895; val2.m_biomeArea = (BiomeArea)3; return val2; } private void eventAddPoisonSkeleton(RandomEvent randomEvent) { SpawnData val = randomEvent.m_spawn[1].Clone(); val.m_name = "event_Skeleton_Poison"; val.m_prefab = prefabList.Find((GameObject x) => ((Object)x).name == "Skeleton_Poison"); val.m_spawnChance = 50f; val.m_maxSpawned = 2; randomEvent.m_spawn.Add(val); } private void eventAddSkeletonSpawner(RandomEvent randomEvent) { SpawnData val = randomEvent.m_spawn[0].Clone(); val.m_name = "event_BonePileSpawner"; val.m_prefab = prefabList.Find((GameObject x) => ((Object)x).name == "BonePileSpawner"); val.m_spawnChance = 10f; val.m_maxSpawned = 1; val.m_levelUpMinCenterDistance = 1E+14f; val.m_maxLevel = 0; val.m_groupSizeMax = 1; randomEvent.m_spawn.Add(val); } private void eventAddDraugrSpawner(RandomEvent randomEvent) { SpawnData val = randomEvent.m_spawn[0].Clone(); val.m_name = "event_Spawner_DraugrPile"; val.m_prefab = prefabList.Find((GameObject x) => ((Object)x).name == "Spawner_DraugrPile"); val.m_spawnChance = 10f; val.m_maxSpawned = 1; val.m_levelUpMinCenterDistance = 1E+14f; val.m_maxLevel = 0; val.m_groupSizeMax = 1; randomEvent.m_spawn.Add(val); } private void eventAddGreydwarfSpawner(RandomEvent randomEvent) { SpawnData val = randomEvent.m_spawn[0].Clone(); val.m_name = "event_Spawner_GreydwarfNest"; val.m_prefab = prefabList.Find((GameObject x) => ((Object)x).name == "Spawner_GreydwarfNest"); val.m_spawnChance = 5f; val.m_maxSpawned = 1; val.m_levelUpMinCenterDistance = 1E+14f; val.m_maxLevel = 0; val.m_groupSizeMax = 1; randomEvent.m_spawn.Add(val); } private void eventSurtlingSpawner(RandomEvent randomEvent) { SpawnData val = randomEvent.m_spawn[0].Clone(); val.m_name = "event_SurtlingSpawner"; val.m_prefab = prefabList.Find((GameObject x) => ((Object)x).name == "SurtlingSpawner"); val.m_spawnChance = 10f; val.m_maxSpawned = 1; val.m_levelUpMinCenterDistance = 1E+14f; val.m_maxLevel = 0; val.m_groupSizeMax = 1; randomEvent.m_spawn.Add(val); } } public class LocationBuilder { public static List<string> vanillaLocationsYouEdit = new List<string> { "TrollCave02" }; public List<ZoneLocation> locations = new List<ZoneLocation>(); public void editLocations(List<ZoneLocation> locationList) { if (locationList == null || locationList.Count == 0) { Debug.LogWarning((object)"LOCATION LIST IS EMPTY!"); } else { DeepNorthSetup(locationList); } } public void DebugMe(List<ZoneLocation> locationList) { for (int i = 0; i < locationList.Count; i++) { GetLog(locationList[i], i); } } private ZoneLocation FindLocation(List<ZoneLocation> locationList, string name) { return locationList.Find((ZoneLocation x) => x.m_prefabName == name); } private void DeepNorthSetup(List<ZoneLocation> locationList) { Debug.Log((object)(Launch.projectName + ": Preparing Locations for Deep North")); HashSet<string> hashSet = new HashSet<string> { "TrollCave02" }; foreach (string item in hashSet) { ZoneLocation val = FindLocation(locationList, item); if (val != null) { editLocation(val); } else { Debug.LogWarning((object)("Location not found: " + item)); } } } private void editLocation(ZoneLocation zoneLocation) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_001c: Unknown result type (might be due to invalid IL or missing references) _ = zoneLocation.m_prefab; if (0 == 0) { zoneLocation.m_enable = true; zoneLocation.m_biome = (Biome)68; zoneLocation.m_minDistanceFromSimilar = 44f; zoneLocation.m_minAltitude = 3f; zoneLocation.m_minDistance = 0f; zoneLocation.m_maxDistance = 0f; string prefabName = zoneLocation.m_prefabName; if (prefabName != "Mistlands_Harbour1") { zoneLocation.m_maxAltitude = 3000f; } if (prefabName == "MountainWell1") { zoneLocation.m_minAltitude = 0f; zoneLocation.m_maxAltitude = 3000f; } } } private void changeBiomeSetup(List<ZoneLocation> locationList) { Debug.Log((object)(Launch.projectName + ": Editing Locations for world spawn")); } private void ApplyToLocations(List<ZoneLocation> locationList, string[] names, Action<ZoneLocation> action) { for (int i = 0; i < names.Length; i++) { ZoneLocation val = FindLocation(locationList, names[i]); if (val != null) { action(val); } else { Debug.LogWarning((object)("Location not found: " + names[i])); } } } private void locationEditSpecial(ZoneLocation loc) { //IL_002c: Unknown result type (might be due to invalid IL or missing references) //IL_007b: Unknown result type (might be due to invalid IL or missing references) //IL_00a4: Unknown result type (might be due to invalid IL or missing references) //IL_011c: Unknown result type (might be due to invalid IL or missing references) //IL_0181: Unknown result type (might be due to invalid IL or missing references) //IL_01db: Unknown result type (might be due to invalid IL or missing references) //IL_0257: Unknown result type (might be due to invalid IL or missing references) string prefabName = loc.m_prefabName; if (IsIn(prefabName, "SunkenCrypt", "SunkenCrypt4")) { loc.m_biome = (Biome)2; loc.m_minDistance = 600f; loc.m_maxDistance = 10500f; loc.m_minAltitude = 0f; loc.m_maxAltitude = 100000f; loc.m_iconPlaced = true; loc.m_quantity *= 2; loc.m_prioritized = true; loc.m_biomeArea = (BiomeArea)3; loc.m_minDistanceFromSimilar = 33f; return; } if (prefabName == "MountainCave02") { loc.m_biome = (Biome)68; loc.m_minAltitude = 20f; loc.m_maxAltitude = 100000f; loc.m_minDistance = 600f; loc.m_quantity *= 3; loc.m_maxDistance = 10500f; loc.m_minDistanceFromSimilar = 33f; return; } if (IsIn(prefabName, "Crypt3", "Crypt4")) { loc.m_biome = (Biome)607; loc.m_minDistance = 600f; loc.m_maxDistance = 10500f; loc.m_minAltitude = 15f; loc.m_maxAltitude = 100000f; loc.m_minDistanceFromSimilar = 33f; loc.m_quantity *= 2; return; } if (prefabName == "WoodFarm1") { loc.m_biome = (Biome)95; loc.m_minDistance = 300f; loc.m_maxDistance = 10500f; loc.m_minAltitude = 10f; loc.m_maxAltitude = 10000f; loc.m_quantity *= 2; return; } if (prefabName == "WoodVillage1") { loc.m_biome = (Biome)95; loc.m_minDistance = 1500f; loc.m_maxDistance = 10500f; loc.m_minAltitude = 10f; loc.m_maxAltitude = 10000f; loc.m_quantity *= 2; return; } if (IsIn(prefabName, "GoblinCamp2", "StoneTower1", "StoneTower3", "Ruin3")) { loc.m_biome = (Biome)25; loc.m_minDistance = 2500f; loc.m_maxDistance = 10500f; loc.m_minAltitude = 10f; loc.m_maxAltitude = 100000f; return; } switch (prefabName) { case "Eikthyrnir": loc.m_group = "bossarena"; loc.m_minDistance = 300f; loc.m_maxDistance = 800f; loc.m_quantity = 30; loc.m_unique = true; break; case "GDKing": loc.m_group = "bossarena"; loc.m_minDistanceFromSimilar = 1000f; loc.m_minDistance = 1000f; loc.m_maxDistance = 2500f; loc.m_quantity = 10; loc.m_unique = true; break; case "Bonemass": loc.m_group = "bossarena"; loc.m_minDistanceFromSimilar = 1000f; loc.m_minDistance = 1500f; loc.m_maxDistance = 3500f; loc.m_quantity = 10; loc.m_unique = true; break; case "Dragonqueen": loc.m_group = "bossarena"; loc.m_minDistanceFromSimilar = 1000f; loc.m_minDistance = 300f; loc.m_maxDistance = 5000f; loc.m_quantity = 10; loc.m_unique = true; break; case "GoblinKing": loc.m_group = "bossarena"; loc.m_minDistanceFromSimilar = 1000f; loc.m_minDistance = 3000f; loc.m_maxDistance = 7000f; loc.m_quantity = 10; loc.m_unique = true; break; case "Mistlands_DvergrBossEntrance1": loc.m_group = "bossarena"; loc.m_minDistanceFromSimilar = 1000f; loc.m_minDistance = 5500f; loc.m_maxDistance = 8500f; loc.m_quantity = 10; loc.m_unique = true; break; case "FaderLocation": loc.m_group = "bossarena"; loc.m_quantity = 10; loc.m_unique = true; break; } } private void biomeSwap(ZoneLocation zoneLocation) { //IL_000a: Unknown result type (might be due to invalid IL or missing references) //IL_0010: Unknown result type (might be due to invalid IL or missing references) //IL_0013: Unknown result type (might be due to invalid IL or missing references) //IL_0016: Unknown result type (might be due to invalid IL or missing references) //IL_001a: Unknown result type (might be due to invalid IL or missing references) //IL_001e: Unknown result type (might be due to invalid IL or missing references) //IL_0022: Unknown result type (might be due to invalid IL or missing references) //IL_0029: Unknown result type (might be due to invalid IL or missing references) //IL_002d: Unknown result type (might be due to invalid IL or missing references) //IL_0055: Unknown result type (might be due to invalid IL or missing references) //IL_00a6: 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_010a: Unknown result type (might be due to invalid IL or missing references) //IL_0147: Unknown result type (might be due to invalid IL or missing references) //IL_016e: Unknown result type (might be due to invalid IL or missing references) //IL_01ae: Unknown result type (might be due to invalid IL or missing references) //IL_01d5: Unknown result type (might be due to invalid IL or missing references) //IL_027c: Unknown result type (might be due to invalid IL or missing references) //IL_02bd: Unknown result type (might be due to invalid IL or missing references) //IL_02e4: Unknown result type (might be due to invalid IL or missing references) //IL_0345: Unknown result type (might be due to invalid IL or missing references) //IL_037e: Unknown result type (might be due to invalid IL or missing references) //IL_03c4: Unknown result type (might be due to invalid IL or missing references) //IL_03e8: Unknown result type (might be due to invalid IL or missing references) string prefabName = zoneLocation.m_prefabName; Biome biome = (Biome)11; Biome biome2 = (Biome)514; Biome biome3 = (Biome)9; Biome biome4 = (Biome)48; Biome biome5 = (Biome)95; Biome biome6 = (Biome)68; Biome biome7 = (Biome)94; Biome biome8 = (Biome)596; Biome biome9 = (Biome)86; if (IsIn(prefabName, "Ruin1", "Ruin2")) { editLocationParams(zoneLocation, biome); zoneLocation.m_minAltitude = 5f; zoneLocation.m_maxAltitude = 150f; } if (IsIn(prefabName, "TarPit1", "TarPit2", "TarPit3")) { editLocationParams(zoneLocation, biome4); zoneLocation.m_minAltitude = 5f; zoneLocation.m_maxAltitude = 70f; return; } switch (prefabName) { case "SwampWell1": editLocationParams(zoneLocation, biome9); return; case "ShipSetting01": editLocationParams(zoneLocation, biome5); zoneLocation.m_minAltitude = -5f; zoneLocation.m_maxAltitude = 25f; return; case "MountainGrave01": editLocationParams(zoneLocation, biome8); return; case "InfestedTree01": editLocationParams(zoneLocation, biome2); return; } if (IsIn(prefabName, "AbandonedLogCabin02", "AbandonedLogCabin03", "AbandonedLogCabin04")) { editLocationParams(zoneLocation, biome6, 1000); } else if (prefabName == "StoneTowerRuins03") { editLocationParams(zoneLocation, biome3); } else if (IsIn(prefabName, "WoodHouse1", "WoodHouse2", "WoodHouse3", "WoodHouse4", "WoodHouse5", "WoodHouse6", "WoodHouse7", "WoodHouse8", "WoodHouse9", "WoodHouse10", "WoodHouse11", "WoodHouse12", "WoodHouse13", "StoneHouse3", "StoneHouse4")) { editLocationParams(zoneLocation, biome5); } else if (IsIn(prefabName, "SwampRuin1", "SwampRuin2", "StoneTowerRuins04")) { editLocationParams(zoneLocation, biome7); } else if (prefabName == "StoneTowerRuins05") { editLocationParams(zoneLocation, biome9, 1000); } else if (IsIn(prefabName, "StoneTowerRuins06", "StoneTowerRuins07", "StoneTowerRuins08", "StoneTowerRuins09", "StoneTowerRuins10", "StoneWall1", "StoneWall2")) { editLocationParams(zoneLocation, biome5, 1000); } else if (IsIn(prefabName, "StoneHenge6", "StoneHouse5_heath")) { editLocationParams(zoneLocation, biome5, 1500); } else if (IsIn(prefabName, "SwampHut1", "SwampHut2", "SwampHut3", "SwampHut5")) { editLocationParams(zoneLocation, biome7, 1500); } else if (prefabName == "SwampHut4") { editLocationParams(zoneLocation, biome7); } } private void editLocationParams(ZoneLocation zoneLocation, Biome biome, int minDistance = 500) { //IL_0009: Unknown result type (might be due to invalid IL or missing references) //IL_000a: Unknown result type (might be due to invalid IL or missing references) zoneLocation.m_enable = true; zoneLocation.m_biome = biome; zoneLocation.m_quantity *= 2; zoneLocation.m_minAltitude = ((zoneLocation.m_minAltitude == 0f) ? 10f : zoneLocation.m_minAltitude); zoneLocation.m_maxAltitude = ((zoneLocation.m_maxAltitude == 0f) ? 3000f : zoneLocation.m_maxAltitude); zoneLocation.m_minDistance = minDistance; zoneLocation.m_maxDistance = 0f; } private bool IsIn(string name, params string[] options) { for (int i = 0; i < options.Length; i++) { if (name == options[i]) { return true; } } return false; } private static void GetLog(ZoneLocation location, int counter) { //IL_006d: Unknown result type (might be due to invalid IL or missing references) if (location == null) { Debug.LogWarning((object)("Skipping id: " + counter)); return; } Debug.LogWarning((object)("ID: " + counter)); Debug.LogWarning((object)("m_name: " + ((location.m_name != null) ? location.m_name.ToString() : ""))); _ = location.m_prefab; Debug.LogWarning((object)("m_prefab: " + ((object)location.m_prefab).ToString())); Debug.LogWarning((object)("m_prefabName: " + ((location.m_prefabName != null) ? location.m_prefabName.ToString() : ""))); Debug.LogWarning((object)("m_quantity: " + location.m_quantity)); Debug.LogWarning((object)("m_groupMax: " + location.m_groupMax.ToString())); Debug.LogWarning((object)("m_group: " + ((location.m_group != null) ? location.m_group.ToString() : ""))); Debug.LogWarning((object)("m_biome: " + ((object)(Biome)(ref location.m_biome)).ToString())); Debug.LogWarning((object)("m_biomeArea: " + ((object)(BiomeArea)(ref location.m_biomeArea)).ToString())); Debug.LogWarning((object)("m_enable: " + location.m_enable)); Debug.LogWarning((object)("m_unique: " + location.m_unique)); Debug.LogWarning((object)("m_clearArea: " + location.m_clearArea)); Debug.LogWarning((object)("m_centerFirst: " + location.m_centerFirst)); Debug.LogWarning((object)("m_iconAlways: " + location.m_iconAlways)); Debug.LogWarning((object)("m_iconPlaced: " + location.m_iconPlaced)); Debug.LogWarning((object)("m_surroundBetterThanAverage: " + location.m_surroundBetterThanAverage)); Debug.LogWarning((object)("m_surroundCheckDistance: " + location.m_surroundCheckDistance)); Debug.LogWarning((object)("m_surroundCheckLayers: " + location.m_surroundCheckLayers)); Debug.LogWarning((object)("m_surroundCheckVegetation: " + location.m_surroundCheckVegetation)); Debug.LogWarning((object)("m_prioritized: " + location.m_prioritized)); Debug.LogWarning((object)("m_randomRotation: " + location.m_randomRotation)); Debug.LogWarning((object)("m_slopeRotation: " + location.m_slopeRotation)); Debug.LogWarning((object)("m_minDistance: " + location.m_minDistance)); Debug.LogWarning((object)("m_maxDistance: " + location.m_maxDistance)); Debug.LogWarning((object)("m_minDistanceFromSimilar: " + location.m_minDistanceFromSimilar)); Debug.LogWarning((object)("m_maxDistanceFromSimilar: " + location.m_maxDistanceFromSimilar)); Debug.LogWarning((object)("m_maximumVegetation: " + location.m_maximumVegetation)); Debug.LogWarning((object)("m_interiorRadius: " + location.m_interiorRadius)); Debug.LogWarning((object)("m_exteriorRadius: " + location.m_exteriorRadius)); Debug.LogWarning((object)("m_foldout: " + location.m_foldout)); Debug.LogWarning((object)("m_snapToWater: " + location.m_snapToWater)); Debug.LogWarning((object)("m_inForest: " + location.m_inForest)); Debug.LogWarning((object)("m_minAltitude: " + location.m_minAltitude)); Debug.LogWarning((object)("m_maxAltitude: " + location.m_maxAltitude)); Debug.LogWarning((object)("m_minTerrainDelta: " + location.m_minTerrainDelta)); Debug.LogWarning((object)("m_maxTerrainDelta: " + location.m_maxTerrainDelta)); Debug.LogWarning((object)("m_forestTresholdMin: " + location.m_forestTresholdMin)); Debug.LogWarning((object)("m_forestTresholdMax: " + location.m_forestTresholdMax)); } public static AssetID AssetIDFromObject(Object obj) { //IL_000c: Unknown result type (might be due to invalid IL or missing references) //IL_0011: Unknown result type (might be due to invalid IL or missing references) //IL_0014: Unknown result type (might be due to invalid IL or missing references) int instanceID = obj.GetInstanceID(); return new AssetID(1u, 1u, 1u, (uint)instanceID); } private ZoneLocation setupLocation(GameObject obj, ZoneLocation location, int amount, int minAlt, int maxAlt, int minDistance, int maxDistance, float similarDistance, float minDelta, float maxDelta, float forestMin, float forestMax, string group = "") { location.m_quantity = amount; location.m_group = group; location.m_minAltitude = minAlt; location.m_maxAltitude = maxAlt; location.m_minDistance = minDistance; location.m_maxDistance = maxDistance; location.m_minDistanceFromSimilar = similarDistance; location.m_minTerrainDelta = (minDelta = 0f); location.m_maxTerrainDelta = maxDelta; location.m_interiorRadius = obj.GetComponent<Location>().m_interiorRadius; location.m_exteriorRadius = obj.GetComponent<Location>().m_exteriorRadius; location.m_forestTresholdMin = (forestMin = -1f); location.m_forestTresholdMax = forestMax; return location; } } public class SpawnerBuilder { public List<SpawnData> newSpawners = new List<SpawnData>(); private string[] ingore = new string[0]; public string[] monsterNames = new string[27] { "Deathsquito", "Serpent", "Boar", "Deer", "Wraith", "Wolf", "Leech", "Fenring", "Troll", "DraugrElite", "Draugr", "Skeleton", "Seeker", "SeekerDrone", "Surtling", "Dverger", "Greydwarf", "Greyling", "GreydwarfElite", "Greydwarf Shaman", "Neck", "Hatchling", "Abomination", "StoneGolem", "BonemawSerpent", "projectile_ashlandmeteor", "Lox" }; private SpawnData FindSpawnData(SpawnSystemList spawnSystemList, string name, string spawnerName = "") { if (spawnerName != "") { SpawnData val = spawnSystemList.m_spawners.Find((SpawnData x) => x.m_name == spawnerName); if (val != null) { return val; } } return spawnSystemList.m_spawners.Find((SpawnData x) => ((Object)x.m_prefab).name == name); } public void editExistingSpawners(SpawnSystemList spawnSystemList, List<GameObject> znetPrefabs) { newSpawners.Clear(); string[] array = monsterNames; foreach (string monsterName in array) { List<SpawnData> list = spawnSystemList.m_spawners.FindAll((SpawnData x) => ((Object)x.m_prefab).name == monsterName); if (list.Count <= 0) { continue; } foreach (SpawnData item in list) { editMonsterSpawner(item, znetPrefabs); } } if (newSpawners.Count > 0) { Debug.Log((object)("Add total spawner configs from Edits: " + newSpawners.Count)); spawnSystemList.m_spawners.AddRange(newSpawners); } } public void createSpawners(SpawnSystemList spawnSystemList, ModResourceLoader modResourceLoader, List<GameObject> znetPrefabs) { editExistingSpawners(spawnSystemList, znetPrefabs); newSpawners.Clear(); foreach (GameObject monster in modResourceLoader.monsterPrefabs) { List<SpawnData> list = spawnSystemList.m_spawners.FindAll((SpawnData x) => ((Object)x.m_prefab).name == ((Object)monster).name); if (list.Count == 0 && !ingore.Contains(((Object)monster).name)) { setupMonster(monster, spawnSystemList, znetPrefabs); } } if (newSpawners.Count > 0) { Debug.Log((object)("Add total spawner configs new monster: " + newSpawners.Count)); spawnSystemList.m_spawners.AddRange(newSpawners); } } private SpawnData editSpawnerData(SpawnData spawnData, string spawnerName = "", int maxSpawned = -99, int minlevel = 1, int maxlevel = 3, int spawnChance = 25, bool spawnDay = true, bool spawnNight = true, int groupMin = -99, int groupMax = -99, int groupRadius = -99) { if (spawnData == null) { Debug.Log((object)"Empty spawn Data!!"); return spawnData; } spawnData.m_name = ((spawnerName != "") ? spawnerName : spawnData.m_name); spawnData.m_maxSpawned = ((maxSpawned != -99) ? maxSpawned : spawnData.m_maxSpawned); spawnData.m_minLevel = ((minlevel != -99) ? minlevel : spawnData.m_minLevel); spawnData.m_maxLevel = ((maxlevel != -99) ? maxlevel : spawnData.m_maxLevel); spawnData.m_spawnChance = ((spawnChance != -99) ? ((float)spawnChance) : spawnData.m_spawnChance); spawnData.m_spawnAtDay = spawnDay; spawnData.m_spawnAtNight = spawnNight; spawnData.m_groupSizeMin = ((groupMin != -99) ? groupMin : spawnData.m_groupSizeMin); spawnData.m_groupSizeMax = ((groupMax != -99) ? groupMax : spawnData.m_groupSizeMax); spawnData.m_groupRadius = ((groupRadius != -99) ? ((float)groupRadius) : spawnData.m_groupRadius); return spawnData; } private void generateSapplings(SpawnData spawnData, List<GameObject> znetPrefabs) { //IL_00e4: Unknown result type (might be due to invalid IL or missing references) //IL_0118: Unknown result type (might be due to invalid IL or missing references) //IL_015f: Unknown result type (might be due to invalid IL or missing references) string[] array = new string[5] { "FirTree_Sapling", "Oak_Sapling", "PineTree_Sapling", "Beech_Sapling", "Birch_Sapling" }; string[] array2 = array; foreach (string name in array2) { GameObject val = znetPrefabs.Find((GameObject x) => ((Object)x).name == name); if ((Object)(object)val != (Object)null) { SpawnData val2 = spawnData.Clone(); val2.m_name = name; val2.m_spawnInterval = 9000f; val2.m_maxSpawned = 1; val2.m_spawnAtDay = true; val2.m_spawnChance = 11f; val2.m_maxLevel = 0; val2.m_levelUpMinCenterDistance = 9999999f; val2.m_inLava = false; val2.m_canSpawnCloseToPlayer = false; val2.m_huntPlayer = false; val2.m_spawnAtNight = false; val2.m_biome = (Biome)1; if (name == "FirTree_Sapling" || name == "PineTree_Sapling") { val2.m_biome = (Biome)8; } if (name == "Birch_Sapling" || name == "Beech_Sapling" || name == "Oak") { val2.m_biome = (Biome)1; } val2.m_prefab = val; newSpawners.Add(val2); Debug.Log((object)("Editin spawnerData: " + val2.m_name)); } } } private void editMonsterSpawner(SpawnData spawnData, List<GameObject> znetPrefabs) { //IL_1381: Unknown result type (might be due to invalid IL or missing references) //IL_0e6f: Unknown result type (might be due to invalid IL or missing references) //IL_1a43: Unknown result type (might be due to invalid IL or missing references) //IL_1bd7: Unknown result type (might be due to invalid IL or missing references) //IL_1c83: Unknown result type (might be due to invalid IL or missing references) //IL_193c: Unknown result type (might be due to invalid IL or missing references) //IL_1658: Unknown result type (might be due to invalid IL or missing references) //IL_16bd: Unknown result type (might be due to invalid IL or missing references) //IL_132f: Unknown result type (might be due to invalid IL or missing references) //IL_0826: Unknown result type (might be due to invalid IL or missing references) //IL_058c: Unknown result type (might be due to invalid IL or missing references) //IL_06ea: Unknown result type (might be due to invalid IL or missing references) //IL_1a90: Unknown result type (might be due to invalid IL or missing references) //IL_1a97: Unknown result type (might be due to invalid IL or missing references) //IL_0a51: Unknown result type (might be due to invalid IL or missing references) //IL_155c: Unknown result type (might be due to invalid IL or missing references) //IL_061a: Unknown result type (might be due to invalid IL or missing references) spawnData.m_maxLevel = 3; spawnData.m_enabled = true; spawnData.m_levelUpMinCenterDistance = 400f; spawnData.m_groupSizeMin = 1; if ((Object)(object)spawnData.m_prefab == (Object)null) { Debug.LogWarning((object)("SPawner Data is empty: " + spawnData.m_name)); return; } Debug.Log((object)("Editin spawnerData: " + spawnData.m_name)); switch (spawnData.m_name) { case "Troll": { spawnData.m_maxLevel = 4; spawnData.m_biome = (Biome)68; spawnData.m_spawnAtNight = false; spawnData.m_spawnInterval /= 2f; GameObject val24 = znetPrefabs.Find((GameObject x) => ((Object)x).name == "TrollAshlands"); if ((Object)(object)val24 != (Object)null) { SpawnData val25 = spawnData.Clone(); val25.m_name = "TrollAshlands"; val25.m_spawnInterval = 2000f; val25.m_maxSpawned = 2; val25.m_spawnAtDay = true; val25.m_spawnAtNight = true; val25.m_biome = (Biome)32; val25.m_prefab = val24; newSpawners.Add(val25); Debug.Log((object)("Editin spawnerData: " + val25.m_name)); } break; } case "Boar": { spawnData.m_spawnChance = 66f; spawnData.m_maxSpawned = 3; spawnData.m_maxLevel = 4; spawnData.m_spawnAtNight = false; generateSapplings(spawnData, znetPrefabs); GameObject val26 = znetPrefabs.Find((GameObject x) => ((Object)x).name == "Boar_piggy"); if ((Object)(object)val26 != (Object)null) { SpawnData val27 = spawnData.Clone(); val27.m_name = "Piggy"; val27.m_spawnInterval = 2000f; val27.m_maxSpawned = 2; val27.m_spawnAtDay = true; val27.m_spawnAtNight = false; val27.m_biome = (Biome)1; val27.m_prefab = val26; newSpawners.Add(val27); Debug.Log((object)("Editin spawnerData: " + val27.m_name)); } break; } case "deer": spawnData.m_spawnChance = 55f; spawnData.m_maxSpawned = 3; spawnData.m_maxLevel = 4; spawnData.m_spawnAtNight = false; spawnData.m_groupSizeMax = spawnData.m_maxSpawned; break; case "Neck lakes": spawnData.m_spawnChance = 44f; spawnData.m_maxSpawned = 4; spawnData.m_maxLevel = 4; spawnData.m_groupSizeMax = spawnData.m_maxSpawned; break; case "Neck IN RAIN": spawnData.m_maxLevel = 5; spawnData.m_spawnChance = 66f; spawnData.m_maxSpawned = 5; spawnData.m_groupSizeMax = spawnData.m_maxSpawned; spawnData.m_requiredEnvironments.Add("Mist"); spawnData.m_requiredEnvironments.Add("DeepForest Mist"); spawnData.m_requiredEnvironments.Add("Mistlands_rain"); spawnData.m_requiredEnvironments.Add("Bonemass"); spawnData.m_groupSizeMax = spawnData.m_maxSpawned; break; case "Greyling": { spawnData.m_maxSpawned = 2; spawnData.m_spawnChance = 33f; spawnData.m_spawnAtDay = true; spawnData.m_spawnAtNight = false; spawnData.m_groupSizeMax = spawnData.m_maxSpawned; spawnData.m_biome = (Biome)9; SpawnData val12 = spawnData.Clone(); val12.m_name = "Greyling Weather"; val12.m_maxLevel = 5; val12.m_requiredEnvironments.Add("Rain"); val12.m_requiredEnvironments.Add("LightRain"); val12.m_requiredEnvironments.Add("ThunderStorm"); val12.m_requiredEnvironments.Add("Mist"); val12.m_requiredEnvironments.Add("DeepForest Mist"); val12.m_requiredEnvironments.Add("Mistlands_rain"); val12.m_requiredEnvironments.Add("Bonemass"); val12.m_spawnAtDay = true; val12.m_spawnAtNight = false; val12.m_groupSizeMax = val12.m_maxSpawned; newSpawners.Add(val12); Debug.Log((object)("Editin spawnerData: " + val12.m_name)); SpawnData val13 = spawnData.Clone(); val13.m_name = "Greyling Night"; val13.m_maxLevel = 5; val13.m_spawnAtDay = false; val13.m_spawnAtNight = true; val13.m_groupSizeMax = val13.m_maxSpawned; newSpawners.Add(val13); Debug.Log((object)("Editin spawnerData: " + val13.m_name)); SpawnData val14 = spawnData.Clone(); val14.m_name = "Greydwarf Spawner after Elder/Weather"; val14.m_maxLevel = 1; val14.m_spawnChance = 5f; val14.m_maxSpawned = 1; val14.m_prefab = znetPrefabs.Find((GameObject x) => ((Object)x).name == "Spawner_GreydwarfNest"); val14.m_requiredGlobalKey = "defeated_gdking"; val14.m_requiredEnvironments.Add("Rain"); val14.m_requiredEnvironments.Add("LightRain"); val14.m_requiredEnvironments.Add("ThunderStorm"); val14.m_requiredEnvironments.Add("Mist"); val14.m_requiredEnvironments.Add("DeepForest Mist"); val14.m_requiredEnvironments.Add("Mistlands_rain"); val14.m_requiredEnvironments.Add("Bonemass"); val14.m_spawnAtDay = false; val14.m_spawnAtNight = true; val14.m_biome = (Biome)9; val14.m_groupSizeMax = val14.m_maxSpawned; newSpawners.Add(val14); Debug.Log((object)("Editin spawnerData: " + val14.m_name)); break; } case "Greydwarf": spawnData.m_maxSpawned = 2; spawnData.m_spawnChance = 25f; spawnData.m_groupSizeMax = spawnData.m_maxSpawned; break; case "greydwarf DAY": spawnData.m_maxSpawned = 2; spawnData.m_spawnChance = 25f; spawnData.m_groupSizeMax = spawnData.m_maxSpawned; break; case "greydwarf After boss": { spawnData.m_maxSpawned = 1; spawnData.m_spawnChance = 20f; spawnData.m_groupSizeMax = spawnData.m_maxSpawned; spawnData.m_maxLevel = 4; SpawnData val9 = spawnData.Clone(); val9.m_name = "greydwarf Elder"; val9.m_requiredGlobalKey = "defeated_gdking"; val9.m_maxLevel = 5; val9.m_maxSpawned = 1; val9.m_groupSizeMax = val9.m_maxSpawned; newSpawners.Add(val9); Debug.Log((object)("Editin spawnerData: " + val9.m_name)); break; } case "greydwarf Night": { spawnData.m_maxSpawned = 3; spawnData.m_spawnChance = 66f; spawnData.m_groupSizeMax = spawnData.m_maxSpawned; spawnData.m_maxLevel = 4; SpawnData val8 = spawnData.Clone(); val8.m_name = "greydwarf Night Elder"; val8.m_requiredGlobalKey = "defeated_gdking"; val8.m_maxLevel = 5; val8.m_maxSpawned = 1; val8.m_groupSizeMax = val8.m_maxSpawned; newSpawners.Add(val8); Debug.Log((object)("Editin spawnerData: " + val8.m_name)); break; } case "greydwarf ELITE": spawnData.m_spawnChance = 33f; spawnData.m_spawnAtDay = false; spawnData.m_spawnAtNight = true; spawnData.m_maxLevel = 4; spawnData.m_levelUpMinCenterDistance = 1000f; break; case "Greydwarf Elite": { spawnData.m_spawnChance = 33f; spawnData.m_maxLevel = 5; spawnData.m_spawnAtDay = true; spawnData.m_spawnAtNight = true; spawnData.m_levelUpMinCenterDistance = 1000f; SpawnData val5 = spawnData.Clone(); val5.m_name = "Greydwarf Elite Weather"; val5.m_maxLevel = 5; val5.m_maxSpawned = 1; spawnData.m_groupSizeMax = spawnData.m_maxSpawned; val5.m_requiredEnvironments.Add("Mist"); val5.m_requiredEnvironments.Add("DeepForest Mist"); val5.m_requiredEnvironments.Add("Bonemass"); val5.m_groupSizeMax = val5.m_maxSpawned; newSpawners.Add(val5); Debug.Log((object)("Editin spawnerData: " + val5.m_name)); break; } case "Greydwarf Shaman": { spawnData.m_spawnChance = 33f; if (spawnData.m_requiredGlobalKey == "defeated_gdking") { spawnData.m_maxLevel = 5; spawnData.m_maxSpawned = 1; spawnData.m_spawnAtDay = true; break; } SpawnData val35 = spawnData.Clone(); val35.m_name = "Greydwarf Shaman Weather"; val35.m_maxLevel = 5; val35.m_maxSpawned = 1; val35.m_spawnAtDay = true; val35.m_requiredEnvironments.Add("Rain"); val35.m_requiredEnvironments.Add("LightRain"); val35.m_requiredEnvironments.Add("ThunderStorm"); val35.m_requiredEnvironments.Add("Mist"); val35.m_requiredEnvironments.Add("DeepForest Mist"); val35.m_requiredEnvironments.Add("Mistlands_rain"); val35.m_requiredEnvironments.Add("Bonemass"); val35.m_groupSizeMax = spawnData.m_maxSpawned; newSpawners.Add(val35); Debug.Log((object)("Editin spawnerData: " + val35.m_name)); break; } case "Hatchling": { spawnData.m_maxSpawned = 2; spawnData.m_groupSizeMin = 1; spawnData.m_spawnChance = 20f; spawnData.m_levelUpMinCenterDistance = 1500f; spawnData.m_groupSizeMax = spawnData.m_maxSpawned; SpawnData val36 = spawnData.Clone(); val36.m_name = "Hatchling_DeepNorth"; val36.m_minAltitude = 5f; val36.m_maxLevel = 6; val36.m_groundOffset = 30f; val36.m_biome = (Biome)64; val36.m_groupSizeMax = val36.m_maxSpawned; newSpawners.Add(val36); Debug.Log((object)("Editin spawnerData: " + val36.m_name)); break; } case "Deathsquito": spawnData.m_maxSpawned = 2; spawnData.m_groupSizeMin = 1; spawnData.m_groupSizeMax = spawnData.m_maxSpawned; break; case "Marsh draugr": spawnData.m_maxSpawned = 3; spawnData.m_groupSizeMax = spawnData.m_maxSpawned; break; case "Skeleton": spawnData.m_maxSpawned = 2; spawnData.m_groupSizeMax = spawnData.m_maxSpawned; break; case "Draugr Elite": { GameObject val15 = znetPrefabs.Find((GameObject x) => ((Object)x).name == "Skeleton_Poison"); if ((Object)(object)val15 != (Object)null) { SpawnData val16 = spawnData.Clone(); val16.m_name = "Skeleton_Poison swamps"; val16.m_levelUpMinCenterDistance = 1000f; val16.m_maxSpawned = 2; val16.m_spawnChance = 11f; val16.m_spawnAtDay = true; val16.m_spawnAtNight = true; val16.m_prefab = val15; newSpawners.Add(val16); Debug.Log((object)("Editin spawnerData: " + val16.m_name)); } break; } case "Wolf": if (spawnData.m_spawnAtNight) { spawnData.m_maxSpawned = 4; spawnData.m_groupSizeMin = 2; spawnData.m_groupSizeMax = 4; spawnData.m_spawnChance = 33f; GameObject val37 = znetPrefabs.Find((GameObject x) => ((Object)x).name == "Ulv"); if ((Object)(object)val37 != (Object)null) { SpawnData val38 = spawnData.Clone(); val38.m_name = "Ulv Night"; val38.m_levelUpMinCenterDistance = 4000f; val38.m_maxLevel = 2; val38.m_spawnInterval = 240f; val38.m_spawnChance = 11f; val38.m_maxSpawned = 2; val38.m_prefab = val37; val38.m_groupSizeMin = 1; val38.m_groupSizeMax = val38.m_maxSpawned; newSpawners.Add(val38); Debug.Log((object)("Editin spawnerData: " + val38.m_name)); } GameObject val39 = znetPrefabs.Find((GameObject x) => ((Object)x).name == "Wolf_cub"); if ((Object)(object)val39 != (Object)null) { SpawnData val40 = spawnData.Clone(); val40.m_name = "wolf cub"; val40.m_maxLevel = 1; val40.m_spawnChance = 11f; val40.m_maxSpawned = 2; val40.m_prefab = val39; val40.m_groupSizeMin = 1; val40.m_spawnAtNight = false; val40.m_groupSizeMax = val40.m_maxSpawned; newSpawners.Add(val40); Debug.Log((object)("Editin spawnerData: " + val40.m_name)); } } break; case "Lox": { GameObject val33 = znetPrefabs.Find((GameObject x) => ((Object)x).name == "Lox_Calf"); if ((Object)(object)val33 != (Object)null) { SpawnData val34 = spawnData.Clone(); val34.m_name = "wolf cub"; val34.m_maxLevel = 1; val34.m_spawnChance = 11f; val34.m_maxSpawned = 2; val34.m_prefab = val33; val34.m_spawnAtNight = false; val34.m_groupSizeMin = 1; val34.m_groupSizeMax = val34.m_maxSpawned; newSpawners.Add(val34); Debug.Log((object)("Editin spawnerData: " + val34.m_name)); } break; } case "Wraith": { spawnData.m_maxLevel = 2; spawnData.m_groupSizeMin = 1; spawnData.m_groupSizeMax = 2; spawnData.m_spawnChance = 22f; spawnData.m_levelUpMinCenterDistance = 3000f; GameObject val30 = znetPrefabs.Find((GameObject x) => ((Object)x).name == "Ghost"); if ((Object)(object)val30 != (Object)null) { SpawnData val31 = spawnData.Clone(); val31.m_name = "Ghost swamps"; val31.m_levelUpMinCenterDistance = 1000f; val31.m_maxSpawned = 2; val31.m_spawnInterval = 300f; val31.m_spawnChance = 33f; val31.m_spawnAtDay = true; val31.m_spawnAtNight = true; val31.m_prefab = val30; newSpawners.Add(val31); Debug.Log((object)("Editin spawnerData: " + val31.m_name)); SpawnData val32 = val31.Clone(); val32.m_name = "Ghost Forest"; val32.m_maxSpawned = 1; val32.m_spawnChance = 11f; val32.m_spawnAtDay = false; val32.m_groupSizeMax = 1; val32.m_biome = (Biome)10; newSpawners.Add(val32); Debug.Log((object)("Editin spawnerData: " + val32.m_name)); } break; } case "Leech": { spawnData.m_maxLevel = 4; spawnData.m_maxSpawned = 5; spawnData.m_groupSizeMin = 1; spawnData.m_spawnChance = 33f; spawnData.m_biome = (Biome)2; spawnData.m_spawnAtDay = true; spawnData.m_spawnAtNight = false; spawnData.m_groupSizeMax = spawnData.m_maxSpawned; SpawnData val28 = spawnData.Clone(); val28.m_name = "Leech Weather"; val28.m_maxLevel = 5; val28.m_levelUpMinCenterDistance = 1000f; val28.m_maxSpawned = 2; val28.m_groupSizeMax = val28.m_maxSpawned; val28.m_spawnAtDay = true; val28.m_spawnAtNight = true; val28.m_requiredEnvironments.Add("Rain"); val28.m_requiredEnvironments.Add("ThunderStorm"); val28.m_requiredEnvironments.Add("DeepForest Mist"); val28.m_requiredEnvironments.Add("Mistlands_rain"); val28.m_requiredEnvironments.Add("Bonemass"); val28.m_groupSizeMax = val28.m_maxSpawned; newSpawners.Add(val28); Debug.Log((object)("Editin spawnerData: " + val28.m_name)); SpawnData val29 = spawnData.Clone(); val29.m_name = "Leech Night"; val29.m_levelUpMinCenterDistance = 1000f; val29.m_maxLevel = 5; val29.m_maxSpawned = 3; val29.m_groupSizeMax = val29.m_maxSpawned; val29.m_spawnAtDay = false; val29.m_spawnAtNight = true; val29.m_groupSizeMax = val28.m_maxSpawned; newSpawners.Add(val28); Debug.Log((object)("Editin spawnerData: " + val29.m_name)); break; } case "Surtling": { spawnData.m_maxLevel = 4; spawnData.m_inLava = true; spawnData.m_maxSpawned = 2; spawnData.m_minAltitude = 1f; spawnData.m_minOceanDepth = 0f; spawnData.m_maxOceanDepth = 0f; spawnData.m_spawnInterval = 33f; spawnData.m_spawnChance = 33f; spawnData.m_groupSizeMax = spawnData.m_maxSpawned; spawnData.m_biome = (Biome)32; GameObject val22 = znetPrefabs.Find((GameObject x) => ((Object)x).name == "SurtlingSpawner_bal"); if ((Object)(object)val22 != (Object)null) { SpawnData val23 = spawnData.Clone(); val23.m_name = "Surtling Spawner"; val23.m_levelUpMinCenterDistance = 100000000f; val23.m_maxLevel = 0; val23.m_canSpawnCloseToPlayer = false; val23.m_spawnInterval = 360f; val23.m_spawnChance = 5f; val23.m_maxSpawned = 1; val23.m_spawnAtDay = false; val23.m_spawnAtNight = true; val23.m_prefab = val22; val23.m_groupSizeMax = val23.m_maxSpawned; newSpawners.Add(val23); Debug.Log((object)("Editin spawnerData: " + val23.m_name)); } break; } case "StoneGolem": { spawnData.m_maxLevel = 3; spawnData.m_maxSpawned = 1; spawnData.m_spawnChance = 33f; spawnData.m_biome = (Biome)68; spawnData.m_minAltitude = 77f; spawnData.m_levelUpMinCenterDistance = 2500f; spawnData.m_groupSizeMax = 1; SpawnData val21 = spawnData.Clone(); val21.m_name = "Golem Deep North"; val21.m_maxLevel = 5; val21.m_maxSpawned = 1; val21.m_spawnAtDay = true; val21.m_spawnAtNight = true; val21.m_minAltitude = 22f; val21.m_biome = (Biome)4; val21.m_groupSizeMax = val21.m_maxSpawned; newSpawners.Add(val21); Debug.Log((object)("Editin spawnerData: " + val21.m_name)); break; } case "Serpent": { spawnData.m_maxLevel = 1; spawnData.m_maxSpawned = 1; spawnData.m_spawnChance = 11f; spawnData.m_spawnInterval = 1500f; SpawnData val17 = spawnData.Clone(); val17.m_name = "Serpent after Elder"; val17.m_maxLevel = 2; val17.m_minLevel = 1; val17.m_maxSpawned = 1; val17.m_minDistanceFromCenter = 1500f; val17.m_spawnChance = 22f; val17.m_levelUpMinCenterDistance = 2000f; val17.m_requiredGlobalKey = "defeated_gdking"; newSpawners.Add(val17); Debug.Log((object)("Editin spawnerData: " + val17.m_name)); SpawnData val18 = spawnData.Clone(); val18.m_name = "Serpent after Bonemass"; val18.m_maxLevel = 3; val18.m_minLevel = 1; val18.m_maxSpawned = 1; val18.m_minDistanceFromCenter = 2000f; val18.m_spawnChance = 22f; val18.m_levelUpMinCenterDistance = 2000f; val18.m_requiredGlobalKey = "defeated_bonemass"; newSpawners.Add(val18); Debug.Log((object)("Editin spawnerData: " + val18.m_name)); SpawnData val19 = spawnData.Clone(); val19.m_name = "Serpent after Moder"; val19.m_maxLevel = 4; val19.m_minLevel = 2; val19.m_maxSpawned = 1; val19.m_minDistanceFromCenter = 3000f; val19.m_spawnChance = 22f; val19.m_levelUpMinCenterDistance = 4000f; val19.m_requiredGlobalKey = "defeated_dragon"; newSpawners.Add(val19); Debug.Log((object)("Editin spawnerData: " + val19.m_name)); SpawnData val20 = spawnData.Clone(); val20.m_name = "Serpent after Yagluth"; val20.m_minDistanceFromCenter = 3500f; val20.m_maxLevel = 5; val20.m_minLevel = 2; val20.m_maxSpawned = 1; val20.m_spawnChance = 22f; val20.m_levelUpMinCenterDistance = 4000f; val20.m_requiredGlobalKey = "defeated_goblinking"; newSpawners.Add(val20); Debug.Log((object)("Editin spawnerData: " + val20.m_name)); break; } case "Fenring": { spawnData.m_maxSpawned = 2; spawnData.m_spawnChance = 11f; spawnData.m_biome = (Biome)68; spawnData.m_minAltitude = 22f; spawnData.m_spawnInterval = 300f; spawnData.m_levelUpMinCenterDistance = 2000f; spawnData.m_groupSizeMax = spawnData.m_maxSpawned; GameObject val10 = znetPrefabs.Find((GameObject x) => ((Object)x).name == "Fenring_Cultist"); if ((Object)(object)val10 != (Object)null) { SpawnData val11 = spawnData.Clone(); val11.m_name = "Fenring Cultist"; val11.m_levelUpMinCenterDistance = 3000f; val11.m_maxLevel = 3; val11.m_maxSpawned = 1; val11.m_spawnInterval = 400f; val11.m_spawnChance = 11f; val11.m_spawnAtDay = false; val11.m_spawnAtNight = true; val11.m_prefab = val10; val11.m_groupSizeMax = val11.m_maxSpawned; newSpawners.Add(val11); Debug.Log((object)("Editin spawnerData: " + val11.m_name)); } break; } case "Abomination": spawnData.m_biome = (Biome)2; spawnData.m_maxSpawned = 2; spawnData.m_spawnChance = 22f; spawnData.m_maxAltitude = 55f; spawnData.m_groupSizeMax = 1; spawnData.m_requiredGlobalKey = "defeated_gdking"; break; case "Seeker defeated queen other biomes": { spawnData.m_maxLevel = 3; spawnData.m_maxSpawned = 3; spawnData.m_biome = (Biome)512; spawnData.m_biomeArea = (BiomeArea)3; GameObject val6 = znetPrefabs.Find((GameObject x) => ((Object)x).name == "SeekerEgg_bal"); if ((Object)(object)val6 != (Object)null) { SpawnData val7 = spawnData.Clone(); val7.m_name = "SeekerEgg after queen"; val7.m_maxLevel = 0; val7.m_levelUpMinCenterDistance = 9999999f; val7.m_inLava = false; val7.m_canSpawnCloseToPlayer = false; val7.m_maxSpawned = 10; val7.m_spawnInterval = 400f; val7.m_spawnChance = 11f; val7.m_spawnAtDay = false; val7.m_spawnAtNight = true; val7.m_prefab = val6; val7.m_groupSizeMin = 3; val7.m_groupSizeMax = val7.m_maxSpawned; newSpawners.Add(val7); Debug.Log((object)("Editin spawnerData: " + val7.m_name)); } break; } case "Meteor": spawnData.m_maxSpawned = 10; spawnData.m_requiredEnvironments.Add("Ashlands_ashrain"); spawnData.m_requiredEnvironments.Add("Ashlands_storm"); spawnData.m_requiredEnvironments.Add("Ashlands_CinderRain"); spawnData.m_requiredEnvironments.Add("GoblinKing"); spawnData.m_biome = (Biome)48; spawnData.m_requiredGlobalKey = "defeated_dragon"; break; case "Bonemaw Serpent": spawnData.m_maxSpawned = 3; spawnData.m_spawnChance = 22f; break; case "Dverger": { spawnData.m_spawnChance = 15f; spawnData.m_spawnInterval = 500f; spawnData.m_maxLevel = 4; SpawnData val = spawnData.Clone(); val.m_requiredGlobalKey = "defeated_qeen"; val.m_requiredEnvironments.Add("Mist"); val.m_requiredEnvironments.Add("DeepForest Mist"); val.m_requiredEnvironments.Add("Mistlands_rain"); val.m_requiredEnvironments.Add("Mistlands_thunder"); val.m_biome = (Biome)543; val.m_name = "Dverger after Queen"; val.m_levelUpMinCenterDistance = 3000f; val.m_maxSpawned = 2; val.m_groupSizeMin = 1; val.m_groupSizeMax = 1; newSpawners.Add(val); Debug.Log((object)("Editin spawnerData: " + val.m_name)); GameObject val2 = znetPrefabs.Find((GameObject x) => ((Object)x).name == "DvergerMage"); if ((Object)(object)val2 != (Object)null) { SpawnData val3 = spawnData.Clone(); val3.m_name = "Dverger Mage"; val3.m_levelUpMinCenterDistance = 3000f; val3.m_maxSpawned = 2; val3.m_prefab = val2; val3.m_groupSizeMin = 1; val3.m_groupSizeMax = 1; newSpawners.Add(val3); Debug.Log((object)("Editin spawnerData: " + val3.m_name)); SpawnData val4 = val.Clone(); val4.m_name = "Dverger Mage after Queen"; val4.m_levelUpMinCenterDistance = 3000f; val4.m_maxSpawned = 2; val4.m_prefab = val2; val4.m_groupSizeMin = 1; val4.m_groupSizeMax = 1; newSpawners.Add(val4); Debug.Log((object)("Editin spawnerData: " + val4.m_name)); } break; } } } private void setupMonster(GameObject monster, SpawnSystemList spawnSystemList, List<GameObject> znetPrefabs) { //IL_253d: Unknown result type (might be due to invalid IL or missing references) //IL_25b1: Unknown result type (might be due to invalid IL or missing references) //IL_2f87: Unknown result type (might be due to invalid IL or missing references) //IL_2d3d: Unknown result type (might be du