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.Permissions;
using BepInEx;
using BepInEx.Configuration;
using HarmonyLib;
using Jotunn.Configs;
using Jotunn.Entities;
using Jotunn.Managers;
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("RavenwoodRandomRelics")]
[assembly: AssemblyDescription("A Valheim mod that adds custom relics, statues, and decor.")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("James Jones TV")]
[assembly: AssemblyProduct("Ravenwood Random Relics Mod")]
[assembly: AssemblyCopyright("")]
[assembly: AssemblyTrademark("")]
[assembly: ComVisible(false)]
[assembly: Guid("e3243d22-4307-4008-ba36-9f326008cde5")]
[assembly: AssemblyFileVersion("2.2.2")]
[assembly: TargetFramework(".NETFramework,Version=v4.8", FrameworkDisplayName = ".NET Framework 4.8")]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: AssemblyVersion("2.2.2.0")]
namespace RavenwoodRandomRelics;
public class HornOfThor : MonoBehaviour, Hoverable, Interactable
{
private Piece m_piece;
private void Awake()
{
m_piece = ((Component)this).GetComponent<Piece>();
}
public bool Interact(Humanoid user, bool hold, bool alt)
{
//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_003d: Unknown result type (might be due to invalid IL or missing references)
//IL_0042: Unknown result type (might be due to invalid IL or missing references)
//IL_0047: Unknown result type (might be due to invalid IL or missing references)
if (hold)
{
return false;
}
GameObject prefab = ZNetScene.instance.GetPrefab("sfx_gjall_alerted");
if ((Object)(object)prefab != (Object)null)
{
Object.Instantiate<GameObject>(prefab, ((Component)this).transform.position + Vector3.up * 1f, Quaternion.identity);
}
return true;
}
public bool UseItem(Humanoid user, ItemData item)
{
return false;
}
public string GetHoverText()
{
string text = (((Object)(object)m_piece != (Object)null) ? m_piece.m_name : "Horn of Thor");
return text + "\n[<color=yellow><b>E</b></color>] Blow Horn";
}
public string GetHoverName()
{
return ((Object)(object)m_piece != (Object)null) ? m_piece.m_name : "Horn of Thor";
}
}
public class PlacementWatcher : MonoBehaviour
{
public List<GameObject> RegisterList;
private void Start()
{
if (RegisterList != null && !RegisterList.Contains(((Component)this).gameObject))
{
RegisterList.Add(((Component)this).gameObject);
}
}
private void OnDestroy()
{
if (RegisterList != null)
{
RegisterList.Remove(((Component)this).gameObject);
}
}
}
[BepInPlugin("Ravenwood.RandomRelics", "Ravenwood Random Relics", "1.0.5")]
[BepInDependency(/*Could not decode attribute arguments.*/)]
public class RavenwoodRandomRelics : BaseUnityPlugin
{
public const string PluginGUID = "Ravenwood.RandomRelics";
public const string PluginName = "Ravenwood Random Relics";
public const string PluginVersion = "1.0.5";
private AssetBundle relicsBundle;
public static ConfigEntry<string> PlayerPreferredCategory;
private ConfigEntry<bool> LockConfiguration;
private void Awake()
{
//IL_0006: Unknown result type (might be due to invalid IL or missing references)
new Harmony("ravenwood.randomrelics.harmony").PatchAll();
LockConfiguration = ((BaseUnityPlugin)this).Config.Bind<bool>("General", "Lock Configuration", true, "If on, server controls the config and clients cannot change it.");
PlayerPreferredCategory = ((BaseUnityPlugin)this).Config.Bind<string>("UI", "CustomHammerTab", "RavenwoodRelics", "Custom hammer tab category name");
Assembly executingAssembly = Assembly.GetExecutingAssembly();
string text = executingAssembly.GetManifestResourceNames().FirstOrDefault((string r) => r.ToLower().Contains("ravenwoodrandomrelics"));
if (string.IsNullOrEmpty(text))
{
((BaseUnityPlugin)this).Logger.LogError((object)"Could not find embedded asset bundle resource containing 'ravenwoodrandomrelics'.");
return;
}
using (Stream stream = executingAssembly.GetManifestResourceStream(text))
{
if (stream == null)
{
((BaseUnityPlugin)this).Logger.LogError((object)("Embedded asset bundle stream was null for '" + text + "'."));
return;
}
using MemoryStream memoryStream = new MemoryStream();
stream.CopyTo(memoryStream);
relicsBundle = AssetBundle.LoadFromMemory(memoryStream.ToArray());
}
if ((Object)(object)relicsBundle == (Object)null)
{
((BaseUnityPlugin)this).Logger.LogError((object)"Failed to load AssetBundle from embedded resource!");
}
else
{
PrefabManager.OnPrefabsRegistered += RegisterNow;
}
}
private void RegisterNow()
{
if (!((Object)(object)relicsBundle == (Object)null))
{
RelicRegistrar.RegisterAllRelics(relicsBundle);
((BaseUnityPlugin)this).Logger.LogInfo((object)("[RavenwoodRelics] Registration complete. Hammer tab: '" + PlayerPreferredCategory.Value + "'."));
}
}
}
public class RelicRegistration
{
public string PrefabName;
public string DisplayName;
public RequirementConfig[] Requirements;
public string Description;
public int Comfort;
public bool IsWerewolf;
public bool IsHorn;
public RelicRegistration(string prefab, string display, RequirementConfig[] reqs, string desc, int comfort = 0, bool isWerewolf = false, bool isHorn = false)
{
PrefabName = prefab;
DisplayName = display;
Requirements = reqs;
Description = desc;
Comfort = comfort;
IsWerewolf = isWerewolf;
IsHorn = isHorn;
}
}
public static class RelicRegistrar
{
private static readonly List<GameObject> placedWerewolves = new List<GameObject>();
private static bool wasAlreadyRegistered = false;
public static readonly List<RelicRegistration> AllRegistrations = new List<RelicRegistration>
{
new RelicRegistration("valkyrie", "Norse Valkyrie", (RequirementConfig[])(object)new RequirementConfig[2]
{
new RequirementConfig("Bronze", 100, 0, true),
new RequirementConfig("FineWood", 25, 0, true)
}, "Norse Valkyrie."),
new RelicRegistration("armor", "Dark Knight", (RequirementConfig[])(object)new RequirementConfig[2]
{
new RequirementConfig("Iron", 20, 0, true),
new RequirementConfig("FineWood", 15, 0, true)
}, "A custom decorative piece."),
new RelicRegistration("R_KnightArmour", "Kinght Armour", (RequirementConfig[])(object)new RequirementConfig[2]
{
new RequirementConfig("Iron", 20, 0, true),
new RequirementConfig("FineWood", 15, 0, true)
}, "A custom decorative piece."),
new RelicRegistration("OdinGuard", "Heimdall", (RequirementConfig[])(object)new RequirementConfig[2]
{
new RequirementConfig("Bronze", 20, 0, true),
new RequirementConfig("FineWood", 15, 0, true)
}, "Guardian of Bifröst."),
new RelicRegistration("werewolf", "Fenrir the Devourer", (RequirementConfig[])(object)new RequirementConfig[3]
{
new RequirementConfig("TrophyFenring", 1, 0, true),
new RequirementConfig("IronNails", 20, 0, true),
new RequirementConfig("Tar", 20, 0, true)
}, "A custom decorative piece.", 0, isWerewolf: true),
new RelicRegistration("werewolfmirrored", "Fenrir the Devourer mirrored", (RequirementConfig[])(object)new RequirementConfig[3]
{
new RequirementConfig("TrophyFenring", 1, 0, true),
new RequirementConfig("IronNails", 20, 0, true),
new RequirementConfig("Tar", 20, 0, true)
}, "A custom decorative piece.", 0, isWerewolf: true),
new RelicRegistration("werewolfbust", "Fenrir Bust", (RequirementConfig[])(object)new RequirementConfig[2]
{
new RequirementConfig("TrophyFenring", 1, 0, true),
new RequirementConfig("Stone", 20, 0, true)
}, "A custom decorative piece.", 0, isWerewolf: true),
new RelicRegistration("gargoyledog", "Gargoyle I", (RequirementConfig[])(object)new RequirementConfig[3]
{
new RequirementConfig("Stone", 10, 0, true),
new RequirementConfig("FineWood", 5, 0, true),
new RequirementConfig("Coins", 10, 0, true)
}, "A custom decorative piece."),
new RelicRegistration("v2_gargoylestatue", "Gargoyle II", (RequirementConfig[])(object)new RequirementConfig[3]
{
new RequirementConfig("Stone", 10, 0, true),
new RequirementConfig("FineWood", 5, 0, true),
new RequirementConfig("Coins", 10, 0, true)
}, "A custom decorative piece."),
new RelicRegistration("lion", "Lion Statue", (RequirementConfig[])(object)new RequirementConfig[2]
{
new RequirementConfig("Stone", 40, 0, true),
new RequirementConfig("Coins", 40, 0, true)
}, "The Lion King."),
new RelicRegistration("JapaneseStoneLantern", "Japanese Stone Lantern", (RequirementConfig[])(object)new RequirementConfig[2]
{
new RequirementConfig("Stone", 20, 0, true),
new RequirementConfig("Resin", 20, 0, true)
}, "A custom decorative piece."),
new RelicRegistration("pedestalplanter", "Pedestal Planter", (RequirementConfig[])(object)new RequirementConfig[2]
{
new RequirementConfig("Stone", 15, 0, true),
new RequirementConfig("Resin", 20, 0, true)
}, "A decorative stone urn, perfect for gardens or noble estates."),
new RelicRegistration("clock", "Wooden Big Ben Clock", (RequirementConfig[])(object)new RequirementConfig[2]
{
new RequirementConfig("Wood", 25, 0, true),
new RequirementConfig("FineWood", 15, 0, true)
}, "A custom decorative piece."),
new RelicRegistration("SWC", "Vintage Swiss Wooden Cuckoo Clock", (RequirementConfig[])(object)new RequirementConfig[3]
{
new RequirementConfig("Wood", 10, 0, true),
new RequirementConfig("FineWood", 10, 0, true),
new RequirementConfig("Coins", 20, 0, true)
}, "A custom decorative piece."),
new RelicRegistration("HornX", "Horn of Thor", (RequirementConfig[])(object)new RequirementConfig[2]
{
new RequirementConfig("BoneFragments", 25, 0, true),
new RequirementConfig("Copper", 5, 0, true)
}, "Sound the horn to alert your allies.", 0, isWerewolf: false, isHorn: true),
new RelicRegistration("HotAirBalloon", "Hot Air Balloon", (RequirementConfig[])(object)new RequirementConfig[2]
{
new RequirementConfig("GreydwarfEye", 10, 0, true),
new RequirementConfig("Coins", 10, 0, true)
}, "A custom decorative piece.", 1),
new RelicRegistration("Picture1", "Ravenwood Vikings", (RequirementConfig[])(object)new RequirementConfig[2]
{
new RequirementConfig("Wood", 10, 0, true),
new RequirementConfig("FineWood", 10, 0, true)
}, "Custom decorative picture."),
new RelicRegistration("Picture2", "Ravenwood Vikings II", (RequirementConfig[])(object)new RequirementConfig[2]
{
new RequirementConfig("Wood", 10, 0, true),
new RequirementConfig("FineWood", 10, 0, true)
}, "Custom decorative picture."),
new RelicRegistration("Picture3", "Ravenwood Vikings III", (RequirementConfig[])(object)new RequirementConfig[2]
{
new RequirementConfig("Wood", 10, 0, true),
new RequirementConfig("FineWood", 10, 0, true)
}, "Custom decorative picture."),
new RelicRegistration("Picture4", "Ravenwood Vikings IV", (RequirementConfig[])(object)new RequirementConfig[2]
{
new RequirementConfig("Wood", 10, 0, true),
new RequirementConfig("FineWood", 10, 0, true)
}, "Custom decorative picture."),
new RelicRegistration("Picture5", "Ravenwood Vikings V", (RequirementConfig[])(object)new RequirementConfig[2]
{
new RequirementConfig("Wood", 10, 0, true),
new RequirementConfig("FineWood", 10, 0, true)
}, "Custom decorative picture."),
new RelicRegistration("Vikings", "Ravenwood Vikings VI", (RequirementConfig[])(object)new RequirementConfig[2]
{
new RequirementConfig("Wood", 10, 0, true),
new RequirementConfig("FineWood", 10, 0, true)
}, "Custom decorative picture."),
new RelicRegistration("WitchCat", "WitchCat", (RequirementConfig[])(object)new RequirementConfig[1]
{
new RequirementConfig("Coins", 50, 0, true)
}, "A big comfy witchcat. Provides +1 comfort.", 1),
new RelicRegistration("WoodenBear", "Wooden Brown Bear", (RequirementConfig[])(object)new RequirementConfig[2]
{
new RequirementConfig("Coins", 5, 0, true),
new RequirementConfig("FineWood", 5, 0, true)
}, "A custom decorative piece."),
new RelicRegistration("bouquet", "Flower Bouquet", (RequirementConfig[])(object)new RequirementConfig[2]
{
new RequirementConfig("Thistle", 20, 0, true),
new RequirementConfig("Dandelion", 5, 0, true)
}, "A custom decorative piece.", 1),
new RelicRegistration("AsianTeaSet", "Asian Tea Set", (RequirementConfig[])(object)new RequirementConfig[2]
{
new RequirementConfig("Stone", 5, 0, true),
new RequirementConfig("Coins", 5, 0, true)
}, "A custom decorative piece."),
new RelicRegistration("AsianTeaSetPlate", "Asian Tea Set Plate", (RequirementConfig[])(object)new RequirementConfig[2]
{
new RequirementConfig("FineWood", 5, 0, true),
new RequirementConfig("Coins", 5, 0, true)
}, "A custom decorative piece."),
new RelicRegistration("porcelainteaset", "Porcelain Tea Set", (RequirementConfig[])(object)new RequirementConfig[2]
{
new RequirementConfig("Stone", 5, 0, true),
new RequirementConfig("Coins", 5, 0, true)
}, "A custom decorative piece."),
new RelicRegistration("skullgoblet", "Skull Goblet", (RequirementConfig[])(object)new RequirementConfig[2]
{
new RequirementConfig("BoneFragments", 15, 0, true),
new RequirementConfig("Coins", 5, 0, true)
}, "A custom decorative piece."),
new RelicRegistration("TP", "Toilet Paper", (RequirementConfig[])(object)new RequirementConfig[2]
{
new RequirementConfig("Wood", 5, 0, true),
new RequirementConfig("Dandelion", 5, 0, true)
}, "A custom decorative piece."),
new RelicRegistration("v2_NiceChair", "Chair of the Windweaver", (RequirementConfig[])(object)new RequirementConfig[2]
{
new RequirementConfig("Wood", 15, 0, true),
new RequirementConfig("DeerHide", 5, 0, true)
}, "A custom decorative piece."),
new RelicRegistration("v2_PersianRug", "World Tree Rug", (RequirementConfig[])(object)new RequirementConfig[2]
{
new RequirementConfig("FineWood", 2, 0, true),
new RequirementConfig("DeerHide", 2, 0, true)
}, "A custom decorative piece.", 0, isWerewolf: true),
new RelicRegistration("DragonBanner", "The Red Dragon", (RequirementConfig[])(object)new RequirementConfig[3]
{
new RequirementConfig("FineWood", 5, 0, true),
new RequirementConfig("Bronze", 3, 0, true),
new RequirementConfig("JuteRed", 3, 0, true)
}, "A custom decorative piece.", 0, isWerewolf: true),
new RelicRegistration("DutchBanner", "Banner of Kings", (RequirementConfig[])(object)new RequirementConfig[4]
{
new RequirementConfig("FineWood", 2, 0, true),
new RequirementConfig("DeerHide", 2, 0, true),
new RequirementConfig("Bronze", 1, 0, true),
new RequirementConfig("Coins", 5, 0, true)
}, "A custom decorative piece.", 0, isWerewolf: true),
new RelicRegistration("v2_Lionking", "Banner of a Lion", (RequirementConfig[])(object)new RequirementConfig[4]
{
new RequirementConfig("FineWood", 2, 0, true),
new RequirementConfig("DeerHide", 2, 0, true),
new RequirementConfig("Bronze", 1, 0, true),
new RequirementConfig("Coins", 5, 0, true)
}, "A custom decorative piece.", 0, isWerewolf: true),
new RelicRegistration("JapaneseToriiGate", "Japanese Torii Gate I", (RequirementConfig[])(object)new RequirementConfig[2]
{
new RequirementConfig("Wood", 20, 0, true),
new RequirementConfig("FineWood", 20, 0, true)
}, "A custom decorative piece."),
new RelicRegistration("JPGate", "Japanese Torii Gate II", (RequirementConfig[])(object)new RequirementConfig[2]
{
new RequirementConfig("Wood", 20, 0, true),
new RequirementConfig("FineWood", 20, 0, true)
}, "A custom decorative piece."),
new RelicRegistration("Chinese_Lamp", "Warden’s Lantern", (RequirementConfig[])(object)new RequirementConfig[2]
{
new RequirementConfig("Stone", 20, 0, true),
new RequirementConfig("Resin", 20, 0, true)
}, "A custom decorative piece."),
new RelicRegistration("bear", "Bear Statue", (RequirementConfig[])(object)new RequirementConfig[3]
{
new RequirementConfig("Stone", 5, 0, true),
new RequirementConfig("FineWood", 5, 0, true),
new RequirementConfig("Coins", 5, 0, true)
}, "A custom decorative piece."),
new RelicRegistration("blackdragonskeleton", "Dark Angel", (RequirementConfig[])(object)new RequirementConfig[3]
{
new RequirementConfig("Iron", 20, 0, true),
new RequirementConfig("FineWood", 20, 0, true),
new RequirementConfig("Coins", 100, 0, true)
}, "A custom decorative piece."),
new RelicRegistration("dragon", "Draco", (RequirementConfig[])(object)new RequirementConfig[2]
{
new RequirementConfig("Eitr", 333, 0, true),
new RequirementConfig("Coins", 3333, 0, true)
}, "A custom decorative piece."),
new RelicRegistration("throne", "Odin", (RequirementConfig[])(object)new RequirementConfig[3]
{
new RequirementConfig("Stone", 100, 0, true),
new RequirementConfig("Bronze", 100, 0, true),
new RequirementConfig("Coins", 1000, 0, true)
}, "A custom decorative piece."),
new RelicRegistration("greythrone", "Grey throne", (RequirementConfig[])(object)new RequirementConfig[3]
{
new RequirementConfig("Stone", 100, 0, true),
new RequirementConfig("Bronze", 20, 0, true),
new RequirementConfig("Coins", 200, 0, true)
}, "A custom decorative piece."),
new RelicRegistration("whitethrone", "White throne", (RequirementConfig[])(object)new RequirementConfig[3]
{
new RequirementConfig("Stone", 100, 0, true),
new RequirementConfig("Bronze", 20, 0, true),
new RequirementConfig("Coins", 200, 0, true)
}, "A custom decorative piece."),
new RelicRegistration("blackthrone", "Black throne", (RequirementConfig[])(object)new RequirementConfig[3]
{
new RequirementConfig("Stone", 100, 0, true),
new RequirementConfig("Bronze", 20, 0, true),
new RequirementConfig("Coins", 200, 0, true)
}, "A custom decorative piece."),
new RelicRegistration("goldenthrone", "Gold throne", (RequirementConfig[])(object)new RequirementConfig[3]
{
new RequirementConfig("Stone", 100, 0, true),
new RequirementConfig("Bronze", 20, 0, true),
new RequirementConfig("Coins", 200, 0, true)
}, "A custom decorative piece."),
new RelicRegistration("BoatinBottle", "The Black Pearl", (RequirementConfig[])(object)new RequirementConfig[2]
{
new RequirementConfig("Coins", 10, 0, true),
new RequirementConfig("FineWood", 10, 0, true)
}, "A custom decorative piece."),
new RelicRegistration("DeerGlobe", "Deer in Snow Globe", (RequirementConfig[])(object)new RequirementConfig[2]
{
new RequirementConfig("Coins", 10, 0, true),
new RequirementConfig("FineWood", 10, 0, true)
}, "A custom decorative piece."),
new RelicRegistration("Rose", "Rose in a Globe", (RequirementConfig[])(object)new RequirementConfig[2]
{
new RequirementConfig("Thistle", 10, 0, true),
new RequirementConfig("Coins", 10, 0, true)
}, "A custom decorative piece."),
new RelicRegistration("horse", "Horse Brust Statue", (RequirementConfig[])(object)new RequirementConfig[2]
{
new RequirementConfig("Stone", 10, 0, true),
new RequirementConfig("FineWood", 10, 0, true)
}, "A custom decorative piece."),
new RelicRegistration("ItalianCypress0", "Italian Cypress Tree Tall Orange", (RequirementConfig[])(object)new RequirementConfig[1]
{
new RequirementConfig("FineWood", 20, 0, true)
}, "A tall decorative cypress tree."),
new RelicRegistration("ItalianCypress1", "Italian Cypress Tree Tall Green", (RequirementConfig[])(object)new RequirementConfig[1]
{
new RequirementConfig("FineWood", 20, 0, true)
}, "A tall decorative cypress tree."),
new RelicRegistration("ItalianCypress2", "Italian Cypress Tree Medium Green", (RequirementConfig[])(object)new RequirementConfig[1]
{
new RequirementConfig("FineWood", 10, 0, true)
}, "A tall decorative cypress tree."),
new RelicRegistration("ItalianCypress3", "Italian Cypress Small Green", (RequirementConfig[])(object)new RequirementConfig[1]
{
new RequirementConfig("FineWood", 5, 0, true)
}, "A tall decorative cypress tree."),
new RelicRegistration("ItalianCypress4", "Italian Cypress Small Orange", (RequirementConfig[])(object)new RequirementConfig[1]
{
new RequirementConfig("FineWood", 5, 0, true)
}, "A tall decorative cypress tree."),
new RelicRegistration("SM_ItalianCypress_Massive", "Italian Cypress Tree Massive", (RequirementConfig[])(object)new RequirementConfig[1]
{
new RequirementConfig("FineWood", 20, 0, true)
}, "A tall decorative cypress tree."),
new RelicRegistration("SM_ItalianCypress_Large_A", "Italian Cypress Tree Large Wide", (RequirementConfig[])(object)new RequirementConfig[1]
{
new RequirementConfig("FineWood", 10, 0, true)
}, "A tall decorative cypress tree."),
new RelicRegistration("SM_ItalianCypress_Large_B", "Italian Cypress Tree Large Thin", (RequirementConfig[])(object)new RequirementConfig[1]
{
new RequirementConfig("FineWood", 10, 0, true)
}, "A tall decorative cypress tree."),
new RelicRegistration("SM_ItalianCypress_Large_B1", "Italian Cypress Tree Extra Large ", (RequirementConfig[])(object)new RequirementConfig[1]
{
new RequirementConfig("FineWood", 30, 0, true)
}, "A tall decorative cypress tree."),
new RelicRegistration("SM_ItalianCypress_Medium_B", "Italian Cypress Tree Small", (RequirementConfig[])(object)new RequirementConfig[1]
{
new RequirementConfig("FineWood", 5, 0, true)
}, "A tall decorative cypress tree."),
new RelicRegistration("SM_ItalianCypress_Growing_A", "Italian Cypress Tree Growing", (RequirementConfig[])(object)new RequirementConfig[1]
{
new RequirementConfig("FineWood", 5, 0, true)
}, "A tall decorative cypress tree."),
new RelicRegistration("SM_ItalianCypress_Growing_E", "Italian Cypress Tree Growing Wide", (RequirementConfig[])(object)new RequirementConfig[1]
{
new RequirementConfig("FineWood", 5, 0, true)
}, "A tall decorative cypress tree."),
new RelicRegistration("SM_ItalianCypress_Growing_C", "Italian Cypress Tree Growing Thin", (RequirementConfig[])(object)new RequirementConfig[1]
{
new RequirementConfig("FineWood", 5, 0, true)
}, "A tall decorative cypress tree."),
new RelicRegistration("BearHead", "Bear Head Trophy", (RequirementConfig[])(object)new RequirementConfig[2]
{
new RequirementConfig("FineWood", 10, 0, true),
new RequirementConfig("Coins", 40, 0, true)
}, "A custom decorative piece."),
new RelicRegistration("BoarHead", "Boar Head Trophy", (RequirementConfig[])(object)new RequirementConfig[2]
{
new RequirementConfig("FineWood", 10, 0, true),
new RequirementConfig("Coins", 40, 0, true)
}, "A custom decorative piece."),
new RelicRegistration("DeerHead", "Deer Head Trophy", (RequirementConfig[])(object)new RequirementConfig[2]
{
new RequirementConfig("FineWood", 10, 0, true),
new RequirementConfig("Coins", 40, 0, true)
}, "A custom decorative piece."),
new RelicRegistration("ElephantHead", "Elefant Head Trophy", (RequirementConfig[])(object)new RequirementConfig[2]
{
new RequirementConfig("FineWood", 10, 0, true),
new RequirementConfig("Coins", 40, 0, true)
}, "A custom decorative piece."),
new RelicRegistration("HippoHead", "Hipo Head Trophy", (RequirementConfig[])(object)new RequirementConfig[2]
{
new RequirementConfig("FineWood", 10, 0, true),
new RequirementConfig("Coins", 40, 0, true)
}, "A custom decorative piece."),
new RelicRegistration("LionHead", "Lion Head Trophy", (RequirementConfig[])(object)new RequirementConfig[2]
{
new RequirementConfig("FineWood", 10, 0, true),
new RequirementConfig("Coins", 40, 0, true)
}, "A custom decorative piece."),
new RelicRegistration("RhinoHead", "Rhino Head Trophy", (RequirementConfig[])(object)new RequirementConfig[2]
{
new RequirementConfig("FineWood", 10, 0, true),
new RequirementConfig("Coins", 40, 0, true)
}, "A custom decorative piece."),
new RelicRegistration("Picture_01_A", "Picture 01 A", (RequirementConfig[])(object)new RequirementConfig[2]
{
new RequirementConfig("Wood", 5, 0, true),
new RequirementConfig("FineWood", 5, 0, true)
}, "A custom decorative piece."),
new RelicRegistration("Picture_02_A", "Picture 02 A", (RequirementConfig[])(object)new RequirementConfig[2]
{
new RequirementConfig("Wood", 5, 0, true),
new RequirementConfig("FineWood", 5, 0, true)
}, "A custom decorative piece."),
new RelicRegistration("Picture_03_A", "Picture 03 A", (RequirementConfig[])(object)new RequirementConfig[2]
{
new RequirementConfig("Wood", 5, 0, true),
new RequirementConfig("FineWood", 5, 0, true)
}, "A custom decorative piece."),
new RelicRegistration("Picture_04_A", "Picture 04 A", (RequirementConfig[])(object)new RequirementConfig[2]
{
new RequirementConfig("Wood", 5, 0, true),
new RequirementConfig("FineWood", 5, 0, true)
}, "A custom decorative piece."),
new RelicRegistration("Picture_05_A", "Picture 05 A", (RequirementConfig[])(object)new RequirementConfig[2]
{
new RequirementConfig("Wood", 5, 0, true),
new RequirementConfig("FineWood", 5, 0, true)
}, "A custom decorative piece."),
new RelicRegistration("Picture_06_A", "Picture 06 A", (RequirementConfig[])(object)new RequirementConfig[2]
{
new RequirementConfig("Wood", 5, 0, true),
new RequirementConfig("FineWood", 5, 0, true)
}, "A custom decorative piece."),
new RelicRegistration("Picture_07_A", "Picture 07 A", (RequirementConfig[])(object)new RequirementConfig[2]
{
new RequirementConfig("Wood", 5, 0, true),
new RequirementConfig("FineWood", 5, 0, true)
}, "A custom decorative piece."),
new RelicRegistration("Picture_08_A", "Picture 08 A", (RequirementConfig[])(object)new RequirementConfig[2]
{
new RequirementConfig("Wood", 5, 0, true),
new RequirementConfig("FineWood", 5, 0, true)
}, "A custom decorative piece."),
new RelicRegistration("Picture_09_A", "Picture 09 A", (RequirementConfig[])(object)new RequirementConfig[2]
{
new RequirementConfig("Wood", 5, 0, true),
new RequirementConfig("FineWood", 5, 0, true)
}, "A custom decorative piece."),
new RelicRegistration("Picture_10_A", "Picture 10 A", (RequirementConfig[])(object)new RequirementConfig[2]
{
new RequirementConfig("Wood", 5, 0, true),
new RequirementConfig("FineWood", 5, 0, true)
}, "A custom decorative piece."),
new RelicRegistration("Picture_01_B", "Picture 01 B", (RequirementConfig[])(object)new RequirementConfig[2]
{
new RequirementConfig("Wood", 5, 0, true),
new RequirementConfig("FineWood", 5, 0, true)
}, "A custom decorative piece."),
new RelicRegistration("Picture_02_B", "Picture 02 B", (RequirementConfig[])(object)new RequirementConfig[2]
{
new RequirementConfig("Wood", 5, 0, true),
new RequirementConfig("FineWood", 5, 0, true)
}, "A custom decorative piece."),
new RelicRegistration("Picture_03_B", "Picture 03 B", (RequirementConfig[])(object)new RequirementConfig[2]
{
new RequirementConfig("Wood", 5, 0, true),
new RequirementConfig("FineWood", 5, 0, true)
}, "A custom decorative piece."),
new RelicRegistration("Picture_04_B", "Picture 04 B", (RequirementConfig[])(object)new RequirementConfig[2]
{
new RequirementConfig("Wood", 5, 0, true),
new RequirementConfig("FineWood", 5, 0, true)
}, "A custom decorative piece."),
new RelicRegistration("Picture_05_B", "Picture 05 B", (RequirementConfig[])(object)new RequirementConfig[2]
{
new RequirementConfig("Wood", 5, 0, true),
new RequirementConfig("FineWood", 5, 0, true)
}, "A custom decorative piece."),
new RelicRegistration("Picture_06_B", "Picture 06 B", (RequirementConfig[])(object)new RequirementConfig[2]
{
new RequirementConfig("Wood", 5, 0, true),
new RequirementConfig("FineWood", 5, 0, true)
}, "A custom decorative piece."),
new RelicRegistration("Picture_07_B", "Picture 07 B", (RequirementConfig[])(object)new RequirementConfig[2]
{
new RequirementConfig("Wood", 5, 0, true),
new RequirementConfig("FineWood", 5, 0, true)
}, "A custom decorative piece."),
new RelicRegistration("Picture_08_B", "Picture 08 B", (RequirementConfig[])(object)new RequirementConfig[2]
{
new RequirementConfig("Wood", 5, 0, true),
new RequirementConfig("FineWood", 5, 0, true)
}, "A custom decorative piece."),
new RelicRegistration("Picture_09_B", "Picture 09 B", (RequirementConfig[])(object)new RequirementConfig[2]
{
new RequirementConfig("Wood", 5, 0, true),
new RequirementConfig("FineWood", 5, 0, true)
}, "A custom decorative piece."),
new RelicRegistration("Picture_10_B", "Picture 10 B", (RequirementConfig[])(object)new RequirementConfig[2]
{
new RequirementConfig("Wood", 5, 0, true),
new RequirementConfig("FineWood", 5, 0, true)
}, "A custom decorative piece.")
};
public static void RegisterAllRelics(AssetBundle bundle)
{
if (wasAlreadyRegistered || (Object)(object)bundle == (Object)null)
{
return;
}
int num = 0;
int num2 = 0;
foreach (RelicRegistration allRegistration in AllRegistrations)
{
if (RegisterRelic(bundle, allRegistration))
{
num++;
}
else
{
num2++;
}
}
wasAlreadyRegistered = true;
}
private static bool RegisterRelic(AssetBundle bundle, RelicRegistration reg)
{
//IL_00b3: Unknown result type (might be due to invalid IL or missing references)
//IL_00ba: Expected O, but got Unknown
//IL_00d0: Unknown result type (might be due to invalid IL or missing references)
//IL_00d5: Unknown result type (might be due to invalid IL or missing references)
//IL_00dc: Unknown result type (might be due to invalid IL or missing references)
//IL_00e8: Expected O, but got Unknown
//IL_00f9: Unknown result type (might be due to invalid IL or missing references)
//IL_00fe: Unknown result type (might be due to invalid IL or missing references)
//IL_0106: Unknown result type (might be due to invalid IL or missing references)
//IL_0112: Expected O, but got Unknown
//IL_014f: Unknown result type (might be due to invalid IL or missing references)
//IL_0156: Expected O, but got Unknown
//IL_016d: Unknown result type (might be due to invalid IL or missing references)
//IL_0172: Unknown result type (might be due to invalid IL or missing references)
//IL_017a: Unknown result type (might be due to invalid IL or missing references)
//IL_0186: Expected O, but got Unknown
//IL_0197: Unknown result type (might be due to invalid IL or missing references)
//IL_019c: Unknown result type (might be due to invalid IL or missing references)
//IL_01a4: Unknown result type (might be due to invalid IL or missing references)
//IL_01b0: Expected O, but got Unknown
//IL_0223: Unknown result type (might be due to invalid IL or missing references)
//IL_0228: Unknown result type (might be due to invalid IL or missing references)
//IL_0234: Unknown result type (might be due to invalid IL or missing references)
//IL_0245: Unknown result type (might be due to invalid IL or missing references)
//IL_024e: Unknown result type (might be due to invalid IL or missing references)
//IL_025d: Expected O, but got Unknown
//IL_028a: Unknown result type (might be due to invalid IL or missing references)
//IL_0294: Expected O, but got Unknown
if ((Object)(object)bundle == (Object)null)
{
return false;
}
GameObject val = bundle.LoadAsset<GameObject>(reg.PrefabName);
if ((Object)(object)val == (Object)null)
{
return false;
}
((Object)val).name = reg.PrefabName;
ZNetView val2 = val.GetComponent<ZNetView>();
if ((Object)(object)val2 == (Object)null)
{
val2 = val.AddComponent<ZNetView>();
}
val2.m_persistent = true;
val2.m_syncInitialScale = true;
Piece val3 = val.GetComponent<Piece>() ?? val.AddComponent<Piece>();
val3.m_name = reg.DisplayName;
val3.m_description = reg.Description;
val3.m_groundOnly = false;
SFX_VFX_Registry.GetEffects(reg.PrefabName, out var vfxPlace, out var sfxPlace, out var destroyVFX, out var destroySFX);
EffectList val4 = new EffectList();
List<EffectData> list = new List<EffectData>();
if ((Object)(object)vfxPlace != (Object)null)
{
list.Add(new EffectData
{
m_prefab = vfxPlace,
m_enabled = true
});
}
if ((Object)(object)sfxPlace != (Object)null)
{
list.Add(new EffectData
{
m_prefab = sfxPlace,
m_enabled = true
});
}
val4.m_effectPrefabs = list.ToArray();
val3.m_placeEffect = val4;
WearNTear val5 = val.GetComponent<WearNTear>() ?? val.AddComponent<WearNTear>();
val5.m_health = 1000000f;
val5.m_noRoofWear = true;
EffectList val6 = new EffectList();
List<EffectData> list2 = new List<EffectData>();
if ((Object)(object)destroyVFX != (Object)null)
{
list2.Add(new EffectData
{
m_prefab = destroyVFX,
m_enabled = true
});
}
if ((Object)(object)destroySFX != (Object)null)
{
list2.Add(new EffectData
{
m_prefab = destroySFX,
m_enabled = true
});
}
val6.m_effectPrefabs = list2.ToArray();
val5.m_destroyedEffect = val6;
Sprite val7 = bundle.LoadAsset<Sprite>(reg.PrefabName);
if ((Object)(object)val7 != (Object)null)
{
val3.m_icon = val7;
}
string craftingStation = "piece_workbench";
if (reg.PrefabName.StartsWith("ItalianCypress") || reg.PrefabName.StartsWith("SM_ItalianCypress"))
{
craftingStation = null;
}
PieceConfig val8 = new PieceConfig
{
PieceTable = "Hammer",
Category = RavenwoodRandomRelics.PlayerPreferredCategory.Value,
CraftingStation = craftingStation,
Requirements = reg.Requirements
};
if (reg.IsHorn && (Object)(object)val.GetComponent<HornOfThor>() == (Object)null)
{
val.AddComponent<HornOfThor>();
}
PieceManager.Instance.AddPiece(new CustomPiece(val, true, val8));
if (reg.IsWerewolf && (Object)(object)val.GetComponent<PlacementWatcher>() == (Object)null)
{
val.AddComponent<PlacementWatcher>().RegisterList = placedWerewolves;
}
return true;
}
}
public static class SFX_VFX_Registry
{
private static readonly HashSet<string> MetalObjects = new HashSet<string> { "OdinGuard", "armor", "Chinese_Lamp", "blackdragonskeleton" };
private static readonly HashSet<string> WoodObjects = new HashSet<string>
{
"WoodenBear", "v2_PersianRug", "HotAirBalloon", "clock", "JapaneseToriiGate", "JPGate", "TP", "Vikings", "SWC", "Trophy_Deer",
"ItalianCypress0", "ItalianCypress1", "ItalianCypress2", "ItalianCypress3", "ItalianCypress4", "SM_ItalianCypress_Massive", "SM_ItalianCypress_Large_A", "SM_ItalianCypress_Large_B", "SM_ItalianCypress_Large_B1", "SM_ItalianCypress_Medium_B",
"SM_ItalianCypress_Growing_A", "SM_ItalianCypress_Growing_E", "SM_ItalianCypress_Growing_C", "Picture1", "Picture2", "Picture3", "Picture4", "Picture5", "Picture_01_A", "Picture_02_A",
"Picture_03_A", "Picture_04_A", "Picture_05_A", "Picture_06_A", "Picture_07_A", "Picture_08_A", "Picture_09_A", "Picture_10_A", "Picture_01_B", "Picture_02_B",
"Picture_03_B", "Picture_04_B", "Picture_05_B", "Picture_06_B", "Picture_07_B", "Picture_08_B", "Picture_09_B", "Picture_10_B"
};
private static readonly HashSet<string> CrystalObjects = new HashSet<string> { "skullgoblet", "porcelainteaset", "AsianTeaSet", "AsianTeaSetPlate", "DeerGlobe", "BoatinBottle", "Rose" };
public static void GetEffects(string prefabName, out GameObject vfxPlace, out GameObject sfxPlace, out GameObject destroyVFX, out GameObject destroySFX)
{
if (prefabName == "HornX")
{
vfxPlace = null;
ZNetScene instance = ZNetScene.instance;
sfxPlace = ((instance != null) ? instance.GetPrefab("sfx_build_hammer_crystal") : null);
destroyVFX = null;
ZNetScene instance2 = ZNetScene.instance;
destroySFX = ((instance2 != null) ? instance2.GetPrefab("sfx_clay_pot_break") : null);
}
else if (MetalObjects.Contains(prefabName))
{
ZNetScene instance3 = ZNetScene.instance;
vfxPlace = ((instance3 != null) ? instance3.GetPrefab("vfx_Place_stone") : null);
ZNetScene instance4 = ZNetScene.instance;
sfxPlace = ((instance4 != null) ? instance4.GetPrefab("sfx_build_hammer_metal") : null);
ZNetScene instance5 = ZNetScene.instance;
destroyVFX = ((instance5 != null) ? instance5.GetPrefab("vfx_destroyed") : null);
ZNetScene instance6 = ZNetScene.instance;
destroySFX = ((instance6 != null) ? instance6.GetPrefab("sfx_metal_blocked") : null);
}
else if (WoodObjects.Contains(prefabName))
{
ZNetScene instance7 = ZNetScene.instance;
vfxPlace = ((instance7 != null) ? instance7.GetPrefab("vfx_Place_wood") : null);
ZNetScene instance8 = ZNetScene.instance;
sfxPlace = ((instance8 != null) ? instance8.GetPrefab("sfx_build_hammer_wood") : null);
ZNetScene instance9 = ZNetScene.instance;
destroyVFX = ((instance9 != null) ? instance9.GetPrefab("vfx_destroyed") : null);
ZNetScene instance10 = ZNetScene.instance;
destroySFX = ((instance10 != null) ? instance10.GetPrefab("sfx_wood_break") : null);
}
else if (prefabName == "bouquet")
{
ZNetScene instance11 = ZNetScene.instance;
vfxPlace = ((instance11 != null) ? instance11.GetPrefab("vfx_Place_flower") : null);
ZNetScene instance12 = ZNetScene.instance;
sfxPlace = ((instance12 != null) ? instance12.GetPrefab("sfx_build_cultivator") : null);
ZNetScene instance13 = ZNetScene.instance;
destroyVFX = ((instance13 != null) ? instance13.GetPrefab("vfx_bush_destroyed") : null);
ZNetScene instance14 = ZNetScene.instance;
destroySFX = ((instance14 != null) ? instance14.GetPrefab("sfx_bush_hit") : null);
}
else if (CrystalObjects.Contains(prefabName))
{
vfxPlace = null;
ZNetScene instance15 = ZNetScene.instance;
sfxPlace = ((instance15 != null) ? instance15.GetPrefab("sfx_build_hammer_crystal") : null);
destroyVFX = null;
ZNetScene instance16 = ZNetScene.instance;
destroySFX = ((instance16 != null) ? instance16.GetPrefab("sfx_clay_pot_break") : null);
}
else if (prefabName == "werewolf" || prefabName == "werewolfmirrored")
{
vfxPlace = null;
ZNetScene instance17 = ZNetScene.instance;
sfxPlace = ((instance17 != null) ? instance17.GetPrefab("sfx_fenring_howl") : null);
destroyVFX = null;
ZNetScene instance18 = ZNetScene.instance;
destroySFX = ((instance18 != null) ? instance18.GetPrefab("sfx_fenring_death") : null);
}
else
{
ZNetScene instance19 = ZNetScene.instance;
vfxPlace = ((instance19 != null) ? instance19.GetPrefab("vfx_Place_stone") : null);
ZNetScene instance20 = ZNetScene.instance;
sfxPlace = ((instance20 != null) ? instance20.GetPrefab("sfx_build_hammer_stone") : null);
ZNetScene instance21 = ZNetScene.instance;
destroyVFX = ((instance21 != null) ? instance21.GetPrefab("vfx_destroyed") : null);
ZNetScene instance22 = ZNetScene.instance;
destroySFX = ((instance22 != null) ? instance22.GetPrefab("sfx_rock_destroyed") : null);
}
}
}