Decompiled source of balrond BannerColorizer v1.0.2

plugins/BalrondBannerColorizer.dll

Decompiled 3 weeks ago
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("ProjectAshlands")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("ProjectAshlands")]
[assembly: AssemblyCopyright("Copyright ©  2023")]
[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 BalrondBannerColorizer;

public class FxReplacment
{
	private List<GameObject> allPrefabs;

	private string projectName = "[BalrondBannerColorizer]";

	public void setInstance(List<GameObject> gameObjects)
	{
		allPrefabs = gameObjects;
	}

	public void ReplaceOnObject(GameObject gameObject)
	{
		if ((Object)(object)gameObject == (Object)null)
		{
			return;
		}
		SpawnArea component = gameObject.GetComponent<SpawnArea>();
		if ((Object)(object)component != (Object)null)
		{
			EffectList spawnEffects = component.m_spawnEffects;
			if (spawnEffects != null)
			{
				findEffectsAndChange(spawnEffects.m_effectPrefabs);
			}
		}
		Destructible component2 = gameObject.GetComponent<Destructible>();
		if ((Object)(object)component2 != (Object)null)
		{
			EffectList hitEffect = component2.m_hitEffect;
			if (hitEffect != null)
			{
				findEffectsAndChange(hitEffect.m_effectPrefabs);
			}
			EffectList destroyedEffect = component2.m_destroyedEffect;
			if (destroyedEffect != null)
			{
				findEffectsAndChange(destroyedEffect.m_effectPrefabs);
			}
		}
		Projectile component3 = gameObject.GetComponent<Projectile>();
		if ((Object)(object)component3 != (Object)null)
		{
			EffectList hitEffects = component3.m_hitEffects;
			if (hitEffects != null)
			{
				findEffectsAndChange(hitEffects.m_effectPrefabs);
			}
			EffectList hitWaterEffects = component3.m_hitWaterEffects;
			if (hitWaterEffects != null)
			{
				findEffectsAndChange(hitWaterEffects.m_effectPrefabs);
			}
			EffectList spawnOnHitEffects = component3.m_spawnOnHitEffects;
			if (spawnOnHitEffects != null)
			{
				findEffectsAndChange(spawnOnHitEffects.m_effectPrefabs);
			}
		}
	}

	public void ReplaceOnVegetation(GameObject gameObject)
	{
		Pickable component = gameObject.GetComponent<Pickable>();
		if ((Object)(object)component != (Object)null)
		{
			fixPlant(component);
		}
		Destructible component2 = gameObject.GetComponent<Destructible>();
		if ((Object)(object)component2 != (Object)null)
		{
			fixPDestructable(component2);
		}
		MineRock5 component3 = gameObject.GetComponent<MineRock5>();
		if ((Object)(object)component3 != (Object)null)
		{
			fixMineRock5(component3);
		}
		MineRock component4 = gameObject.GetComponent<MineRock>();
		if ((Object)(object)component4 != (Object)null)
		{
			fixMineRock(component4);
		}
	}

	private void fixPlant(Pickable pickable)
	{
		EffectList pickEffector = pickable.m_pickEffector;
		if (pickEffector != null)
		{
			findEffectsAndChange(pickEffector.m_effectPrefabs);
		}
	}

	private void fixPDestructable(Destructible minerock5)
	{
		EffectList hitEffect = minerock5.m_hitEffect;
		if (hitEffect != null)
		{
			findEffectsAndChange(hitEffect.m_effectPrefabs);
		}
		EffectList destroyedEffect = minerock5.m_destroyedEffect;
		if (destroyedEffect != null)
		{
			findEffectsAndChange(destroyedEffect.m_effectPrefabs);
		}
	}

	private void fixMineRock5(MineRock5 minerock5)
	{
		EffectList hitEffect = minerock5.m_hitEffect;
		if (hitEffect != null)
		{
			findEffectsAndChange(hitEffect.m_effectPrefabs);
		}
		EffectList destroyedEffect = minerock5.m_destroyedEffect;
		if (destroyedEffect != null)
		{
			findEffectsAndChange(destroyedEffect.m_effectPrefabs);
		}
	}

	private void fixMineRock(MineRock minerock5)
	{
		EffectList hitEffect = minerock5.m_hitEffect;
		if (hitEffect != null)
		{
			findEffectsAndChange(hitEffect.m_effectPrefabs);
		}
		EffectList destroyedEffect = minerock5.m_destroyedEffect;
		if (destroyedEffect != null)
		{
			findEffectsAndChange(destroyedEffect.m_effectPrefabs);
		}
	}

	public void ReplaceOnMonster(GameObject gameObject)
	{
		if ((Object)(object)gameObject == (Object)null)
		{
			Debug.LogWarning((object)(projectName + ":: GameObject not found"));
			return;
		}
		Humanoid component = gameObject.GetComponent<Humanoid>();
		if ((Object)(object)component == (Object)null)
		{
			Debug.LogWarning((object)(projectName + ":: GameObject not found"));
			return;
		}
		EffectList dropEffects = component.m_dropEffects;
		if (dropEffects != null)
		{
			findEffectsAndChange(dropEffects.m_effectPrefabs);
		}
		EffectList backstabHitEffects = ((Character)component).m_backstabHitEffects;
		if (backstabHitEffects != null)
		{
			findEffectsAndChange(backstabHitEffects.m_effectPrefabs);
		}
		EffectList consumeItemEffects = component.m_consumeItemEffects;
		if (consumeItemEffects != null)
		{
			findEffectsAndChange(consumeItemEffects.m_effectPrefabs);
		}
		EffectList critHitEffects = ((Character)component).m_critHitEffects;
		if (critHitEffects != null)
		{
			findEffectsAndChange(critHitEffects.m_effectPrefabs);
		}
		EffectList deathEffects = ((Character)component).m_deathEffects;
		if (deathEffects != null)
		{
			findEffectsAndChange(deathEffects.m_effectPrefabs);
		}
		EffectList hitEffects = ((Character)component).m_hitEffects;
		if (hitEffects != null)
		{
			findEffectsAndChange(hitEffects.m_effectPrefabs);
		}
		EffectList jumpEffects = ((Character)component).m_jumpEffects;
		if (jumpEffects != null)
		{
			findEffectsAndChange(jumpEffects.m_effectPrefabs);
		}
		EffectList perfectBlockEffect = component.m_perfectBlockEffect;
		if (perfectBlockEffect != null)
		{
			findEffectsAndChange(perfectBlockEffect.m_effectPrefabs);
		}
		EffectList pickupEffects = component.m_pickupEffects;
		if (pickupEffects != null)
		{
			findEffectsAndChange(pickupEffects.m_effectPrefabs);
		}
		EffectList slideEffects = ((Character)component).m_slideEffects;
		if (slideEffects != null)
		{
			findEffectsAndChange(slideEffects.m_effectPrefabs);
		}
		EffectList tarEffects = ((Character)component).m_tarEffects;
		if (tarEffects != null)
		{
			findEffectsAndChange(tarEffects.m_effectPrefabs);
		}
		EffectList waterEffects = ((Character)component).m_waterEffects;
		if (waterEffects != null)
		{
			findEffectsAndChange(waterEffects.m_effectPrefabs);
		}
		FootStep component2 = gameObject.GetComponent<FootStep>();
		if (!((Object)(object)component2 != (Object)null))
		{
			return;
		}
		List<StepEffect> effects = component2.m_effects;
		foreach (StepEffect item in effects)
		{
			GameObject[] effectPrefabs = item.m_effectPrefabs;
			List<GameObject> list = new List<GameObject>();
			list.AddRange(effectPrefabs);
			for (int i = 0; i < list.Count; i++)
			{
				if ((Object)(object)list[i] != (Object)null)
				{
					string name = ((Object)list[i]).name;
					GameObject val = allPrefabs.Find((GameObject x) => ((Object)x).name == name);
					if (!((Object)(object)val == (Object)null))
					{
						list[i] = val;
					}
				}
			}
		}
	}

	public void ReplaceOnItem(GameObject gameObject)
	{
		if ((Object)(object)gameObject == (Object)null)
		{
			return;
		}
		ItemDrop component = gameObject.GetComponent<ItemDrop>();
		if (!((Object)(object)component == (Object)null))
		{
			EffectList hitEffect = component.m_itemData.m_shared.m_hitEffect;
			if (hitEffect != null)
			{
				findEffectsAndChange(hitEffect.m_effectPrefabs);
			}
			EffectList hitTerrainEffect = component.m_itemData.m_shared.m_hitTerrainEffect;
			if (hitTerrainEffect != null)
			{
				findEffectsAndChange(hitTerrainEffect.m_effectPrefabs);
			}
			EffectList holdStartEffect = component.m_itemData.m_shared.m_holdStartEffect;
			if (holdStartEffect != null)
			{
				findEffectsAndChange(holdStartEffect.m_effectPrefabs);
			}
			EffectList trailStartEffect = component.m_itemData.m_shared.m_trailStartEffect;
			if (trailStartEffect != null)
			{
				findEffectsAndChange(trailStartEffect.m_effectPrefabs);
			}
			EffectList blockEffect = component.m_itemData.m_shared.m_blockEffect;
			if (blockEffect != null)
			{
				findEffectsAndChange(blockEffect.m_effectPrefabs);
			}
		}
	}

	public void ReplaceFxOnPiece(GameObject gameObject)
	{
		if ((Object)(object)gameObject == (Object)null)
		{
			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)
		{
			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))
				{
					val.m_prefab = val2;
				}
			}
		}
	}
}
public class ShaderReplacment
{
	public static List<GameObject> GOToSwap = new List<GameObject>();

	public static List<Material> GOToSwapMaterial = 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>();

	public static void Replace(GameObject gameObject)
	{
		GOToSwap.Add(gameObject);
	}

	public static void ReplaceMaterial(Material material)
	{
		GOToSwapMaterial.Add(material);
	}

	public static void findShadersByName()
	{
		Shader[] collection = Resources.FindObjectsOfTypeAll<Shader>();
		shaders.AddRange(collection);
	}

	public static void ReplaceShadersInObject(Renderer[] renderers)
	{
		foreach (Renderer val in renderers)
		{
			Material[] sharedMaterials = val.sharedMaterials;
			if (sharedMaterials != null && sharedMaterials.Length != 0)
			{
				fixMaterial(sharedMaterials);
			}
		}
	}

	public static void fixMaterial(Material[] shared)
	{
		foreach (Material val in shared)
		{
			if ((Object)(object)val == (Object)null)
			{
				continue;
			}
			Shader shader = val.shader;
			if (!((Object)(object)shader == (Object)null))
			{
				string name = ((Object)shader).name;
				if (!(name == "Standard") && name.Contains("Balrond"))
				{
					setProperValue(val, name);
				}
			}
		}
	}

	public static void setProperValue(Material material, string shaderName)
	{
		string properName = shaderName.Replace("Balrond", "Custom");
		properName = checkNaming(properName);
		Shader val = shaders.Find((Shader x) => ((Object)x).name == properName);
		if ((Object)(object)val == (Object)null)
		{
			Debug.LogWarning((object)("Shader not found " + properName));
		}
		else
		{
			material.shader = val;
		}
	}

	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;
	}
}
[Serializable]
public class BannerColorizer : MonoBehaviour, Hoverable, Interactable
{
	private ZNetView m_zview;

	private Piece m_piece;

	public List<ColorizerPack> m_packs;

	private string skinName = "";

	public string defaultSkinName = "";

	public static ModResourceLoader modResourceLoader = Launch.modResourceLoader;

	private List<ColorizerPack> colorizerPacks = new List<ColorizerPack>();

	private List<ColorizerPack> colorizerPacksFull = Launch.colorizerPacks;

	private ColorizerPack m_colorizerPack;

	public List<MeshRenderer> banner = new List<MeshRenderer>();

	private List<MeshRenderer> m_destruction = new List<MeshRenderer>();

	private MeshRenderer main;

	private string m_useItemText = "Add dye";

	private void Awake()
	{
		if (!validatePrefab())
		{
			Debug.LogWarning((object)("I should not  be randomized: " + ((Object)((Component)this).gameObject).name));
			return;
		}
		filterPacks();
		if ((Object)(object)modResourceLoader.banner01black == (Object)null)
		{
			Debug.LogWarning((object)"Nothing loaded");
		}
		m_zview = ((Component)this).GetComponent<ZNetView>();
		m_piece = ((Component)this).GetComponent<Piece>();
		if ((Object)(object)m_zview == (Object)null || !m_zview.IsValid() || m_zview.GetZDO() == null)
		{
			Debug.LogWarning((object)(((Object)this).name + " - invalid znet view !"));
			return;
		}
		m_zview.Register<string>("RPC_Paint", (Action<long, string>)RPC_Paint);
		setDefaulDyeName();
		if (!setupColorizer())
		{
			Debug.LogWarning((object)"Unable to setup colorizer");
			return;
		}
		if (m_packs.Count == 0)
		{
			Debug.LogWarning((object)"Material list is empty");
		}
		bool dye = IsColorizerActive();
		setDye(dye);
	}

	public string GetHoverText()
	{
		return Localization.instance.Localize(m_piece.m_name + "\n[<color=yellow><b>1-8</b></color>] " + m_useItemText + "\n[Current dye] " + skinName + ")\n[<color=yellow>Default dye</color>] " + defaultSkinName + ")");
	}

	public string GetHoverName()
	{
		return m_piece.m_name;
	}

	public bool Interact(Humanoid character, bool repeat, bool alt)
	{
		return false;
	}

	public bool UseItem(Humanoid user, ItemData item)
	{
		//IL_0007: Unknown result type (might be due to invalid IL or missing references)
		if (!PrivateArea.CheckAccess(((Component)this).transform.position, 0f, true, false))
		{
			return true;
		}
		ColorizerPack colorPackByItemData = getColorPackByItemData(item);
		if (item != null && colorPackByItemData != null && skinName == colorPackByItemData.skin)
		{
			((Character)user).Message((MessageType)2, "$msg_wrongitem", 0, (Sprite)null);
			return false;
		}
		if (item != null && colorPackByItemData == null)
		{
			((Character)user).Message((MessageType)2, "$msg_wrongitem", 0, (Sprite)null);
			return false;
		}
		((Character)user).Message((MessageType)2, "$msg_added " + item.m_shared.m_name, 0, (Sprite)null);
		user.GetInventory().RemoveItem(item.m_shared.m_name, 1, -1, true);
		Paint(colorPackByItemData.skin);
		return true;
	}

	private void Paint(string dyeName)
	{
		m_zview.InvokeRPC(ZNetView.Everybody, "RPC_Paint", new object[1] { dyeName });
	}

	private void RPC_Paint(long caller, string dyeName)
	{
		setColorizerId(dyeName);
		ColorizerPack colorizerPack = findDyeByName(dyeName);
		useDye(colorizerPack);
	}

	public void filterPacks()
	{
		foreach (ColorizerPack item in colorizerPacksFull)
		{
			if (item != null && editZnetName(((Object)this).name) == item.buildPieceName)
			{
				colorizerPacks.Add(item);
			}
		}
	}

	private void setColorizerId(string id)
	{
		if (m_zview.IsValid())
		{
			m_zview.m_zdo.Set("colorizerSet", id);
			Debug.Log((object)("the color id: " + id));
			m_zview.m_zdo.Set("colorizerIsActive", true);
		}
	}

	private bool IsColorizerActive()
	{
		bool @bool = m_zview.m_zdo.GetBool("colorizerIsActive", false);
		Debug.Log((object)("the colorizer is active: " + @bool));
		return @bool;
	}

	private bool validatePrefab()
	{
		string[] source = new string[16]
		{
			"piece_banner01", "piece_banner02", "piece_banner03", "piece_banner04", "piece_banner05", "piece_banner06", "piece_banner07", "piece_banner08", "piece_banner09", "piece_banner10",
			"piece_banner11", "piece_cloth_hanging_door", "piece_cloth_hanging_door_blue", "piece_cloth_hanging_door_blue2", "jute_carpet", "jute_carpet_blue"
		};
		string name = ((Object)((Component)this).gameObject).name;
		name = editZnetName(name);
		return source.Contains(name);
	}

	private void setDefaulDyeName()
	{
		string name = ((Object)((Component)this).gameObject).name;
		switch (editZnetName(name))
		{
		case "piece_banner01":
			defaultSkinName = "black";
			break;
		case "piece_banner02":
			defaultSkinName = "blue";
			break;
		case "piece_banner03":
			defaultSkinName = "red";
			break;
		case "piece_banner04":
			defaultSkinName = "red";
			break;
		case "piece_banner05":
			defaultSkinName = "green";
			break;
		case "piece_banner06":
			defaultSkinName = "blue";
			break;
		case "piece_banner07":
			defaultSkinName = "blue";
			break;
		case "piece_banner08":
			defaultSkinName = "yellow";
			break;
		case "piece_banner09":
			defaultSkinName = "purple";
			break;
		case "piece_banner10":
			defaultSkinName = "orange";
			break;
		case "piece_banner11":
			defaultSkinName = "white";
			break;
		case "piece_cloth_hanging_door":
			defaultSkinName = "red";
			break;
		case "piece_cloth_hanging_door_blue":
			defaultSkinName = "blue";
			break;
		case "piece_cloth_hanging_door_blue2":
			defaultSkinName = "blue";
			break;
		case "jute_carpet":
			defaultSkinName = "red";
			break;
		case "jute_carpet_blue":
			defaultSkinName = "blue";
			break;
		}
	}

	private string editZnetName(string name)
	{
		name = name.Replace("(Clone)", "");
		int num = name.IndexOf("(");
		if (num >= 0)
		{
			name = name.Substring(0, num);
		}
		return name.Trim();
	}

	private void setDye(bool isColorizerActive)
	{
		string @string = defaultSkinName;
		if (isColorizerActive)
		{
			@string = m_zview.m_zdo.GetString("colorizerSet", "");
		}
		if (@string == "" || @string == null)
		{
			@string = defaultSkinName;
		}
		Paint(@string);
	}

	private ColorizerPack findDyeByName(string name)
	{
		foreach (ColorizerPack colorizerPack in colorizerPacks)
		{
			if (colorizerPack != null && name == colorizerPack.skin && editZnetName(((Object)this).name) == colorizerPack.buildPieceName)
			{
				return colorizerPack;
			}
		}
		return null;
	}

	private ColorizerPack getColorPackByItemData(ItemData itemData)
	{
		foreach (ColorizerPack colorizerPack in colorizerPacks)
		{
			if (colorizerPack != null && ((Object)itemData.m_dropPrefab).name == ((Object)colorizerPack.dyeItem).name)
			{
				return colorizerPack;
			}
		}
		return null;
	}

	private void useDye(ColorizerPack colorizerPack)
	{
		//IL_0020: Unknown result type (might be due to invalid IL or missing references)
		//IL_002a: Expected O, but got Unknown
		//IL_0032: Unknown result type (might be due to invalid IL or missing references)
		//IL_003c: Expected O, but got Unknown
		//IL_0088: Unknown result type (might be due to invalid IL or missing references)
		//IL_0092: Expected O, but got Unknown
		//IL_009f: Unknown result type (might be due to invalid IL or missing references)
		//IL_00a9: Expected O, but got Unknown
		//IL_00cc: Unknown result type (might be due to invalid IL or missing references)
		//IL_00d6: Expected O, but got Unknown
		//IL_00df: Unknown result type (might be due to invalid IL or missing references)
		//IL_00e9: Expected O, but got Unknown
		foreach (MeshRenderer item in banner)
		{
			((Renderer)item).material = new Material(colorizerPack.body);
			((Renderer)item).sharedMaterial = new Material(colorizerPack.body);
			skinName = colorizerPack.skin;
			m_colorizerPack = colorizerPack;
		}
		if ((Object)(object)main != (Object)null)
		{
			((Renderer)main).material = new Material(colorizerPack.rugmain);
			((Renderer)main).sharedMaterial = new Material(colorizerPack.rugmain);
		}
		foreach (MeshRenderer item2 in m_destruction)
		{
			((Renderer)item2).material = new Material(colorizerPack.rugdestruction);
			((Renderer)item2).sharedMaterial = new Material(colorizerPack.rugdestruction);
		}
	}

	private bool setupColorizer()
	{
		string name = ((Object)((Component)this).gameObject).name;
		name = editZnetName(name);
		List<ColorizerPack> packs = colorizerPacks.FindAll((ColorizerPack x) => x.buildPieceName == name);
		m_packs = packs;
		switch (name)
		{
		case "piece_banner01":
		case "piece_banner02":
		case "piece_banner03":
		case "piece_banner04":
		case "piece_banner05":
		case "piece_banner06":
		case "piece_banner07":
		case "piece_banner08":
		case "piece_banner09":
		case "piece_banner10":
		case "piece_banner11":
			banner.Add(((Component)((Component)this).transform.Find("default")).GetComponent<MeshRenderer>());
			break;
		case "piece_cloth_hanging_door":
			banner.Add(((Component)((Component)this).transform.Find("new/cloth")).GetComponent<MeshRenderer>());
			break;
		case "piece_cloth_hanging_door_blue":
		{
			Transform val7 = ((Component)this).transform.Find("new");
			banner.Add(((Component)val7.GetChild(0)).GetComponent<MeshRenderer>());
			banner.Add(((Component)val7.GetChild(1)).GetComponent<MeshRenderer>());
			break;
		}
		case "piece_cloth_hanging_door_blue2":
		{
			Transform val3 = ((Component)this).transform.Find("new");
			banner.Add(((Component)val3.GetChild(1)).GetComponent<MeshRenderer>());
			banner.Add(((Component)val3.GetChild(2)).GetComponent<MeshRenderer>());
			Transform val4 = ((Component)this).transform.Find("worn");
			banner.Add(((Component)val4.GetChild(1)).GetComponent<MeshRenderer>());
			banner.Add(((Component)val4.GetChild(2)).GetComponent<MeshRenderer>());
			Transform val5 = ((Component)this).transform.Find("broken");
			banner.Add(((Component)val5.GetChild(1)).GetComponent<MeshRenderer>());
			banner.Add(((Component)val5.GetChild(2)).GetComponent<MeshRenderer>());
			Transform val6 = ((Component)this).transform.Find("destruction");
			banner.Add(((Component)val6.GetChild(0)).GetComponent<MeshRenderer>());
			break;
		}
		case "jute_carpet":
		{
			main = ((Component)((Component)this).transform.GetChild(1)).GetComponent<MeshRenderer>();
			banner.Add(((Component)((Component)this).transform.GetChild(2)).GetComponent<MeshRenderer>());
			banner.Add(((Component)((Component)this).transform.GetChild(3)).GetComponent<MeshRenderer>());
			Transform val2 = ((Component)this).transform.Find("destruction");
			m_destruction.AddRange(((Component)val2).GetComponentsInChildren<MeshRenderer>());
			break;
		}
		case "jute_carpet_blue":
		{
			main = ((Component)((Component)this).transform.GetChild(1)).GetComponent<MeshRenderer>();
			banner.Add(((Component)((Component)this).transform.GetChild(2)).GetComponent<MeshRenderer>());
			banner.Add(((Component)((Component)this).transform.GetChild(3)).GetComponent<MeshRenderer>());
			Transform val = ((Component)this).transform.Find("destruction");
			m_destruction.AddRange(((Component)val).GetComponentsInChildren<MeshRenderer>());
			break;
		}
		}
		return true;
	}
}
public class ItemSetBuilder
{
	public List<GameObject> prefabs = new List<GameObject>();

	public ModResourceLoader modResourceLoader = null;

	public static List<ColorizerPack> colorizerPacks = new List<ColorizerPack>();

	public static List<ColorizerPack> createColorPacks(ModResourceLoader modResourceLoader)
	{
		buildPack(modResourceLoader.banner01black, modResourceLoader.items.Find((GameObject x) => ((Object)x).name == "DyeBlack"), "piece_banner01", "black");
		buildPack(modResourceLoader.banner01blue, modResourceLoader.items.Find((GameObject x) => ((Object)x).name == "DyeBlue"), "piece_banner01", "blue");
		buildPack(modResourceLoader.banner01green, modResourceLoader.items.Find((GameObject x) => ((Object)x).name == "DyeGreen"), "piece_banner01", "green");
		buildPack(modResourceLoader.banner01orange, modResourceLoader.items.Find((GameObject x) => ((Object)x).name == "DyeOrange"), "piece_banner01", "orange");
		buildPack(modResourceLoader.banner01purple, modResourceLoader.items.Find((GameObject x) => ((Object)x).name == "DyePurple"), "piece_banner01", "purple");
		buildPack(modResourceLoader.banner01red, modResourceLoader.items.Find((GameObject x) => ((Object)x).name == "DyeRed"), "piece_banner01", "red");
		buildPack(modResourceLoader.banner01white, modResourceLoader.items.Find((GameObject x) => ((Object)x).name == "DyeWhite"), "piece_banner01", "white");
		buildPack(modResourceLoader.banner01yellow, modResourceLoader.items.Find((GameObject x) => ((Object)x).name == "DyeYellow"), "piece_banner01", "yellow");
		buildPack(modResourceLoader.banner02black, modResourceLoader.items.Find((GameObject x) => ((Object)x).name == "DyeBlack"), "piece_banner02", "black");
		buildPack(modResourceLoader.banner02blue, modResourceLoader.items.Find((GameObject x) => ((Object)x).name == "DyeBlue"), "piece_banner02", "blue");
		buildPack(modResourceLoader.banner02green, modResourceLoader.items.Find((GameObject x) => ((Object)x).name == "DyeGreen"), "piece_banner02", "green");
		buildPack(modResourceLoader.banner02orange, modResourceLoader.items.Find((GameObject x) => ((Object)x).name == "DyeOrange"), "piece_banner02", "orange");
		buildPack(modResourceLoader.banner02purple, modResourceLoader.items.Find((GameObject x) => ((Object)x).name == "DyePurple"), "piece_banner02", "purple");
		buildPack(modResourceLoader.banner02red, modResourceLoader.items.Find((GameObject x) => ((Object)x).name == "DyeRed"), "piece_banner02", "red");
		buildPack(modResourceLoader.banner02white, modResourceLoader.items.Find((GameObject x) => ((Object)x).name == "DyeWhite"), "piece_banner02", "white");
		buildPack(modResourceLoader.banner02yellow, modResourceLoader.items.Find((GameObject x) => ((Object)x).name == "DyeYellow"), "piece_banner02", "yellow");
		buildPack(modResourceLoader.banner03black, modResourceLoader.items.Find((GameObject x) => ((Object)x).name == "DyeBlack"), "piece_banner03", "black");
		buildPack(modResourceLoader.banner03blue, modResourceLoader.items.Find((GameObject x) => ((Object)x).name == "DyeBlue"), "piece_banner03", "blue");
		buildPack(modResourceLoader.banner03green, modResourceLoader.items.Find((GameObject x) => ((Object)x).name == "DyeGreen"), "piece_banner03", "green");
		buildPack(modResourceLoader.banner03orange, modResourceLoader.items.Find((GameObject x) => ((Object)x).name == "DyeOrange"), "piece_banner03", "orange");
		buildPack(modResourceLoader.banner03purple, modResourceLoader.items.Find((GameObject x) => ((Object)x).name == "DyePurple"), "piece_banner03", "purple");
		buildPack(modResourceLoader.banner03red, modResourceLoader.items.Find((GameObject x) => ((Object)x).name == "DyeRed"), "piece_banner03", "red");
		buildPack(modResourceLoader.banner03white, modResourceLoader.items.Find((GameObject x) => ((Object)x).name == "DyeWhite"), "piece_banner03", "white");
		buildPack(modResourceLoader.banner03yellow, modResourceLoader.items.Find((GameObject x) => ((Object)x).name == "DyeYellow"), "piece_banner03", "yellow");
		buildPack(modResourceLoader.banner04black, modResourceLoader.items.Find((GameObject x) => ((Object)x).name == "DyeBlack"), "piece_banner04", "black");
		buildPack(modResourceLoader.banner04blue, modResourceLoader.items.Find((GameObject x) => ((Object)x).name == "DyeBlue"), "piece_banner04", "blue");
		buildPack(modResourceLoader.banner04green, modResourceLoader.items.Find((GameObject x) => ((Object)x).name == "DyeGreen"), "piece_banner04", "green");
		buildPack(modResourceLoader.banner04orange, modResourceLoader.items.Find((GameObject x) => ((Object)x).name == "DyeOrange"), "piece_banner04", "orange");
		buildPack(modResourceLoader.banner04purple, modResourceLoader.items.Find((GameObject x) => ((Object)x).name == "DyePurple"), "piece_banner04", "purple");
		buildPack(modResourceLoader.banner04red, modResourceLoader.items.Find((GameObject x) => ((Object)x).name == "DyeRed"), "piece_banner04", "red");
		buildPack(modResourceLoader.banner04white, modResourceLoader.items.Find((GameObject x) => ((Object)x).name == "DyeWhite"), "piece_banner04", "white");
		buildPack(modResourceLoader.banner04yellow, modResourceLoader.items.Find((GameObject x) => ((Object)x).name == "DyeYellow"), "piece_banner04", "yellow");
		buildPack(modResourceLoader.banner05black, modResourceLoader.items.Find((GameObject x) => ((Object)x).name == "DyeBlack"), "piece_banner05", "black");
		buildPack(modResourceLoader.banner05blue, modResourceLoader.items.Find((GameObject x) => ((Object)x).name == "DyeBlue"), "piece_banner05", "blue");
		buildPack(modResourceLoader.banner05green, modResourceLoader.items.Find((GameObject x) => ((Object)x).name == "DyeGreen"), "piece_banner05", "green");
		buildPack(modResourceLoader.banner05orange, modResourceLoader.items.Find((GameObject x) => ((Object)x).name == "DyeOrange"), "piece_banner05", "orange");
		buildPack(modResourceLoader.banner05purple, modResourceLoader.items.Find((GameObject x) => ((Object)x).name == "DyePurple"), "piece_banner05", "purple");
		buildPack(modResourceLoader.banner05red, modResourceLoader.items.Find((GameObject x) => ((Object)x).name == "DyeRed"), "piece_banner05", "red");
		buildPack(modResourceLoader.banner05white, modResourceLoader.items.Find((GameObject x) => ((Object)x).name == "DyeWhite"), "piece_banner05", "white");
		buildPack(modResourceLoader.banner05yellow, modResourceLoader.items.Find((GameObject x) => ((Object)x).name == "DyeYellow"), "piece_banner05", "yellow");
		buildPack(modResourceLoader.banner06black, modResourceLoader.items.Find((GameObject x) => ((Object)x).name == "DyeBlack"), "piece_banner06", "black");
		buildPack(modResourceLoader.banner06blue, modResourceLoader.items.Find((GameObject x) => ((Object)x).name == "DyeBlue"), "piece_banner06", "blue");
		buildPack(modResourceLoader.banner06green, modResourceLoader.items.Find((GameObject x) => ((Object)x).name == "DyeGreen"), "piece_banner06", "green");
		buildPack(modResourceLoader.banner06orange, modResourceLoader.items.Find((GameObject x) => ((Object)x).name == "DyeOrange"), "piece_banner06", "orange");
		buildPack(modResourceLoader.banner06purple, modResourceLoader.items.Find((GameObject x) => ((Object)x).name == "DyePurple"), "piece_banner06", "purple");
		buildPack(modResourceLoader.banner06red, modResourceLoader.items.Find((GameObject x) => ((Object)x).name == "DyeRed"), "piece_banner06", "red");
		buildPack(modResourceLoader.banner06white, modResourceLoader.items.Find((GameObject x) => ((Object)x).name == "DyeWhite"), "piece_banner06", "white");
		buildPack(modResourceLoader.banner06yellow, modResourceLoader.items.Find((GameObject x) => ((Object)x).name == "DyeYellow"), "piece_banner06", "yellow");
		buildPack(modResourceLoader.banner07black, modResourceLoader.items.Find((GameObject x) => ((Object)x).name == "DyeBlack"), "piece_banner07", "black");
		buildPack(modResourceLoader.banner07blue, modResourceLoader.items.Find((GameObject x) => ((Object)x).name == "DyeBlue"), "piece_banner07", "blue");
		buildPack(modResourceLoader.banner07green, modResourceLoader.items.Find((GameObject x) => ((Object)x).name == "DyeGreen"), "piece_banner07", "green");
		buildPack(modResourceLoader.banner07orange, modResourceLoader.items.Find((GameObject x) => ((Object)x).name == "DyeOrange"), "piece_banner07", "orange");
		buildPack(modResourceLoader.banner07purple, modResourceLoader.items.Find((GameObject x) => ((Object)x).name == "DyePurple"), "piece_banner07", "purple");
		buildPack(modResourceLoader.banner07red, modResourceLoader.items.Find((GameObject x) => ((Object)x).name == "DyeRed"), "piece_banner07", "red");
		buildPack(modResourceLoader.banner07white, modResourceLoader.items.Find((GameObject x) => ((Object)x).name == "DyeWhite"), "piece_banner07", "white");
		buildPack(modResourceLoader.banner07yellow, modResourceLoader.items.Find((GameObject x) => ((Object)x).name == "DyeYellow"), "piece_banner07", "yellow");
		buildPack(modResourceLoader.banner08black, modResourceLoader.items.Find((GameObject x) => ((Object)x).name == "DyeBlack"), "piece_banner08", "black");
		buildPack(modResourceLoader.banner08blue, modResourceLoader.items.Find((GameObject x) => ((Object)x).name == "DyeBlue"), "piece_banner08", "blue");
		buildPack(modResourceLoader.banner08green, modResourceLoader.items.Find((GameObject x) => ((Object)x).name == "DyeGreen"), "piece_banner08", "green");
		buildPack(modResourceLoader.banner08orange, modResourceLoader.items.Find((GameObject x) => ((Object)x).name == "DyeOrange"), "piece_banner08", "orange");
		buildPack(modResourceLoader.banner08purple, modResourceLoader.items.Find((GameObject x) => ((Object)x).name == "DyePurple"), "piece_banner08", "purple");
		buildPack(modResourceLoader.banner08red, modResourceLoader.items.Find((GameObject x) => ((Object)x).name == "DyeRed"), "piece_banner08", "red");
		buildPack(modResourceLoader.banner08white, modResourceLoader.items.Find((GameObject x) => ((Object)x).name == "DyeWhite"), "piece_banner08", "white");
		buildPack(modResourceLoader.banner08yellow, modResourceLoader.items.Find((GameObject x) => ((Object)x).name == "DyeYellow"), "piece_banner08", "yellow");
		buildPack(modResourceLoader.banner09black, modResourceLoader.items.Find((GameObject x) => ((Object)x).name == "DyeBlack"), "piece_banner09", "black");
		buildPack(modResourceLoader.banner09blue, modResourceLoader.items.Find((GameObject x) => ((Object)x).name == "DyeBlue"), "piece_banner09", "blue");
		buildPack(modResourceLoader.banner09green, modResourceLoader.items.Find((GameObject x) => ((Object)x).name == "DyeGreen"), "piece_banner09", "green");
		buildPack(modResourceLoader.banner09orange, modResourceLoader.items.Find((GameObject x) => ((Object)x).name == "DyeOrange"), "piece_banner09", "orange");
		buildPack(modResourceLoader.banner09purple, modResourceLoader.items.Find((GameObject x) => ((Object)x).name == "DyePurple"), "piece_banner09", "purple");
		buildPack(modResourceLoader.banner09red, modResourceLoader.items.Find((GameObject x) => ((Object)x).name == "DyeRed"), "piece_banner09", "red");
		buildPack(modResourceLoader.banner09white, modResourceLoader.items.Find((GameObject x) => ((Object)x).name == "DyeWhite"), "piece_banner09", "white");
		buildPack(modResourceLoader.banner09yellow, modResourceLoader.items.Find((GameObject x) => ((Object)x).name == "DyeYellow"), "piece_banner09", "yellow");
		buildPack(modResourceLoader.banner10black, modResourceLoader.items.Find((GameObject x) => ((Object)x).name == "DyeBlack"), "piece_banner10", "black");
		buildPack(modResourceLoader.banner10blue, modResourceLoader.items.Find((GameObject x) => ((Object)x).name == "DyeBlue"), "piece_banner10", "blue");
		buildPack(modResourceLoader.banner10green, modResourceLoader.items.Find((GameObject x) => ((Object)x).name == "DyeGreen"), "piece_banner10", "green");
		buildPack(modResourceLoader.banner10orange, modResourceLoader.items.Find((GameObject x) => ((Object)x).name == "DyeOrange"), "piece_banner10", "orange");
		buildPack(modResourceLoader.banner10purple, modResourceLoader.items.Find((GameObject x) => ((Object)x).name == "DyePurple"), "piece_banner10", "purple");
		buildPack(modResourceLoader.banner10red, modResourceLoader.items.Find((GameObject x) => ((Object)x).name == "DyeRed"), "piece_banner10", "red");
		buildPack(modResourceLoader.banner10white, modResourceLoader.items.Find((GameObject x) => ((Object)x).name == "DyeWhite"), "piece_banner10", "white");
		buildPack(modResourceLoader.banner10yellow, modResourceLoader.items.Find((GameObject x) => ((Object)x).name == "DyeYellow"), "piece_banner10", "yellow");
		buildPack(modResourceLoader.banner11black, modResourceLoader.items.Find((GameObject x) => ((Object)x).name == "DyeBlack"), "piece_banner11", "black");
		buildPack(modResourceLoader.banner11blue, modResourceLoader.items.Find((GameObject x) => ((Object)x).name == "DyeBlue"), "piece_banner11", "blue");
		buildPack(modResourceLoader.banner11green, modResourceLoader.items.Find((GameObject x) => ((Object)x).name == "DyeGreen"), "piece_banner11", "green");
		buildPack(modResourceLoader.banner11orange, modResourceLoader.items.Find((GameObject x) => ((Object)x).name == "DyeOrange"), "piece_banner11", "orange");
		buildPack(modResourceLoader.banner11purple, modResourceLoader.items.Find((GameObject x) => ((Object)x).name == "DyePurple"), "piece_banner11", "purple");
		buildPack(modResourceLoader.banner11red, modResourceLoader.items.Find((GameObject x) => ((Object)x).name == "DyeRed"), "piece_banner11", "red");
		buildPack(modResourceLoader.banner11white, modResourceLoader.items.Find((GameObject x) => ((Object)x).name == "DyeWhite"), "piece_banner11", "white");
		buildPack(modResourceLoader.banner11yellow, modResourceLoader.items.Find((GameObject x) => ((Object)x).name == "DyeYellow"), "piece_banner11", "yellow");
		buildPack(modResourceLoader.bannerHangingblack, modResourceLoader.items.Find((GameObject x) => ((Object)x).name == "DyeBlack"), "piece_cloth_hanging_door", "black");
		buildPack(modResourceLoader.bannerHangingblue, modResourceLoader.items.Find((GameObject x) => ((Object)x).name == "DyeBlue"), "piece_cloth_hanging_door", "blue");
		buildPack(modResourceLoader.bannerHanginggreen, modResourceLoader.items.Find((GameObject x) => ((Object)x).name == "DyeGreen"), "piece_cloth_hanging_door", "green");
		buildPack(modResourceLoader.bannerHangingorange, modResourceLoader.items.Find((GameObject x) => ((Object)x).name == "DyeOrange"), "piece_cloth_hanging_door", "orange");
		buildPack(modResourceLoader.bannerHangingpurple, modResourceLoader.items.Find((GameObject x) => ((Object)x).name == "DyePurple"), "piece_cloth_hanging_door", "purple");
		buildPack(modResourceLoader.bannerHangingred, modResourceLoader.items.Find((GameObject x) => ((Object)x).name == "DyeRed"), "piece_cloth_hanging_door", "red");
		buildPack(modResourceLoader.bannerHangingwhite, modResourceLoader.items.Find((GameObject x) => ((Object)x).name == "DyeWhite"), "piece_cloth_hanging_door", "white");
		buildPack(modResourceLoader.bannerHangingyellow, modResourceLoader.items.Find((GameObject x) => ((Object)x).name == "DyeYellow"), "piece_cloth_hanging_door", "yellow");
		buildPack(modResourceLoader.bannerHanging2black, modResourceLoader.items.Find((GameObject x) => ((Object)x).name == "DyeBlack"), "piece_cloth_hanging_door_blue", "black");
		buildPack(modResourceLoader.bannerHanging2blue, modResourceLoader.items.Find((GameObject x) => ((Object)x).name == "DyeBlue"), "piece_cloth_hanging_door_blue", "blue");
		buildPack(modResourceLoader.bannerHanging2green, modResourceLoader.items.Find((GameObject x) => ((Object)x).name == "DyeGreen"), "piece_cloth_hanging_door_blue", "green");
		buildPack(modResourceLoader.bannerHanging2orange, modResourceLoader.items.Find((GameObject x) => ((Object)x).name == "DyeOrange"), "piece_cloth_hanging_door_blue", "orange");
		buildPack(modResourceLoader.bannerHanging2purple, modResourceLoader.items.Find((GameObject x) => ((Object)x).name == "DyePurple"), "piece_cloth_hanging_door_blue", "purple");
		buildPack(modResourceLoader.bannerHanging2red, modResourceLoader.items.Find((GameObject x) => ((Object)x).name == "DyeRed"), "piece_cloth_hanging_door_blue", "red");
		buildPack(modResourceLoader.bannerHanging2white, modResourceLoader.items.Find((GameObject x) => ((Object)x).name == "DyeWhite"), "piece_cloth_hanging_door_blue", "white");
		buildPack(modResourceLoader.bannerHanging2yellow, modResourceLoader.items.Find((GameObject x) => ((Object)x).name == "DyeYellow"), "piece_cloth_hanging_door_blue", "yellow");
		buildPack(modResourceLoader.bannerHanging3black, modResourceLoader.items.Find((GameObject x) => ((Object)x).name == "DyeBlack"), "piece_cloth_hanging_door_blue2", "black");
		buildPack(modResourceLoader.bannerHanging3blue, modResourceLoader.items.Find((GameObject x) => ((Object)x).name == "DyeBlue"), "piece_cloth_hanging_door_blue2", "blue");
		buildPack(modResourceLoader.bannerHanging3green, modResourceLoader.items.Find((GameObject x) => ((Object)x).name == "DyeGreen"), "piece_cloth_hanging_door_blue2", "green");
		buildPack(modResourceLoader.bannerHanging3orange, modResourceLoader.items.Find((GameObject x) => ((Object)x).name == "DyeOrange"), "piece_cloth_hanging_door_blue2", "orange");
		buildPack(modResourceLoader.bannerHanging3purple, modResourceLoader.items.Find((GameObject x) => ((Object)x).name == "DyePurple"), "piece_cloth_hanging_door_blue2", "purple");
		buildPack(modResourceLoader.bannerHanging3red, modResourceLoader.items.Find((GameObject x) => ((Object)x).name == "DyeRed"), "piece_cloth_hanging_door_blue2", "red");
		buildPack(modResourceLoader.bannerHanging3white, modResourceLoader.items.Find((GameObject x) => ((Object)x).name == "DyeWhite"), "piece_cloth_hanging_door_blue2", "white");
		buildPack(modResourceLoader.bannerHanging3yellow, modResourceLoader.items.Find((GameObject x) => ((Object)x).name == "DyeYellow"), "piece_cloth_hanging_door_blue2", "yellow");
		buildPack(modResourceLoader.juteCarpetblack, modResourceLoader.items.Find((GameObject x) => ((Object)x).name == "DyeBlack"), "jute_carpet", "black", modResourceLoader.juteCarpetMainblack, modResourceLoader.juteCarpetDestructionblack);
		buildPack(modResourceLoader.juteCarpetblue, modResourceLoader.items.Find((GameObject x) => ((Object)x).name == "DyeBlue"), "jute_carpet", "blue", modResourceLoader.juteCarpetMainblue, modResourceLoader.juteCarpetDestructionblue);
		buildPack(modResourceLoader.juteCarpetgreen, modResourceLoader.items.Find((GameObject x) => ((Object)x).name == "DyeGreen"), "jute_carpet", "green", modResourceLoader.juteCarpetMaingreen, modResourceLoader.juteCarpetDestructiongreen);
		buildPack(modResourceLoader.juteCarpetorange, modResourceLoader.items.Find((GameObject x) => ((Object)x).name == "DyeOrange"), "jute_carpet", "orange", modResourceLoader.juteCarpetMainorange, modResourceLoader.juteCarpetDestructionorange);
		buildPack(modResourceLoader.juteCarpetpurple, modResourceLoader.items.Find((GameObject x) => ((Object)x).name == "DyePurple"), "jute_carpet", "purple", modResourceLoader.juteCarpetMainpurple, modResourceLoader.juteCarpetDestructionpurple);
		buildPack(modResourceLoader.juteCarpetred, modResourceLoader.items.Find((GameObject x) => ((Object)x).name == "DyeRed"), "jute_carpet", "red", modResourceLoader.juteCarpetMainred, modResourceLoader.juteCarpetDestructionred);
		buildPack(modResourceLoader.juteCarpetwhite, modResourceLoader.items.Find((GameObject x) => ((Object)x).name == "DyeWhite"), "jute_carpet", "white", modResourceLoader.juteCarpetMainwhite, modResourceLoader.juteCarpetDestructionwhite);
		buildPack(modResourceLoader.juteCarpetyellow, modResourceLoader.items.Find((GameObject x) => ((Object)x).name == "DyeYellow"), "jute_carpet", "yellow", modResourceLoader.juteCarpetMainyellow, modResourceLoader.juteCarpetDestructionyellow);
		buildPack(modResourceLoader.juteCarpet2black, modResourceLoader.items.Find((GameObject x) => ((Object)x).name == "DyeBlack"), "jute_carpet_blue", "black", modResourceLoader.juteCarpetMain2black, modResourceLoader.juteCarpetDestruction2black);
		buildPack(modResourceLoader.juteCarpet2blue, modResourceLoader.items.Find((GameObject x) => ((Object)x).name == "DyeBlue"), "jute_carpet_blue", "blue", modResourceLoader.juteCarpetMain2blue, modResourceLoader.juteCarpetDestruction2blue);
		buildPack(modResourceLoader.juteCarpet2green, modResourceLoader.items.Find((GameObject x) => ((Object)x).name == "DyeGreen"), "jute_carpet_blue", "green", modResourceLoader.juteCarpetMain2green, modResourceLoader.juteCarpetDestruction2green);
		buildPack(modResourceLoader.juteCarpet2orange, modResourceLoader.items.Find((GameObject x) => ((Object)x).name == "DyeOrange"), "jute_carpet_blue", "orange", modResourceLoader.juteCarpetMain2orange, modResourceLoader.juteCarpetDestruction2orange);
		buildPack(modResourceLoader.juteCarpet2purple, modResourceLoader.items.Find((GameObject x) => ((Object)x).name == "DyePurple"), "jute_carpet_blue", "purple", modResourceLoader.juteCarpetMain2purple, modResourceLoader.juteCarpetDestruction2purple);
		buildPack(modResourceLoader.juteCarpet2red, modResourceLoader.items.Find((GameObject x) => ((Object)x).name == "DyeRed"), "jute_carpet_blue", "red", modResourceLoader.juteCarpetMain2red, modResourceLoader.juteCarpetDestruction2red);
		buildPack(modResourceLoader.juteCarpet2white, modResourceLoader.items.Find((GameObject x) => ((Object)x).name == "DyeWhite"), "jute_carpet_blue", "white", modResourceLoader.juteCarpetMain2white, modResourceLoader.juteCarpetDestruction2white);
		buildPack(modResourceLoader.juteCarpet2yellow, modResourceLoader.items.Find((GameObject x) => ((Object)x).name == "DyeYellow"), "jute_carpet_blue", "yellow", modResourceLoader.juteCarpetMain2yellow, modResourceLoader.juteCarpetDestruction2yellow);
		return colorizerPacks;
	}

	private static void buildPack(Material body, GameObject dyeItem, string name, string skin, Material rug = null, Material rugdestruction = null)
	{
		colorizerPacks.Add(new ColorizerPack(body, name, dyeItem, skin, rug, rugdestruction));
	}

	public void setupColorizer(GameObject piece)
	{
		BannerColorizer bannerColorizer = piece.AddComponent<BannerColorizer>();
		bannerColorizer.filterPacks();
	}
}
[Serializable]
public class ColorizerPack
{
	public Material body;

	public string buildPieceName;

	public GameObject dyeItem;

	public string skin;

	public Material rugmain;

	public Material rugdestruction;

	public ColorizerPack(Material body, string buildPieceName, GameObject dyeItem, string skin, Material rugmain = null, Material rugdestruction = null)
	{
		this.buildPieceName = buildPieceName;
		this.body = body;
		this.skin = skin;
		this.dyeItem = dyeItem;
		this.rugmain = rugmain;
		this.rugdestruction = rugdestruction;
	}
}
public class BuildPieceTargeting
{
	private static string[] names = new string[0];

	public void changePieceTargeting(List<GameObject> gameObjects)
	{
		List<GameObject> list = gameObjects.FindAll((GameObject x) => (Object)(object)x.GetComponent<WearNTear>() != (Object)null);
		foreach (GameObject item in list)
		{
			Piece component = item.GetComponent<Piece>();
			if ((Object)(object)component != (Object)null && names.Contains(((Object)item).name))
			{
				((StaticTarget)component).m_primaryTarget = true;
			}
			if ((Object)(object)component != (Object)null && shouldBePrimaryTarget(item))
			{
				((StaticTarget)component).m_primaryTarget = true;
			}
			setResistances(item);
		}
	}

	private bool shouldBePrimaryTarget(GameObject gameObject)
	{
		if ((Object)(object)gameObject.GetComponent<Door>() != (Object)null)
		{
			return true;
		}
		if ((Object)(object)gameObject.GetComponent<CraftingStation>() != (Object)null)
		{
			return true;
		}
		if ((Object)(object)gameObject.GetComponent<StationExtension>() != (Object)null)
		{
			return true;
		}
		if ((Object)(object)gameObject.GetComponent<Container>() != (Object)null)
		{
			return false;
		}
		return false;
	}

	private void setResistances(GameObject gameObject)
	{
		//IL_001c: Unknown result type (might be due to invalid IL or missing references)
		//IL_0021: Unknown result type (might be due to invalid IL or missing references)
		//IL_002e: Unknown result type (might be due to invalid IL or missing references)
		//IL_0033: Unknown result type (might be due to invalid IL or missing references)
		//IL_0040: Unknown result type (might be due to invalid IL or missing references)
		//IL_0045: Unknown result type (might be due to invalid IL or missing references)
		WearNTear component = gameObject.GetComponent<WearNTear>();
		if ((Object)(object)component != (Object)null)
		{
			component.m_damages.m_chop = setChopDamageResistance(component);
			component.m_damages.m_pickaxe = setPickaxeDamageResistance(component);
			component.m_damages.m_fire = setFireDamageResistance(component);
		}
	}

	private DamageModifier setChopDamageResistance(WearNTear wearNTear)
	{
		//IL_0002: Unknown result type (might be due to invalid IL or missing references)
		//IL_0007: Unknown result type (might be due to invalid IL or missing references)
		//IL_0008: Unknown result type (might be due to invalid IL or missing references)
		//IL_0009: Unknown result type (might be due to invalid IL or missing references)
		//IL_000a: Unknown result type (might be due to invalid IL or missing references)
		//IL_0020: Expected I4, but got Unknown
		//IL_0023: Unknown result type (might be due to invalid IL or missing references)
		//IL_002f: Unknown result type (might be due to invalid IL or missing references)
		//IL_002b: 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_0036: Unknown result type (might be due to invalid IL or missing references)
		//IL_0033: Unknown result type (might be due to invalid IL or missing references)
		MaterialType materialType = wearNTear.m_materialType;
		MaterialType val = materialType;
		return (DamageModifier)((int)val switch
		{
			0 => 6, 
			3 => 2, 
			2 => 5, 
			1 => 1, 
			_ => 0, 
		});
	}

	private DamageModifier setPickaxeDamageResistance(WearNTear wearNTear)
	{
		//IL_0002: Unknown result type (might be due to invalid IL or missing references)
		//IL_0007: Unknown result type (might be due to invalid IL or missing references)
		//IL_0008: Unknown result type (might be due to invalid IL or missing references)
		//IL_0009: Unknown result type (might be due to invalid IL or missing references)
		//IL_000a: Unknown result type (might be due to invalid IL or missing references)
		//IL_0020: Expected I4, but got Unknown
		//IL_0023: Unknown result type (might be due to invalid IL or missing references)
		//IL_002f: Unknown result type (might be due to invalid IL or missing references)
		//IL_002b: 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_0036: Unknown result type (might be due to invalid IL or missing references)
		//IL_0033: Unknown result type (might be due to invalid IL or missing references)
		MaterialType materialType = wearNTear.m_materialType;
		MaterialType val = materialType;
		return (DamageModifier)((int)val switch
		{
			0 => 0, 
			3 => 1, 
			2 => 2, 
			1 => 6, 
			_ => 0, 
		});
	}

	private DamageModifier setFireDamageResistance(WearNTear wearNTear)
	{
		//IL_0002: Unknown result type (might be due to invalid IL or missing references)
		//IL_0007: Unknown result type (might be due to invalid IL or missing references)
		//IL_0008: Unknown result type (might be due to invalid IL or missing references)
		//IL_0009: Unknown result type (might be due to invalid IL or missing references)
		//IL_000a: Unknown result type (might be due to invalid IL or missing references)
		//IL_0020: Expected I4, but got Unknown
		//IL_0023: Unknown result type (might be due to invalid IL or missing references)
		//IL_002f: Unknown result type (might be due to invalid IL or missing references)
		//IL_002b: 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_0036: Unknown result type (might be due to invalid IL or missing references)
		//IL_0033: Unknown result type (might be due to invalid IL or missing references)
		MaterialType materialType = wearNTear.m_materialType;
		MaterialType val = materialType;
		return (DamageModifier)((int)val switch
		{
			0 => 6, 
			3 => 2, 
			2 => 0, 
			1 => 5, 
			_ => 0, 
		});
	}
}
public class DatabaseAddMethods
{
	public void AddItems(List<GameObject> items)
	{
		foreach (GameObject item in items)
		{
			AddItem(item);
		}
	}

	public void AddRecipes(List<Recipe> recipes)
	{
		foreach (Recipe recipe in recipes)
		{
			AddRecipe(recipe);
		}
	}

	public void AddStatuseffects(List<StatusEffect> statusEffects)
	{
		foreach (StatusEffect statusEffect in statusEffects)
		{
			AddStatus(statusEffect);
		}
	}

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

	private void AddStatus(StatusEffect status)
	{
		if (!IsObjectDBValid())
		{
			return;
		}
		if ((Object)(object)status != (Object)null)
		{
			if ((Object)(object)ObjectDB.instance.GetStatusEffect(((object)status).GetHashCode()) == (Object)null)
			{
				ObjectDB.instance.m_StatusEffects.Add(status);
			}
		}
		else
		{
			Debug.LogError((object)("BalrondBannerColorizer:  " + ((Object)status).name + " - Status not found"));
		}
	}

	private void AddRecipe(Recipe recipe)
	{
		if (!IsObjectDBValid())
		{
			return;
		}
		if ((Object)(object)recipe != (Object)null)
		{
			if ((Object)(object)ObjectDB.instance.GetRecipe(recipe.m_item.m_itemData) == (Object)null)
			{
				ObjectDB.instance.m_recipes.Add(recipe);
			}
		}
		else
		{
			Debug.LogError((object)("BalrondBannerColorizer:  " + ((Object)recipe).name + " - Recipe not found"));
		}
	}

	private void AddItem(GameObject newPrefab)
	{
		if (!IsObjectDBValid())
		{
			return;
		}
		ItemDrop component = newPrefab.GetComponent<ItemDrop>();
		if ((Object)(object)component != (Object)null)
		{
			if ((Object)(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[((Object)newPrefab).name.GetHashCode()] = newPrefab;
			}
		}
		else
		{
			Debug.LogError((object)("BalrondBannerColorizer:  " + ((Object)newPrefab).name + " - ItemDrop not found on prefab"));
		}
	}
}
[BepInPlugin("balrond.astafaraios.BalrondBannerColorizer", "BalrondBannerColorizer", "1.0.2")]
public class Launch : BaseUnityPlugin
{
	[HarmonyPriority(700)]
	[HarmonyPatch(typeof(FejdStartup), "Awake")]
	private static class Replace_ShaderPatch
	{
		public static void Postfix()
		{
			//IL_0001: Unknown result type (might be due to invalid IL or missing references)
			if (!new ZNet().IsDedicated())
			{
				ShaderReplacment.findShadersByName();
				ShaderReplacment.fixMaterial(ShaderReplacment.GOToSwapMaterial.ToArray());
			}
		}
	}

	[HarmonyPatch(typeof(ObjectDB), "CopyOtherDB")]
	public static class Object_CopyOtherDB_Path
	{
		public static void Postfix()
		{
			if (IsObjectDBValid())
			{
				databaseAddMethods.AddItems(modResourceLoader.items);
				List<Recipe> recipes = createRecipesForDye(ObjectDB.instance.m_items);
				databaseAddMethods.AddRecipes(recipes);
			}
		}
	}

	[HarmonyPatch(typeof(ObjectDB), "Awake")]
	public static class ObjectDB_Awake_Path
	{
		public static void Postfix()
		{
			if (IsObjectDBValid())
			{
				databaseAddMethods.AddItems(modResourceLoader.items);
				List<Recipe> recipes = createRecipesForDye(ObjectDB.instance.m_items);
				databaseAddMethods.AddRecipes(recipes);
			}
		}
	}

	[HarmonyPatch(typeof(ZNetScene), "Awake")]
	public static class ZNetScene_Awake_Path
	{
		public static bool hasSpawned;

		public static void Prefix(ZNetScene __instance)
		{
			if ((Object)(object)__instance == (Object)null)
			{
				Debug.LogWarning((object)"BalrondBannerColorizer: No ZnetScene found");
			}
			else
			{
				if (hasSpawned)
				{
					return;
				}
				Piece component = modResourceLoader.dyeTable.GetComponent<Piece>();
				List<Requirement> list = new List<Requirement>();
				list.Add(createReq("Wood", 5, 0, __instance.m_prefabs));
				list.Add(createReq("Resin", 5, 0, __instance.m_prefabs));
				component.m_resources = list.ToArray();
				setupRavenGuide(modResourceLoader.dyeTable, __instance.m_prefabs);
				__instance.m_prefabs.AddRange(modResourceLoader.items);
				__instance.m_prefabs.Add(modResourceLoader.dyeTable);
				GameObject val = __instance.m_prefabs.Find((GameObject x) => ((Object)x).name == "Hammer");
				GameObject val2 = val.GetComponent<ItemDrop>().m_itemData.m_shared.m_buildPieces.m_pieces.Find((GameObject x) => ((Object)x).name == ((Object)modResourceLoader.dyeTable).name);
				if ((Object)(object)val2 == (Object)null)
				{
					val.GetComponent<ItemDrop>().m_itemData.m_shared.m_buildPieces.m_pieces.Add(modResourceLoader.dyeTable);
				}
				colorizerPacks = ItemSetBuilder.createColorPacks(modResourceLoader);
				string[] buildPieceNames = Launch.buildPieceNames;
				foreach (string name in buildPieceNames)
				{
					GameObject val3 = __instance.m_prefabs.Find((GameObject x) => ((Object)x).name == name);
					if ((Object)(object)val3 != (Object)null)
					{
						itemSetBuilder.setupColorizer(val3);
					}
				}
				hasSpawned = true;
			}
		}
	}

	private readonly Harmony harmony = new Harmony("balrond.astafaraios.BalrondBannerColorizer");

	public const string PluginGUID = "balrond.astafaraios.BalrondBannerColorizer";

	public const string PluginName = "BalrondBannerColorizer";

	public const string PluginVersion = "1.0.2";

	public static ModResourceLoader modResourceLoader = new ModResourceLoader();

	public static ItemEdits itemEdits = new ItemEdits();

	public static DatabaseAddMethods databaseAddMethods = new DatabaseAddMethods();

	public static ItemSetBuilder itemSetBuilder = new ItemSetBuilder();

	public static GameObject RootObject;

	public static GameObject PrefabContainer;

	public static List<ColorizerPack> colorizerPacks = new List<ColorizerPack>();

	public static string[] buildPieceNames = new string[16]
	{
		"piece_banner01", "piece_banner02", "piece_banner03", "piece_banner04", "piece_banner05", "piece_banner06", "piece_banner07", "piece_banner08", "piece_banner09", "piece_banner10",
		"piece_banner11", "piece_cloth_hanging_door", "piece_cloth_hanging_door_blue", "piece_cloth_hanging_door_blue2", "jute_carpet", "jute_carpet_blue"
	};

	private void Awake()
	{
		createPrefabContainer();
		modResourceLoader.loadAssets();
		harmony.PatchAll();
	}

	private void OnDestroy()
	{
		harmony.UnpatchSelf();
	}

	public void createPrefabContainer()
	{
		//IL_0006: Unknown result type (might be due to invalid IL or missing references)
		//IL_0010: Expected O, but got Unknown
		//IL_0020: Unknown result type (might be due to invalid IL or missing references)
		//IL_002a: Expected O, but got Unknown
		RootObject = new GameObject("_ValheimReforgedRoot");
		Object.DontDestroyOnLoad((Object)(object)RootObject);
		PrefabContainer = new GameObject("Prefabs");
		PrefabContainer.transform.parent = RootObject.transform;
		PrefabContainer.SetActive(false);
	}

	public static GameObject cloneMe(GameObject source, string name)
	{
		GameObject val = Object.Instantiate<GameObject>(source, PrefabContainer.transform);
		((Object)val).name = name;
		return val;
	}

	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 void setupRavenGuide(GameObject gameObject, List<GameObject> gameObjects)
	{
		GameObject gameObject2 = ((Component)gameObject.transform.Find("GuidePoint")).gameObject;
		gameObject2.GetComponent<GuidePoint>().m_ravenPrefab = gameObjects.Find((GameObject x) => ((Object)x).name == "Ravens");
	}

	public static List<Recipe> createRecipesForDye(List<GameObject> items)
	{
		List<Recipe> list = new List<Recipe>();
		foreach (GameObject item in modResourceLoader.items)
		{
			Recipe val = ScriptableObject.CreateInstance<Recipe>();
			((Object)val).name = "Recipe_" + ((Object)item).name;
			val.m_minStationLevel = 1;
			val.m_craftingStation = modResourceLoader.dyeTable.GetComponent<CraftingStation>();
			val.m_repairStation = val.m_craftingStation;
			val.m_item = item.GetComponent<ItemDrop>();
			val.m_resources = createRecipeResource(item, items);
			list.Add(val);
		}
		return list;
	}

	public static Requirement[] createRecipeResource(GameObject item, List<GameObject> items)
	{
		List<Requirement> list = new List<Requirement>();
		switch (((Object)item).name)
		{
		case "DyeBlack":
			list.Add(createReq("Coal", 1, 0, items));
			break;
		case "DyeBlue":
			list.Add(createReq("Blueberries", 2, 0, items));
			break;
		case "DyeGreen":
			list.Add(createReq("Guck", 1, 0, items));
			break;
		case "DyeOrange":
			list.Add(createReq("Raspberry", 1, 0, items));
			list.Add(createReq("Cloudberry", 1, 0, items));
			break;
		case "DyePurple":
			list.Add(createReq("Raspberry", 1, 0, items));
			list.Add(createReq("Blueberries", 1, 0, items));
			break;
		case "DyeRed":
			list.Add(createReq("Bloodbag", 1, 0, items));
			break;
		case "DyeWhite":
			list.Add(createReq("BoneFragments", 2, 0, items));
			break;
		case "DyeYellow":
			list.Add(createReq("Cloudberry", 2, 0, items));
			break;
		}
		return list.ToArray();
	}

	public static Requirement createReq(string name, int amount, int amountPerLevel, List<GameObject> items)
	{
		//IL_0001: Unknown result type (might be due to invalid IL or missing references)
		//IL_0007: Expected O, but got Unknown
		Requirement val = new Requirement();
		val.m_recover = true;
		ItemDrop component = FindItem(name, items).GetComponent<ItemDrop>();
		val.m_resItem = component;
		val.m_amount = amount;
		val.m_amountPerLevel = amountPerLevel;
		return val;
	}

	public static GameObject FindItem(string name, List<GameObject> items)
	{
		GameObject val = items.Find((GameObject x) => ((Object)x).name == name);
		if ((Object)(object)val == (Object)null)
		{
			Debug.LogWarning((object)("Item Not Found - " + name + ", Replaced With Wood"));
			return items.Find((GameObject x) => ((Object)x).name == "Wood");
		}
		if ((Object)(object)val != (Object)null)
		{
			return val;
		}
		Debug.LogWarning((object)("Item Not Found At All - " + name + ", Replaced With Wood"));
		return items.Find((GameObject x) => ((Object)x).name == "Wood");
	}
}
public class ModResourceLoader
{
	public AssetBundle assetBundle;

	public List<GameObject> items = new List<GameObject>();

	public ShaderReplacment shaderReplacment = new ShaderReplacment();

	public Material banner01black;

	public Material banner01blue;

	public Material banner01green;

	public Material banner01orange;

	public Material banner01purple;

	public Material banner01red;

	public Material banner01white;

	public Material banner01yellow;

	public Material banner02black;

	public Material banner02blue;

	public Material banner02green;

	public Material banner02orange;

	public Material banner02purple;

	public Material banner02red;

	public Material banner02white;

	public Material banner02yellow;

	public Material banner03black;

	public Material banner03blue;

	public Material banner03green;

	public Material banner03orange;

	public Material banner03purple;

	public Material banner03red;

	public Material banner03white;

	public Material banner03yellow;

	public Material banner04black;

	public Material banner04blue;

	public Material banner04green;

	public Material banner04orange;

	public Material banner04purple;

	public Material banner04red;

	public Material banner04white;

	public Material banner04yellow;

	public Material banner05black;

	public Material banner05blue;

	public Material banner05green;

	public Material banner05orange;

	public Material banner05purple;

	public Material banner05red;

	public Material banner05white;

	public Material banner05yellow;

	public Material banner06black;

	public Material banner06blue;

	public Material banner06green;

	public Material banner06orange;

	public Material banner06purple;

	public Material banner06red;

	public Material banner06white;

	public Material banner06yellow;

	public Material banner07black;

	public Material banner07blue;

	public Material banner07green;

	public Material banner07orange;

	public Material banner07purple;

	public Material banner07red;

	public Material banner07white;

	public Material banner07yellow;

	public Material banner08black;

	public Material banner08blue;

	public Material banner08green;

	public Material banner08orange;

	public Material banner08purple;

	public Material banner08red;

	public Material banner08white;

	public Material banner08yellow;

	public Material banner09black;

	public Material banner09blue;

	public Material banner09green;

	public Material banner09orange;

	public Material banner09purple;

	public Material banner09red;

	public Material banner09white;

	public Material banner09yellow;

	public Material banner10black;

	public Material banner10blue;

	public Material banner10green;

	public Material banner10orange;

	public Material banner10purple;

	public Material banner10red;

	public Material banner10white;

	public Material banner10yellow;

	public Material banner11black;

	public Material banner11blue;

	public Material banner11green;

	public Material banner11orange;

	public Material banner11purple;

	public Material banner11red;

	public Material banner11white;

	public Material banner11yellow;

	public Material bannerHangingblack;

	public Material bannerHangingblue;

	public Material bannerHanginggreen;

	public Material bannerHangingorange;

	public Material bannerHangingpurple;

	public Material bannerHangingred;

	public Material bannerHangingwhite;

	public Material bannerHangingyellow;

	public Material bannerHanging2black;

	public Material bannerHanging2blue;

	public Material bannerHanging2green;

	public Material bannerHanging2orange;

	public Material bannerHanging2purple;

	public Material bannerHanging2red;

	public Material bannerHanging2white;

	public Material bannerHanging2yellow;

	public Material bannerHanging3black;

	public Material bannerHanging3blue;

	public Material bannerHanging3green;

	public Material bannerHanging3orange;

	public Material bannerHanging3purple;

	public Material bannerHanging3red;

	public Material bannerHanging3white;

	public Material bannerHanging3yellow;

	public Material juteCarpetblack;

	public Material juteCarpetblue;

	public Material juteCarpetgreen;

	public Material juteCarpetorange;

	public Material juteCarpetpurple;

	public Material juteCarpetred;

	public Material juteCarpetwhite;

	public Material juteCarpetyellow;

	public Material juteCarpetMainblack;

	public Material juteCarpetMainblue;

	public Material juteCarpetMaingreen;

	public Material juteCarpetMainorange;

	public Material juteCarpetMainpurple;

	public Material juteCarpetMainred;

	public Material juteCarpetMainwhite;

	public Material juteCarpetMainyellow;

	public Material juteCarpetDestructionblack;

	public Material juteCarpetDestructionblue;

	public Material juteCarpetDestructiongreen;

	public Material juteCarpetDestructionorange;

	public Material juteCarpetDestructionpurple;

	public Material juteCarpetDestructionred;

	public Material juteCarpetDestructionwhite;

	public Material juteCarpetDestructionyellow;

	public Material juteCarpet2black;

	public Material juteCarpet2blue;

	public Material juteCarpet2green;

	public Material juteCarpet2orange;

	public Material juteCarpet2purple;

	public Material juteCarpet2red;

	public Material juteCarpet2white;

	public Material juteCarpet2yellow;

	public Material juteCarpetMain2black;

	public Material juteCarpetMain2blue;

	public Material juteCarpetMain2green;

	public Material juteCarpetMain2orange;

	public Material juteCarpetMain2purple;

	public Material juteCarpetMain2red;

	public Material juteCarpetMain2white;

	public Material juteCarpetMain2yellow;

	public Material juteCarpetDestruction2black;

	public Material juteCarpetDestruction2blue;

	public Material juteCarpetDestruction2green;

	public Material juteCarpetDestruction2orange;

	public Material juteCarpetDestruction2purple;

	public Material juteCarpetDestruction2red;

	public Material juteCarpetDestruction2white;

	public Material juteCarpetDestruction2yellow;

	public string[] prefabNames = new string[8] { "DyeBlack", "DyeBlue", "DyeGreen", "DyeOrange", "DyePurple", "DyeRed", "DyeWhite", "DyeYellow" };

	public GameObject dyeTable;

	public void loadAssets()
	{
		assetBundle = GetAssetBundleFromResources("bannercolorizer");
		string text = "Assets/BalrondBannerColorizer/";
		string[] array = prefabNames;
		foreach (string text2 in array)
		{
			GameObject val = assetBundle.LoadAsset<GameObject>(text + "prefabs/" + text2 + ".prefab");
			if ((Object)(object)val == (Object)null)
			{
				Debug.LogWarning((object)("Sail not found: " + text2));
			}
			else
			{
				items.Add(val);
			}
		}
		dyeTable = assetBundle.LoadAsset<GameObject>(text + "prefabs/piece_dyestation.prefab");
		Material temp = assetBundle.LoadAsset<Material>(text + "banner01/black.mat");
		CreateBanner01(temp, text);
		CreateBanner02(temp, text);
		CreateBanner03(temp, text);
		CreateBanner04(temp, text);
		CreateBanner05(temp, text);
		CreateBanner06(temp, text);
		CreateBanner07(temp, text);
		CreateBanner08(temp, text);
		CreateBanner09(temp, text);
		CreateBanner10(temp, text);
		CreateBanner11(temp, text);
		CreatebannerHanging(temp, text);
		CreatebannerHanging2(temp, text);
		CreatebannerHanging3(temp, text);
		CreatejuteCarpet(temp, text);
		CreatejuteCarpetMain(temp, text);
		CreatejuteCarpetDestruction(temp, text);
		CreatejuteCarpet2(temp, text);
		CreatejuteCarpetMain2(temp, text);
		CreatejuteCarpetDestruction2(temp, text);
	}

	private void CreateBanner01(Material temp, string mainPath)
	{
		temp = assetBundle.LoadAsset<Material>(mainPath + "banner01/black.mat");
		ShaderReplacment.ReplaceMaterial(temp);
		banner01black = temp;
		temp = assetBundle.LoadAsset<Material>(mainPath + "banner01/blue.mat");
		ShaderReplacment.ReplaceMaterial(temp);
		banner01blue = temp;
		temp = assetBundle.LoadAsset<Material>(mainPath + "banner01/green.mat");
		ShaderReplacment.ReplaceMaterial(temp);
		banner01green = temp;
		temp = assetBundle.LoadAsset<Material>(mainPath + "banner01/orange.mat");
		ShaderReplacment.ReplaceMaterial(temp);
		banner01orange = temp;
		temp = assetBundle.LoadAsset<Material>(mainPath + "banner01/purple.mat");
		ShaderReplacment.ReplaceMaterial(temp);
		banner01purple = temp;
		temp = assetBundle.LoadAsset<Material>(mainPath + "banner01/red.mat");
		ShaderReplacment.ReplaceMaterial(temp);
		banner01red = temp;
		temp = assetBundle.LoadAsset<Material>(mainPath + "banner01/white.mat");
		ShaderReplacment.ReplaceMaterial(temp);
		banner01white = temp;
		temp = assetBundle.LoadAsset<Material>(mainPath + "banner01/yellow.mat");
		ShaderReplacment.ReplaceMaterial(temp);
		banner01yellow = temp;
	}

	private void CreateBanner02(Material temp, string mainPath)
	{
		temp = assetBundle.LoadAsset<Material>(mainPath + "banner02/black.mat");
		ShaderReplacment.ReplaceMaterial(temp);
		banner02black = temp;
		temp = assetBundle.LoadAsset<Material>(mainPath + "banner02/blue.mat");
		ShaderReplacment.ReplaceMaterial(temp);
		banner02blue = temp;
		temp = assetBundle.LoadAsset<Material>(mainPath + "banner02/green.mat");
		ShaderReplacment.ReplaceMaterial(temp);
		banner02green = temp;
		temp = assetBundle.LoadAsset<Material>(mainPath + "banner02/orange.mat");
		ShaderReplacment.ReplaceMaterial(temp);
		banner02orange = temp;
		temp = assetBundle.LoadAsset<Material>(mainPath + "banner02/purple.mat");
		ShaderReplacment.ReplaceMaterial(temp);
		banner02purple = temp;
		temp = assetBundle.LoadAsset<Material>(mainPath + "banner02/red.mat");
		ShaderReplacment.ReplaceMaterial(temp);
		banner02red = temp;
		temp = assetBundle.LoadAsset<Material>(mainPath + "banner02/white.mat");
		ShaderReplacment.ReplaceMaterial(temp);
		banner02white = temp;
		temp = assetBundle.LoadAsset<Material>(mainPath + "banner02/yellow.mat");
		ShaderReplacment.ReplaceMaterial(temp);
		banner02yellow = temp;
	}

	private void CreateBanner03(Material temp, string mainPath)
	{
		temp = assetBundle.LoadAsset<Material>(mainPath + "banner03/black.mat");
		ShaderReplacment.ReplaceMaterial(temp);
		banner03black = temp;
		temp = assetBundle.LoadAsset<Material>(mainPath + "banner03/blue.mat");
		ShaderReplacment.ReplaceMaterial(temp);
		banner03blue = temp;
		temp = assetBundle.LoadAsset<Material>(mainPath + "banner03/green.mat");
		ShaderReplacment.ReplaceMaterial(temp);
		banner03green = temp;
		temp = assetBundle.LoadAsset<Material>(mainPath + "banner03/orange.mat");
		ShaderReplacment.ReplaceMaterial(temp);
		banner03orange = temp;
		temp = assetBundle.LoadAsset<Material>(mainPath + "banner03/purple.mat");
		ShaderReplacment.ReplaceMaterial(temp);
		banner03purple = temp;
		temp = assetBundle.LoadAsset<Material>(mainPath + "banner03/red.mat");
		ShaderReplacment.ReplaceMaterial(temp);
		banner03red = temp;
		temp = assetBundle.LoadAsset<Material>(mainPath + "banner03/white.mat");
		ShaderReplacment.ReplaceMaterial(temp);
		banner03white = temp;
		temp = assetBundle.LoadAsset<Material>(mainPath + "banner03/yellow.mat");
		ShaderReplacment.ReplaceMaterial(temp);
		banner03yellow = temp;
	}

	private void CreateBanner04(Material temp, string mainPath)
	{
		temp = assetBundle.LoadAsset<Material>(mainPath + "banner04/black.mat");
		ShaderReplacment.ReplaceMaterial(temp);
		banner04black = temp;
		temp = assetBundle.LoadAsset<Material>(mainPath + "banner04/blue.mat");
		ShaderReplacment.ReplaceMaterial(temp);
		banner04blue = temp;
		temp = assetBundle.LoadAsset<Material>(mainPath + "banner04/green.mat");
		ShaderReplacment.ReplaceMaterial(temp);
		banner04green = temp;
		ShaderReplacment.ReplaceMaterial(temp);
		temp = assetBundle.LoadAsset<Material>(mainPath + "banner04/orange.mat");
		ShaderReplacment.ReplaceMaterial(temp);
		banner04orange = temp;
		temp = assetBundle.LoadAsset<Material>(mainPath + "banner04/purple.mat");
		ShaderReplacment.ReplaceMaterial(temp);
		banner04purple = temp;
		temp = assetBundle.LoadAsset<Material>(mainPath + "banner04/red.mat");
		ShaderReplacment.ReplaceMaterial(temp);
		banner04red = temp;
		temp = assetBundle.LoadAsset<Material>(mainPath + "banner04/white.mat");
		ShaderReplacment.ReplaceMaterial(temp);
		banner04white = temp;
		temp = assetBundle.LoadAsset<Material>(mainPath + "banner04/yellow.mat");
		ShaderReplacment.ReplaceMaterial(temp);
		banner04yellow = temp;
	}

	private void CreateBanner05(Material temp, string mainPath)
	{
		temp = assetBundle.LoadAsset<Material>(mainPath + "banner05/black.mat");
		ShaderReplacment.ReplaceMaterial(temp);
		banner05black = temp;
		temp = assetBundle.LoadAsset<Material>(mainPath + "banner05/blue.mat");
		ShaderReplacment.ReplaceMaterial(temp);
		banner05blue = temp;
		temp = assetBundle.LoadAsset<Material>(mainPath + "banner05/green.mat");
		ShaderReplacment.ReplaceMaterial(temp);
		banner05green = temp;
		temp = assetBundle.LoadAsset<Material>(mainPath + "banner05/orange.mat");
		ShaderReplacment.ReplaceMaterial(temp);
		banner05orange = temp;
		temp = assetBundle.LoadAsset<Material>(mainPath + "banner05/purple.mat");
		ShaderReplacment.ReplaceMaterial(temp);
		banner05purple = temp;
		temp = assetBundle.LoadAsset<Material>(mainPath + "banner05/red.mat");
		ShaderReplacment.ReplaceMaterial(temp);
		banner05red = temp;
		temp = assetBundle.LoadAsset<Material>(mainPath + "banner05/white.mat");
		ShaderReplacment.ReplaceMaterial(temp);
		banner05white = temp;
		temp = assetBundle.LoadAsset<Material>(mainPath + "banner05/yellow.mat");
		ShaderReplacment.ReplaceMaterial(temp);
		banner05yellow = temp;
	}

	private void CreateBanner06(Material temp, string mainPath)
	{
		temp = assetBundle.LoadAsset<Material>(mainPath + "banner06/black.mat");
		ShaderReplacment.ReplaceMaterial(temp);
		banner06black = temp;
		temp = assetBundle.LoadAsset<Material>(mainPath + "banner06/blue.mat");
		ShaderReplacment.ReplaceMaterial(temp);
		banner06blue = temp;
		temp = assetBundle.LoadAsset<Material>(mainPath + "banner06/green.mat");
		ShaderReplacment.ReplaceMaterial(temp);
		banner06green = temp;
		temp = assetBundle.LoadAsset<Material>(mainPath + "banner06/orange.mat");
		ShaderReplacment.ReplaceMaterial(temp);
		banner06orange = temp;
		temp = assetBundle.LoadAsset<Material>(mainPath + "banner06/purple.mat");
		ShaderReplacment.ReplaceMaterial(temp);
		banner06purple = temp;
		temp = assetBundle.LoadAsset<Material>(mainPath + "banner06/red.mat");
		ShaderReplacment.ReplaceMaterial(temp);
		banner06red = temp;
		temp = assetBundle.LoadAsset<Material>(mainPath + "banner06/white.mat");
		ShaderReplacment.ReplaceMaterial(temp);
		banner06white = temp;
		temp = assetBundle.LoadAsset<Material>(mainPath + "banner06/yellow.mat");
		ShaderReplacment.ReplaceMaterial(temp);
		banner06yellow = temp;
	}

	private void CreateBanner07(Material temp, string mainPath)
	{
		temp = assetBundle.LoadAsset<Material>(mainPath + "banner07/black.mat");
		ShaderReplacment.ReplaceMaterial(temp);
		banner07black = temp;
		temp = assetBundle.LoadAsset<Material>(mainPath + "banner07/blue.mat");
		ShaderReplacment.ReplaceMaterial(temp);
		banner07blue = temp;
		temp = assetBundle.LoadAsset<Material>(mainPath + "banner07/green.mat");
		ShaderReplacment.ReplaceMaterial(temp);
		banner07green = temp;
		temp = assetBundle.LoadAsset<Material>(mainPath + "banner07/orange.mat");
		ShaderReplacment.ReplaceMaterial(temp);
		banner07orange = temp;
		temp = assetBundle.LoadAsset<Material>(mainPath + "banner07/purple.mat");
		ShaderReplacment.ReplaceMaterial(temp);
		banner07purple = temp;
		temp = assetBundle.LoadAsset<Material>(mainPath + "banner07/red.mat");
		ShaderReplacment.ReplaceMaterial(temp);
		banner07red = temp;
		temp = assetBundle.LoadAsset<Material>(mainPath + "banner07/white.mat");
		ShaderReplacment.ReplaceMaterial(temp);
		banner07white = temp;
		temp = assetBundle.LoadAsset<Material>(mainPath + "banner07/yellow.mat");
		ShaderReplacment.ReplaceMaterial(temp);
		banner07yellow = temp;
	}

	private void CreateBanner08(Material temp, string mainPath)
	{
		temp = assetBundle.LoadAsset<Material>(mainPath + "banner08/black.mat");
		ShaderReplacment.ReplaceMaterial(temp);
		banner08black = temp;
		temp = assetBundle.LoadAsset<Material>(mainPath + "banner08/blue.mat");
		ShaderReplacment.ReplaceMaterial(temp);
		banner08blue = temp;
		temp = assetBundle.LoadAsset<Material>(mainPath + "banner08/green.mat");
		ShaderReplacment.ReplaceMaterial(temp);
		banner08green = temp;
		temp = assetBundle.LoadAsset<Material>(mainPath + "banner08/orange.mat");
		ShaderReplacment.ReplaceMaterial(temp);
		banner08orange = temp;
		temp = assetBundle.LoadAsset<Material>(mainPath + "banner08/purple.mat");
		ShaderReplacment.ReplaceMaterial(temp);
		banner08purple = temp;
		temp = assetBundle.LoadAsset<Material>(mainPath + "banner08/red.mat");
		ShaderReplacment.ReplaceMaterial(temp);
		banner08red = temp;
		temp = assetBundle.LoadAsset<Material>(mainPath + "banner08/white.mat");
		ShaderReplacment.ReplaceMaterial(temp);
		banner08white = temp;
		temp = assetBundle.LoadAsset<Material>(mainPath + "banner08/yellow.mat");
		ShaderReplacment.ReplaceMaterial(temp);
		banner08yellow = temp;
	}

	private void CreateBanner09(Material temp, string mainPath)
	{
		temp = assetBundle.LoadAsset<Material>(mainPath + "banner09/black.mat");
		ShaderReplacment.ReplaceMaterial(temp);
		banner09black = temp;
		temp = assetBundle.LoadAsset<Material>(mainPath + "banner09/blue.mat");
		ShaderReplacment.ReplaceMaterial(temp);
		banner09blue = temp;
		temp = assetBundle.LoadAsset<Material>(mainPath + "banner09/green.mat");
		ShaderReplacment.ReplaceMaterial(temp);
		banner09green = temp;
		temp = assetBundle.LoadAsset<Material>(mainPath + "banner09/orange.mat");
		ShaderReplacment.ReplaceMaterial(temp);
		banner09orange = temp;
		temp = assetBundle.LoadAsset<Material>(mainPath + "banner09/purple.mat");
		ShaderReplacment.ReplaceMaterial(temp);
		banner09purple = temp;
		temp = assetBundle.LoadAsset<Material>(mainPath + "banner09/red.mat");
		ShaderReplacment.ReplaceMaterial(temp);
		banner09red = temp;
		temp = assetBundle.LoadAsset<Material>(mainPath + "banner09/white.mat");
		ShaderReplacment.ReplaceMaterial(temp);
		banner09white = temp;
		temp = assetBundle.LoadAsset<Material>(mainPath + "banner09/yellow.mat");
		ShaderReplacment.ReplaceMaterial(temp);
		banner09yellow = temp;
	}

	private void CreateBanner10(Material temp, string mainPath)
	{
		temp = assetBundle.LoadAsset<Material>(mainPath + "banner10/black.mat");
		ShaderReplacment.ReplaceMaterial(temp);
		banner10black = temp;
		temp = assetBundle.LoadAsset<Material>(mainPath + "banner10/blue.mat");
		ShaderReplacment.ReplaceMaterial(temp);
		banner10blue = temp;
		temp = assetBundle.LoadAsset<Material>(mainPath + "banner10/green.mat");
		ShaderReplacment.ReplaceMaterial(temp);
		banner10green = temp;
		temp = assetBundle.LoadAsset<Material>(mainPath + "banner10/orange.mat");
		ShaderReplacment.ReplaceMaterial(temp);
		banner10orange = temp;
		temp = assetBundle.LoadAsset<Material>(mainPath + "banner10/purple.mat");
		ShaderReplacment.ReplaceMaterial(temp);
		banner10purple = temp;
		temp = assetBundle.LoadAsset<Material>(mainPath + "banner10/red.mat");
		ShaderReplacment.ReplaceMaterial(temp);
		banner10red = temp;
		temp = assetBundle.LoadAsset<Material>(mainPath + "banner10/white.mat");
		ShaderReplacment.ReplaceMaterial(temp);
		banner10white = temp;
		temp = assetBundle.LoadAsset<Material>(mainPath + "banner10/yellow.mat");
		ShaderReplacment.ReplaceMaterial(temp);
		banner10yellow = temp;
	}

	private void CreateBanner11(Material temp, string mainPath)
	{
		temp = assetBundle.LoadAsset<Material>(mainPath + "banner11/black.mat");
		ShaderReplacment.ReplaceMaterial(temp);
		banner11black = temp;
		temp = assetBundle.LoadAsset<Material>(mainPath + "banner11/blue.mat");
		ShaderReplacment.ReplaceMaterial(temp);
		banner11blue = temp;
		temp = assetBundle.LoadAsset<Material>(mainPath + "banner11/green.mat");
		ShaderReplacment.ReplaceMaterial(temp);
		banner11green = temp;
		temp = assetBundle.LoadAsset<Material>(mainPath + "banner11/orange.mat");
		ShaderReplacment.ReplaceMaterial(temp);
		banner11orange = temp;
		temp = assetBundle.LoadAsset<Material>(mainPath + "banner11/purple.mat");
		ShaderReplacment.ReplaceMaterial(temp);
		banner11purple = temp;
		temp = assetBundle.LoadAsset<Material>(mainPath + "banner11/red.mat");
		ShaderReplacment.ReplaceMaterial(temp);
		banner11red = temp;
		temp = assetBundle.LoadAsset<Material>(mainPath + "banner11/white.mat");
		ShaderReplacment.ReplaceMaterial(temp);
		banner11white = temp;
		temp = assetBundle.LoadAsset<Material>(mainPath + "banner11/yellow.mat");
		ShaderReplacment.ReplaceMaterial(temp);
		banner11yellow = temp;
	}

	private void CreatebannerHanging(Material temp, string mainPath)
	{
		temp = assetBundle.LoadAsset<Material>(mainPath + "bannerHanging/black.mat");
		ShaderReplacment.ReplaceMaterial(temp);
		bannerHangingblack = temp;
		temp = assetBundle.LoadAsset<Material>(mainPath + "bannerHanging/blue.mat");
		ShaderReplacment.ReplaceMaterial(temp);
		bannerHangingblue = temp;
		temp = assetBundle.LoadAsset<Material>(mainPath + "bannerHanging/green.mat");
		ShaderReplacment.ReplaceMaterial(temp);
		bannerHanginggreen = temp;
		temp = assetBundle.LoadAsset<Material>(mainPath + "bannerHanging/orange.mat");
		ShaderReplacment.ReplaceMaterial(temp);
		bannerHangingorange = temp;
		temp = assetBundle.LoadAsset<Material>(mainPath + "bannerHanging/purple.mat");
		ShaderReplacment.ReplaceMaterial(temp);
		bannerHangingpurple = temp;
		temp = assetBundle.LoadAsset<Material>(mainPath + "bannerHanging/red.mat");
		ShaderReplacment.ReplaceMaterial(temp);
		bannerHangingred = temp;
		temp = assetBundle.LoadAsset<Material>(mainPath + "bannerHanging/white.mat");
		ShaderReplacment.ReplaceMaterial(temp);
		bannerHangingwhite = temp;
		temp = assetBundle.LoadAsset<Material>(mainPath + "bannerHanging/yellow.mat");
		ShaderReplacment.ReplaceMaterial(temp);
		bannerHangingyellow = temp;
	}

	private void CreatebannerHanging2(Material temp, string mainPath)
	{
		temp = assetBundle.LoadAsset<Material>(mainPath + "bannerHanging2/black.mat");
		ShaderReplacment.ReplaceMaterial(temp);
		bannerHanging2black = temp;
		temp = assetBundle.LoadAsset<Material>(mainPath + "bannerHanging2/blue.mat");
		ShaderReplacment.ReplaceMaterial(temp);
		bannerHanging2blue = temp;
		temp = assetBundle.LoadAsset<Material>(mainPath + "bannerHanging2/green.mat");
		ShaderReplacment.ReplaceMaterial(temp);
		bannerHanging2green = temp;
		temp = assetBundle.LoadAsset<Material>(mainPath + "bannerHanging2/orange.mat");
		ShaderReplacment.ReplaceMaterial(temp);
		bannerHanging2orange = temp;
		temp = assetBundle.LoadAsset<Material>(mainPath + "bannerHanging2/purple.mat");
		ShaderReplacment.ReplaceMaterial(temp);
		bannerHanging2purple = temp;
		temp = assetBundle.LoadAsset<Material>(mainPath + "bannerHanging2/red.mat");
		ShaderReplacment.ReplaceMaterial(temp);
		bannerHanging2red = temp;
		temp = assetBundle.LoadAsset<Material>(mainPath + "bannerHanging2/white.mat");
		ShaderReplacment.ReplaceMaterial(temp);
		bannerHanging2white = temp;
		temp = assetBundle.LoadAsset<Material>(mainPath + "bannerHanging2/yellow.mat");
		ShaderReplacment.ReplaceMaterial(temp);
		bannerHanging2yellow = temp;
	}

	private void CreatebannerHanging3(Material temp, string mainPath)
	{
		temp = assetBundle.LoadAsset<Material>(mainPath + "bannerHanging3/black.mat");
		ShaderReplacment.ReplaceMaterial(temp);
		bannerHanging3black = temp;
		temp = assetBundle.LoadAsset<Material>(mainPath + "bannerHanging3/blue.mat");
		ShaderReplacment.ReplaceMaterial(temp);
		bannerHanging3blue = temp;
		temp = assetBundle.LoadAsset<Material>(mainPath + "bannerHanging3/green.mat");
		ShaderReplacment.ReplaceMaterial(temp);
		bannerHanging3green = temp;
		temp = assetBundle.LoadAsset<Material>(mainPath + "bannerHanging3/orange.mat");
		ShaderReplacment.ReplaceMaterial(temp);
		bannerHanging3orange = temp;
		temp = assetBundle.LoadAsset<Material>(mainPath + "bannerHanging3/purple.mat");
		ShaderReplacment.ReplaceMaterial(temp);
		bannerHanging3purple = temp;
		temp = assetBundle.LoadAsset<Material>(mainPath + "bannerHanging3/red.mat");
		ShaderReplacment.ReplaceMaterial(temp);
		bannerHanging3red = temp;
		temp = assetBundle.LoadAsset<Material>(mainPath + "bannerHanging3/white.mat");
		ShaderReplacment.ReplaceMaterial(temp);
		bannerHanging3white = temp;
		temp = assetBundle.LoadAsset<Material>(mainPath + "bannerHanging3/yellow.mat");
		ShaderReplacment.ReplaceMaterial(temp);
		bannerHanging3yellow = temp;
	}

	private void CreatejuteCarpet(Material temp, string mainPath)
	{
		temp = assetBundle.LoadAsset<Material>(mainPath + "juteCarpet/black.mat");
		ShaderReplacment.ReplaceMaterial(temp);
		juteCarpetblack = temp;
		temp = assetBundle.LoadAsset<Material>(mainPath + "juteCarpet/blue.mat");
		ShaderReplacment.ReplaceMaterial(temp);
		juteCarpetblue = temp;
		temp = assetBundle.LoadAsset<Material>(mainPath + "juteCarpet/green.mat");
		ShaderReplacment.ReplaceMaterial(temp);
		juteCarpetgreen = temp;
		temp = assetBundle.LoadAsset<Material>(mainPath + "juteCarpet/orange.mat");
		ShaderReplacment.ReplaceMaterial(temp);
		juteCarpetorange = temp;
		temp = assetBundle.LoadAsset<Material>(mainPath + "juteCarpet/purple.mat");
		ShaderReplacment.ReplaceMaterial(temp);
		juteCarpetpurple = temp;
		temp = assetBundle.LoadAsset<Material>(mainPath + "juteCarpet/red.mat");
		ShaderReplacment.ReplaceMaterial(temp);
		juteCarpetred = temp;
		temp = assetBundle.LoadAsset<Material>(mainPath + "juteCarpet/white.mat");
		ShaderReplacment.ReplaceMaterial(temp);
		juteCarpetwhite = temp;
		temp = assetBundle.LoadAsset<Material>(mainPath + "juteCarpet/yellow.mat");
		ShaderReplacment.ReplaceMaterial(temp);
		juteCarpetyellow = temp;
	}

	private void CreatejuteCarpetMain(Material temp, string mainPath)
	{
		temp = assetBundle.LoadAsset<Material>(mainPath + "juteCarpetMain/black.mat");
		ShaderReplacment.ReplaceMaterial(temp);
		juteCarpetMainblack = temp;
		temp = assetBundle.LoadAsset<Material>(mainPath + "juteCarpetMain/blue.mat");
		ShaderReplacment.ReplaceMaterial(temp);
		juteCarpetMainblue = temp;
		temp = assetBundle.LoadAsset<Material>(mainPath + "juteCarpetMain/green.mat");
		ShaderReplacment.ReplaceMaterial(temp);
		juteCarpetMaingreen = temp;
		temp = assetBundle.LoadAsset<Material>(mainPath + "juteCarpetMain/orange.mat");
		ShaderReplacment.ReplaceMaterial(temp);
		juteCarpetMainorange = temp;
		temp = assetBundle.LoadAsset<Material>(mainPath + "juteCarpetMain/purple.mat");
		ShaderReplacment.ReplaceMaterial(temp);
		juteCarpetMainpurple = temp;
		temp = assetBundle.LoadAsset<Material>(mainPath + "juteCarpetMain/red.mat");
		ShaderReplacment.ReplaceMaterial(temp);
		juteCarpetMainred = temp;
		temp = assetBundle.LoadAsset<Material>(mainPath + "juteCarpetMain/white.mat");
		ShaderReplacment.ReplaceMaterial(temp);
		juteCarpetMainwhite = temp;
		temp = assetBundle.LoadAsset<Material>(mainPath + "juteCarpetMain/yellow.mat");
		ShaderReplacment.ReplaceMaterial(temp);
		juteCarpetMainyellow = temp;
	}

	private void CreatejuteCarpetDestruction(Material temp, string mainPath)
	{
		temp = assetBundle.LoadAsset<Material>(mainPath + "juteCarpetDestruction/black.mat");
		ShaderReplacment.ReplaceMaterial(temp);
		juteCarpetDestructionblack = temp;
		temp = assetBundle.LoadAsset<Material>(mainPath + "juteCarpetDestruction/blue.mat");
		ShaderReplacment.ReplaceMaterial(temp);
		juteCarpetDestructionblue = temp;
		temp = assetBundle.LoadAsset<Material>(mainPath + "juteCarpetDestruction/green.mat");
		ShaderReplacment.ReplaceMaterial(temp);
		juteCarpetDestructiongreen = temp;
		temp = assetBundle.LoadAsset<Material>(mainPath + "juteCarpetDestruction/orange.mat");
		ShaderReplacment.ReplaceMaterial(temp);
		juteCarpetDestructionorange = temp;
		temp = assetBundle.LoadAsset<Material>(mainPath + "juteCarpetDestruction/purple.mat");
		ShaderReplacment.ReplaceMaterial(temp);
		juteCarpetDestructionpurple = temp;
		temp = assetBundle.LoadAsset<Material>(mainPath + "juteCarpetDestruction/red.mat");
		ShaderReplacment.ReplaceMaterial(temp);
		juteCarpetDestructionred = temp;
		temp = assetBundle.LoadAsset<Material>(mainPath + "juteCarpetDestruction/white.mat");
		ShaderReplacment.ReplaceMaterial(temp);
		juteCarpetDestructionwhite = temp;
		temp = assetBundle.LoadAsset<Material>(mainPath + "juteCarpetDestruction/yellow.mat");
		ShaderReplacment.ReplaceMaterial(temp);
		juteCarpetDestructionyellow = temp;
	}

	private void CreatejuteCarpet2(Material temp, string mainPath)
	{
		temp = assetBundle.LoadAsset<Material>(mainPath + "juteCarpet2/black.mat");
		ShaderReplacment.ReplaceMaterial(temp);
		juteCarpet2black = temp;
		temp = assetBundle.LoadAsset<Material>(mainPath + "juteCarpet2/blue.mat");
		ShaderReplacment.ReplaceMaterial(temp);
		juteCarpet2blue = temp;
		temp = assetBundle.LoadAsset<Material>(mainPath + "juteCarpet2/green.mat");
		ShaderReplacment.ReplaceMaterial(temp);
		juteCarpet2green = temp;
		temp = assetBundle.LoadAsset<Material>(mainPath + "juteCarpet2/orange.mat");
		ShaderReplacment.ReplaceMaterial(temp);
		juteCarpet2orange = temp;
		temp = assetBundle.LoadAsset<Material>(mainPath + "juteCarpet2/purple.mat");
		ShaderReplacment.ReplaceMaterial(temp);
		juteCarpet2purple = temp;
		temp = assetBundle.LoadAsset<Material>(mainPath + "juteCarpet2/red.mat");
		ShaderReplacment.ReplaceMaterial(temp);
		juteCarpet2red = temp;
		temp = assetBundle.LoadAsset<Material>(mainPath + "juteCarpet2/white.mat");
		ShaderReplacment.ReplaceMaterial(temp);
		juteCarpet2white = temp;
		temp = assetBundle.LoadAsset<Material>(mainPath + "juteCarpet2/yellow.mat");
		ShaderReplacment.ReplaceMaterial(temp);
		juteCarpet2yellow = temp;
	}

	private void CreatejuteCarpetMain2(Material temp, string mainPath)
	{
		temp = assetBundle.LoadAsset<Material>(mainPath + "juteCarpetMain2/black.mat");
		ShaderReplacment.ReplaceMaterial(temp);
		juteCarpetMain2black = temp;
		temp = assetBundle.LoadAsset<Material>(mainPath + "juteCarpetMain2/blue.mat");
		ShaderReplacment.ReplaceMaterial(temp);
		juteCarpetMain2blue = temp;
		temp = assetBundle.LoadAsset<Material>(mainPath + "juteCarpetMain2/green.mat");
		ShaderReplacment.ReplaceMaterial(temp);
		juteCarpetMain2green = temp;
		temp = assetBundle.LoadAsset<Material>(mainPath + "juteCarpetMain2/orange.mat");
		ShaderReplacment.ReplaceMaterial(temp);
		juteCarpetMain2orange = temp;
		temp = assetBundle.LoadAsset<Material>(mainPath + "juteCarpetMain2/purple.mat");
		ShaderReplacment.ReplaceMaterial(temp);
		juteCarpetMain2purple = temp;
		temp = assetBundle.LoadAsset<Material>(mainPath + "juteCarpetMain2/red.mat");
		ShaderReplacment.ReplaceMaterial(temp);
		juteCarpetMain2red = temp;
		temp = assetBundle.LoadAsset<Material>(mainPath + "juteCarpetMain2/white.mat");
		ShaderReplacment.ReplaceMaterial(temp);
		juteCarpetMain2white = temp;
		temp = assetBundle.LoadAsset<Material>(mainPath + "juteCarpetMain2/yellow.mat");
		ShaderReplacment.ReplaceMaterial(temp);
		juteCarpetMain2yellow = temp;
	}

	private void CreatejuteCarpetDestruction2(Material temp, string mainPath)
	{
		temp = assetBundle.LoadAsset<Material>(mainPath + "juteCarpetDestruction2/black.mat");
		ShaderReplacment.ReplaceMaterial(temp);
		juteCarpetDestruction2black = temp;
		temp = assetBundle.LoadAsset<Material>(mainPath + "juteCarpetDestruction2/blue.mat");
		ShaderReplacment.ReplaceMaterial(temp);
		juteCarpetDestruction2blue = temp;
		temp = assetBundle.LoadAsset<Material>(mainPath + "juteCarpetDestruction2/green.mat");
		ShaderReplacment.ReplaceMaterial(temp);
		juteCarpetDestruction2green = temp;
		temp = assetBundle.LoadAsset<Material>(mainPath + "juteCarpetDestruction2/orange.mat");
		ShaderReplacment.ReplaceMaterial(temp);
		juteCarpetDestruction2orange = temp;
		temp = assetBundle.LoadAsset<Material>(mainPath + "juteCarpetDestruction2/purple.mat");
		ShaderReplacment.ReplaceMaterial(temp);
		juteCarpetDestruction2purple = temp;
		temp = assetBundle.LoadAsset<Material>(mainPath + "juteCarpetDestruction2/red.mat");
		ShaderReplacment.ReplaceMaterial(temp);
		juteCarpetDestruction2red = temp;
		temp = assetBundle.LoadAsset<Material>(mainPath + "juteCarpetDestruction2/white.mat");
		ShaderReplacment.ReplaceMaterial(temp);
		juteCarpetDestruction2white = temp;
		temp = assetBundle.LoadAsset<Material>(mainPath + "juteCarpetDestruction2/yellow.mat");
		ShaderReplacment.ReplaceMaterial(temp);
		juteCarpetDestruction2yellow = temp;
	}

	private 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);
	}
}
public class ItemEdits
{
	private string[] itemEditNames = new string[14]
	{
		"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"
	};

	private GameObject FindItem(List<GameObject> list, string name)
	{
		GameObject val = list.Find((GameObject x) => ((Object)x).name == name);
		if ((Object)(object)val != (Object)null)
		{
			return val;
		}
		Debug.LogWarning((object)("BalrondBannerColorizer: Item Not Found: " + name));
		return null;
	}

	public void editItems(List<GameObject> list)
	{
		string[] array = itemEditNames;
		foreach (string text in array)
		{
			GameObject val = FindItem(list, text);
			if ((Object)(object)val == (Object)null)
			{
				Debug.LogWarning((object)("Could not find: " + text));
			}
			else
			{
				CheckStats(val);
			}
		}
	}

	private void CheckStats(GameObject gameObject)
	{
		switch (((Object)gameObject).name)
		{
		case "draugr_sword":
			editSpiritDamageStat(gameObject, 25);
			break;
		case "draugr_bow":
			editSpiritDamageStat(gameObject, 15);
			break;
		case "draugr_axe":
			editSpiritDamageStat(gameObject, 15);
			break;
		case "skeleton_bow":
		case "skeleton_sword":
		case "Ghost_attack":
			editSpiritDamageStat(gameObject, 10);
			break;
		case "skeleton_bow2":
		case "skeleton_mace":
		case "skeleton_sword2":
		case "gd_king_shoot":
		case "Greydwarf_shaman_attack":
		case "GoblinKing_Beam":
		case "GoblinShaman_attack_fireball":
			editSpiritDamageStat(gameObject, 20);
			break;
		case "imp_fireball_attack":
			editSpiritDamageStat(gameObject, 10);
			break;
		}
	}

	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 = -99, int stam = -99, int eitr = -99, int time = -99, int regen = -99)
	{
		ItemDrop component = gameObject.GetComponent<ItemDrop>();
		component.m_itemData.m_shared.m_food = ((hp == -99) ? component.m_itemData.m_shared.m_food : ((float)hp));
		component.m_itemData.m_shared.m_foodStamina = ((stam == -99) ? component.m_itemData.m_shared.m_foodStamina : ((float)stam));
		component.m_itemData.m_shared.m_foodEitr = ((eitr == -99) ? component.m_itemData.m_shared.m_foodEitr : ((float)eitr));
		component.m_itemData.m_shared.m_foodRegen = ((regen == -99) ? component.m_itemData.m_shared.m_foodRegen : ((float)regen));
		component.m_itemData.m_shared.m_foodBurnTime = ((time == -99) ? component.m_itemData.m_shared.m_foodBurnTime : ((float)time));
	}
}