Please disclose if any significant portion of your mod was created 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 balrond ElvenRoof v1.0.3
plugins/BalrondElvenRoof.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 UnityEngine; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] [assembly: AssemblyTitle("RainbowTrollArmor")] [assembly: AssemblyDescription("")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("")] [assembly: AssemblyProduct("RainbowTrollArmor")] [assembly: AssemblyCopyright("Copyright © 2021")] [assembly: AssemblyTrademark("")] [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 BalrondElvenRoof; public class FxReplacment { private List<GameObject> allPrefabs; public void setInstance(List<GameObject> gameObjects) { allPrefabs = gameObjects; } public void ReplaceFxOnPiece(GameObject gameObject) { if ((Object)(object)gameObject == (Object)null) { Debug.LogWarning((object)"BALROND CONTAINERS: GameObject not found"); return; } Piece component = gameObject.GetComponent<Piece>(); if ((Object)(object)component != (Object)null) { EffectList placeEffect = component.m_placeEffect; if (placeEffect != null) { findEffectsAndChange(placeEffect.m_effectPrefabs); } } WearNTear component2 = gameObject.GetComponent<WearNTear>(); if ((Object)(object)component2 != (Object)null) { EffectList hitEffect = component2.m_hitEffect; if (hitEffect != null) { findEffectsAndChange(hitEffect.m_effectPrefabs); } } } private void findEffectsAndChange(EffectData[] effects) { if (effects == null || effects.Length == 0) { Debug.LogError((object)"BALROND CONTAINERS: Effects in Method are empty"); return; } foreach (EffectData val in effects) { if ((Object)(object)val.m_prefab != (Object)null) { string name = ((Object)val.m_prefab).name; GameObject val2 = allPrefabs.Find((GameObject x) => ((Object)x).name == name); if ((Object)(object)val2 == (Object)null) { Debug.LogWarning((object)("BALROND CONTAINERS: Replace Effect not found: " + name)); } else { val.m_prefab = val2; } } } } } [BepInPlugin("balrond.astafaraios.BalrondElvenRoof", "BalrondElvenRoof", "1.0.3")] public class Launch : BaseUnityPlugin { [HarmonyPatch(typeof(ZNetScene), "Awake")] public static class ZNetScene_Awake_Path { public static void Prefix(ZNetScene __instance) { //IL_0134: Unknown result type (might be due to invalid IL or missing references) if ((Object)(object)__instance == (Object)null) { Debug.LogWarning((object)"BalrondElvenRoof: No ZnetScene found"); return; } GameObject val = FindItem(__instance.m_prefabs, "Hammer"); List<GameObject> pieces = val.GetComponent<ItemDrop>().m_itemData.m_shared.m_buildPieces.m_pieces; fxReplacment.setInstance(__instance.m_prefabs); foreach (GameObject item in prefabs) { editBuildPiece(__instance.m_prefabs, item); fxReplacment.ReplaceFxOnPiece(item); GameObject val2 = __instance.m_prefabs.Find((GameObject x) => ((Object)x).name == ((Object)item).name); if ((Object)(object)val2 == (Object)null) { __instance.m_prefabs.Add(item); } GameObject val3 = pieces.Find((GameObject x) => ((Object)x).name == ((Object)item).name); if ((Object)(object)val3 == (Object)null) { pieces.Add(item); } } if (!new ZNet().IsDedicated()) { ShaderReplacment.runMaterialFix(); } } } private readonly Harmony harmony = new Harmony("balrond.astafaraios.BalrondElvenRoof"); public const string PluginGUID = "balrond.astafaraios.BalrondElvenRoof"; public const string PluginName = "BalrondElvenRoof"; public const string PluginVersion = "1.0.3"; public static AssetBundle assetBundle; public static List<GameObject> prefabs = new List<GameObject>(); public static FxReplacment fxReplacment = new FxReplacment(); private string[] prefabnames = new string[173] { "elvenwood_roof_flat1", "elvenwood_roof_45", "elvenwood_roof_45_half", "elvenwood_roof_45_large", "elvenwood_roof_45_tower_curved_v1", "elvenwood_roof_45_tower_curved_v2", "elvenwood_roof_45_tower_curved_v2_reverse", "elvenwood_roof_45_tower_curved_v1_reverse", "elvenwood_roof_icorner_45", "elvenwood_roof_ocorner_45", "elvenwood_roof_ocorner_45_large", "elvenwood_roof_ocorner_45_sharp", "elvenwood_roof_window_45", "elvenwood_roof_ocorner_45_window_double", "elvenwood_roof_top_45", "elvenwood_roof_top_45_peak", "elvenwood_roof_top_45_quarter", "elvenwood_beam_45_tile", "elvenwood_wall_roof_45", "elvenwood_wall_roof_45_upsidedown", "elvenwood_wall_roof_45_double", "elvenwood_wall_top_45", "elvenwood_beam_side1", "elvenwood_beam_top1", "elvenwood_roof_flat", "elvenwood_roof_45_v2", "elvenwood_roof_45_half_v2", "elvenwood_roof_45_v2_large", "elvenwood_roof_45_tower_convex_v1", "elvenwood_roof_45_tower_convex_v1_reverse", "elvenwood_roof_45_tower_convex_v2", "elvenwood_roof_45_tower_convex_v2_reverse", "elvenwood_roof_icorner_45_v2", "elvenwood_roof_ocorner_45_v2", "elvenwood_roof_ocorner_45_v2_large", "elvenwood_roof_window_45_v2", "elvenwood_roof_ocorner_45_window_v2", "elvenwood_roof_ocorner_45_window_double_v2", "elvenwood_roof_top_45_v2", "elvenwood_roof_top_45_peak_v2", "elvenwood_roof_top_45_quarter_v2", "elvenwood_beam_45_tile_v2", "elvenwood_wall_roof_45_v2", "elvenwood_wall_roof_45_upsidedown_v2", "elvenwood_wall_roof_45_double_v2", "elvenwood_wall_top_45_v2", "elvenwood_beam_top", "elvenwood_beam_side", "elvenwood_roof_flat2", "elvenwood_roof_45_v3", "elvenwood_roof_45_half_v3", "elvenwood_roof_45_v3_large", "elvenwood_roof_45_tower_straight_v1", "elvenwood_roof_45_tower_straight_v2", "elvenwood_roof_45_tower_straight_v2_reverse", "elvenwood_roof_45_tower_straight_v1_reverse", "elvenwood_roof_icorner_45_v3", "elvenwood_roof_ocorner_45_v3", "elvenwood_roof_ocorner_45_v3_large", "elvenwood_roof_ocorner_45_sharp1", "elvenwood_roof_window_45_v3", "elvenwood_roof_ocorner_45_window_double_v3", "elvenwood_roof_top_45_v3", "elvenwood_roof_top_45_peak_v3", "elvenwood_roof_top_45_quarter_v3", "elvenwood_beam_45_tile_v3", "elvenwood_wall_roof_45_v3", "elvenwood_wall_roof_45_upsidedown_v3", "elvenwood_wall_roof_45_double_v3", "elvenwood_wall_top_45_v3", "elvenwood_beam_top2", "elvenwood_beam_side2", "elvenwood_roof", "elvenwood_wall_roof", "elvenwood_beam_26", "elven_woodwall", "elven_woodwall1", "elven_woodwall2", "elven_woodwall3", "elven_woodwall4", "elven_woodwall6", "elven_woodwall7", "elven_woodwall_2x1", "elven_woodwall_1x1", "elven_woodwall_half", "elven_woodwall_half_window", "elven_woodwall_large", "elven_woodwall_large1", "elven_woodwall_large2", "elvenwood_door_curved", "elvenwood_door_curved_double", "elven_woodarch", "elven_woodarch1", "elven_wooddoor", "elven_wooddoor1", "elven_wooddoor_large", "elvenwood_roof_top_orial", "elvenwood_wall_curved", "elvenwood_wall_curved1", "elvenwood_wall_curved2", "elvenwood_wall_curved_large", "elvenwood_wall_curved_large_half", "elvenwood_wall_curved_large_door", "elvenwood_floor2x2", "elvenwood_floor2x2_curved", "elvenwood_floor_1x1", "elvenwood_floor_1x1_curved", "elvenwood_floor_curved_medium", "elvenwood_floor_curved_large", "elvenwood_wall_curved_step", "elvenwood_railing_1", "elvenwood_railing_2", "elvenwood_railing_curved", "elvenwood_railing_curved_medium", "elvenwood_railing_curved_large", "elvenwood_wall_step", "elvenstone_stair", "elvenstone_stair_railing", "elvenstone_stair1", "elvenwood_beam_45_tilegreen", "elvenwood_beam_45_tile_v2green", "elvenwood_beam_45_tile_v3green", "elvenwood_beam_topgreen", "elvenwood_beam_sidegreen", "elvenwood_roof_flatgreen", "elvenwood_roof_top_45green", "elvenwood_roof_top_45_peakgreen", "elvenwood_roof_top_45_quartergreen", "elvenwood_roof_top_45_v2green", "elvenwood_roof_top_45_peak_v2green", "elvenwood_roof_top_45_quarter_v2green", "elvenwood_roof_top_45_v3green", "elvenwood_roof_top_45_peak_v3green", "elvenwood_roof_top_45_quarter_v3green", "elvenwood_roof_45green", "elvenwood_roof_45_halfgreen", "elvenwood_roof_45_v2green", "elvenwood_roof_45_half_v2green", "elvenwood_roof_45_v3green", "elvenwood_roof_45_half_v3green", "elvenwood_roof_icorner_45green", "elvenwood_roof_icorner_45_v2green", "elvenwood_roof_icorner_45_v3green", "elvenwood_roof_ocorner_45green", "elvenwood_roof_ocorner_45_v2green", "elvenwood_roof_ocorner_45_window_v2green", "elvenwood_roof_ocorner_45_v3green", "elvenwood_roof_ocorner_45_sharpgreen", "elvenwood_roof_ocorner_45_sharp1green", "elvenwood_roof_45_largegreen", "elvenwood_roof_45_v2_largegreen", "elvenwood_roof_45_v3_largegreen", "elvenwood_roof_ocorner_45_v2_largegreen", "elvenwood_roof_ocorner_45_largegreen", "elvenwood_roof_ocorner_45_v3_largegreen", "elvenwood_roof_window_45green", "elvenwood_roof_ocorner_45_window_doublegreen", "elvenwood_roof_window_45_v2green", "elvenwood_roof_ocorner_45_window_double_v2", "elvenwood_roof_window_45_v3", "elvenwood_roof_ocorner_45_window_double_v3", "elvenwood_roof_45_tower_curved_v1green", "elvenwood_roof_45_tower_curved_v2green", "elvenwood_roof_45_tower_curved_v2_reversegreen", "elvenwood_roof_45_tower_curved_v1_reversegreen", "elvenwood_roof_45_tower_convex_v1green", "elvenwood_roof_45_tower_convex_v1_reversegreen", "elvenwood_roof_45_tower_convex_v2green", "elvenwood_roof_45_tower_convex_v2_reversegreen", "elvenwood_roof_45_tower_straight_v1green", "elvenwood_roof_45_tower_straight_v2green", "elvenwood_roof_45_tower_straight_v2_reversegreen", "elvenwood_roof_45_tower_straight_v1_reversegreen" }; private void Awake() { assetBundle = GetAssetBundleFromResources("elvenroof"); loadAssets(); harmony.PatchAll(); } private void loadAssets() { string text = "Assets/Custom/BalrondElvenRoof/"; string[] array = prefabnames; foreach (string text2 in array) { GameObject val = assetBundle.LoadAsset<GameObject>(text + text2 + ".prefab"); if ((Object)(object)val == (Object)null) { Debug.LogWarning((object)("BalrondElvenRoof: Could not find file with name: " + text2)); continue; } ShaderReplacment.Replace(val); val.SetActive(true); prefabs.Add(val); } } private void OnDestroy() { harmony.UnpatchSelf(); } private static bool IsObjectDBValid() { return (Object)(object)ObjectDB.instance != (Object)null && ObjectDB.instance.m_items.Count != 0 && ObjectDB.instance.m_recipes.Count != 0 && (Object)(object)ObjectDB.instance.GetItemPrefab("Amber") != (Object)null; } 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 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)"BalrondElvenRoof: Item Not Found"); return null; } public static CraftingStation FindStation(List<GameObject> list, string name) { GameObject val = FindItem(list, name); if ((Object)(object)val != (Object)null) { return val.GetComponent<CraftingStation>(); } return null; } public static void editBuildPiece(List<GameObject> buildPieces, GameObject gameObject) { Piece component = gameObject.GetComponent<Piece>(); component.m_enabled = true; createResourceFor(((Object)gameObject).name, component, buildPieces); } public static Requirement createReq(string name, int amount) { //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_resItem = FindItem(ObjectDB.instance.m_items, name).GetComponent<ItemDrop>(); val.m_amount = amount; val.m_recover = true; val.m_amountPerLevel = amount; return val; } public static void createResourceFor(string prefabName, Piece piece, List<GameObject> buildPieces) { List<Requirement> list = new List<Requirement>(); switch (prefabName) { case "elvenwood_roof_45_tower_curved_v1green": case "elvenwood_roof_45_tower_curved_v2green": case "elvenwood_roof_45_tower_curved_v2_reversegreen": case "elvenwood_roof_45_tower_curved_v1_reversegreen": case "elvenwood_roof_45_tower_convex_v1green": case "elvenwood_roof_45_tower_convex_v1_reversegreen": case "elvenwood_roof_45_tower_convex_v2green": case "elvenwood_roof_45_tower_convex_v2_reversegreen": case "elvenwood_roof_45_tower_straight_v1green": case "elvenwood_roof_45_tower_straight_v2green": case "elvenwood_roof_45_tower_straight_v2_reversegreen": case "elvenwood_roof_45_tower_straight_v1_reversegreen": case "elvenwood_roof_45_tower_curved_v1": case "elvenwood_roof_45_tower_curved_v2": case "elvenwood_roof_45_tower_curved_v2_reverse": case "elvenwood_roof_45_tower_curved_v1_reverse": case "elvenwood_roof_45_tower_convex_v1": case "elvenwood_roof_45_tower_convex_v1_reverse": case "elvenwood_roof_45_tower_convex_v2": case "elvenwood_roof_45_tower_convex_v2_reverse": case "elvenwood_roof_45_tower_straight_v1": case "elvenwood_roof_45_tower_straight_v2": case "elvenwood_roof_45_tower_straight_v2_reverse": case "elvenwood_roof_45_tower_straight_v1_reverse": piece.m_name = prefabName; piece.m_craftingStation = FindStation(buildPieces, "piece_workbench"); list.Clear(); list.Add(createReq("FineWood", 3)); list.Add(createReq("BronzeNails", 3)); list.Add(createReq("Stone", 3)); piece.m_resources = list.ToArray(); break; case "elvenwood_roof_flatgreen": case "elvenwood_roof_top_45green": case "elvenwood_roof_top_45_v2green": case "elvenwood_roof_top_45_v3green": case "elvenwood_roof_45green": case "elvenwood_roof_45_v2green": case "elvenwood_roof_45_v3green": case "elvenwood_roof_icorner_45green": case "elvenwood_roof_icorner_45_v2green": case "elvenwood_roof_icorner_45_v3green": case "elvenwood_roof_ocorner_45green": case "elvenwood_roof_ocorner_45_v2green": case "elvenwood_roof_ocorner_45_v3green": case "elvenwood_roof_ocorner_45_sharpgreen": case "elvenwood_roof_ocorner_45_sharp1green": case "elvenwood_roof_top_orial": case "elvenwood_roof": case "elvenwood_roof_flat1": case "elvenwood_roof_45": case "elvenwood_roof_icorner_45": case "elvenwood_roof_ocorner_45": case "elvenwood_roof_ocorner_45_sharp": case "elvenwood_roof_flat": case "elvenwood_roof_45_v2": case "elvenwood_roof_icorner_45_v2": case "elvenwood_roof_ocorner_45_v2": case "elvenwood_roof_flat2": case "elvenwood_roof_45_v3": case "elvenwood_roof_icorner_45_v3": case "elvenwood_roof_ocorner_45_v3": case "elvenwood_roof_ocorner_45_sharp1": case "elvenwood_roof_top_45": case "elvenwood_roof_top_45_v2": case "elvenwood_roof_top_45_v3": piece.m_name = prefabName; piece.m_craftingStation = FindStation(buildPieces, "piece_workbench"); list.Clear(); list.Add(createReq("FineWood", 2)); list.Add(createReq("BronzeNails", 4)); piece.m_resources = list.ToArray(); break; case "elvenwood_roof_top_45_peakgreen": case "elvenwood_roof_top_45_peak_v2green": case "elvenwood_roof_top_45_peak_v3green": case "elvenwood_roof_top_45_peak": case "elvenwood_roof_top_45_peak_v2": case "elvenwood_roof_top_45_peak_v3": piece.m_name = prefabName; piece.m_craftingStation = FindStation(buildPieces, "piece_workbench"); list.Clear(); list.Add(createReq("FineWood", 3)); list.Add(createReq("BronzeNails", 4)); piece.m_resources = list.ToArray(); break; case "elvenwood_roof_window_45green": case "elvenwood_roof_window_45_v2green": case "elvenwood_roof_ocorner_45_window_v2green": case "elvenwood_roof_window_45_v3green": case "elvenwood_roof_window_45": case "elvenwood_roof_window_45_v2": case "elvenwood_roof_ocorner_45_window_v2": case "elvenwood_roof_window_45_v3": piece.m_name = prefabName; piece.m_craftingStation = FindStation(buildPieces, "piece_workbench"); list.Clear(); list.Add(createReq("FineWood", 3)); list.Add(createReq("BronzeNails", 4)); list.Add(createReq("Crystal", 1)); piece.m_resources = list.ToArray(); break; case "elvenwood_roof_ocorner_45_window_doublegreen": case "elvenwood_roof_ocorner_45_window_double_v2green": case "elvenwood_roof_ocorner_45_window_double_v3green": case "elvenwood_roof_ocorner_45_window_double": case "elvenwood_roof_ocorner_45_window_double_v2": case "elvenwood_roof_ocorner_45_window_double_v3": piece.m_name = prefabName; piece.m_craftingStation = FindStation(buildPieces, "piece_workbench"); list.Clear(); list.Add(createReq("FineWood", 6)); list.Add(createReq("BronzeNails", 8)); list.Add(createReq("Crystal", 1)); piece.m_resources = list.ToArray(); break; case "elvenwood_roof_top_45_quartergreen": case "elvenwood_roof_top_45_quarter_v2green": case "elvenwood_roof_top_45_quarter_v3green": case "elvenwood_roof_45_halfgreen": case "elvenwood_roof_45_half_v2green": case "elvenwood_roof_45_half_v3green": case "elvenwood_roof_top_45_quarter": case "elvenwood_roof_top_45_quarter_v2": case "elvenwood_roof_top_45_quarter_v3": case "elvenwood_roof_45_half": case "elvenwood_roof_45_half_v2": case "elvenwood_roof_45_half_v3": piece.m_name = prefabName; piece.m_craftingStation = FindStation(buildPieces, "piece_workbench"); list.Clear(); list.Add(createReq("FineWood", 1)); list.Add(createReq("BronzeNails", 2)); piece.m_resources = list.ToArray(); break; case "elvenwood_railing_curved": case "elvenwood_beam_26": case "elvenwood_beam_top2": case "elvenwood_beam_side2": case "elvenwood_beam_top": case "elvenwood_beam_side": case "elvenwood_beam_side1": case "elvenwood_beam_top1": case "elvenwood_beam_45_tile": case "elvenwood_beam_45_tile_v2": case "elvenwood_beam_45_tile_v3": case "elvenwood_railing_2": piece.m_name = prefabName; piece.m_craftingStation = FindStation(buildPieces, "piece_workbench"); list.Clear(); list.Add(createReq("FineWood", 2)); piece.m_resources = list.ToArray(); break; case "elvenwood_beam_45_tilegreen": case "elvenwood_beam_45_tile_v2green": case "elvenwood_beam_45_tile_v3green": case "elvenwood_beam_topgreen": case "elvenwood_beam_sidegreen": case "elvenwood_wall_step": case "elvenwood_wall_curved_step": case "elvenwood_beam_45": case "elvenwood_beam_45_v3": case "elvenwood_beam_45_v2": case "elvenwood_railing_1": piece.m_name = prefabName; piece.m_craftingStation = FindStation(buildPieces, "piece_workbench"); list.Clear(); list.Add(createReq("FineWood", 1)); piece.m_resources = list.ToArray(); break; case "elvenwood_wall_roof": case "elvenwood_wall_top_45": case "elvenwood_wall_roof_45": case "elvenwood_wall_roof_45_v2": case "elvenwood_wall_top_45_v2": case "elvenwood_wall_roof_45_v3": case "elvenwood_wall_top_45_v3": case "elvenwood_wall_roof_45_upsidedown": case "elvenwood_wall_roof_45_upsidedown_v2": case "elvenwood_wall_roof_45_upsidedown_v3": piece.m_name = prefabName; piece.m_craftingStation = FindStation(buildPieces, "piece_workbench"); list.Clear(); list.Add(createReq("Stone", 2)); piece.m_resources = list.ToArray(); break; case "elvenwood_wall_roof_45_double": case "elvenwood_wall_roof_45_double_v2": case "elvenwood_wall_roof_45_double_v3": piece.m_name = prefabName; piece.m_craftingStation = FindStation(buildPieces, "piece_workbench"); list.Clear(); list.Add(createReq("Stone", 4)); list.Add(createReq("Crystal", 1)); piece.m_resources = list.ToArray(); break; case "elvenstone_stair": case "elvenwood_wall_curved2": case "elven_woodwall": case "elven_woodwall_2x1": case "elven_woodwall_1x1": piece.m_name = prefabName; piece.m_craftingStation = FindStation(buildPieces, "piece_workbench"); list.Clear(); list.Add(createReq("Stone", 2)); piece.m_resources = list.ToArray(); break; case "elvenwood_wall_curved1": case "elven_woodwall1": case "elven_woodwall2": case "elven_woodwall3": case "elven_woodwall4": case "elven_woodwall6": case "elven_woodwall7": piece.m_name = prefabName; piece.m_craftingStation = FindStation(buildPieces, "piece_workbench"); list.Clear(); list.Add(createReq("Stone", 2)); list.Add(createReq("Crystal", 1)); piece.m_resources = list.ToArray(); break; case "elvenwood_wall_curved": case "elven_woodwall_half": piece.m_name = prefabName; piece.m_craftingStation = FindStation(buildPieces, "piece_stonecutter"); list.Clear(); list.Add(createReq("Stone", 1)); piece.m_resources = list.ToArray(); break; case "elvenwood_wall_curved_large_half": piece.m_name = prefabName; piece.m_craftingStation = FindStation(buildPieces, "piece_stonecutter"); list.Clear(); list.Add(createReq("Stone", 3)); piece.m_resources = list.ToArray(); break; case "elvenwood_wall_curved_large_door": case "elvenwood_wall_curved_large": piece.m_name = prefabName; piece.m_craftingStation = FindStation(buildPieces, "piece_stonecutter"); list.Clear(); list.Add(createReq("Stone", 6)); piece.m_resources = list.ToArray(); break; case "elven_woodwall_half_window": piece.m_name = prefabName; piece.m_craftingStation = FindStation(buildPieces, "piece_stonecutter"); list.Clear(); list.Add(createReq("Stone", 1)); list.Add(createReq("Crystal", 1)); piece.m_resources = list.ToArray(); break; case "elven_woodwall_large": piece.m_name = prefabName; piece.m_craftingStation = FindStation(buildPieces, "piece_stonecutter"); list.Clear(); list.Add(createReq("Stone", 4)); list.Add(createReq("Crystal", 2)); piece.m_resources = list.ToArray(); break; case "elven_woodwall_large1": piece.m_name = prefabName; piece.m_craftingStation = FindStation(buildPieces, "piece_stonecutter"); list.Clear(); list.Add(createReq("Stone", 3)); list.Add(createReq("Crystal", 1)); piece.m_resources = list.ToArray(); break; case "elven_woodwall_large2": piece.m_name = prefabName; piece.m_craftingStation = FindStation(buildPieces, "piece_stonecutter"); list.Clear(); list.Add(createReq("Stone", 8)); list.Add(createReq("Crystal", 4)); piece.m_resources = list.ToArray(); break; case "elvenwood_roof_45_largegreen": case "elvenwood_roof_45_v2_largegreen": case "elvenwood_roof_45_v3_largegreen": case "elvenwood_roof_ocorner_45_v2_largegreen": case "elvenwood_roof_ocorner_45_largegreen": case "elvenwood_roof_ocorner_45_v3_largegreen": case "elvenwood_roof_45_large": case "elvenwood_roof_45_v2_large": case "elvenwood_roof_45_v3_large": case "elvenwood_roof_ocorner_45_large": case "elvenwood_roof_ocorner_45_v2_large": case "elvenwood_roof_ocorner_45_v3_large": piece.m_name = prefabName; piece.m_craftingStation = FindStation(buildPieces, "piece_stonecutter"); list.Clear(); list.Add(createReq("Stone", 4)); list.Add(createReq("FineWood", 10)); piece.m_resources = list.ToArray(); break; case "elven_wooddoor": case "elven_wooddoor1": case "elvenwood_door_curved": piece.m_name = prefabName; piece.m_craftingStation = FindStation(buildPieces, "piece_stonecutter"); list.Clear(); list.Add(createReq("Stone", 4)); list.Add(createReq("FineWood", 2)); piece.m_resources = list.ToArray(); break; case "elvenwood_door_curved_double": case "elven_wooddoor_large": piece.m_name = prefabName; piece.m_craftingStation = FindStation(buildPieces, "piece_stonecutter"); list.Clear(); list.Add(createReq("Stone", 8)); list.Add(createReq("FineWood", 4)); piece.m_resources = list.ToArray(); break; case "elvenstone_stair_railing": case "elvenstone_stair1": piece.m_name = prefabName; piece.m_craftingStation = FindStation(buildPieces, "piece_stonecutter"); list.Clear(); list.Add(createReq("Stone", 10)); list.Add(createReq("FineWood", 4)); piece.m_resources = list.ToArray(); break; case "elven_woodarch": piece.m_name = prefabName; piece.m_craftingStation = FindStation(buildPieces, "piece_stonecutter"); list.Clear(); list.Add(createReq("FineWood", 3)); list.Add(createReq("Stone", 2)); piece.m_resources = list.ToArray(); break; case "elven_woodarch1": piece.m_name = prefabName; piece.m_craftingStation = FindStation(buildPieces, "piece_stonecutter"); list.Clear(); list.Add(createReq("FineWood", 4)); list.Add(createReq("Stone", 2)); list.Add(createReq("BronzeNails", 2)); piece.m_resources = list.ToArray(); break; case "elvenwood_floor_curved_large": piece.m_name = prefabName; piece.m_craftingStation = FindStation(buildPieces, "piece_stonecutter"); list.Clear(); list.Add(createReq("FineWood", 5)); piece.m_resources = list.ToArray(); break; case "elvenwood_railing_curved_large": piece.m_name = prefabName; piece.m_craftingStation = FindStation(buildPieces, "piece_stonecutter"); list.Clear(); list.Add(createReq("FineWood", 3)); piece.m_resources = list.ToArray(); break; case "elvenwood_railing_curved_medium": case "elvenwood_floor2x2": case "elvenwood_floor2x2_curved": piece.m_name = prefabName; piece.m_craftingStation = FindStation(buildPieces, "piece_stonecutter"); list.Clear(); list.Add(createReq("FineWood", 2)); piece.m_resources = list.ToArray(); break; case "elvenwood_floor_1x1": case "elvenwood_floor_1x1_curved": piece.m_name = prefabName; piece.m_craftingStation = FindStation(buildPieces, "piece_workbench"); list.Clear(); list.Add(createReq("FineWood", 1)); piece.m_resources = list.ToArray(); break; } } } public class ShaderReplacment { public static List<GameObject> prefabsToReplaceShader = new List<GameObject>(); public static List<Material> materialsInPrefabs = new List<Material>(); 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 static List<Shader> shaders = new List<Shader>(); private static readonly HashSet<Shader> CachedShaders = new HashSet<Shader>(); public static bool debug = true; public static Shader findShader(string name) { Shader[] array = Resources.FindObjectsOfTypeAll<Shader>(); if (array.Length == 0) { Debug.LogWarning((object)"SHADER LIST IS EMPTY!"); return null; } if (debug) { } return shaders.Find((Shader x) => ((Object)x).name == name); } public static Shader GetShaderByName(string name) { return shaders.Find((Shader x) => ((Object)x).name == name.Trim()); } public static void debugShaderList(List<Shader> shadersRes) { foreach (Shader shadersRe in shadersRes) { Debug.LogWarning((object)("SHADER NAME IS: " + ((Object)shadersRe).name)); } debug = false; } public static void Replace(GameObject gameObject) { prefabsToReplaceShader.Add(gameObject); GetMaterialsInPrefab(gameObject); } public static void GetMaterialsInPrefab(GameObject gameObject) { Renderer[] componentsInChildren = gameObject.GetComponentsInChildren<Renderer>(true); Renderer[] array = componentsInChildren; foreach (Renderer val in array) { Material[] sharedMaterials = val.sharedMaterials; if (sharedMaterials == null || sharedMaterials.Length == 0) { continue; } Material[] array2 = sharedMaterials; foreach (Material val2 in array2) { if ((Object)(object)val2 != (Object)null) { materialsInPrefabs.Add(val2); } } } } public static void getMeShaders() { AssetBundle[] array = Resources.FindObjectsOfTypeAll<AssetBundle>(); AssetBundle[] array2 = array; foreach (AssetBundle val in array2) { IEnumerable<Shader> enumerable3; try { IEnumerable<Shader> enumerable2; if (!val.isStreamedSceneAssetBundle || !Object.op_Implicit((Object)(object)val)) { IEnumerable<Shader> enumerable = val.LoadAllAssets<Shader>(); enumerable2 = enumerable; } else { enumerable2 = from shader in ((IEnumerable<string>)val.GetAllAssetNames()).Select((Func<string, Shader>)val.LoadAsset<Shader>) where (Object)(object)shader != (Object)null select shader; } enumerable3 = enumerable2; } catch (Exception) { continue; } if (enumerable3 == null) { continue; } foreach (Shader item in enumerable3) { CachedShaders.Add(item); } } } public static void runMaterialFix() { getMeShaders(); shaders.AddRange(CachedShaders); foreach (Material materialsInPrefab in materialsInPrefabs) { Shader shader = materialsInPrefab.shader; if (!((Object)(object)shader == (Object)null)) { string name = ((Object)shader).name; if (!(name == "Standard") && name.Contains("Balrond")) { setProperValue(materialsInPrefab, name); } } } } private static void setProperValue(Material material, string shaderName) { string name = shaderName.Replace("Balrond", "Custom"); name = checkNaming(name); Shader shaderByName = GetShaderByName(name); if ((Object)(object)shaderByName == (Object)null) { Debug.LogWarning((object)("Shader not found " + name)); } else { material.shader = shaderByName; } } private static 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; } }