using 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;
}
}