Please disclose if your mod was created primarily using AI tools by adding the 'AI Generated' category. Failing to do so may result in the mod being removed from Thunderstore.
Decompiled source of ReidrheimrFactionWeaponPack v2.0.1
ReidrheimrFactionWeaponPack/BjornheimArtifacts.dll
Decompiled 2 years agousing System; using System.Collections.Generic; using System.Diagnostics; 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 BepInEx; using HarmonyLib; using Microsoft.CodeAnalysis; using UnityEngine; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] [assembly: AssemblyTitle("ValheimReforgedWeapons")] [assembly: AssemblyDescription("")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("")] [assembly: AssemblyProduct("ValheimReforgedWeapons")] [assembly: AssemblyCopyright("Copyright © 2021")] [assembly: AssemblyTrademark("")] [assembly: ComVisible(false)] [assembly: Guid("108df065-3a24-4888-8a60-cf793a69379c")] [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] [module: RefSafetyRules(11)] namespace Microsoft.CodeAnalysis { [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] internal sealed class EmbeddedAttribute : Attribute { } } namespace System.Runtime.CompilerServices { [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] [AttributeUsage(AttributeTargets.Module, AllowMultiple = false, Inherited = false)] internal sealed class RefSafetyRulesAttribute : Attribute { public readonly int Version; public RefSafetyRulesAttribute(int P_0) { Version = P_0; } } } namespace BjornheimArtifacts { public class BuildPieceChanges { private List<GameObject> buildPieces = new List<GameObject>(); private List<GameObject> items = new List<GameObject>(); private List<ItemConversion> allConversions = new List<ItemConversion>(); public void editBuidlPieces(List<GameObject> buildpieces, List<GameObject> newPieces, List<GameObject> items) { buildPieces = buildpieces; this.items = items; createBuildPiecesRecipes(newPieces); editFermenter(); editSmelter(); editFurnace(); editKiln(); editWHeel(); editRefinery(); editWIndMIll(); editSap(); } public void editStations(List<GameObject> buildpieces) { buildPieces = buildpieces; items = buildpieces; editFermenter(); editSmelter(); editFurnace(); editKiln(); editWHeel(); editRefinery(); editWIndMIll(); editSap(); } private void createBuildPiecesRecipes(List<GameObject> newPieces) { //IL_0077: Unknown result type (might be due to invalid IL or missing references) //IL_0082: Expected O, but got Unknown //IL_00c8: Unknown result type (might be due to invalid IL or missing references) //IL_00d3: Expected O, but got Unknown GameObject val = items.Find((GameObject x) => ((Object)x).name == "Hammer"); List<GameObject> pieces = val.GetComponent<ItemDrop>().m_itemData.m_shared.m_buildPieces.m_pieces; foreach (GameObject piece in newPieces) { Piece component = piece.GetComponent<Piece>(); if (!((Object)component == (Object)null)) { CheckForOtherNames(component, component.m_name); List<Requirement> list = new List<Requirement>(); component.m_resources = createResources(piece); if ((Object)pieces.Find((GameObject x) => ((Object)x).name == ((Object)piece).name) == (Object)null) { pieces.Add(piece); } } } } private CraftingStation FindStation(List<GameObject> list, string name) { //IL_0022: Unknown result type (might be due to invalid IL or missing references) //IL_002d: Expected O, but got Unknown GameObject val = list.Find((GameObject x) => ((Object)x).name == name); if ((Object)val != (Object)null) { return val.GetComponent<CraftingStation>(); } return null; } private GameObject FindItem(string name) { //IL_0027: Unknown result type (might be due to invalid IL or missing references) //IL_0032: Expected O, but got Unknown //IL_00b2: Unknown result type (might be due to invalid IL or missing references) //IL_00bd: Expected O, but got Unknown //IL_0050: Unknown result type (might be due to invalid IL or missing references) //IL_005b: Expected O, but got Unknown GameObject val = items.Find((GameObject x) => ((Object)x).name == name); if ((Object)val == (Object)null) { val = items.Find((GameObject x) => ((Object)x).name == name); if ((Object)val != (Object)null) { return val; } Debug.LogWarning((object)("Item Not Found - " + name + ", Replaced With Wood")); return items.Find((GameObject x) => ((Object)x).name == "Wood"); } if ((Object)val != (Object)null) { return val; } Debug.LogWarning((object)("Item Not Found - " + name + ", Replaced With Wood")); return items.Find((GameObject x) => ((Object)x).name == "Wood"); } private Requirement[] createResources(GameObject item) { List<Requirement> list = new List<Requirement>(); switch (((Object)item).name) { case "sacredforge_ext3": case "sacredforge_ext2": case "sacredforge_ext1": case "SacredForge": case "GrandForgeV2": list.Add(createReq("SwordCheat", 1, 0)); break; } return list.ToArray(); } private Requirement createReq(string name, int amount, int amountPerLevel) { //IL_000e: Unknown result type (might be due to invalid IL or missing references) //IL_0014: Expected O, but got Unknown Requirement val = new Requirement(); val.m_recover = true; ItemDrop val2 = (val.m_resItem = items.Find((GameObject x) => ((Object)x).name == name).GetComponent<ItemDrop>()); val.m_amount = amount; val.m_amountPerLevel = amountPerLevel; return val; } private void CheckForOtherNames(Piece piece, string name) { //IL_0009: Unknown result type (might be due to invalid IL or missing references) //IL_0014: Expected O, but got Unknown //IL_002b: Unknown result type (might be due to invalid IL or missing references) //IL_0036: Expected O, but got Unknown //IL_004d: Unknown result type (might be due to invalid IL or missing references) //IL_0058: Expected O, but got Unknown //IL_006f: Unknown result type (might be due to invalid IL or missing references) //IL_007a: Expected O, but got Unknown //IL_0093: Unknown result type (might be due to invalid IL or missing references) //IL_009e: Expected O, but got Unknown Chair component = ((Component)piece).GetComponent<Chair>(); if ((Object)component != (Object)null) { component.m_name = name; } Fermenter component2 = ((Component)piece).GetComponent<Fermenter>(); if ((Object)component2 != (Object)null) { component2.m_name = name; } Door component3 = ((Component)piece).GetComponent<Door>(); if ((Object)component3 != (Object)null) { component3.m_name = name; } ItemStand component4 = ((Component)piece).GetComponent<ItemStand>(); if ((Object)component4 != (Object)null) { component4.m_name = name; } Container component5 = ((Component)piece).GetComponent<Container>(); if ((Object)component5 != (Object)null) { component5.m_name = name; } } private void editFermenter() { GameObject val = buildPieces.Find((GameObject x) => ((Object)x).name == "fermenter"); Fermenter component = val.GetComponent<Fermenter>(); component.m_conversion.Add(addFermenterCoversion(FindItem("MeadBaseLightingResistMedium_bal"), FindItem("MediumThunderPotion_bal"))); component.m_conversion.Add(addFermenterCoversion(FindItem("MeadBaseSpiritResistMedium_bal"), FindItem("MediumSpiritPotion_bal"))); } private ItemConversion addFermenterCoversion(GameObject from, GameObject to) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0007: Expected O, but got Unknown ItemConversion val = new ItemConversion(); val.m_from = from.GetComponent<ItemDrop>(); val.m_to = to.GetComponent<ItemDrop>(); val.m_producedItems = 6; return val; } private void editSmelter() { GameObject val = buildPieces.Find((GameObject x) => ((Object)x).name == "smelter"); Smelter component = val.GetComponent<Smelter>(); component.m_secPerProduct = 6f; component.m_fuelPerProduct = 3; allConversions.AddRange(component.m_conversion); } private void editFurnace() { GameObject val = buildPieces.Find((GameObject x) => ((Object)x).name == "blastfurnace"); Smelter component = val.GetComponent<Smelter>(); component.m_secPerProduct = 3f; component.m_fuelPerProduct = 2; foreach (ItemConversion itemConversion in component.m_conversion) { ItemConversion val2 = allConversions.Find((ItemConversion x) => ((Object)x.m_from).name == ((Object)itemConversion.m_from).name); if (val2 == null) { allConversions.Add(itemConversion); } } component.m_conversion.Clear(); component.m_conversion.AddRange(allConversions); } private void editWHeel() { GameObject val = buildPieces.Find((GameObject x) => ((Object)x).name == "piece_spinningwheel"); Smelter component = val.GetComponent<Smelter>(); component.m_secPerProduct = 10f; } private void editRefinery() { GameObject val = buildPieces.Find((GameObject x) => ((Object)x).name == "eitrrefinery"); Smelter component = val.GetComponent<Smelter>(); component.m_secPerProduct = 10f; } private void editWIndMIll() { GameObject val = buildPieces.Find((GameObject x) => ((Object)x).name == "piece_sapcollector"); SapCollector component = val.GetComponent<SapCollector>(); component.m_secPerUnit = 15f; component.m_maxLevel = 60; } private void editSap() { GameObject val = buildPieces.Find((GameObject x) => ((Object)x).name == "windmill"); Smelter component = val.GetComponent<Smelter>(); component.m_secPerProduct = 8f; } private void editKiln() { GameObject val = buildPieces.Find((GameObject x) => ((Object)x).name == "charcoal_kiln"); Smelter component = val.GetComponent<Smelter>(); component.m_secPerProduct = 10f; } } [BepInPlugin("balrond.astafaraios.BjornheimArtifacts", "BjornheimArtifacts", "1.0.1")] public class Launch : BaseUnityPlugin { [HarmonyPatch(typeof(ZNetScene), "Awake")] public static class ZNetScene_Awake_Path { public static void Prefix(ZNetScene __instance) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_000d: Expected O, but got Unknown if ((Object)__instance == (Object)null) { return; } foreach (GameObject newPrefab3 in vfxList) { if (!Object.op_Implicit((Object)(object)__instance.m_prefabs.Find((GameObject x) => ((Object)x).name == ((Object)newPrefab3).name))) { __instance.m_prefabs.Add(newPrefab3); } } foreach (GameObject newPrefab2 in prefabs) { if (!Object.op_Implicit((Object)(object)__instance.m_prefabs.Find((GameObject x) => ((Object)x).name == ((Object)newPrefab2).name))) { __instance.m_prefabs.Add(newPrefab2); } } foreach (GameObject newPrefab in buildPieces) { if (!Object.op_Implicit((Object)(object)__instance.m_prefabs.Find((GameObject x) => ((Object)x).name == ((Object)newPrefab).name))) { __instance.m_prefabs.Add(newPrefab); } } buildPieceChanges.editBuidlPieces(__instance.m_prefabs, buildPieces, __instance.m_prefabs); monsterManager.setupMonsters(__instance.m_prefabs, __instance.m_prefabs); editPortal(__instance.m_prefabs, "portal_wood"); editPortal(__instance.m_prefabs, "portal_stone"); GameObject playerResistance = __instance.m_prefabs.Find((GameObject x) => ((Object)x).name == "Player"); monsterManager.setPlayerResistance(playerResistance); buildPieceChanges.editStations(__instance.m_prefabs); recipeBuilder.fixWaveGround(__instance.m_prefabs); } } [HarmonyAfter(new string[] { "FactionPowers" })] [HarmonyPatch(typeof(ObjectDB), "CopyOtherDB")] public static class Object_CopyOtherDB_Path { public static void Postfix() { //IL_0095: Unknown result type (might be due to invalid IL or missing references) //IL_00a0: Expected O, but got Unknown if (!IsObjectDBValid()) { return; } GameObject val = ObjectDB.instance.m_items.Find((GameObject x) => ((Object)x).name == "Hammer"); List<GameObject> pieces = val.GetComponent<ItemDrop>().m_itemData.m_shared.m_buildPieces.m_pieces; foreach (GameObject piece in buildPieces) { if ((Object)pieces.Find((GameObject x) => ((Object)x).name == ((Object)piece).name) == (Object)null) { pieces.Add(piece); } } foreach (StatusEffect statusEffect in statusEffects) { AddStatus(statusEffect); } StatusEffect val2 = ObjectDB.instance.m_StatusEffects.Find((StatusEffect x) => ((Object)x).name == "Spirit"); val2.m_icon = iconSpirit; foreach (GameObject prefab in prefabs) { AddNewPrefab(prefab); } } } [HarmonyAfter(new string[] { "FactionPowers" })] [HarmonyPatch(typeof(ObjectDB), "Awake")] public static class Object_Awake_Path { public static void Postfix() { //IL_0095: Unknown result type (might be due to invalid IL or missing references) //IL_00a0: Expected O, but got Unknown if (!IsObjectDBValid()) { return; } GameObject val = ObjectDB.instance.m_items.Find((GameObject x) => ((Object)x).name == "Hammer"); List<GameObject> pieces = val.GetComponent<ItemDrop>().m_itemData.m_shared.m_buildPieces.m_pieces; foreach (GameObject piece in buildPieces) { if ((Object)pieces.Find((GameObject x) => ((Object)x).name == ((Object)piece).name) == (Object)null) { pieces.Add(piece); } } foreach (StatusEffect statusEffect in statusEffects) { AddStatus(statusEffect); } StatusEffect val2 = ObjectDB.instance.m_StatusEffects.Find((StatusEffect x) => ((Object)x).name == "Spirit"); val2.m_icon = iconSpirit; foreach (GameObject prefab in prefabs) { AddNewPrefab(prefab); } recipes.AddRange(recipeBuilder.createRecipes(ObjectDB.instance.m_items, prefabs)); foreach (Recipe recipe in recipes) { AddRecipe(recipe); } } } private readonly Harmony harmony = new Harmony("balrond.astafaraios.BjornheimArtifacts"); public const string PluginGUID = "balrond.astafaraios.BjornheimArtifacts"; public const string PluginName = "BjornheimArtifacts"; public const string PluginVersion = "1.0.1"; private static AssetBundle assetBundle; private static readonly string bundleName = "factionweapons"; private static List<GameObject> prefabs = new List<GameObject>(); private static List<GameObject> buildPieces = new List<GameObject>(); private static List<GameObject> vfxList = new List<GameObject>(); private static List<StatusEffect> statusEffects = new List<StatusEffect>(); public static RecipeBuilder recipeBuilder = new RecipeBuilder(); public static List<Recipe> recipes = new List<Recipe>(); public static MonsterManager monsterManager = new MonsterManager(); public static BuildPieceChanges buildPieceChanges = new BuildPieceChanges(); private static readonly string[] prefabNames = new string[9] { "Blidhr_bal", "Blidhr_base_bal", "BowRazorStrikes", "FenrirSword_bal", "FenrirSword_base_bal", "Gugnir_bal", "Gugnir_base_bal", "HoundsSycle", "HoundsScythe" }; private static readonly string[] resourceNames = new string[19] { "AcidSludge_bal", "Amethyst_bal", "AmethystSteel", "BlackTissue", "Bloodsteel", "DarkSteel", "DvergrHeart", "Electrum", "Frosteel", "GjallCore_bal", "GoldBar", "SeedFrost_bal", "SeekerBruteBlood", "MeadBaseLightingResistMedium_bal", "MeadBaseSpiritResistMedium_bal", "MediumSpiritPotion_bal", "MediumThunderPotion_bal", "DraugrInsygnia", "QueenCore" }; private static readonly string[] pieceNames = new string[5] { "SacredForge", "sacredforge_ext1", "sacredforge_ext2", "sacredforge_ext3", "GrandForgeV2" }; private static readonly string[] vfxNames = new string[12] { "SacredForgeAltar", "GrandForge", "Wave_Ground", "projectile_runeAxe", "fx_eikthyr_forwardshockwave1", "fx_Lightning1", "vfx_iceblocker_destroyed1", "vfx_scythExplosion", "vfx_scythe_ground", "vfx_scytheSpikeAoe", "fx_eikthyr_forwardshockwave2", "vfx_spiritbolt_explosion" }; public static Sprite iconSpirit = null; private void Awake() { Debug.Log((object)"ReidrheimrFactionWeapons loading"); init(); Debug.Log((object)"ReidrheimrFactionWeapons done loading"); } private void init() { LoadAllAssetBundles(); harmony.PatchAll(); } private void OnDestroy() { harmony.UnpatchSelf(); } public static void LoadAllAssetBundles() { assetBundle = GetAssetBundleFromResources(bundleName); LoadPrefabs(assetBundle); loadStatusFromPotion(); } public static AssetBundle GetAssetBundleFromResources(string filename) { Assembly executingAssembly = Assembly.GetExecutingAssembly(); string name = executingAssembly.GetManifestResourceNames().Single((string str) => str.EndsWith(filename)); using Stream stream = executingAssembly.GetManifestResourceStream(name); return AssetBundle.LoadFromStream(stream); } private static void LoadPrefabs(AssetBundle assetBundle) { //IL_0128: Unknown result type (might be due to invalid IL or missing references) iconSpirit = assetBundle.LoadAsset<Sprite>("Assets/Custom/Comission/FactionWeapons/ico/spiritburn1.png"); string[] array = vfxNames; string[] array2 = array; foreach (string text in array2) { GameObject val = assetBundle.LoadAsset<GameObject>("Assets/Custom/Comission/FactionWeapons/Objects/" + text + ".prefab"); val.SetActive(true); vfxList.Add(val); } string[] array3 = resourceNames; string[] array4 = array3; foreach (string text2 in array4) { GameObject val2 = assetBundle.LoadAsset<GameObject>("Assets/Custom/Comission/FactionWeapons/Resources/" + text2 + ".prefab"); val2.SetActive(true); prefabs.Add(val2); } string[] array5 = prefabNames; string[] array6 = array5; foreach (string text3 in array6) { GameObject val3 = assetBundle.LoadAsset<GameObject>("Assets/Custom/Comission/FactionWeapons/Weapons/" + text3 + ".prefab"); val3.SetActive(true); if (text3 == "Blidhr_bal" || text3 == "Blidhr_base_bal") { recolorParticleEmitterColorsRecursively(val3, new Color(0f, 0.64f, 1f)); } prefabs.Add(val3); } string[] array7 = pieceNames; string[] array8 = array7; foreach (string text4 in array8) { GameObject val4 = assetBundle.LoadAsset<GameObject>("Assets/Custom/Comission/FactionWeapons/Pieces/" + text4 + ".prefab"); val4.SetActive(true); buildPieces.Add(val4); } } private static void recolorParticleEmitterColorsRecursively(GameObject g, Color c) { //IL_0015: 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_001f: Unknown result type (might be due to invalid IL or missing references) //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_0027: Unknown result type (might be due to invalid IL or missing references) //IL_0038: Unknown result type (might be due to invalid IL or missing references) //IL_0039: Unknown result type (might be due to invalid IL or missing references) //IL_005d: Unknown result type (might be due to invalid IL or missing references) ParticleSystem component = g.GetComponent<ParticleSystem>(); if ((Object)(object)component != (Object)null) { MainModule main = component.main; MinMaxGradient startColor = ((MainModule)(ref main)).startColor; c.a = ((MinMaxGradient)(ref startColor)).color.a; ((MainModule)(ref main)).startColor = MinMaxGradient.op_Implicit(c); } for (int i = 0; i < g.transform.childCount; i++) { recolorParticleEmitterColorsRecursively(((Component)g.transform.GetChild(i)).gameObject, c); } } private static void loadStatusFromPotion() { string[] source = new string[2] { "MediumSpiritPotion_bal", "MediumThunderPotion_bal" }; foreach (GameObject prefab in prefabs) { if (source.Contains(((Object)prefab).name)) { ItemDrop component = prefab.GetComponent<ItemDrop>(); statusEffects.Add(component.m_itemData.m_shared.m_consumeStatusEffect); } } } [HarmonyPrefix] [HarmonyPatch(typeof(Fireplace), "UpdateFireplace")] public static void Fireplace_UpdateFireplace(Fireplace __instance, ref ZNetView ___m_nview) { ___m_nview.GetZDO().Set("fuel", __instance.m_maxFuel); } public static void editPortal(List<GameObject> prefbaList, string name) { //IL_0022: Unknown result type (might be due to invalid IL or missing references) //IL_002d: Expected O, but got Unknown //IL_004c: Unknown result type (might be due to invalid IL or missing references) //IL_0057: Expected O, but got Unknown //IL_00db: Unknown result type (might be due to invalid IL or missing references) //IL_00e2: Expected O, but got Unknown //IL_0113: Unknown result type (might be due to invalid IL or missing references) //IL_011e: Expected O, but got Unknown GameObject val = prefbaList.Find((GameObject x) => ((Object)x).name == name); if ((Object)val == (Object)null) { Debug.LogWarning((object)"NO PORTAL FOUND"); return; } Piece component = val.GetComponent<Piece>(); if ((Object)component == (Object)null) { Debug.LogWarning((object)"NO PIECE FOUND"); return; } Requirement[] resources = component.m_resources; List<Requirement> list = new List<Requirement>(resources.Length); Requirement[] array = resources; foreach (Requirement item in array) { list.Add(item); } List<Requirement> list2 = list; if (!list2.Any((Requirement w) => ((Object)w.m_resItem).name.ToLower().Contains("queen"))) { Requirement val2 = new Requirement(); val2.m_amount = 1; GameObject val3 = prefbaList.Find((GameObject x) => ((Object)x).name == "QueenCore"); if ((Object)val3 == (Object)null) { Debug.LogWarning((object)"NO QUEEN CORE FOUND"); return; } val2.m_resItem = val3.GetComponent<ItemDrop>(); val2.m_recover = true; list2.Add(val2); } component.m_resources = list2.ToArray(); } private static bool IsObjectDBValid() { //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_0011: Expected O, but got Unknown //IL_0044: Unknown result type (might be due to invalid IL or missing references) //IL_004f: Expected O, but got Unknown return (Object)ObjectDB.instance != (Object)null && ObjectDB.instance.m_items.Count != 0 && ObjectDB.instance.m_recipes.Count != 0 && (Object)ObjectDB.instance.GetItemPrefab("Amber") != (Object)null; } private static void AddRecipe(Recipe recipe) { int num = ObjectDB.instance.m_recipes.RemoveAll((Recipe x) => ((Object)x).name == ((Object)recipe).name); if (num > 0) { Debug.Log((object)$"Recipe ({((Object)recipe).name}): {num} instances removed."); } ObjectDB.instance.m_recipes.Add(recipe); Debug.Log((object)("Recipe (" + ((Object)recipe).name + ") added.")); } private static void AddNewPrefab(GameObject newPrefab) { //IL_0009: Unknown result type (might be due to invalid IL or missing references) //IL_0014: Expected O, but got Unknown //IL_002c: Unknown result type (might be due to invalid IL or missing references) //IL_0037: Expected O, but got Unknown ItemDrop component = newPrefab.GetComponent<ItemDrop>(); if ((Object)component != (Object)null) { if ((Object)ObjectDB.instance.GetItemPrefab(((Object)newPrefab).name) == (Object)null) { ObjectDB.instance.m_items.Add(newPrefab); Dictionary<int, GameObject> dictionary = (Dictionary<int, GameObject>)typeof(ObjectDB).GetField("m_itemByHash", BindingFlags.Instance | BindingFlags.NonPublic).GetValue(ObjectDB.instance); dictionary[StringExtensionMethods.GetStableHashCode(((Object)newPrefab).name)] = newPrefab; Debug.Log((object)(((Object)newPrefab).name + " - Added to the Game")); } else { Debug.LogWarning((object)(((Object)newPrefab).name + " - ItemDrop already exists")); } } else { Debug.LogError((object)(((Object)newPrefab).name + " - ItemDrop not found on prefab")); } } private static void AddStatus(StatusEffect status) { if (!IsObjectDBValid()) { return; } if ((Object)(object)status != (Object)null) { if ((Object)(object)ObjectDB.instance.GetStatusEffect(StringExtensionMethods.GetStableHashCode(((Object)status).name)) == (Object)null) { ObjectDB.instance.m_StatusEffects.Add(status); Debug.Log((object)(((Object)status).name + " - Status Added to the Game")); } } else { Debug.LogError((object)(((Object)status).name + " - Status not found")); } } } public class MonsterManager { private List<GameObject> monsters; private List<GameObject> list; private List<GameObject> list2; private string[] names = new string[0]; private string[] thiefName = new string[14] { "Greyling", "Greydwarf", "Greydwarf_Elite", "Draugr", "Draugr_Elite", "Draugr_Ranged", "Skeleton", "Skeleton_NoArcher", "Skeleton_Poison", "Forsaken", "GoblinBrute", "GoblinArcher", "Goblin", "GoblinShaman" }; public void setPlayerResistance(GameObject player) { //IL_000f: Unknown result type (might be due to invalid IL or missing references) Humanoid component = player.GetComponent<Humanoid>(); ((Character)component).m_damageModifiers.m_spirit = (DamageModifier)0; } public void setupMonsters(List<GameObject> list, List<GameObject> newItemList) { if (list == null) { Debug.LogWarning((object)"I DID NOT FOUND PREFAB LIST!"); return; } this.list = list; list2 = newItemList; monsters = list.FindAll((GameObject x) => (Object)x.GetComponent<MonsterAI>() != (Object)null); if (monsters == null) { Debug.LogWarning((object)"I DID NOT FOUND ANY MONSTERS!"); return; } changeMonsterResistance(); changeMonsterDrops(); } private void changeMonsterDrops() { //IL_00ac: Unknown result type (might be due to invalid IL or missing references) //IL_00b7: Expected O, but got Unknown string[] array = new string[13] { "Tick", "Seeker", "SeekerBrute", "Gjall", "DvergerMageIce", "DvergerMageSupport", "DvergerMage", "DvergerMageFire", "Dverger", "Draugr", "Draugr_Elite", "Draugr_Ranged", "SeekerQueen" }; string[] array2 = array; string[] array3 = array2; foreach (string name in array3) { GameObject val = monsters.Find((GameObject x) => ((Object)x).name == name); if ((Object)val != (Object)null) { monsterLootChange(val); } } } private void monsterLootChange(GameObject monster) { string name = ((Object)monster).name; string text = name; if (text == null) { return; } switch (text.Length) { case 11: switch (text[6]) { case 'r': if (text == "DvergerMage") { addItemToLootTable(monster, "DvergrHeart", 1, 1, 0.25f); } break; case 'B': if (text == "SeekerBrute") { addItemToLootTable(monster, "SeekerBruteBlood", 1, 1, 0.5f); } break; case 'Q': if (text == "SeekerQueen") { addItemToLootTable(monster, "QueenCore", 1, 1, 0.15f); } break; } break; case 6: switch (text[0]) { default: return; case 'S': if (text == "Seeker") { addItemToLootTable(monster, "AcidSludge_bal", 1, 1, 0.5f); } return; case 'D': break; } if (!(text == "Draugr")) { break; } goto IL_02ca; case 4: if (text == "Tick") { addItemToLootTable(monster, "BlackTissue", 1, 1, 0.25f); } break; case 14: if (text == "DvergerMageIce") { addItemToLootTable(monster, "DvergrHeart", 1, 1, 0.25f); addItemToLootTable(monster, "SeedFrost_bal", 1, 1, 0.75f); } break; case 18: if (text == "DvergerMageSupport") { addItemToLootTable(monster, "DvergrHeart", 1, 1, 0.25f); addItemToLootTable(monster, "Amethyst_bal", 1, 1, 0.5f); } break; case 15: if (text == "DvergerMageFire") { addItemToLootTable(monster, "DvergrHeart", 1, 1, 0.25f); addItemToLootTable(monster, "Amethyst_bal", 1, 1, 0.25f); } break; case 7: if (text == "Dverger") { addItemToLootTable(monster, "GoldBar", 1, 1, 0.25f); } break; case 5: if (text == "Gjall") { addItemToLootTable(monster, "GjallCore_bal", 1, 1, 1f); } break; case 13: if (!(text == "Draugr_Ranged")) { break; } goto IL_02ca; case 12: if (text == "Draugr_Elite") { addItemToLootTable(monster, "DraugrInsygnia", 1, 1, 0.5f); } break; case 8: case 9: case 10: case 16: case 17: break; IL_02ca: addItemToLootTable(monster, "DraugrInsygnia", 1, 1, 0.2f); break; } } private void addItemToLootTable(GameObject monster, string itemName, int amountMin, int amountMax, float chance) { //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_000e: Expected O, but got Unknown CharacterDrop component = monster.GetComponent<CharacterDrop>(); Drop val = new Drop(); val.m_amountMin = amountMin; val.m_amountMax = amountMax; val.m_chance = chance; val.m_levelMultiplier = false; GameObject val2 = (val.m_prefab = FindItem(itemName)); component.m_drops.Add(val); } private void changeMonsterResistance() { //IL_0021: Unknown result type (might be due to invalid IL or missing references) //IL_002c: Expected O, but got Unknown foreach (GameObject monster in monsters) { Humanoid component = monster.GetComponent<Humanoid>(); if ((Object)component != (Object)null) { changeResistanceForException(component); } } } private GameObject FindItem(string name) { //IL_0027: Unknown result type (might be due to invalid IL or missing references) //IL_0032: Expected O, but got Unknown //IL_00b2: Unknown result type (might be due to invalid IL or missing references) //IL_00bd: Expected O, but got Unknown //IL_0050: Unknown result type (might be due to invalid IL or missing references) //IL_005b: Expected O, but got Unknown GameObject val = list.Find((GameObject x) => ((Object)x).name == name); if ((Object)val == (Object)null) { val = list2.Find((GameObject x) => ((Object)x).name == name); if ((Object)val != (Object)null) { return val; } Debug.LogWarning((object)("Item Not Found - " + name + ", Replaced With Wood")); return list.Find((GameObject x) => ((Object)x).name == "Wood"); } if ((Object)val != (Object)null) { return val; } Debug.LogWarning((object)("Item Not Found - " + name + ", Replaced With Wood")); return list.Find((GameObject x) => ((Object)x).name == "Wood"); } private CraftingStation FindStation(string name) { //IL_000a: Unknown result type (might be due to invalid IL or missing references) //IL_0015: Expected O, but got Unknown GameObject val = FindItem(name); if ((Object)val != (Object)null) { return val.GetComponent<CraftingStation>(); } return null; } private void changeSpiritResistance(Humanoid humanoid) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0008: Expected I4, but got Unknown //IL_003d: Unknown result type (might be due to invalid IL or missing references) //IL_004b: Unknown result type (might be due to invalid IL or missing references) //IL_0067: Unknown result type (might be due to invalid IL or missing references) //IL_0075: Unknown result type (might be due to invalid IL or missing references) //IL_0091: Unknown result type (might be due to invalid IL or missing references) //IL_0059: Unknown result type (might be due to invalid IL or missing references) //IL_0083: Unknown result type (might be due to invalid IL or missing references) //IL_009f: Unknown result type (might be due to invalid IL or missing references) switch ((int)((Character)humanoid).m_faction) { case 0: ((Character)humanoid).m_damageModifiers.m_spirit = (DamageModifier)0; break; case 1: ((Character)humanoid).m_damageModifiers.m_spirit = (DamageModifier)1; break; case 5: ((Character)humanoid).m_damageModifiers.m_spirit = (DamageModifier)5; break; case 2: ((Character)humanoid).m_damageModifiers.m_spirit = (DamageModifier)2; break; case 3: ((Character)humanoid).m_damageModifiers.m_spirit = (DamageModifier)2; break; case 6: ((Character)humanoid).m_damageModifiers.m_spirit = (DamageModifier)1; break; case 4: ((Character)humanoid).m_damageModifiers.m_spirit = (DamageModifier)5; break; case 8: ((Character)humanoid).m_damageModifiers.m_spirit = (DamageModifier)5; break; case 7: break; } } private void changeResistanceForException(Humanoid humanoid) { changeSpiritResistance(humanoid); } } public class RecipeBuilder { private List<GameObject> pieces; private List<GameObject> items; private List<GameObject> newItems; public List<Recipe> recipes; private string[] toRecipe = new string[17] { "Blidhr_bal", "Blidhr_base_bal", "BowRazorStrikes", "FenrirSword_bal", "FenrirSword_base_bal", "Gugnir_bal", "Gugnir_base_bal", "HoundsSycle", "Electrum", "Frosteel", "GoldBar", "Bloodsteel", "HoundsScythe", "DarkSteel", "AmethystSteel", "MeadBaseLightingResistMedium_bal", "MeadBaseSpiritResistMedium_bal" }; private string[] itemEditNames = new string[19] { "SeekerAspic", "YggdrasilPorridge", "MagicallyStuffedShroom", "MushroomOmelette", "draugr_sword", "draugr_bow", "draugr_axe", "skeleton_bow", "skeleton_mace", "skeleton_sword2", "skeleton_bow2", "skeleton_sword2", "imp_fireball_attack", "Ghost_attack", "gd_king_shoot", "Greydwarf_shaman_attack", "GoblinKing_Beam", "GoblinShaman_attack_fireball", "BowRazorStrikes" }; private void editItems() { //IL_001f: Unknown result type (might be due to invalid IL or missing references) //IL_002a: Expected O, but got Unknown string[] array = itemEditNames; string[] array2 = array; foreach (string text in array2) { GameObject val = FindItem(text); if ((Object)val == (Object)null) { Debug.LogWarning((object)("Could not find: " + text)); } else { CheckStats(val); } } } private void CheckStats(GameObject gameObject) { string name = ((Object)gameObject).name; string text = name; if (text == null) { return; } switch (text.Length) { case 12: switch (text[0]) { default: return; case 'd': if (text == "draugr_sword") { editSpiritDamageStat(gameObject, 25); } return; case 's': if (!(text == "skeleton_bow")) { return; } break; case 'G': if (!(text == "Ghost_attack")) { return; } break; } goto IL_0243; case 10: switch (text[7]) { case 'b': if (text == "draugr_bow") { editSpiritDamageStat(gameObject, 15); } break; case 'a': if (text == "draugr_axe") { editSpiritDamageStat(gameObject, 15); } break; } break; case 13: switch (text[9]) { default: return; case 'b': if (!(text == "skeleton_bow2")) { return; } break; case 'm': if (!(text == "skeleton_mace")) { return; } break; case 'h': if (!(text == "gd_king_shoot")) { return; } break; } goto IL_024f; case 15: switch (text[0]) { default: return; case 's': if (!(text == "skeleton_sword2")) { return; } break; case 'G': if (!(text == "GoblinKing_Beam")) { return; } break; case 'B': if (text == "BowRazorStrikes") { editStatsRazorStrike(gameObject, 94, 0, 10, 10, 0, 10); } return; } goto IL_024f; case 14: if (!(text == "skeleton_sword")) { break; } goto IL_0243; case 23: if (!(text == "Greydwarf_shaman_attack")) { break; } goto IL_024f; case 28: if (!(text == "GoblinShaman_attack_fireball")) { break; } goto IL_024f; case 19: { if (text == "imp_fireball_attack") { editSpiritDamageStat(gameObject, 10); } break; } IL_0243: editSpiritDamageStat(gameObject, 10); break; IL_024f: editSpiritDamageStat(gameObject, 20); break; } } private void editStatsRazorStrike(GameObject gameObject, int pierce, int fire, int frost, int lightning, int poison, int spirit) { ItemDrop component = gameObject.GetComponent<ItemDrop>(); component.m_itemData.m_shared.m_damages.m_pierce = pierce; component.m_itemData.m_shared.m_damages.m_fire = fire; component.m_itemData.m_shared.m_damages.m_frost = frost; component.m_itemData.m_shared.m_damages.m_lightning = lightning; component.m_itemData.m_shared.m_damages.m_poison = poison; component.m_itemData.m_shared.m_damages.m_spirit = spirit; component.m_itemData.m_shared.m_damagesPerLevel.m_pierce = 4f; component.m_itemData.m_shared.m_damagesPerLevel.m_fire = 0f; component.m_itemData.m_shared.m_damagesPerLevel.m_frost = 4f; component.m_itemData.m_shared.m_damagesPerLevel.m_lightning = 4f; component.m_itemData.m_shared.m_damagesPerLevel.m_poison = 0f; component.m_itemData.m_shared.m_damagesPerLevel.m_spirit = 4f; } 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 editFoodStat(GameObject gameObject, int hp, int stam, int eitr) { ItemDrop component = gameObject.GetComponent<ItemDrop>(); component.m_itemData.m_shared.m_food = hp; component.m_itemData.m_shared.m_foodStamina = stam; component.m_itemData.m_shared.m_foodEitr = eitr; } public List<Recipe> createRecipes(List<GameObject> items, List<GameObject> newItems) { this.items = items; this.newItems = newItems; pieces = items.Find((GameObject x) => ((Object)x).name == "Hammer").GetComponent<ItemDrop>().m_itemData.m_shared.m_buildPieces.m_pieces; List<Recipe> list = new List<Recipe>(); CraftingStation component = pieces.Find((GameObject x) => ((Object)x).name == "forge").GetComponent<CraftingStation>(); int minStationLevel = 3; foreach (GameObject newItem in newItems) { if (toRecipe.Contains(((Object)newItem).name)) { Recipe val = ScriptableObject.CreateInstance<Recipe>(); val.m_craftingStation = component; val.m_repairStation = component; val.m_minStationLevel = minStationLevel; val = createResources(newItem, val); list.Add(val); } } editItems(); return list; } public Sprite LoadNewSprite(string FilePath, float PixelsPerUnit = 100f) { //IL_0022: Unknown result type (might be due to invalid IL or missing references) //IL_0031: Unknown result type (might be due to invalid IL or missing references) Texture2D val = LoadTexture(FilePath); return Sprite.Create(val, new Rect(0f, 0f, (float)((Texture)val).width, (float)((Texture)val).height), new Vector2(0f, 0f), PixelsPerUnit); } public Texture2D LoadTexture(string fileName) { //IL_005a: Unknown result type (might be due to invalid IL or missing references) //IL_0060: Expected O, but got Unknown Assembly executingAssembly = Assembly.GetExecutingAssembly(); string name = executingAssembly.GetManifestResourceNames().Single((string str) => str.EndsWith(fileName)); using (Stream stream = executingAssembly.GetManifestResourceStream(name)) { byte[] array = new byte[stream.Length]; stream.Read(array, 0, (int)stream.Length); Texture2D val = new Texture2D(2, 2); if (ImageConversion.LoadImage(val, array)) { return val; } } return null; } private Recipe createResources(GameObject item, Recipe newRecipe) { ((Object)newRecipe).name = "Recipe_" + ((Object)item).name; newRecipe.m_item = item.GetComponent<ItemDrop>(); newRecipe.m_amount = 1; newRecipe.m_enabled = true; List<Requirement> list = new List<Requirement>(); switch (((Object)item).name) { case "Blidhr_base_bal": { item.GetComponent<ItemDrop>().m_itemData.m_shared.m_name = "Freyrs Rune Axe"; list.Add(createReq("DarkSteel", 10, 5)); list.Add(createReq("ElderBark", 10, 2)); list.Add(createReq("Silver", 10, 2)); list.Add(createReq("AncientSeed", 15, 6)); List<Sprite> list3 = new List<Sprite>(); list3.Add(LoadNewSprite("bladhir_base_ico.png")); item.GetComponent<ItemDrop>().m_itemData.m_shared.m_icons = list3.ToArray(); break; } case "Blidhr_bal": { newRecipe.m_craftingStation = FindStation(pieces, "SacredForge"); newRecipe.m_minStationLevel = 1; list.Add(createReq("Blidhr_base_bal", 1, 0)); list.Add(createReq("AmethystSteel", 8, 4)); list.Add(createReq("AcidSludge_bal", 20, 10)); list.Add(createReq("YmirRemains", 20, 10)); List<Sprite> list2 = new List<Sprite>(); list2.Add(LoadNewSprite("bladhir_ico.png")); item.GetComponent<ItemDrop>().m_itemData.m_shared.m_icons = list2.ToArray(); break; } case "BowRazorStrikes": newRecipe.m_craftingStation = FindStation(pieces, "piece_workbench"); newRecipe.m_minStationLevel = 1; list.Add(createReq("Electrum", 15, 5)); list.Add(createReq("Eitr", 30, 2)); list.Add(createReq("MediumSpiritPotion_bal", 5, 2)); break; case "FenrirSword_bal": newRecipe.m_craftingStation = FindStation(pieces, "SacredForge"); newRecipe.m_minStationLevel = 1; list.Add(createReq("FenrirSword_base_bal", 1, 0)); list.Add(createReq("Frosteel", 8, 4)); list.Add(createReq("SeedFrost_bal", 20, 10)); list.Add(createReq("Crystal", 20, 10)); break; case "FenrirSword_base_bal": list.Add(createReq("DarkSteel", 10, 5)); list.Add(createReq("ElderBark", 10, 2)); list.Add(createReq("Silver", 10, 2)); list.Add(createReq("WolfPelt", 10, 2)); break; case "Gugnir_base_bal": item.GetComponent<ItemDrop>().m_itemData.m_shared.m_name = "Spear of Penitents"; list.Add(createReq("DarkSteel", 10, 5)); list.Add(createReq("ElderBark", 10, 2)); list.Add(createReq("Silver", 10, 2)); list.Add(createReq("MushroomYellow", 20, 5)); break; case "Gugnir_bal": newRecipe.m_craftingStation = FindStation(pieces, "SacredForge"); newRecipe.m_minStationLevel = 1; list.Add(createReq("Gugnir_base_bal", 1, 0)); list.Add(createReq("Electrum", 8, 4)); list.Add(createReq("GoldBar", 20, 10)); list.Add(createReq("Thunderstone", 20, 10)); break; case "HoundsSycle": list.Add(createReq("DarkSteel", 10, 5)); list.Add(createReq("ElderBark", 10, 2)); list.Add(createReq("Silver", 10, 2)); list.Add(createReq("Bloodbag", 15, 6)); break; case "HoundsScythe": newRecipe.m_craftingStation = FindStation(pieces, "SacredForge"); newRecipe.m_minStationLevel = 1; list.Add(createReq("HoundsSycle", 1, 0)); list.Add(createReq("Bloodsteel", 8, 4)); list.Add(createReq("BlackTissue", 20, 10)); list.Add(createReq("SurtlingCore", 20, 10)); break; case "Electrum": newRecipe.m_craftingStation = FindStation(pieces, "SacredForge"); newRecipe.m_minStationLevel = 1; list.Add(createReq("FlametalNew", 4, 0)); list.Add(createReq("DarkSteel", 3, 0)); list.Add(createReq("GjallCore_bal", 5, 0)); list.Add(createReq("Coal", 8, 0)); break; case "Frosteel": newRecipe.m_craftingStation = FindStation(pieces, "SacredForge"); newRecipe.m_minStationLevel = 1; list.Add(createReq("FlametalNew", 4, 0)); list.Add(createReq("DarkSteel", 3, 0)); list.Add(createReq("SeedFrost_bal", 5, 0)); list.Add(createReq("Coal", 8, 0)); break; case "GoldBar": newRecipe.m_minStationLevel = 5; list.Add(createReq("Coins", 999, 0)); list.Add(createReq("Coal", 10, 0)); break; case "Bloodsteel": newRecipe.m_craftingStation = FindStation(pieces, "SacredForge"); newRecipe.m_minStationLevel = 1; list.Add(createReq("FlametalNew", 4, 0)); list.Add(createReq("DarkSteel", 3, 0)); list.Add(createReq("SeekerBruteBlood", 5, 0)); list.Add(createReq("Coal", 8, 0)); break; case "DarkSteel": list.Add(createReq("Iron", 3, 0)); list.Add(createReq("Obsidian", 6, 0)); list.Add(createReq("Coal", 5, 0)); break; case "AmethystSteel": newRecipe.m_craftingStation = FindStation(pieces, "SacredForge"); newRecipe.m_minStationLevel = 1; list.Add(createReq("FlametalNew", 4, 0)); list.Add(createReq("DarkSteel", 3, 0)); list.Add(createReq("Amethyst_bal", 5, 0)); list.Add(createReq("Coal", 8, 0)); break; case "MeadBaseLightingResistMedium_bal": newRecipe.m_craftingStation = FindStation(pieces, "piece_cauldron"); newRecipe.m_minStationLevel = 2; list.Add(createReq("Thunderstone", 3, 0)); list.Add(createReq("Thistle", 5, 0)); list.Add(createReq("GreydwarfEye", 25, 0)); list.Add(createReq("TrophyFrostTroll", 2, 0)); break; case "MeadBaseSpiritResistMedium_bal": newRecipe.m_craftingStation = FindStation(pieces, "piece_cauldron"); newRecipe.m_minStationLevel = 2; list.Add(createReq("DraugrInsygnia", 6, 0)); list.Add(createReq("Honey", 10, 0)); list.Add(createReq("Bloodbag", 4, 0)); list.Add(createReq("TrophyGreydwarfShaman", 2, 0)); break; } newRecipe.m_resources = list.ToArray(); return newRecipe; } public Requirement createReq(string name, int amount, int amountPerLevel) { //IL_000e: Unknown result type (might be due to invalid IL or missing references) //IL_0014: Expected O, but got Unknown Requirement val = new Requirement(); val.m_recover = true; ItemDrop val2 = (val.m_resItem = items.Find((GameObject x) => ((Object)x).name == name).GetComponent<ItemDrop>()); val.m_amount = amount; val.m_amountPerLevel = amountPerLevel; return val; } private GameObject FindItem(string name) { //IL_0027: Unknown result type (might be due to invalid IL or missing references) //IL_0032: Expected O, but got Unknown //IL_00b2: Unknown result type (might be due to invalid IL or missing references) //IL_00bd: Expected O, but got Unknown //IL_0050: Unknown result type (might be due to invalid IL or missing references) //IL_005b: Expected O, but got Unknown GameObject val = items.Find((GameObject x) => ((Object)x).name == name); if ((Object)val == (Object)null) { val = newItems.Find((GameObject x) => ((Object)x).name == name); if ((Object)val != (Object)null) { return val; } Debug.LogWarning((object)("Item Not Found - " + name + ", Replaced With Wood")); return items.Find((GameObject x) => ((Object)x).name == "Wood"); } if ((Object)val != (Object)null) { return val; } Debug.LogWarning((object)("Item Not Found - " + name + ", Replaced With Wood")); return items.Find((GameObject x) => ((Object)x).name == "Wood"); } private CraftingStation FindStation(List<GameObject> list, string name) { //IL_0022: Unknown result type (might be due to invalid IL or missing references) //IL_002d: Expected O, but got Unknown GameObject val = list.Find((GameObject x) => ((Object)x).name == name); if ((Object)val != (Object)null) { return val.GetComponent<CraftingStation>(); } return null; } internal void fixWaveGround(List<GameObject> m_prefabs) { //IL_0038: Unknown result type (might be due to invalid IL or missing references) //IL_0079: Unknown result type (might be due to invalid IL or missing references) //IL_00db: Unknown result type (might be due to invalid IL or missing references) //IL_0141: Unknown result type (might be due to invalid IL or missing references) try { GameObject g = m_prefabs.Find((GameObject x) => ((Object)x).name == "Wave_Ground"); recolorParticleEmitterColorsRecursively(g, new Color(0f, 0.64f, 1f)); GameObject g2 = m_prefabs.Find((GameObject x) => ((Object)x).name == "vfx_spiritbolt_explosion"); recolorParticleEmitterColorsRecursively(g2, new Color(0f, 0.64f, 1f)); GameObject val = m_prefabs.Find((GameObject x) => ((Object)x).name == "Blidhr_base_bal"); Transform val2 = RecursiveFindChild(val.transform, "RuneRock_3 (1)"); ((Component)val2).GetComponent<Renderer>().material.SetColor("_EmissionColor", new Color(0f, 0.6f, 1f)); GameObject val3 = m_prefabs.Find((GameObject x) => ((Object)x).name == "Blidhr_bal"); Transform val4 = RecursiveFindChild(val3.transform, "RuneRock_1"); ((Component)val4).GetComponent<Renderer>().material.SetColor("_EmissionColor", new Color(0f, 0.6f, 1f)); } catch (Exception ex) { Debug.Log((object)"######################################################################"); Debug.Log((object)"Failed to fixwaveground"); Debug.Log((object)ex); } } private static void recolorParticleEmitterColorsRecursively(GameObject g, Color c) { //IL_0018: Unknown result type (might be due to invalid IL or missing references) //IL_001d: 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_0027: Unknown result type (might be due to invalid IL or missing references) //IL_002a: 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_003c: Unknown result type (might be due to invalid IL or missing references) //IL_0048: Unknown result type (might be due to invalid IL or missing references) //IL_004d: Unknown result type (might be due to invalid IL or missing references) //IL_0075: Unknown result type (might be due to invalid IL or missing references) //IL_007a: Unknown result type (might be due to invalid IL or missing references) //IL_005e: Unknown result type (might be due to invalid IL or missing references) //IL_0063: Unknown result type (might be due to invalid IL or missing references) //IL_0067: Unknown result type (might be due to invalid IL or missing references) //IL_0068: Unknown result type (might be due to invalid IL or missing references) //IL_00e2: 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) //IL_0091: Unknown result type (might be due to invalid IL or missing references) //IL_0095: Unknown result type (might be due to invalid IL or missing references) //IL_0096: Unknown result type (might be due to invalid IL or missing references) ParticleSystem component = g.GetComponent<ParticleSystem>(); if ((Object)(object)component != (Object)null) { MainModule main = component.main; MinMaxGradient startColor = ((MainModule)(ref main)).startColor; c.a = ((MinMaxGradient)(ref startColor)).color.a; ((MainModule)(ref main)).startColor = MinMaxGradient.op_Implicit(c); TrailModule trails = component.trails; if (((TrailModule)(ref trails)).enabled) { TrailModule trails2 = component.trails; ((TrailModule)(ref trails2)).colorOverLifetime = MinMaxGradient.op_Implicit(c); } ColorOverLifetimeModule colorOverLifetime = component.colorOverLifetime; if (((ColorOverLifetimeModule)(ref colorOverLifetime)).enabled) { try { ColorOverLifetimeModule colorOverLifetime2 = component.colorOverLifetime; ((ColorOverLifetimeModule)(ref colorOverLifetime2)).color = MinMaxGradient.op_Implicit(c); } catch (Exception ex) { Debug.Log((object)"######################################################################"); Debug.Log((object)"Failed to recolorParticleEmitterColorsRecursively"); Debug.Log((object)ex); } } } for (int i = 0; i < g.transform.childCount; i++) { recolorParticleEmitterColorsRecursively(((Component)g.transform.GetChild(i)).gameObject, c); } } private Transform RecursiveFindChild(Transform parent, string childName) { //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 == childName) { return val; } Transform val2 = RecursiveFindChild(val, childName); if ((Object)(object)val2 != (Object)null) { return val2; } } return null; } } public class ShaderReplacment { public string[] shaderlist = new string[49] { "Custom/AlphaParticle", "Custom/Blob", "Custom/Bonemass", "Custom/Clouds", "Custom/Creature", "Custom/Decal", "Custom/Distortion", "Custom/Flow", "Custom/FlowOpaque", "Custom/Grass", "Custom/GuiScroll", "Custom/Heightmap", "Custom/icon", "Custom/InteriorSide", "Custom/LitGui", "Custom/LitParticles", "Custom/mapshader", "Custom/ParticleDecal", "Custom/Piece", "Custom/Player", "Custom/Rug", "Custom/ShadowBlob", "Custom/SkyboxProcedural", "Custom/SkyObject", "Custom/StaticRock", "Custom/Tar", "Custom/Trilinearmap", "Custom/UI/BGBlur", "Custom/Vegetation", "Custom/Water", "Custom/WaterBottom", "Custom/WaterMask", "Custom/Yggdrasil", "Custom/Yggdrasil/root", "Hidden/BlitCopyHDRTonemap", "Hidden/Dof/DepthOfFieldHdr", "Hidden/Dof/DX11Dof", "Hidden/Internal-Loading", "Hidden/Internal-UIRDefaultWorld", "Hidden/SimpleClear", "Hidden/SunShaftsComposite", "Lux Lit Particles/ Bumped", "Lux Lit Particles/ Tess Bumped", "Particles/Standard Surface2", "Particles/Standard Unlit2", "Standard TwoSided", "ToonDeferredShading2017", "Unlit/DepthWrite", "Unlit/Lighting" }; public List<Shader> shaders = new List<Shader>(); public void findShadersByName() { //IL_001e: Unknown result type (might be due to invalid IL or missing references) //IL_0029: Expected O, but got Unknown string[] array = shaderlist; string[] array2 = array; foreach (string text in array2) { Shader val = Shader.Find(text); if ((Object)val != (Object)null) { shaders.Add(val); } } } public void ReplaceShadersInObject(GameObject gameObject) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_000d: Expected O, but got Unknown //IL_00e1: Unknown result type (might be due to invalid IL or missing references) //IL_00ec: Expected O, but got Unknown if ((Object)gameObject == (Object)null) { return; } Renderer[] componentsInChildren = gameObject.GetComponentsInChildren<Renderer>(); if (componentsInChildren == null || componentsInChildren.Length == 0) { return; } Renderer[] array = componentsInChildren; Renderer[] array2 = array; foreach (Renderer val in array2) { int num = 0; Material[] sharedMaterials = val.sharedMaterials; if (sharedMaterials == null || sharedMaterials.Length == 0) { continue; } Material[] array3 = sharedMaterials; Material[] array4 = array3; foreach (Material val2 in array4) { string name = ((Object)val2.shader).name; if (!(name == "Standard") && name.Contains("Balrond")) { string name2 = name.Replace("Balrond", "Custom"); name2 = checkNaming(name2); Shader val3 = Shader.Find(name2); if ((Object)val3 == (Object)null) { Debug.LogWarning((object)("[Project Ashlands]: Shader not found " + name2)); continue; } val2.shader = val3; num++; } } } } private string checkNaming(string name) { string result = name; if (name.Contains("Bumped")) { result = name.Replace("Custom", "Lux Lit Particles"); } if (name.Contains("Tess Bumped")) { result = name.Replace("Custom", "Lux Lit Particles"); } if (name.Contains("Standard Surface")) { result = name.Replace("Custom", "Particles"); result = result.Replace("Standard Surface2", "Standard Surface"); } if (name.Contains("Standard Unlit")) { result = name.Replace("Custom", "Particles"); result = result.Replace("Standard Unlit", "Standard Unlit2"); result = result.Replace("Standard Unlit22", "Standard Unlit2"); } return result; } } }