using System;
using System.Collections;
using System.Collections.Generic;
using System.Diagnostics;
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 Jotunn;
using Jotunn.Configs;
using Jotunn.Entities;
using Jotunn.Managers;
using Microsoft.CodeAnalysis;
using UnityEngine;
[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)]
[assembly: AssemblyTitle("ProtectionRunes")]
[assembly: AssemblyDescription("Protect your bases from enemies with the Runes of the Forsaken")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("proflupin")]
[assembly: AssemblyProduct("ProtectionRunes")]
[assembly: AssemblyCopyright("Copyright © proflupin 2025")]
[assembly: AssemblyTrademark("")]
[assembly: ComVisible(false)]
[assembly: Guid("7e61f470-fb41-4c6b-a654-4e199ea7d009")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: TargetFramework(".NETFramework,Version=v4.7.2", FrameworkDisplayName = "")]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: AssemblyVersion("1.0.0.0")]
[module: RefSafetyRules(11)]
namespace Microsoft.CodeAnalysis
{
[CompilerGenerated]
[Microsoft.CodeAnalysis.Embedded]
internal sealed class EmbeddedAttribute : Attribute
{
}
}
namespace System.Runtime.CompilerServices
{
[CompilerGenerated]
[Microsoft.CodeAnalysis.Embedded]
[AttributeUsage(AttributeTargets.Module, AllowMultiple = false, Inherited = false)]
internal sealed class RefSafetyRulesAttribute : Attribute
{
public readonly int Version;
public RefSafetyRulesAttribute(int P_0)
{
Version = P_0;
}
}
}
namespace ProtectionRunes
{
[BepInPlugin("proflupin.protectionrunes", "ProtectionRunes", "1.0.0")]
[BepInDependency(/*Could not decode attribute arguments.*/)]
public class ProtectionRunes : BaseUnityPlugin
{
public const string PluginGUID = "proflupin.protectionrunes";
public const string PluginName = "ProtectionRunes";
public const string PluginVersion = "1.0.0";
private ConfigEntry<bool> useCubeShape;
private ConfigEntry<float> eikthyrRadius;
private ConfigEntry<float> elderRadius;
private ConfigEntry<float> bonemassRadius;
private ConfigEntry<float> moderRadius;
private ConfigEntry<float> yagluthRadius;
private ConfigEntry<float> queenRadius;
private ConfigEntry<float> faderRadius;
private ConfigEntry<string> meadowsEnemies;
private ConfigEntry<string> blackForestEnemies;
private ConfigEntry<string> swampEnemies;
private ConfigEntry<string> mountainEnemies;
private ConfigEntry<string> plainsEnemies;
private ConfigEntry<string> mistlandsEnemies;
private ConfigEntry<string> ashlandsEnemies;
private ConfigEntry<string> eikthyrRecipeStr;
private ConfigEntry<int> eikthyrMinStation;
private ConfigEntry<string> elderRecipeStr;
private ConfigEntry<int> elderMinStation;
private ConfigEntry<string> bonemassRecipeStr;
private ConfigEntry<int> bonemassMinStation;
private ConfigEntry<string> moderRecipeStr;
private ConfigEntry<int> moderMinStation;
private ConfigEntry<string> yagluthRecipeStr;
private ConfigEntry<int> yagluthMinStation;
private ConfigEntry<string> queenRecipeStr;
private ConfigEntry<int> queenMinStation;
private ConfigEntry<string> faderRecipeStr;
private ConfigEntry<int> faderMinStation;
private static readonly int PieceLayerMask = LayerMask.GetMask(new string[1] { "piece" });
private const string EikthyrRunePrefab = "EikthyrRune";
private const string ElderRunePrefab = "ElderRune";
private const string BonemassRunePrefab = "BonemassRune";
private const string ModerRunePrefab = "ModerRune";
private const string YagluthRunePrefab = "YagluthRune";
private const string QueenRunePrefab = "QueenRune";
private const string FaderRunePrefab = "FaderRune";
private void Awake()
{
//IL_0431: Unknown result type (might be due to invalid IL or missing references)
//IL_043b: Expected O, but got Unknown
//IL_045b: Unknown result type (might be due to invalid IL or missing references)
//IL_0465: Expected O, but got Unknown
//IL_0489: Unknown result type (might be due to invalid IL or missing references)
//IL_0493: Expected O, but got Unknown
//IL_04b7: Unknown result type (might be due to invalid IL or missing references)
//IL_04c1: Expected O, but got Unknown
//IL_04e5: Unknown result type (might be due to invalid IL or missing references)
//IL_04ef: Expected O, but got Unknown
//IL_0513: Unknown result type (might be due to invalid IL or missing references)
//IL_051d: Expected O, but got Unknown
//IL_0541: Unknown result type (might be due to invalid IL or missing references)
//IL_054b: Expected O, but got Unknown
useCubeShape = ((BaseUnityPlugin)this).Config.Bind<bool>("General", "UseCubeShape", false, "Use cube-shaped protection area instead of sphere.");
eikthyrRadius = ((BaseUnityPlugin)this).Config.Bind<float>("Radii", "EikthyrRadius", 50f, "Protection radius for Eikthyr Rune (Meadows).");
elderRadius = ((BaseUnityPlugin)this).Config.Bind<float>("Radii", "ElderRadius", 50f, "Protection radius for Elder Rune (Black Forest).");
bonemassRadius = ((BaseUnityPlugin)this).Config.Bind<float>("Radii", "BonemassRadius", 50f, "Protection radius for Bonemass Rune (Swamp).");
moderRadius = ((BaseUnityPlugin)this).Config.Bind<float>("Radii", "ModerRadius", 50f, "Protection radius for Moder Rune (Mountain).");
yagluthRadius = ((BaseUnityPlugin)this).Config.Bind<float>("Radii", "YagluthRadius", 50f, "Protection radius for Yagluth Rune (Plains).");
queenRadius = ((BaseUnityPlugin)this).Config.Bind<float>("Radii", "QueenRadius", 50f, "Protection radius for Queen Rune (Mistlands).");
faderRadius = ((BaseUnityPlugin)this).Config.Bind<float>("Radii", "FaderRadius", 50f, "Protection radius for Fader Rune (Ashlands).");
meadowsEnemies = ((BaseUnityPlugin)this).Config.Bind<string>("Enemies", "Meadows", "Greyling,Neck,Boar,Deer", "Comma-separated enemy name substrings to block in Meadows.");
blackForestEnemies = ((BaseUnityPlugin)this).Config.Bind<string>("Enemies", "BlackForest", "Troll,Skeleton,Ghost,Greydwarf,Greydwarf_Elite,Greydwarf_Shaman", "Comma-separated enemy name substrings to block in Black Forest.");
swampEnemies = ((BaseUnityPlugin)this).Config.Bind<string>("Enemies", "Swamp", "Draugr,Draugr_Elite,Wraith,Surtling,Leech", "Comma-separated enemy name substrings to block in Swamp.");
mountainEnemies = ((BaseUnityPlugin)this).Config.Bind<string>("Enemies", "Mountain", "Wolf,Hatchling,Fenring,SGolem", "Comma-separated enemy name substrings to block in Mountain.");
plainsEnemies = ((BaseUnityPlugin)this).Config.Bind<string>("Enemies", "Plains", "Goblin,GoblinBrute,GoblinShaman,Lox,Deathsquito", "Comma-separated enemy name substrings to block in Plains.");
mistlandsEnemies = ((BaseUnityPlugin)this).Config.Bind<string>("Enemies", "Mistlands", "Seeker,Dvergr,Tick,SeekerBrute,SeekerBrood,Gjall", "Comma-separated enemy name substrings to block in Mistlands.");
ashlandsEnemies = ((BaseUnityPlugin)this).Config.Bind<string>("Enemies", "Ashlands", "Asksvin,Volture,BonemawSerpent,BlobLava,FallenValkyrie,Charred_Mage,Charred_Archer,Charred_Twitcher,Morgen,Charred_Melee", "Comma-separated enemy name substrings to block in Ashlands.");
eikthyrRecipeStr = ((BaseUnityPlugin)this).Config.Bind<string>("Recipes", "Eikthyr", "Stone:20,TrophyEikthyr:1", "Comma-separated item:amount for Eikthyr Rune recipe.");
eikthyrMinStation = ((BaseUnityPlugin)this).Config.Bind<int>("Recipes", "EikthyrMinStation", 1, "Minimum station level for Eikthyr Rune.");
elderRecipeStr = ((BaseUnityPlugin)this).Config.Bind<string>("Recipes", "Elder", "Stone:20,TrophyTheElder:1", "Comma-separated item:amount for Elder Rune recipe.");
elderMinStation = ((BaseUnityPlugin)this).Config.Bind<int>("Recipes", "ElderMinStation", 1, "Minimum station level for Elder Rune.");
bonemassRecipeStr = ((BaseUnityPlugin)this).Config.Bind<string>("Recipes", "Bonemass", "Stone:20,TrophyBonemass:1", "Comma-separated item:amount for Bonemass Rune recipe.");
bonemassMinStation = ((BaseUnityPlugin)this).Config.Bind<int>("Recipes", "BonemassMinStation", 1, "Minimum station level for Bonemass Rune.");
moderRecipeStr = ((BaseUnityPlugin)this).Config.Bind<string>("Recipes", "Moder", "Stone:20,TrophyDragonQueen:1", "Comma-separated item:amount for Moder Rune recipe.");
moderMinStation = ((BaseUnityPlugin)this).Config.Bind<int>("Recipes", "ModerMinStation", 1, "Minimum station level for Moder Rune.");
yagluthRecipeStr = ((BaseUnityPlugin)this).Config.Bind<string>("Recipes", "Yagluth", "Stone:20,TrophyGoblinKing:1", "Comma-separated item:amount for Yagluth Rune recipe.");
yagluthMinStation = ((BaseUnityPlugin)this).Config.Bind<int>("Recipes", "YagluthMinStation", 1, "Minimum station level for Yagluth Rune.");
queenRecipeStr = ((BaseUnityPlugin)this).Config.Bind<string>("Recipes", "Queen", "Stone:20,TrophySeekerQueen:1", "Comma-separated item:amount for Queen Rune recipe.");
queenMinStation = ((BaseUnityPlugin)this).Config.Bind<int>("Recipes", "QueenMinStation", 1, "Minimum station level for Queen Rune.");
faderRecipeStr = ((BaseUnityPlugin)this).Config.Bind<string>("Recipes", "Fader", "Stone:20,TrophyFader:1", "Comma-separated item:amount for Fader Rune recipe.");
faderMinStation = ((BaseUnityPlugin)this).Config.Bind<int>("Recipes", "FaderMinStation", 1, "Minimum station level for Fader Rune.");
PieceConfig val = EikthyrRuneConfig();
GameObject prefab = PrefabManager.Instance.GetPrefab("EikthyrRune");
PieceManager.Instance.AddPiece(new CustomPiece(prefab, true, val));
PieceConfig val2 = ElderRuneConfig();
GameObject prefab2 = PrefabManager.Instance.GetPrefab("ElderRune");
PieceManager.Instance.AddPiece(new CustomPiece(prefab2, true, val2));
PieceConfig val3 = BonemassRuneConfig();
GameObject prefab3 = PrefabManager.Instance.GetPrefab("BonemassRune");
PieceManager.Instance.AddPiece(new CustomPiece(prefab3, true, val3));
PieceConfig val4 = ModerRuneConfig();
GameObject prefab4 = PrefabManager.Instance.GetPrefab("ModerRune");
PieceManager.Instance.AddPiece(new CustomPiece(prefab4, true, val4));
PieceConfig val5 = YagluthRuneConfig();
GameObject prefab5 = PrefabManager.Instance.GetPrefab("YagluthRune");
PieceManager.Instance.AddPiece(new CustomPiece(prefab5, true, val5));
PieceConfig val6 = QueenRuneConfig();
GameObject prefab6 = PrefabManager.Instance.GetPrefab("QueenRune");
PieceManager.Instance.AddPiece(new CustomPiece(prefab6, true, val6));
PieceConfig val7 = FaderRuneConfig();
GameObject prefab7 = PrefabManager.Instance.GetPrefab("FaderRune");
PieceManager.Instance.AddPiece(new CustomPiece(prefab7, true, val7));
((MonoBehaviour)this).StartCoroutine(SpawnProtectionCoroutine());
Logger.LogInfo((object)"ProtectionRunes loaded successfully.");
}
private PieceConfig EikthyrRuneConfig()
{
//IL_0001: Unknown result type (might be due to invalid IL or missing references)
//IL_0006: Unknown result type (might be due to invalid IL or missing references)
//IL_0012: Unknown result type (might be due to invalid IL or missing references)
//IL_001e: Unknown result type (might be due to invalid IL or missing references)
//IL_002a: Unknown result type (might be due to invalid IL or missing references)
//IL_0040: Unknown result type (might be due to invalid IL or missing references)
//IL_0049: Expected O, but got Unknown
//IL_0063: Unknown result type (might be due to invalid IL or missing references)
//IL_006d: Expected O, but got Unknown
//IL_00a0: Unknown result type (might be due to invalid IL or missing references)
//IL_00c9: Unknown result type (might be due to invalid IL or missing references)
PieceConfig val = new PieceConfig
{
Name = "Eikthyr Rune",
Description = "Blocks Meadows enemy spawns in a radius.",
PieceTable = PieceTables.Hammer,
Icon = GUIManager.Instance.GetSprite("TrophyEikthyr"),
Enabled = true
};
RecipeConfig val2 = EikthyrRuneRecipeConfig();
val.Requirements = val2.Requirements;
ItemManager.Instance.AddRecipe(new CustomRecipe(val2));
GameObject val3 = PrefabManager.Instance.CreateClonedPrefab("EikthyrRune", "gaurd_stone");
Piece component = val3.GetComponent<Piece>();
component.m_description = "Place to shield against Meadows foes.";
BiomeProtector biomeProtector = val3.AddComponent<BiomeProtector>();
biomeProtector.biome = (Biome)1;
biomeProtector.radius = eikthyrRadius.Value;
SetRuneInnerColor(val3, new Color(0.1f, 0.3f, 0.1f));
return val;
}
private RecipeConfig EikthyrRuneRecipeConfig()
{
//IL_0001: Unknown result type (might be due to invalid IL or missing references)
//IL_0006: Unknown result type (might be due to invalid IL or missing references)
//IL_001e: Unknown result type (might be due to invalid IL or missing references)
//IL_0031: Expected O, but got Unknown
return new RecipeConfig
{
Requirements = ParseRecipeString(eikthyrRecipeStr.Value),
MinStationLevel = eikthyrMinStation.Value
};
}
private PieceConfig ElderRuneConfig()
{
//IL_0001: Unknown result type (might be due to invalid IL or missing references)
//IL_0006: Unknown result type (might be due to invalid IL or missing references)
//IL_0012: Unknown result type (might be due to invalid IL or missing references)
//IL_001e: Unknown result type (might be due to invalid IL or missing references)
//IL_002a: Unknown result type (might be due to invalid IL or missing references)
//IL_0040: Unknown result type (might be due to invalid IL or missing references)
//IL_0049: Expected O, but got Unknown
//IL_0063: Unknown result type (might be due to invalid IL or missing references)
//IL_006d: Expected O, but got Unknown
//IL_00a0: Unknown result type (might be due to invalid IL or missing references)
//IL_00c9: Unknown result type (might be due to invalid IL or missing references)
PieceConfig val = new PieceConfig
{
Name = "Elder Rune",
Description = "Blocks Black Forest enemy spawns in a radius.",
PieceTable = PieceTables.Hammer,
Icon = GUIManager.Instance.GetSprite("TrophyTheElder"),
Enabled = true
};
RecipeConfig val2 = ElderRuneRecipeConfig();
val.Requirements = val2.Requirements;
ItemManager.Instance.AddRecipe(new CustomRecipe(val2));
GameObject val3 = PrefabManager.Instance.CreateClonedPrefab("ElderRune", "gaurd_stone");
Piece component = val3.GetComponent<Piece>();
component.m_description = "Place to shield against Black Forest foes.";
BiomeProtector biomeProtector = val3.AddComponent<BiomeProtector>();
biomeProtector.biome = (Biome)8;
biomeProtector.radius = elderRadius.Value;
SetRuneInnerColor(val3, new Color(0.35f, 0.22f, 0.1f));
return val;
}
private RecipeConfig ElderRuneRecipeConfig()
{
//IL_0001: Unknown result type (might be due to invalid IL or missing references)
//IL_0006: Unknown result type (might be due to invalid IL or missing references)
//IL_001e: Unknown result type (might be due to invalid IL or missing references)
//IL_0031: Expected O, but got Unknown
return new RecipeConfig
{
Requirements = ParseRecipeString(elderRecipeStr.Value),
MinStationLevel = elderMinStation.Value
};
}
private PieceConfig BonemassRuneConfig()
{
//IL_0001: Unknown result type (might be due to invalid IL or missing references)
//IL_0006: Unknown result type (might be due to invalid IL or missing references)
//IL_0012: Unknown result type (might be due to invalid IL or missing references)
//IL_001e: Unknown result type (might be due to invalid IL or missing references)
//IL_002a: Unknown result type (might be due to invalid IL or missing references)
//IL_0040: Unknown result type (might be due to invalid IL or missing references)
//IL_0049: Expected O, but got Unknown
//IL_0063: Unknown result type (might be due to invalid IL or missing references)
//IL_006d: Expected O, but got Unknown
//IL_00a0: Unknown result type (might be due to invalid IL or missing references)
//IL_00c9: Unknown result type (might be due to invalid IL or missing references)
PieceConfig val = new PieceConfig
{
Name = "Bonemass Rune",
Description = "Blocks Swamp enemy spawns in a radius.",
PieceTable = PieceTables.Hammer,
Icon = GUIManager.Instance.GetSprite("TrophyBonemass"),
Enabled = true
};
RecipeConfig val2 = BonemassRuneRecipeConfig();
val.Requirements = val2.Requirements;
ItemManager.Instance.AddRecipe(new CustomRecipe(val2));
GameObject val3 = PrefabManager.Instance.CreateClonedPrefab("BonemassRune", "gaurd_stone");
Piece component = val3.GetComponent<Piece>();
component.m_description = "Place to shield against Swamp foes.";
BiomeProtector biomeProtector = val3.AddComponent<BiomeProtector>();
biomeProtector.biome = (Biome)2;
biomeProtector.radius = bonemassRadius.Value;
SetRuneInnerColor(val3, new Color(0.5f, 0.7f, 0.3f));
return val;
}
private RecipeConfig BonemassRuneRecipeConfig()
{
//IL_0001: Unknown result type (might be due to invalid IL or missing references)
//IL_0006: Unknown result type (might be due to invalid IL or missing references)
//IL_001e: Unknown result type (might be due to invalid IL or missing references)
//IL_0031: Expected O, but got Unknown
return new RecipeConfig
{
Requirements = ParseRecipeString(bonemassRecipeStr.Value),
MinStationLevel = bonemassMinStation.Value
};
}
private PieceConfig ModerRuneConfig()
{
//IL_0001: Unknown result type (might be due to invalid IL or missing references)
//IL_0006: Unknown result type (might be due to invalid IL or missing references)
//IL_0012: Unknown result type (might be due to invalid IL or missing references)
//IL_001e: Unknown result type (might be due to invalid IL or missing references)
//IL_002a: Unknown result type (might be due to invalid IL or missing references)
//IL_0040: Unknown result type (might be due to invalid IL or missing references)
//IL_0049: Expected O, but got Unknown
//IL_0063: Unknown result type (might be due to invalid IL or missing references)
//IL_006d: Expected O, but got Unknown
//IL_00a0: Unknown result type (might be due to invalid IL or missing references)
//IL_00c9: Unknown result type (might be due to invalid IL or missing references)
PieceConfig val = new PieceConfig
{
Name = "Moder Rune",
Description = "Blocks Mountain enemy spawns in a radius.",
PieceTable = PieceTables.Hammer,
Icon = GUIManager.Instance.GetSprite("TrophyDragonQueen"),
Enabled = true
};
RecipeConfig val2 = ModerRuneRecipeConfig();
val.Requirements = val2.Requirements;
ItemManager.Instance.AddRecipe(new CustomRecipe(val2));
GameObject val3 = PrefabManager.Instance.CreateClonedPrefab("ModerRune", "gaurd_stone");
Piece component = val3.GetComponent<Piece>();
component.m_description = "Place to shield against Mountain foes.";
BiomeProtector biomeProtector = val3.AddComponent<BiomeProtector>();
biomeProtector.biome = (Biome)4;
biomeProtector.radius = moderRadius.Value;
SetRuneInnerColor(val3, new Color(0.5f, 0.6f, 0.7f));
return val;
}
private RecipeConfig ModerRuneRecipeConfig()
{
//IL_0001: Unknown result type (might be due to invalid IL or missing references)
//IL_0006: Unknown result type (might be due to invalid IL or missing references)
//IL_001e: Unknown result type (might be due to invalid IL or missing references)
//IL_0031: Expected O, but got Unknown
return new RecipeConfig
{
Requirements = ParseRecipeString(moderRecipeStr.Value),
MinStationLevel = moderMinStation.Value
};
}
private PieceConfig YagluthRuneConfig()
{
//IL_0001: Unknown result type (might be due to invalid IL or missing references)
//IL_0006: Unknown result type (might be due to invalid IL or missing references)
//IL_0012: Unknown result type (might be due to invalid IL or missing references)
//IL_001e: Unknown result type (might be due to invalid IL or missing references)
//IL_002a: Unknown result type (might be due to invalid IL or missing references)
//IL_0040: Unknown result type (might be due to invalid IL or missing references)
//IL_0049: Expected O, but got Unknown
//IL_0063: Unknown result type (might be due to invalid IL or missing references)
//IL_006d: Expected O, but got Unknown
//IL_00a1: Unknown result type (might be due to invalid IL or missing references)
//IL_00ca: Unknown result type (might be due to invalid IL or missing references)
PieceConfig val = new PieceConfig
{
Name = "Yagluth Rune",
Description = "Blocks Plains enemy spawns in a radius.",
PieceTable = PieceTables.Hammer,
Icon = GUIManager.Instance.GetSprite("TrophyGoblinKing"),
Enabled = true
};
RecipeConfig val2 = YagluthRuneRecipeConfig();
val.Requirements = val2.Requirements;
ItemManager.Instance.AddRecipe(new CustomRecipe(val2));
GameObject val3 = PrefabManager.Instance.CreateClonedPrefab("YagluthRune", "gaurd_stone");
Piece component = val3.GetComponent<Piece>();
component.m_description = "Place to shield against Plains foes.";
BiomeProtector biomeProtector = val3.AddComponent<BiomeProtector>();
biomeProtector.biome = (Biome)16;
biomeProtector.radius = yagluthRadius.Value;
SetRuneInnerColor(val3, new Color(0.95f, 0.85f, 0.2f));
return val;
}
private RecipeConfig YagluthRuneRecipeConfig()
{
//IL_0001: Unknown result type (might be due to invalid IL or missing references)
//IL_0006: Unknown result type (might be due to invalid IL or missing references)
//IL_001e: Unknown result type (might be due to invalid IL or missing references)
//IL_0031: Expected O, but got Unknown
return new RecipeConfig
{
Requirements = ParseRecipeString(yagluthRecipeStr.Value),
MinStationLevel = yagluthMinStation.Value
};
}
private PieceConfig QueenRuneConfig()
{
//IL_0001: Unknown result type (might be due to invalid IL or missing references)
//IL_0006: Unknown result type (might be due to invalid IL or missing references)
//IL_0012: Unknown result type (might be due to invalid IL or missing references)
//IL_001e: Unknown result type (might be due to invalid IL or missing references)
//IL_002a: Unknown result type (might be due to invalid IL or missing references)
//IL_0040: Unknown result type (might be due to invalid IL or missing references)
//IL_0049: Expected O, but got Unknown
//IL_0063: Unknown result type (might be due to invalid IL or missing references)
//IL_006d: Expected O, but got Unknown
//IL_00a4: Unknown result type (might be due to invalid IL or missing references)
//IL_00cd: Unknown result type (might be due to invalid IL or missing references)
PieceConfig val = new PieceConfig
{
Name = "Queen Rune",
Description = "Blocks Mistlands enemy spawns in a radius.",
PieceTable = PieceTables.Hammer,
Icon = GUIManager.Instance.GetSprite("TrophySeekerQueen"),
Enabled = true
};
RecipeConfig val2 = QueenRuneRecipeConfig();
val.Requirements = val2.Requirements;
ItemManager.Instance.AddRecipe(new CustomRecipe(val2));
GameObject val3 = PrefabManager.Instance.CreateClonedPrefab("QueenRune", "gaurd_stone");
Piece component = val3.GetComponent<Piece>();
component.m_description = "Place to shield against Mistlands foes.";
BiomeProtector biomeProtector = val3.AddComponent<BiomeProtector>();
biomeProtector.biome = (Biome)512;
biomeProtector.radius = queenRadius.Value;
SetRuneInnerColor(val3, new Color(0.6f, 0.2f, 0.7f));
return val;
}
private RecipeConfig QueenRuneRecipeConfig()
{
//IL_0001: Unknown result type (might be due to invalid IL or missing references)
//IL_0006: Unknown result type (might be due to invalid IL or missing references)
//IL_001e: Unknown result type (might be due to invalid IL or missing references)
//IL_0031: Expected O, but got Unknown
return new RecipeConfig
{
Requirements = ParseRecipeString(queenRecipeStr.Value),
MinStationLevel = queenMinStation.Value
};
}
private PieceConfig FaderRuneConfig()
{
//IL_0001: Unknown result type (might be due to invalid IL or missing references)
//IL_0006: Unknown result type (might be due to invalid IL or missing references)
//IL_0012: Unknown result type (might be due to invalid IL or missing references)
//IL_001e: Unknown result type (might be due to invalid IL or missing references)
//IL_002a: Unknown result type (might be due to invalid IL or missing references)
//IL_0040: Unknown result type (might be due to invalid IL or missing references)
//IL_0049: Expected O, but got Unknown
//IL_0063: Unknown result type (might be due to invalid IL or missing references)
//IL_006d: Expected O, but got Unknown
//IL_00a1: Unknown result type (might be due to invalid IL or missing references)
//IL_00ca: Unknown result type (might be due to invalid IL or missing references)
PieceConfig val = new PieceConfig
{
Name = "Fader Rune",
Description = "Blocks Ashlands enemy spawns in a radius.",
PieceTable = PieceTables.Hammer,
Icon = GUIManager.Instance.GetSprite("TrophyFader"),
Enabled = true
};
RecipeConfig val2 = FaderRuneRecipeConfig();
val.Requirements = val2.Requirements;
ItemManager.Instance.AddRecipe(new CustomRecipe(val2));
GameObject val3 = PrefabManager.Instance.CreateClonedPrefab("FaderRune", "gaurd_stone");
Piece component = val3.GetComponent<Piece>();
component.m_description = "Place to shield against Ashlands foes.";
BiomeProtector biomeProtector = val3.AddComponent<BiomeProtector>();
biomeProtector.biome = (Biome)32;
biomeProtector.radius = faderRadius.Value;
SetRuneInnerColor(val3, new Color(0.95f, 0.5f, 0.1f));
return val;
}
private void SetRuneInnerColor(GameObject prefab, Color color)
{
//IL_0218: Unknown result type (might be due to invalid IL or missing references)
//IL_021d: Unknown result type (might be due to invalid IL or missing references)
//IL_0221: Unknown result type (might be due to invalid IL or missing references)
//IL_0222: Unknown result type (might be due to invalid IL or missing references)
//IL_01b7: Unknown result type (might be due to invalid IL or missing references)
//IL_0151: Unknown result type (might be due to invalid IL or missing references)
MeshRenderer[] componentsInChildren = prefab.GetComponentsInChildren<MeshRenderer>(true);
MeshRenderer[] array = componentsInChildren;
foreach (MeshRenderer val in array)
{
string text = ((Object)val).name.ToLower();
bool flag = text.Contains("guard") || text.Contains("gaurd") || text.Contains("ward") || text.Contains("stone");
if (!flag)
{
Material[] sharedMaterials = ((Renderer)val).sharedMaterials;
foreach (Material val2 in sharedMaterials)
{
if ((Object)(object)val2 != (Object)null && ((Object)val2).name != null)
{
string text2 = ((Object)val2).name.ToLower();
if (text2.Contains("guard") || text2.Contains("gaurd") || text2.Contains("ward") || text2.Contains("stone"))
{
flag = true;
break;
}
}
}
}
if (!flag)
{
continue;
}
Material[] materials = ((Renderer)val).materials;
foreach (Material val3 in materials)
{
if ((Object)(object)val3 == (Object)null)
{
continue;
}
try
{
val3.color = color;
}
catch
{
}
string[] array2 = new string[5] { "_Color", "_BaseColor", "_TintColor", "_EmissionColor", "_EmColor" };
string[] array3 = array2;
foreach (string text3 in array3)
{
if (val3.HasProperty(text3))
{
try
{
val3.SetColor(text3, color);
}
catch
{
}
}
}
}
}
ParticleSystem[] componentsInChildren2 = prefab.GetComponentsInChildren<ParticleSystem>(true);
ParticleSystem[] array4 = componentsInChildren2;
foreach (ParticleSystem val4 in array4)
{
try
{
MainModule main = val4.main;
((MainModule)(ref main)).startColor = MinMaxGradient.op_Implicit(color);
}
catch
{
}
}
}
private RecipeConfig FaderRuneRecipeConfig()
{
//IL_0001: Unknown result type (might be due to invalid IL or missing references)
//IL_0006: Unknown result type (might be due to invalid IL or missing references)
//IL_001e: Unknown result type (might be due to invalid IL or missing references)
//IL_0031: Expected O, but got Unknown
return new RecipeConfig
{
Requirements = ParseRecipeString(faderRecipeStr.Value),
MinStationLevel = faderMinStation.Value
};
}
private RequirementConfig[] ParseRecipeString(string recipeStr)
{
//IL_0061: Unknown result type (might be due to invalid IL or missing references)
//IL_0066: Unknown result type (might be due to invalid IL or missing references)
//IL_0076: Unknown result type (might be due to invalid IL or missing references)
//IL_0084: Expected O, but got Unknown
List<RequirementConfig> list = new List<RequirementConfig>();
string[] array = recipeStr.Split(new char[1] { ',' });
string[] array2 = array;
foreach (string text in array2)
{
string[] array3 = text.Trim().Split(new char[1] { ':' });
if (array3.Length == 2 && int.TryParse(array3[1].Trim(), out var result))
{
list.Add(new RequirementConfig
{
Item = array3[0].Trim(),
Amount = result
});
}
}
return list.ToArray();
}
private IEnumerator SpawnProtectionCoroutine()
{
while (true)
{
yield return (object)new WaitForSeconds(1f);
BlockSpawnsInProtectedAreas();
}
}
private void BlockSpawnsInProtectedAreas()
{
//IL_005f: 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_0034: Unknown result type (might be due to invalid IL or missing references)
//IL_003f: Unknown result type (might be due to invalid IL or missing references)
//IL_0044: Unknown result type (might be due to invalid IL or missing references)
//IL_00a0: Unknown result type (might be due to invalid IL or missing references)
//IL_00c7: Unknown result type (might be due to invalid IL or missing references)
//IL_00d7: Unknown result type (might be due to invalid IL or missing references)
BiomeProtector[] array = Object.FindObjectsByType<BiomeProtector>((FindObjectsSortMode)0);
BiomeProtector[] array2 = array;
foreach (BiomeProtector biomeProtector in array2)
{
Collider[] array3 = ((!useCubeShape.Value) ? Physics.OverlapSphere(((Component)biomeProtector).transform.position, biomeProtector.radius, PieceLayerMask) : Physics.OverlapBox(((Component)biomeProtector).transform.position, Vector3.one * biomeProtector.radius, Quaternion.identity, PieceLayerMask));
Collider[] array4 = array3;
foreach (Collider val in array4)
{
Character component = ((Component)val).GetComponent<Character>();
if ((Object)(object)component != (Object)null && IsBiomeEnemy(component, biomeProtector.biome))
{
component.SetHealth(0f);
Logger.LogInfo((object)$"Blocked {biomeProtector.biome} spawn at {((Component)biomeProtector).transform.position}");
}
}
}
}
private bool IsBiomeEnemy(Character character, Biome biome)
{
//IL_0019: Unknown result type (might be due to invalid IL or missing references)
string name = ((Object)character).name.ToLower();
string enemiesConfig = GetEnemiesConfig(biome);
List<string> source = (from s in enemiesConfig.Split(new char[1] { ',' })
select s.Trim().ToLower()).ToList();
return source.Any((string e) => name.Contains(e));
}
private string GetEnemiesConfig(Biome biome)
{
//IL_0001: Unknown result type (might be due to invalid IL or missing references)
//IL_0002: Unknown result type (might be due to invalid IL or missing references)
//IL_0003: Unknown result type (might be due to invalid IL or missing references)
//IL_0004: Unknown result type (might be due to invalid IL or missing references)
//IL_0005: Unknown result type (might be due to invalid IL or missing references)
//IL_0007: Invalid comparison between Unknown and I4
//IL_0029: Unknown result type (might be due to invalid IL or missing references)
//IL_002c: Invalid comparison between Unknown and I4
//IL_0009: Unknown result type (might be due to invalid IL or missing references)
//IL_000b: Unknown result type (might be due to invalid IL or missing references)
//IL_0021: Expected I4, but got Unknown
//IL_0030: Unknown result type (might be due to invalid IL or missing references)
//IL_0033: Invalid comparison between Unknown and I4
//IL_0023: Unknown result type (might be due to invalid IL or missing references)
//IL_0025: Invalid comparison between Unknown and I4
//IL_0037: Unknown result type (might be due to invalid IL or missing references)
//IL_003d: Invalid comparison between Unknown and I4
if ((int)biome <= 8)
{
switch (biome - 1)
{
default:
if ((int)biome != 8)
{
break;
}
return blackForestEnemies.Value;
case 0:
return meadowsEnemies.Value;
case 1:
return swampEnemies.Value;
case 3:
return mountainEnemies.Value;
case 2:
break;
}
}
else
{
if ((int)biome == 16)
{
return plainsEnemies.Value;
}
if ((int)biome == 32)
{
return ashlandsEnemies.Value;
}
if ((int)biome == 512)
{
return mistlandsEnemies.Value;
}
}
return "";
}
}
public class BiomeProtector : MonoBehaviour
{
public Biome biome;
private float _radius;
private const string ZDO_BIOME_KEY = "pr_biome";
private const string ZDO_RADIUS_KEY = "pr_radius";
private ZNetView _zv;
public float radius
{
get
{
return _radius;
}
set
{
_radius = value;
if ((Object)(object)_zv != (Object)null && _zv.IsValid())
{
ZDO zDO = _zv.GetZDO();
if (zDO != null)
{
zDO.Set("pr_radius", _radius);
}
}
}
}
private void Awake()
{
//IL_009a: Unknown result type (might be due to invalid IL or missing references)
//IL_00a4: Expected I4, but got Unknown
//IL_0072: Unknown result type (might be due to invalid IL or missing references)
_zv = ((Component)this).GetComponent<ZNetView>();
if (!((Object)(object)_zv != (Object)null) || !_zv.IsValid())
{
return;
}
ZDO zDO = _zv.GetZDO();
if (zDO != null)
{
if (zDO.GetInt("pr_biome", int.MinValue) != int.MinValue)
{
biome = (Biome)zDO.GetInt("pr_biome", 0);
radius = zDO.GetFloat("pr_radius", radius);
}
else
{
zDO.Set("pr_biome", (int)biome);
zDO.Set("pr_radius", radius);
}
}
}
private void OnDestroy()
{
}
}
}