using System;
using System.Collections;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
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 CustomClasses;
using DM;
using HarmonyLib;
using Landfall.TABS;
using Landfall.TABS.AI.Components.Modifiers;
using Landfall.TABS.AI.Systems;
using Landfall.TABS.UnitEditor;
using Landfall.TABS.Workshop;
using SLMA;
using Unity.Entities;
using UnityEngine;
using UnityEngine.Events;
using UnityEngine.SceneManagement;
[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)]
[assembly: AssemblyTitle("MiddleEarthRing")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("GeeztJeez")]
[assembly: AssemblyProduct("MiddleEarthRing")]
[assembly: AssemblyCopyright("Copyright © 2024")]
[assembly: AssemblyTrademark("")]
[assembly: ComVisible(false)]
[assembly: Guid("7acfaef0-7669-4401-8bff-5a9a02e18c75")]
[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.2.0")]
[module: UnverifiableCode]
namespace MiddleEarthRing
{
public static class UManager
{
public class Utility : MonoBehaviour
{
public static class PrimitiveHelper
{
private static Dictionary<PrimitiveType, Mesh> primitiveMeshes;
public static GameObject CreatePrimitive(PrimitiveType type, bool withCollider)
{
//IL_0017: Unknown result type (might be due to invalid IL or missing references)
//IL_001c: Unknown result type (might be due to invalid IL or missing references)
//IL_0022: Unknown result type (might be due to invalid IL or missing references)
//IL_002d: Unknown result type (might be due to invalid IL or missing references)
//IL_0035: Expected O, but got Unknown
//IL_0003: Unknown result type (might be due to invalid IL or missing references)
if (withCollider)
{
return GameObject.CreatePrimitive(type);
}
GameObject val = new GameObject(((object)(PrimitiveType)(ref type)).ToString());
val.AddComponent<MeshFilter>().sharedMesh = GetPrimitiveMesh(type);
val.AddComponent<MeshRenderer>();
return val;
}
public static Mesh GetPrimitiveMesh(PrimitiveType type)
{
//IL_0005: Unknown result type (might be due to invalid IL or missing references)
//IL_0019: Unknown result type (might be due to invalid IL or missing references)
//IL_000d: Unknown result type (might be due to invalid IL or missing references)
if (!primitiveMeshes.ContainsKey(type))
{
CreatePrimitiveMesh(type);
}
return primitiveMeshes[type];
}
private static Mesh CreatePrimitiveMesh(PrimitiveType type)
{
//IL_0000: Unknown result type (might be due to invalid IL or missing references)
//IL_001c: Unknown result type (might be due to invalid IL or missing references)
GameObject obj = GameObject.CreatePrimitive(type);
Mesh sharedMesh = obj.GetComponent<MeshFilter>().sharedMesh;
Object.Destroy((Object)(object)obj);
primitiveMeshes[type] = sharedMesh;
return sharedMesh;
}
static PrimitiveHelper()
{
primitiveMeshes = new Dictionary<PrimitiveType, Mesh>();
}
}
public static class ItemCategorizer
{
public static void SetTag(GameObject item, string categoryName = "Middle Earth Ring", TagType tagType = 0)
{
//IL_0018: Unknown result type (might be due to invalid IL or missing references)
//IL_0020: 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)
try
{
CharacterItem componentInChildren = item.GetComponentInChildren<CharacterItem>();
if (Object.op_Implicit((Object)(object)componentInChildren))
{
componentInChildren.tags = new List<Tag>
{
new Tag
{
tagType = tagType,
value = categoryName
}
};
}
else
{
Debug.LogError((object)(((Object)item).name + "doesn't contain CharacterItem!"));
}
}
catch (Exception ex)
{
Debug.LogError((object)ex);
}
}
}
public static Sprite LoadBundleTextureToSprite(string name)
{
//IL_000b: Unknown result type (might be due to invalid IL or missing references)
//IL_0011: Expected O, but got Unknown
//IL_0031: 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)
Texture2D val = (Texture2D)bundle.LoadAsset(name);
((Texture)val).filterMode = (FilterMode)0;
return Sprite.Create(val, new Rect(0f, 0f, (float)((Texture)val).width, (float)((Texture)val).height), new Vector2(0.5f, 0.5f));
}
public static GameObject LoadBundleGameObject(string name)
{
//IL_000b: Unknown result type (might be due to invalid IL or missing references)
//IL_0011: Expected O, but got Unknown
return (GameObject)bundle.LoadAsset(name);
}
public static AudioClip LoadBundleAudioClip(string name)
{
//IL_000b: Unknown result type (might be due to invalid IL or missing references)
//IL_0011: Expected O, but got Unknown
return (AudioClip)bundle.LoadAsset(name);
}
public static Material LoadBundleMaterial(string name)
{
//IL_000b: Unknown result type (might be due to invalid IL or missing references)
//IL_0011: Expected O, but got Unknown
return (Material)bundle.LoadAsset(name);
}
public static RuntimeAnimatorController LoadBundleController(string name)
{
//IL_000b: Unknown result type (might be due to invalid IL or missing references)
//IL_0011: Expected O, but got Unknown
return (RuntimeAnimatorController)bundle.LoadAsset(name);
}
public static Faction SetFactionHidden(Faction faction)
{
s.SetField<Faction>(faction, "m_isSecret", (object)true);
s.SetField<Faction>(faction, "m_lockSecrets", (object)true);
return faction;
}
}
public static string comment;
public static AssetBundle bundle;
public static void Init(LandfallContentDatabase db)
{
//IL_0053: Unknown result type (might be due to invalid IL or missing references)
//IL_0058: Unknown result type (might be due to invalid IL or missing references)
//IL_0183: Unknown result type (might be due to invalid IL or missing references)
//IL_018d: Expected O, but got Unknown
//IL_05b8: Unknown result type (might be due to invalid IL or missing references)
//IL_05cc: Expected O, but got Unknown
LoadBundle("middleearthringbundle");
comment = "----------------------------------------------------------------------------------------------------------------------------";
comment = "Customizing Faction";
comment = "----------------------------------------------------------------------------------------------------------------------------";
Faction val = SLMATool.CreateFaction("Immortal Warlords", (UnitBlueprint[])null, Utility.LoadBundleTextureToSprite("Nordic_warlord"), 12435343);
val.m_FactionColor = new Color(0.1f, 0.1f, 0.1f);
s.SetField<Faction>(val, "m_isSecret", (object)true);
s.SetField<Faction>(val, "m_lockSecrets", (object)true);
comment = "----------------------------------------------------------------------------------------------------------------------------";
comment = "Custom Units";
comment = "----------------------------------------------------------------------------------------------------------------------------";
comment = "--------- Main Units ----------";
SLMATool.CreateUnit("Ancient Warrior", (UnitBlueprint)null, val, Utility.LoadBundleTextureToSprite("Ancient_Sword_Shield_Soldier"));
SLMATool.CreateUnit("Ancient Archer", (UnitBlueprint)null, val, Utility.LoadBundleTextureToSprite("Ancient_Archers"));
SLMATool.CreateUnit("Stone Man", (UnitBlueprint)null, val, Utility.LoadBundleTextureToSprite("Golem"));
SLMATool.CreateUnit("Semi-Undead Blacksmith", (UnitBlueprint)null, val, Utility.LoadBundleTextureToSprite("Half-Revenant_Smith"));
SLMATool.CreateUnit("Half-Undead Warrior", (UnitBlueprint)null, val, Utility.LoadBundleTextureToSprite("Half-Revenant_Warrior"));
SLMATool.CreateUnit("Warlord Necromancer", (UnitBlueprint)null, val, Utility.LoadBundleTextureToSprite("Necromancer"));
SLMATool.CreateUnit("Warlord Commander", (UnitBlueprint)null, val, Utility.LoadBundleTextureToSprite("Warlord_Monitor"));
comment = "--------- Secret Units ----------";
SLMATool.AddUnitToFaction(SLMATool.CreateUnit("Black Swordsman", (UnitBlueprint)null, (Faction)null, Utility.LoadBundleTextureToSprite("icon_guts")), Utility.SetFactionHidden((Faction)SLMALoader.SDic["factions"]["FantasyEvil"]), 8);
comment = "----------------------------------------------------------------------------------------------------------------------------";
comment = "Custom Weapons";
comment = "----------------------------------------------------------------------------------------------------------------------------";
Utility.ItemCategorizer.SetTag(UPool.MyPool.AddObject("Thrown_Soulfire", Utility.LoadBundleGameObject("Thrown_Soulfire"), true, (HideFlags)52, (Sprite)null, 62342432, true), "Middle Earth Ring", (TagType)0);
Utility.ItemCategorizer.SetTag(UPool.MyPool.AddObject("UndeadWarhammer", Utility.LoadBundleGameObject("UndeadWarhammer"), true, (HideFlags)52, (Sprite)null, 124512442, true), "Middle Earth Ring", (TagType)0);
Utility.ItemCategorizer.SetTag(UPool.MyPool.AddObject("ChoppedSteelSlasherSword", Utility.LoadBundleGameObject("ChoppedSteelSlasherSword"), true, (HideFlags)52, (Sprite)null, 52894398, true), "Middle Earth Ring", (TagType)0);
Utility.ItemCategorizer.SetTag(UPool.MyPool.AddObject("FirefistPunch", Utility.LoadBundleGameObject("FirefistPunch"), true, (HideFlags)52, (Sprite)null, 32532412, true), "Middle Earth Ring", (TagType)0);
Utility.ItemCategorizer.SetTag(UPool.MyPool.AddObject("IronworkerHammer", Utility.LoadBundleGameObject("IronworkerHammer"), true, (HideFlags)52, (Sprite)null, 325431342, true), "Middle Earth Ring", (TagType)0);
Utility.ItemCategorizer.SetTag(UPool.MyPool.AddObject("UndeadBook", Utility.LoadBundleGameObject("UndeadBook"), true, (HideFlags)52, (Sprite)null, 67345352, true), "Middle Earth Ring", (TagType)0);
Utility.ItemCategorizer.SetTag(UPool.MyPool.AddObject("UndeadStaff", Utility.LoadBundleGameObject("UndeadStaff"), true, (HideFlags)52, (Sprite)null, 235236234, true), "Middle Earth Ring", (TagType)0);
Utility.ItemCategorizer.SetTag(UPool.MyPool.AddObject("SimpleHeavyAxe", Utility.LoadBundleGameObject("SimpleHeavyAxe"), true, (HideFlags)52, (Sprite)null, 7345234, true), "Middle Earth Ring", (TagType)0);
Utility.ItemCategorizer.SetTag(UPool.MyPool.AddObject("AncientArcherBow", Utility.LoadBundleGameObject("AncientArcherBow"), true, (HideFlags)52, (Sprite)null, 34243452, true), "Middle Earth Ring", (TagType)0);
Utility.ItemCategorizer.SetTag(UPool.MyPool.AddObject("AncientWarriorShield", Utility.LoadBundleGameObject("AncientWarriorShield"), true, (HideFlags)52, (Sprite)null, 7545234, true), "Middle Earth Ring", (TagType)0);
Utility.ItemCategorizer.SetTag(UPool.MyPool.AddObject("AncientWarriorSword", Utility.LoadBundleGameObject("AncientWarriorSword"), true, (HideFlags)52, (Sprite)null, 64234323, true), "Middle Earth Ring", (TagType)0);
Utility.ItemCategorizer.SetTag(UPool.MyPool.AddObject("GutsDragonslayer", Utility.LoadBundleGameObject("GutsDragonslayer"), true, (HideFlags)52, (Sprite)null, 63443234, true), "Middle Earth Ring", (TagType)0);
comment = "----------------------------------------------------------------------------------------------------------------------------";
comment = "Custom Abilities";
comment = "----------------------------------------------------------------------------------------------------------------------------";
Utility.ItemCategorizer.SetTag(UPool.MyPool.AddObject("Move_BackpoofDodge", Utility.LoadBundleGameObject("Move_BackpoofDodge"), true, (HideFlags)52, (Sprite)null, 5324122, true), "Middle Earth Ring", (TagType)0);
Utility.ItemCategorizer.SetTag(UPool.MyPool.AddObject("Move_HellfireAppraisal", Utility.LoadBundleGameObject("Move_HellfireAppraisal"), true, (HideFlags)52, (Sprite)null, 5234343, true), "Middle Earth Ring", (TagType)0);
Utility.ItemCategorizer.SetTag(UPool.MyPool.AddObject("Move_SummonReinforcement", Utility.LoadBundleGameObject("Move_SummonReinforcement"), true, (HideFlags)52, (Sprite)null, 62344323, true), "Middle Earth Ring", (TagType)0);
Utility.ItemCategorizer.SetTag(UPool.MyPool.AddObject("Move_GrapplingCharge", Utility.LoadBundleGameObject("Move_GrapplingCharge"), true, (HideFlags)52, (Sprite)null, 2145312, true), "Middle Earth Ring", (TagType)0);
Utility.ItemCategorizer.SetTag(UPool.MyPool.AddObject("Move_GolemCarve", Utility.LoadBundleGameObject("Move_GolemCarve"), true, (HideFlags)52, (Sprite)null, 32523324, true), "Middle Earth Ring", (TagType)0);
Utility.ItemCategorizer.SetTag(UPool.MyPool.AddObject("Move_HardenedBodyPassive", Utility.LoadBundleGameObject("Move_HardenedBodyPassive"), true, (HideFlags)52, (Sprite)null, 23524234, true), "Middle Earth Ring", (TagType)0);
Utility.ItemCategorizer.SetTag(UPool.MyPool.AddObject("Move_SoulsAttackCommand", Utility.LoadBundleGameObject("Move_SoulsAttackCommand"), true, (HideFlags)52, (Sprite)null, 62431256, true), "Middle Earth Ring", (TagType)0);
Utility.ItemCategorizer.SetTag(UPool.MyPool.AddObject("Move_HardRockPassive", Utility.LoadBundleGameObject("Move_HardRockPassive"), true, (HideFlags)52, (Sprite)null, 23451231, true), "Middle Earth Ring", (TagType)0);
Utility.ItemCategorizer.SetTag(UPool.MyPool.AddObject("Move_StrugglerPassive", Utility.LoadBundleGameObject("Move_StrugglerPassive"), true, (HideFlags)52, (Sprite)null, 23423423, true), "Middle Earth Ring", (TagType)0);
Utility.ItemCategorizer.SetTag(UPool.MyPool.AddObject("Move_BattlefieldExperience", (GameObject)SLMALoader.SDic["moves"]["Head_up"], true, (HideFlags)52, (Sprite)null, 53242213, true), "Middle Earth Ring", (TagType)0);
Utility.ItemCategorizer.SetTag(UPool.MyPool.AddObject("Move_JumpSlam", Utility.LoadBundleGameObject("Move_JumpSlam"), true, (HideFlags)52, (Sprite)null, 643534213, true), "Middle Earth Ring", (TagType)0);
Utility.ItemCategorizer.SetTag(UPool.MyPool.AddObject("Move_StrongParry", Utility.LoadBundleGameObject("Move_StrongParry"), true, (HideFlags)52, (Sprite)null, 53243221, true), "Middle Earth Ring", (TagType)0);
Utility.ItemCategorizer.SetTag(UPool.MyPool.AddObject("Move_BigSlash", Utility.LoadBundleGameObject("Move_BigSlash"), true, (HideFlags)52, (Sprite)null, 513213213, true), "Middle Earth Ring", (TagType)0);
comment = "----------------------------------------------------------------------------------------------------------------------------";
comment = "Custom Unit Bases";
comment = "----------------------------------------------------------------------------------------------------------------------------";
Utility.ItemCategorizer.SetTag(UPool.MyPool.AddObject("Humanoid_Undead_Buff", Utility.LoadBundleGameObject("Humanoid_Undead_Buff"), true, (HideFlags)52, (Sprite)null, 235236324, true), "Middle Earth Ring", (TagType)0);
Utility.ItemCategorizer.SetTag(UPool.MyPool.AddObject("HumanoidRottenBase", Utility.LoadBundleGameObject("HumanoidRottenBase"), true, (HideFlags)52, (Sprite)null, 5234233, true), "Middle Earth Ring", (TagType)0);
Utility.ItemCategorizer.SetTag(UPool.MyPool.AddObject("StoneMan_UnitBase", Utility.LoadBundleGameObject("StoneMan_UnitBase"), true, (HideFlags)52, (Sprite)null, 9052831, true), "Middle Earth Ring", (TagType)0);
Utility.ItemCategorizer.SetTag(UPool.MyPool.AddObject("AncientArcherBase", Utility.LoadBundleGameObject("AncientArcherBase"), true, (HideFlags)52, (Sprite)null, 2342412, true), "Middle Earth Ring", (TagType)0);
Utility.ItemCategorizer.SetTag(UPool.MyPool.AddObject("Humanoid_Buff", Utility.LoadBundleGameObject("Humanoid_Buff"), true, (HideFlags)52, (Sprite)null, 32432123, true), "Middle Earth Ring", (TagType)0);
comment = "----------------------------------------------------------------------------------------------------------------------------";
comment = "Custom Clothing";
comment = "----------------------------------------------------------------------------------------------------------------------------";
Utility.ItemCategorizer.SetTag(UPool.MyPool.AddObject("SpawnEyes_HalfUndead", Utility.LoadBundleGameObject("SpawnEyes_HalfUndead"), true, (HideFlags)52, (Sprite)null, 1245213, true), "Middle Earth Ring", (TagType)0);
Utility.ItemCategorizer.SetTag(UPool.MyPool.AddObject("WarBossArmor", Utility.LoadBundleGameObject("WarBossArmor"), true, (HideFlags)52, (Sprite)null, 8353523, true), "Middle Earth Ring", (TagType)0);
Utility.ItemCategorizer.SetTag(UPool.MyPool.AddObject("HalfUndeadWarriorArmor", Utility.LoadBundleGameObject("HalfUndeadWarriorArmor"), true, (HideFlags)52, (Sprite)null, 14689129, true), "Middle Earth Ring", (TagType)0);
Utility.ItemCategorizer.SetTag(UPool.MyPool.AddObject("HalfUndeadBlacksmithArmor", Utility.LoadBundleGameObject("HalfUndeadBlacksmithArmor"), true, (HideFlags)52, (Sprite)null, 52324234, true), "Middle Earth Ring", (TagType)0);
Utility.ItemCategorizer.SetTag(UPool.MyPool.AddObject("UndeadMageRobe", Utility.LoadBundleGameObject("UndeadMageRobe"), true, (HideFlags)52, (Sprite)null, 623422143, true), "Middle Earth Ring", (TagType)0);
Utility.ItemCategorizer.SetTag(UPool.MyPool.AddObject("StoneManClothes", Utility.LoadBundleGameObject("StoneManClothes"), true, (HideFlags)52, (Sprite)null, 324123541, true), "Middle Earth Ring", (TagType)0);
Utility.ItemCategorizer.SetTag(UPool.MyPool.AddObject("GutsArmor", Utility.LoadBundleGameObject("GutsArmor"), true, (HideFlags)52, (Sprite)null, 5312323, true), "Middle Earth Ring", (TagType)0);
Utility.ItemCategorizer.SetTag(UPool.MyPool.AddObject("AncientCalfArmor", Utility.LoadBundleGameObject("AncientCalfArmor"), true, (HideFlags)52, (Sprite)null, 75532122, true), "Middle Earth Ring", (TagType)0);
Utility.ItemCategorizer.SetTag(UPool.MyPool.AddObject("AncientMetalHandguard", Utility.LoadBundleGameObject("AncientMetalHandguard"), true, (HideFlags)52, (Sprite)null, 63241231, true), "Middle Earth Ring", (TagType)0);
Utility.ItemCategorizer.SetTag(UPool.MyPool.AddObject("AncientArmletHandarmor", Utility.LoadBundleGameObject("AncientArmletHandarmor"), true, (HideFlags)52, (Sprite)null, 12462131, true), "Middle Earth Ring", (TagType)0);
Utility.ItemCategorizer.SetTag(UPool.MyPool.AddObject("BrokenAncientShoulderArmor", Utility.LoadBundleGameObject("BrokenAncientShoulderArmor"), true, (HideFlags)52, (Sprite)null, 5632412, true), "Middle Earth Ring", (TagType)0);
Utility.ItemCategorizer.SetTag(UPool.MyPool.AddObject("AncientShoulderArmor", Utility.LoadBundleGameObject("AncientShoulderArmor"), true, (HideFlags)52, (Sprite)null, 346234, true), "Middle Earth Ring", (TagType)0);
Utility.ItemCategorizer.SetTag(UPool.MyPool.AddObject("AncientShoulderMetalArmor", Utility.LoadBundleGameObject("AncientShoulderMetalArmor"), true, (HideFlags)52, (Sprite)null, 24315123, true), "Middle Earth Ring", (TagType)0);
Utility.ItemCategorizer.SetTag(UPool.MyPool.AddObject("AncientArcherQuiver", Utility.LoadBundleGameObject("AncientArcherQuiver"), true, (HideFlags)52, (Sprite)null, 532612312, true), "Middle Earth Ring", (TagType)0);
Utility.ItemCategorizer.SetTag(UPool.MyPool.AddObject("AncientArcherSuit", Utility.LoadBundleGameObject("AncientArcherSuit"), true, (HideFlags)52, (Sprite)null, 234532412, true), "Middle Earth Ring", (TagType)0);
Utility.ItemCategorizer.SetTag(UPool.MyPool.AddObject("AncientEyes", Utility.LoadBundleGameObject("AncientEyes"), true, (HideFlags)52, (Sprite)null, 2343253, true), "Middle Earth Ring", (TagType)0);
Utility.ItemCategorizer.SetTag(UPool.MyPool.AddObject("AncientWarriorSuit", Utility.LoadBundleGameObject("AncientWarriorSuit"), true, (HideFlags)52, (Sprite)null, 8345342, true), "Middle Earth Ring", (TagType)0);
Utility.ItemCategorizer.SetTag(UPool.MyPool.AddObject("SpawnEyes_Guts", Utility.LoadBundleGameObject("SpawnEyes_Guts"), true, (HideFlags)52, (Sprite)null, 64352343, true), "Middle Earth Ring", (TagType)0);
comment = "----------------------------------------------------------------------------------------------------------------------------";
comment = "Custom Projectiles";
comment = "----------------------------------------------------------------------------------------------------------------------------";
UPool.MyPool.AddObject("P_Soulfire", Utility.LoadBundleGameObject("P_Soulfire"), true, (HideFlags)52, (Sprite)null, 513213242, true);
UPool.MyPool.AddObject("P_AncientBow", Utility.LoadBundleGameObject("P_AncientBow"), true, (HideFlags)52, (Sprite)null, 635234423, true);
comment = "----------------------------------------------------------------------------------------------------------------------------";
comment = "Custom Effect";
comment = "----------------------------------------------------------------------------------------------------------------------------";
UPool.MyPool.AddObject("Eff_SoulsfireChange", Utility.LoadBundleGameObject("Eff_SoulsfireChange"), true, (HideFlags)52, (Sprite)null, 0, true);
UPool.MyPool.AddObject("Eff_FieryEmbers", Utility.LoadBundleGameObject("Eff_FieryEmbers"), true, (HideFlags)52, (Sprite)null, 0, true);
comment = "----------------------------------------------------------------------------------------------------------------------------";
comment = "Custom Explosions";
comment = "----------------------------------------------------------------------------------------------------------------------------";
UPool.MyPool.AddObject("Exp_ReinforcementPoof", Utility.LoadBundleGameObject("Exp_ReinforcementPoof"), true, (HideFlags)52, (Sprite)null, 0, true);
UPool.MyPool.AddObject("Exp_HellfireAppraisal", Utility.LoadBundleGameObject("Exp_HellfireAppraisal"), true, (HideFlags)52, (Sprite)null, 0, true);
UPool.MyPool.AddObject("Exp_SoulsfireChange", Utility.LoadBundleGameObject("Exp_SoulsfireChange"), true, (HideFlags)52, (Sprite)null, 0, true);
UPool.MyPool.AddObject("E_StoneManCarve", Utility.LoadBundleGameObject("E_StoneManCarve"), true, (HideFlags)52, (Sprite)null, 0, true);
UPool.MyPool.AddObject("E_NecromancerPoof", Utility.LoadBundleGameObject("E_NecromancerPoof"), true, (HideFlags)52, (Sprite)null, 0, true);
}
public static void SetBlueprint(UnitBlueprint unit, LandfallContentDatabase db)
{
//IL_0294: Unknown result type (might be due to invalid IL or missing references)
//IL_0299: Unknown result type (might be due to invalid IL or missing references)
//IL_029b: Unknown result type (might be due to invalid IL or missing references)
//IL_02a1: Expected O, but got Unknown
//IL_02a3: Unknown result type (might be due to invalid IL or missing references)
//IL_02a8: Unknown result type (might be due to invalid IL or missing references)
//IL_02aa: Unknown result type (might be due to invalid IL or missing references)
//IL_02b0: Expected O, but got Unknown
//IL_02b2: Unknown result type (might be due to invalid IL or missing references)
//IL_02b7: Unknown result type (might be due to invalid IL or missing references)
//IL_02b9: Unknown result type (might be due to invalid IL or missing references)
//IL_02bf: Expected O, but got Unknown
//IL_02c1: Unknown result type (might be due to invalid IL or missing references)
//IL_02c6: Unknown result type (might be due to invalid IL or missing references)
//IL_02c8: Unknown result type (might be due to invalid IL or missing references)
//IL_02ce: Expected O, but got Unknown
//IL_02d0: Unknown result type (might be due to invalid IL or missing references)
//IL_02d5: Unknown result type (might be due to invalid IL or missing references)
//IL_02d7: Unknown result type (might be due to invalid IL or missing references)
//IL_02dd: Expected O, but got Unknown
//IL_02df: Unknown result type (might be due to invalid IL or missing references)
//IL_02e4: Unknown result type (might be due to invalid IL or missing references)
//IL_02e6: Unknown result type (might be due to invalid IL or missing references)
//IL_02ec: Expected O, but got Unknown
//IL_0684: Unknown result type (might be due to invalid IL or missing references)
//IL_068a: Expected O, but got Unknown
//IL_079e: Unknown result type (might be due to invalid IL or missing references)
//IL_07a4: Unknown result type (might be due to invalid IL or missing references)
//IL_07fa: Unknown result type (might be due to invalid IL or missing references)
//IL_0800: Expected O, but got Unknown
//IL_081b: Unknown result type (might be due to invalid IL or missing references)
//IL_0821: Expected O, but got Unknown
//IL_083c: Unknown result type (might be due to invalid IL or missing references)
//IL_0842: Expected O, but got Unknown
//IL_09ba: Unknown result type (might be due to invalid IL or missing references)
//IL_09c0: Expected O, but got Unknown
//IL_0b17: Unknown result type (might be due to invalid IL or missing references)
//IL_0b1d: Unknown result type (might be due to invalid IL or missing references)
//IL_0baa: Unknown result type (might be due to invalid IL or missing references)
//IL_0bb0: Expected O, but got Unknown
//IL_0bcb: Unknown result type (might be due to invalid IL or missing references)
//IL_0bd1: Expected O, but got Unknown
//IL_0bec: Unknown result type (might be due to invalid IL or missing references)
//IL_0bf2: Expected O, but got Unknown
//IL_0c0d: Unknown result type (might be due to invalid IL or missing references)
//IL_0c13: Expected O, but got Unknown
//IL_0c2f: Unknown result type (might be due to invalid IL or missing references)
//IL_0c35: Expected O, but got Unknown
//IL_0c51: Unknown result type (might be due to invalid IL or missing references)
//IL_0c57: Expected O, but got Unknown
if (unit.Entity.Name == "Ancient Warrior")
{
SLMATool.UnitCost(unit, 200);
s.SetField<UnitBlueprint>(unit, "VocalRef", (object)"Ancient Attack Vocals/Hoplite");
s.SetField<UnitBlueprint>(unit, "DeathRef", (object)"Ancient Death Vocals/Hoplite");
s.SetField<UnitBlueprint>(unit, "footRef", (object)"Footsteps/Medium");
s.SetField<UnitBlueprint>(unit, "VoicePitch", (object)0.75f);
unit.health = 200f;
unit.maxSizeRandom = 1f;
unit.minSizeRandom = 1f;
unit.sizeMultiplier = 1f;
unit.massMultiplier = 5f;
unit.LeftWeapon = UPool.MyPool.GetObject("AncientWarriorShield");
unit.RightWeapon = UPool.MyPool.GetObject("AncientWarriorSword");
unit.m_props = (GameObject[])(object)new GameObject[2]
{
UPool.MyPool.GetObject("AncientEyes"),
UPool.MyPool.GetObject("AncientWarriorSuit")
};
}
if (unit.Entity.Name == "Ancient Archer")
{
SLMATool.UnitCost(unit, 240);
unit.UnitBase = UPool.MyPool.GetObject("AncientArcherBase");
s.SetField<UnitBlueprint>(unit, "VocalRef", (object)"Halloween Attack Vocals/SkeletonArcher");
s.SetField<UnitBlueprint>(unit, "DeathRef", (object)"Halloween Death Vocals/SkeletonArcher");
s.SetField<UnitBlueprint>(unit, "footRef", (object)"Footsteps/Skeleton");
s.SetField<UnitBlueprint>(unit, "VoicePitch", (object)0.75f);
unit.health = 100f;
unit.maxSizeRandom = 1f;
unit.minSizeRandom = 1f;
unit.sizeMultiplier = 1f;
unit.massMultiplier = 5f;
unit.holdinigWithTwoHands = true;
unit.leftProjectile = UPool.MyPool.GetObject("P_AncientBow").GetComponentInChildren<ProjectileEntity>();
unit.RightWeapon = UPool.MyPool.GetObject("AncientArcherBow");
unit.m_props = (GameObject[])(object)new GameObject[8]
{
UPool.MyPool.GetObject("AncientCalfArmor"),
UPool.MyPool.GetObject("AncientMetalHandguard"),
UPool.MyPool.GetObject("AncientArmletHandarmor"),
UPool.MyPool.GetObject("BrokenAncientShoulderArmor"),
UPool.MyPool.GetObject("AncientShoulderArmor"),
UPool.MyPool.GetObject("AncientShoulderMetalArmor"),
UPool.MyPool.GetObject("AncientArcherQuiver"),
UPool.MyPool.GetObject("AncientArcherSuit")
};
unit.m_propData = (PropItemData[])(object)new PropItemData[6]
{
new PropItemData
{
m_equip = (EquipType)1
},
new PropItemData
{
m_equip = (EquipType)1
},
new PropItemData
{
m_equip = (EquipType)2
},
new PropItemData
{
m_equip = (EquipType)1
},
new PropItemData
{
m_equip = (EquipType)2
},
new PropItemData
{
m_equip = (EquipType)2
}
};
}
if (unit.Entity.Name == "Stone Man")
{
SLMATool.UnitCost(unit, 500);
unit.UnitBase = UPool.MyPool.GetObject("StoneMan_UnitBase");
s.SetField<UnitBlueprint>(unit, "VocalRef", (object)"Effects/TombStoneImpact");
s.SetField<UnitBlueprint>(unit, "DeathRef", (object)"Effects/TombStonePush");
s.SetField<UnitBlueprint>(unit, "footRef", (object)"Footsteps/Minotaur");
s.SetField<UnitBlueprint>(unit, "VoicePitch", (object)0.8f);
unit.health = 400f;
unit.maxSizeRandom = 1f;
unit.minSizeRandom = 1f;
unit.sizeMultiplier = 1f;
unit.massMultiplier = 20f;
unit.movementSpeedMuiltiplier = 0.8f;
unit.holdinigWithTwoHands = true;
unit.RightWeapon = UPool.MyPool.GetObject("SimpleHeavyAxe");
unit.m_props = (GameObject[])(object)new GameObject[1] { UPool.MyPool.GetObject("StoneManClothes") };
unit.objectsToSpawnAsChildren = (GameObject[])(object)new GameObject[1] { UPool.MyPool.GetObject("Move_HardRockPassive") };
}
if (unit.Entity.Name == "Warlord Necromancer")
{
SLMATool.UnitCost(unit, 1000);
unit.UnitBase = UPool.MyPool.GetObject("HumanoidRottenBase");
s.SetField<UnitBlueprint>(unit, "VocalRef", (object)"Medieval Attack Vocals/Priest");
s.SetField<UnitBlueprint>(unit, "DeathRef", (object)"Medieval Death Vocals/Priest");
s.SetField<UnitBlueprint>(unit, "footRef", (object)"Footsteps/Medium");
s.SetField<UnitBlueprint>(unit, "VoicePitch", (object)0.55f);
unit.health = 400f;
unit.maxSizeRandom = 1f;
unit.minSizeRandom = 1f;
unit.sizeMultiplier = 1f;
unit.massMultiplier = 3f;
unit.holdinigWithTwoHands = false;
unit.LeftWeapon = UPool.MyPool.GetObject("UndeadStaff");
unit.RightWeapon = UPool.MyPool.GetObject("UndeadBook");
unit.m_props = (GameObject[])(object)new GameObject[1] { UPool.MyPool.GetObject("UndeadMageRobe") };
unit.objectsToSpawnAsChildren = (GameObject[])(object)new GameObject[1] { UPool.MyPool.GetObject("Move_SoulsAttackCommand") };
}
if (unit.Entity.Name == "Semi-Undead Blacksmith")
{
SLMATool.UnitCost(unit, 800);
unit.UnitBase = UPool.MyPool.GetObject("Humanoid_Undead_Buff");
s.SetField<UnitBlueprint>(unit, "VocalRef", (object)"Viking Attack Vocals/Brawler");
s.SetField<UnitBlueprint>(unit, "DeathRef", (object)"Viking Death Vocals/Brawler");
s.SetField<UnitBlueprint>(unit, "footRef", (object)"Footsteps/Big");
s.SetField<UnitBlueprint>(unit, "VoicePitch", (object)0.6f);
unit.health = 700f;
unit.maxSizeRandom = 1f;
unit.minSizeRandom = 1f;
unit.sizeMultiplier = 1f;
unit.massMultiplier = 10f;
unit.holdinigWithTwoHands = false;
unit.LeftWeapon = UPool.MyPool.GetObject("FirefistPunch");
unit.RightWeapon = UPool.MyPool.GetObject("IronworkerHammer");
unit.m_props = (GameObject[])(object)new GameObject[1] { UPool.MyPool.GetObject("HalfUndeadBlacksmithArmor") };
unit.objectsToSpawnAsChildren = (GameObject[])(object)new GameObject[3]
{
UPool.MyPool.GetObject("Move_GolemCarve"),
UPool.MyPool.GetObject("Move_HardenedBodyPassive"),
(GameObject)SLMALoader.SDic["moves"]["Dodge"]
};
}
if (unit.Entity.Name == "Half-Undead Warrior")
{
SLMATool.UnitCost(unit, 1000);
unit.UnitBase = UPool.MyPool.GetObject("Humanoid_Undead_Buff");
s.SetField<UnitBlueprint>(unit, "VocalRef", (object)"Viking Attack Vocals/Brawler");
s.SetField<UnitBlueprint>(unit, "DeathRef", (object)"Viking Death Vocals/Brawler");
s.SetField<UnitBlueprint>(unit, "footRef", (object)"Footsteps/Big");
s.SetField<UnitBlueprint>(unit, "VoicePitch", (object)0.6f);
unit.health = 700f;
unit.maxSizeRandom = 1f;
unit.minSizeRandom = 1f;
unit.sizeMultiplier = 1f;
unit.massMultiplier = 10f;
unit.holdinigWithTwoHands = true;
unit.RightWeapon = UPool.MyPool.GetObject("ChoppedSteelSlasherSword");
unit.m_props = (GameObject[])(object)new GameObject[2]
{
UPool.MyPool.GetObject("SpawnEyes_HalfUndead"),
UPool.MyPool.GetObject("HalfUndeadWarriorArmor")
};
unit.MovementComponents = new List<IMovementComponent> { (IMovementComponent)(object)default(NeverStopRunning) };
unit.objectsToSpawnAsChildren = (GameObject[])(object)new GameObject[5]
{
UPool.MyPool.GetObject("Move_GrapplingCharge"),
UPool.MyPool.GetObject("Move_HardenedBodyPassive"),
(GameObject)SLMALoader.SDic["moves"]["SwordArtParry"],
(GameObject)SLMALoader.SDic["moves"]["Boxer_Dodge"],
(GameObject)SLMALoader.SDic["moves"]["Dodge"]
};
}
if (unit.Entity.Name == "Warlord Commander")
{
SLMATool.UnitCost(unit, 1600);
unit.UnitBase = UPool.MyPool.GetObject("Humanoid_Buff");
s.SetField<UnitBlueprint>(unit, "VocalRef", (object)"Viking Attack Vocals/Brawler");
s.SetField<UnitBlueprint>(unit, "DeathRef", (object)"Viking Death Vocals/Brawler");
s.SetField<UnitBlueprint>(unit, "footRef", (object)"Footsteps/Big");
s.SetField<UnitBlueprint>(unit, "VoicePitch", (object)0.6f);
unit.health = 1500f;
unit.maxSizeRandom = 1f;
unit.minSizeRandom = 1f;
unit.sizeMultiplier = 1f;
unit.massMultiplier = 200f;
unit.holdinigWithTwoHands = false;
unit.LeftWeapon = UPool.MyPool.GetObject("UndeadWarhammer");
unit.RightWeapon = UPool.MyPool.GetObject("Thrown_Soulfire");
unit.m_props = (GameObject[])(object)new GameObject[1] { UPool.MyPool.GetObject("WarBossArmor") };
unit.objectsToSpawnAsChildren = (GameObject[])(object)new GameObject[5]
{
UPool.MyPool.GetObject("Move_HellfireAppraisal"),
UPool.MyPool.GetObject("Move_BackpoofDodge"),
UPool.MyPool.GetObject("Move_SummonReinforcement"),
UPool.MyPool.GetObject("Move_HardenedBodyPassive"),
(GameObject)SLMALoader.SDic["moves"]["Dodge"]
};
}
if (unit.Entity.Name == "Black Swordsman")
{
SLMATool.UnitCost(unit, 6000);
unit.Entity.SetUnlockKey("SECRET_GUTSBERSERK");
unit.UnitBase = UPool.MyPool.GetObject("Humanoid_Buff");
s.SetField<UnitBlueprint>(unit, "VocalRef", (object)"Viking Attack Vocals/Jarl");
s.SetField<UnitBlueprint>(unit, "DeathRef", (object)"Viking Death Vocals/Jarl");
s.SetField<UnitBlueprint>(unit, "footRef", (object)"Footsteps/Big");
s.SetField<UnitBlueprint>(unit, "VoicePitch", (object)0.65f);
unit.health = 3000f;
unit.maxSizeRandom = 1f;
unit.minSizeRandom = 1f;
unit.sizeMultiplier = 1f;
unit.stepMultiplier = 2f;
unit.massMultiplier = 30f;
unit.balanceMultiplier = 100f;
unit.animationMultiplier = 2f;
unit.removeCloseRangeMiss = true;
unit.movementSpeedMuiltiplier = 1.25f;
unit.holdinigWithTwoHands = true;
unit.RightWeapon = UPool.MyPool.GetObject("GutsDragonslayer");
unit.m_props = (GameObject[])(object)new GameObject[2]
{
UPool.MyPool.GetObject("GutsArmor"),
UPool.MyPool.GetObject("SpawnEyes_Guts")
};
unit.MovementComponents = new List<IMovementComponent> { (IMovementComponent)(object)default(NeverStopRunning) };
unit.objectsToSpawnAsChildren = (GameObject[])(object)new GameObject[11]
{
UPool.MyPool.GetObject("Move_StrugglerPassive"),
UPool.MyPool.GetObject("Move_BattlefieldExperience"),
UPool.MyPool.GetObject("Move_JumpSlam"),
UPool.MyPool.GetObject("Move_StrongParry"),
UPool.MyPool.GetObject("Move_BigSlash"),
(GameObject)SLMALoader.SDic["moves"]["Small_Hover"],
(GameObject)SLMALoader.SDic["moves"]["MinotaurCharge"],
(GameObject)SLMALoader.SDic["moves"]["Jump_BerserkerShort"],
(GameObject)SLMALoader.SDic["moves"]["Shogun_Dodge"],
(GameObject)SLMALoader.SDic["moves"]["Boxer_Dodge"],
(GameObject)SLMALoader.SDic["moves"]["Dodge"]
};
}
}
public static void SetEffects(GameObject effect)
{
}
public static void SetExplosion(GameObject explosion)
{
}
public static void SetUnits(Unit unit, LandfallContentDatabase db)
{
//IL_002d: Unknown result type (might be due to invalid IL or missing references)
//IL_0037: Unknown result type (might be due to invalid IL or missing references)
//IL_00bf: 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)
//IL_0151: Unknown result type (might be due to invalid IL or missing references)
//IL_015b: Unknown result type (might be due to invalid IL or missing references)
//IL_01e2: Unknown result type (might be due to invalid IL or missing references)
//IL_01ec: Unknown result type (might be due to invalid IL or missing references)
//IL_0289: Unknown result type (might be due to invalid IL or missing references)
//IL_0293: Unknown result type (might be due to invalid IL or missing references)
if (((Object)((Component)unit).gameObject).name == ((Object)UPool.MyPool.GetObject("HumanoidRottenBase")).name)
{
Transform transform = ((Component)unit).transform;
transform.localScale *= 1.1f;
AncientArcherDeathEvent ancientArcherDeathEvent = ((Component)unit).gameObject.AddComponent<AncientArcherDeathEvent>();
ancientArcherDeathEvent.skull = Utility.LoadBundleGameObject("AncientSkullVFX");
ancientArcherDeathEvent.bones = Utility.LoadBundleGameObject("AncientSkullVFX");
SkinnedMeshRenderer[] componentsInChildren = ((Component)unit).GetComponentsInChildren<SkinnedMeshRenderer>();
for (int i = 0; i < componentsInChildren.Length; i++)
{
((Component)componentsInChildren[i]).gameObject.tag = "UnitMesh";
}
}
if (((Object)((Component)unit).gameObject).name == ((Object)UPool.MyPool.GetObject("AncientArcherBase")).name)
{
Transform transform2 = ((Component)unit).transform;
transform2.localScale *= 1.25f;
AncientArcherDeathEvent ancientArcherDeathEvent2 = ((Component)unit).gameObject.AddComponent<AncientArcherDeathEvent>();
ancientArcherDeathEvent2.skull = Utility.LoadBundleGameObject("AncientSkullVFX");
ancientArcherDeathEvent2.bones = Utility.LoadBundleGameObject("AncientBonesVFX");
SkinnedMeshRenderer[] componentsInChildren2 = ((Component)unit).GetComponentsInChildren<SkinnedMeshRenderer>();
for (int j = 0; j < componentsInChildren2.Length; j++)
{
((Component)componentsInChildren2[j]).gameObject.tag = "UnitMesh";
}
}
if (((Object)((Component)unit).gameObject).name == ((Object)UPool.MyPool.GetObject("StoneMan_UnitBase")).name)
{
Transform transform3 = ((Component)unit).transform;
transform3.localScale *= 1.25f;
((Component)unit).gameObject.AddComponent<StoneManBehaviour>().soundEffect = "Effects/TombStonePush";
((Component)unit).GetComponentInChildren<RigidbodyHolder>().randomizeRigidbodySizes = false;
SkinnedMeshRenderer[] componentsInChildren3 = ((Component)unit).GetComponentsInChildren<SkinnedMeshRenderer>();
for (int k = 0; k < componentsInChildren3.Length; k++)
{
((Component)componentsInChildren3[k]).gameObject.tag = "UnitMesh";
}
}
if (((Object)((Component)unit).gameObject).name == ((Object)UPool.MyPool.GetObject("Humanoid_Undead_Buff")).name)
{
Transform transform4 = ((Component)unit).transform;
transform4.localScale *= 1.25f;
unit.data.canFall = false;
unit.data.cantFallForSeconds = float.PositiveInfinity;
((Component)unit).GetComponentInChildren<RigidbodyHolder>().randomizeRigidbodySizes = false;
((Component)unit).GetComponentInChildren<EyeSpawner>().randomizeEyes = false;
SkinnedMeshRenderer[] componentsInChildren4 = ((Component)unit).GetComponentsInChildren<SkinnedMeshRenderer>();
for (int l = 0; l < componentsInChildren4.Length; l++)
{
((Component)componentsInChildren4[l]).gameObject.tag = "UnitMesh";
}
}
if (((Object)((Component)unit).gameObject).name == ((Object)UPool.MyPool.GetObject("Humanoid_Buff")).name)
{
Transform transform5 = ((Component)unit).transform;
transform5.localScale *= 1.25f;
unit.data.canFall = false;
unit.data.cantFallForSeconds = float.PositiveInfinity;
unit.targetingPriorityMultiplier = 1.5f;
((Component)unit).GetComponentInChildren<RigidbodyHolder>().randomizeRigidbodySizes = false;
((Component)unit).GetComponentInChildren<EyeSpawner>().randomizeEyes = false;
SkinnedMeshRenderer[] componentsInChildren5 = ((Component)unit).GetComponentsInChildren<SkinnedMeshRenderer>();
for (int m = 0; m < componentsInChildren5.Length; m++)
{
((Component)componentsInChildren5[m]).gameObject.tag = "UnitMesh";
}
}
}
public static void SetWeapon(GameObject weapon, HandType hand, Team team, Unit unit, MeleeWeapon melee, RangeWeapon range, LandfallContentDatabase db)
{
if ((Object)(object)weapon == (Object)(object)UPool.MyPool.GetObject("UndeadBook"))
{
weapon.AddComponent<UndeadBookBehaviors>();
}
}
public static void SetProjectile(GameObject proj, ProjectileHit projhit, LandfallContentDatabase db)
{
}
public static void SetCombatMove(GameObject move, DodgeMove dodge, BlockMove block, SpawnObject spawn, Cost cost, Wings wings, ReaperWings reaper, LandfallContentDatabase db)
{
//IL_0034: Unknown result type (might be due to invalid IL or missing references)
//IL_003a: Expected O, but got Unknown
//IL_004b: Unknown result type (might be due to invalid IL or missing references)
//IL_0051: Expected O, but got Unknown
//IL_0082: Unknown result type (might be due to invalid IL or missing references)
//IL_008c: Expected O, but got Unknown
if ((Object)(object)move == (Object)(object)UPool.MyPool.GetObject("Move_SummonReinforcement"))
{
move.AddComponent<RandomUnitBlueprintSpawner>().unitBlueprints = (UnitBlueprint[])(object)new UnitBlueprint[2]
{
(UnitBlueprint)SLMATool.SLMADic["Semi-Undead Blacksmith"],
(UnitBlueprint)SLMATool.SLMADic["Half-Undead Warrior"]
};
}
if ((Object)(object)move == (Object)(object)UPool.MyPool.GetObject("Move_GolemCarve"))
{
move.GetComponentInChildren<UnitSpawner>().unitBlueprint = (UnitBlueprint)SLMATool.SLMADic["Stone Man"];
}
if ((Object)(object)move == (Object)(object)UPool.MyPool.GetObject("Move_HardenedBodyPassive"))
{
move.AddComponent<HardenedBodyPassiveMovement>();
}
if ((Object)(object)move == (Object)(object)UPool.MyPool.GetObject("Move_HardRockPassive"))
{
move.AddComponent<HardRockPassiveMovement>();
}
if ((Object)(object)move == (Object)(object)UPool.MyPool.GetObject("Move_StrugglerPassive"))
{
move.AddComponent<StrugglerPassiveMovement>();
}
if ((Object)(object)move == (Object)(object)UPool.MyPool.GetObject("Move_BattlefieldExperience"))
{
move.AddComponent<BattlefieldAI>();
}
}
public static void SetClothes(GameObject cloth, CharacterItem ci, Renderer render, MeshRenderer mesh, SkinnedMeshRenderer skinnedMesh, LandfallContentDatabase db)
{
}
public static void SetAllGameObject(GameObject all, LandfallContentDatabase db)
{
}
public static void LoadBundle(string assetBundleName)
{
using Stream stream = Assembly.GetExecutingAssembly().GetManifestResourceStream(assetBundleName);
bundle = AssetBundle.LoadFromStream(stream);
}
}
[BepInPlugin("GeeztJeez.MiddleEarthRing", "MiddleEarthRing", "1.0.2")]
internal class Loader : BaseUnityPlugin
{
public bool debug;
private void Awake()
{
((MonoBehaviour)this).StartCoroutine("Call");
}
private IEnumerator Call()
{
yield return (object)new WaitUntil((Func<bool>)(() => (Object)(object)Object.FindObjectOfType<ServiceLocator>() != (Object)null));
yield return (object)new WaitUntil((Func<bool>)(() => ServiceLocator.GetService<ISaveLoaderService>() != null));
yield return (object)new WaitForSeconds(0.01f);
Debug.Log((object)"Loading MiddleEarthRing!");
SLMALoader.GetInstance();
LandfallContentDatabase landfallContentDatabase = ContentDatabase.Instance().LandfallContentDatabase;
UManager.Init(landfallContentDatabase);
new Harmony("MiddleEarthRing").PatchAll();
UnitBlueprint[] array = Resources.FindObjectsOfTypeAll<UnitBlueprint>();
for (int i = 0; i < array.Length; i++)
{
if (debug)
{
Debug.Log((object)("Blueprint currently debugged : " + array[i].Entity.Name));
}
UManager.SetBlueprint(array[i], landfallContentDatabase);
array[i].Validate();
}
GameObject[] array2 = Resources.FindObjectsOfTypeAll<GameObject>();
for (int j = 0; j < array2.Length; j++)
{
if (debug)
{
Debug.Log((object)("Current Debugged Game Object : " + ((Object)array2[j]).name));
}
if (Object.op_Implicit((Object)(object)array2[j].GetComponent<Explosion>()))
{
if (debug)
{
Debug.Log((object)("Currently editing Explosion : " + ((Object)array2[j]).name));
}
UManager.SetExplosion(array2[j]);
}
if (Object.op_Implicit((Object)(object)array2[j].GetComponent<WeaponItem>()))
{
if (debug)
{
Debug.Log((object)("Currently editing Weapon : " + ((Object)array2[j]).name));
}
UManager.SetWeapon(array2[j], array2[j].GetComponent<HandType>(), array2[j].GetComponent<Team>(), array2[j].GetComponent<Unit>(), array2[j].GetComponent<MeleeWeapon>(), array2[j].GetComponent<RangeWeapon>(), landfallContentDatabase);
if (Object.op_Implicit((Object)(object)array2[j].GetComponent<MeleeWeapon>()))
{
array2[j].GetComponentInChildren<MeleeWeapon>().Validate();
}
if (Object.op_Implicit((Object)(object)array2[j].GetComponent<RangeWeapon>()))
{
array2[j].GetComponentInChildren<RangeWeapon>().Validate();
}
}
if (Object.op_Implicit((Object)(object)array2[j].GetComponent<ProjectileHit>()))
{
if (debug)
{
Debug.Log((object)("Currently editing Projectile : " + ((Object)array2[j]).name));
}
UManager.SetProjectile(array2[j], array2[j].GetComponent<ProjectileHit>(), landfallContentDatabase);
}
if (Object.op_Implicit((Object)(object)array2[j].GetComponent<PlaySoundEffect>()))
{
if (debug)
{
Debug.Log((object)("Currently editing Effect : " + ((Object)array2[j]).name));
}
UManager.SetEffects(array2[j]);
}
if (Object.op_Implicit((Object)(object)array2[j].GetComponent<Unit>()))
{
if (debug)
{
Debug.Log((object)("Currently editing Unit : " + ((Object)array2[j]).name));
}
UManager.SetUnits(array2[j].GetComponent<Unit>(), landfallContentDatabase);
}
if (Object.op_Implicit((Object)(object)array2[j].GetComponent<SpecialAbility>()))
{
if (debug)
{
Debug.Log((object)("Currently editing Movement : " + ((Object)array2[j]).name));
}
UManager.SetCombatMove(array2[j], array2[j].GetComponent<DodgeMove>(), array2[j].GetComponent<BlockMove>(), array2[j].GetComponentInChildren<SpawnObject>(), array2[j].GetComponent<Cost>(), array2[j].GetComponent<Wings>(), array2[j].GetComponent<ReaperWings>(), landfallContentDatabase);
}
if (Object.op_Implicit((Object)(object)array2[j].GetComponent<PropItem>()))
{
if (debug)
{
Debug.Log((object)("Currently editing Clothing : " + ((Object)array2[j]).name));
}
UManager.SetClothes(array2[j], array2[j].GetComponent<CharacterItem>(), array2[j].GetComponent<Renderer>(), array2[j].GetComponent<MeshRenderer>(), array2[j].GetComponent<SkinnedMeshRenderer>(), landfallContentDatabase);
}
if (Object.op_Implicit((Object)(object)array2[j].GetComponentInChildren<PlaySoundEffect>()))
{
if (debug)
{
Debug.Log((object)("Current Validated Sound Effect : " + ((Object)array2[j]).name));
}
PlaySoundEffect[] componentsInChildren = array2[j].GetComponentsInChildren<PlaySoundEffect>();
for (int k = 0; k < componentsInChildren.Length; k++)
{
componentsInChildren[k].Validate();
}
}
UManager.SetAllGameObject(array2[j], landfallContentDatabase);
}
ServiceLocator.GetService<CustomContentLoaderModIO>().QuickRefresh((WorkshopContentType)5, (Action)null);
Debug.Log((object)"Successfully loaded MiddleEarthRing!");
SceneManager.sceneLoaded += SceneLoaded;
}
public void SceneLoaded(Scene scene, LoadSceneMode loadSceneMode)
{
if (((Scene)(ref scene)).name == "05_Sandbox_Medieval_VC")
{
Object.Instantiate<GameObject>(UManager.Utility.LoadBundleGameObject("GutsSecretProp"));
}
}
}
}
namespace CustomClasses
{
public class ChangeLRotationXYZ : MonoBehaviour
{
public float xscale;
public float yscale;
public float zscale;
public void Start()
{
//IL_001d: Unknown result type (might be due to invalid IL or missing references)
((Component)this).gameObject.transform.localRotation = Quaternion.Euler(xscale, yscale, zscale);
}
}
public class ChangePositionVector : MonoBehaviour
{
public float xscale;
public float yscale;
public float zscale;
public void Start()
{
//IL_001d: Unknown result type (might be due to invalid IL or missing references)
((Component)this).gameObject.transform.localPosition = new Vector3(xscale, yscale, zscale);
}
}
public class ClothApplyUnitCollider : MonoBehaviour
{
public Unit unit;
public void Start()
{
unit = ((Component)((Component)this).gameObject.transform.root).GetComponentInChildren<Unit>();
if (Object.op_Implicit((Object)(object)unit))
{
CapsuleCollider[] componentsInChildren = ((Component)unit).GetComponentsInChildren<CapsuleCollider>();
Cloth[] componentsInChildren2 = ((Component)this).GetComponentsInChildren<Cloth>();
for (int i = 0; i < componentsInChildren2.Length; i++)
{
componentsInChildren2[i].capsuleColliders = componentsInChildren;
}
}
}
}
public class DamageCollision : MonoBehaviour
{
public Unit unit;
public float damage = 1000f;
public float damageOffset = 1000f;
public UnitEffectBase EffectPrefab;
private float counter;
private float timer = 0.1f;
private void OnCollisionEnter(Collision collision)
{
//IL_0049: Unknown result type (might be due to invalid IL or missing references)
//IL_0054: Unknown result type (might be due to invalid IL or missing references)
//IL_0094: Unknown result type (might be due to invalid IL or missing references)
//IL_00d4: Unknown result type (might be due to invalid IL or missing references)
//IL_0103: Unknown result type (might be due to invalid IL or missing references)
//IL_0108: Unknown result type (might be due to invalid IL or missing references)
//IL_0145: Unknown result type (might be due to invalid IL or missing references)
//IL_014c: Expected O, but got Unknown
//IL_0180: Unknown result type (might be due to invalid IL or missing references)
if (!((Object)(object)collision.gameObject != (Object)null) || !(counter >= timer))
{
return;
}
Unit componentInChildren = ((Component)collision.gameObject.transform.root).gameObject.GetComponentInChildren<Unit>();
if (!Object.op_Implicit((Object)(object)componentInChildren) || componentInChildren.Team == unit.Team || !((Object)(object)componentInChildren != (Object)(object)unit))
{
return;
}
counter = 0f;
ServiceLocator.GetService<SoundPlayer>().PlaySoundEffect("Effects/DarkPeasantHandThrowImpact", 1f, collision.gameObject.transform.position, (MaterialType)0, (Transform)null, 0.75f);
((Damagable)componentInChildren.data.healthHandler).TakeDamage(Random.Range(damage, damage + damageOffset), collision.gameObject.transform.position, unit, (DamageType)0);
Rigidbody[] allRigs = componentInChildren.data.allRigs.AllRigs;
for (int i = 0; i < allRigs.Length; i++)
{
ServiceLocator.GetService<ParticlePlayer>().PlayEffect(1, allRigs[i].position, Vector3.up, (SkinnedMeshRenderer)null);
}
if (!Object.op_Implicit((Object)(object)EffectPrefab))
{
return;
}
Type type = ((object)EffectPrefab).GetType();
UnitEffectBase val = (UnitEffectBase)((Component)((Component)componentInChildren).transform).GetComponentInChildren(type);
if ((Object)(object)val == (Object)null)
{
GameObject val2 = Object.Instantiate<GameObject>(((Component)EffectPrefab).gameObject, ((Component)componentInChildren).transform);
val2.transform.position = componentInChildren.data.mainRig.position;
if (Object.op_Implicit((Object)(object)val2.GetComponentInChildren<UnitEffectBase>()))
{
val2.GetComponentInChildren<UnitEffectBase>().Ping();
val2.GetComponentInChildren<UnitEffectBase>().DoEffect();
}
}
else
{
val.Ping();
}
}
private void Start()
{
unit = ((Component)((Component)this).gameObject.transform.root).gameObject.GetComponentInChildren<Unit>();
}
public void Update()
{
counter += Time.deltaTime;
}
}
public class StrugglerPassiveMovement : MonoBehaviour
{
private Unit unit;
private ConditionalEvent conditionalEvent;
public void Start()
{
//IL_0045: Unknown result type (might be due to invalid IL or missing references)
//IL_004f: Expected O, but got Unknown
unit = ((Component)((Component)this).gameObject.transform.root).GetComponentInChildren<Unit>();
conditionalEvent = ((Component)this).gameObject.GetComponentInChildren<ConditionalEvent>();
conditionalEvent.events[0].turnOnEvent.AddListener(new UnityAction(Buffs));
}
public void Buffs()
{
//IL_0035: Unknown result type (might be due to invalid IL or missing references)
unit.AddAttackSpeed(unit.attackSpeedMultiplier);
ServiceLocator.GetService<SoundPlayer>().PlaySoundEffect("Viking Attack Vocals/Jarl", 1f, unit.data.mainRig.position, (MaterialType)0, (Transform)null, 0.65f);
}
}
public class BattlefieldAI : MonoBehaviour
{
private Vector3 lastKnownDamagePosition;
private Unit unit;
private DataHandler unitData;
private TeamSystem teamSystem;
private float originalWalkSpeed;
private List<Unit> rangedFriends;
private List<Unit> meleeFriends;
private List<Unit> rangedEnemy;
private List<Unit> meleeEnemy;
private List<Vector3> damagePositions;
public float force;
private MovementHandler movementHandler;
private float counter;
private float timer = 5f;
private AnimationHandler animationHandler;
private void Start()
{
//IL_004e: Unknown result type (might be due to invalid IL or missing references)
//IL_0058: Expected O, but got Unknown
try
{
teamSystem = World.Active.GetOrCreateManager<TeamSystem>();
unit = ((Component)((Component)this).transform.root).GetComponentInChildren<Unit>();
unitData = unit.data;
unitData.healthHandler.deathEvent.AddListener(new UnityAction(DeathEvent));
unitData.healthHandler.AssignDamageAction((Action)TakeDamage);
movementHandler = ((Component)unit).GetComponentInChildren<MovementHandler>();
originalWalkSpeed = movementHandler.multiplier;
animationHandler = ((Component)unit).GetComponentInChildren<AnimationHandler>();
}
catch (Exception ex)
{
Debug.LogError((object)ex);
}
}
private void ScanForUnits()
{
//IL_0006: 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_0012: Unknown result type (might be due to invalid IL or missing references)
//IL_0020: 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)
Team team = unitData.team;
List<Unit> teamUnits = teamSystem.GetTeamUnits(team);
List<Unit> teamUnits2 = teamSystem.GetTeamUnits(OppTeams(team));
HandleUnits(teamUnits, teamUnits2);
}
private void EvaluatePosition()
{
float rangedEnemyCounts = rangedEnemy.Count;
float meleeEnemyCounts = meleeEnemy.Count;
float rangedFriendCounts = rangedFriends.Count;
float meleeFriendCounts = meleeFriends.Count;
if (Object.op_Implicit((Object)(object)unitData) && Object.op_Implicit((Object)(object)unitData.targetData))
{
Unit target = unitData.targetData.unit;
float num = unitData.maxHealth / 2f;
if (unitData.health >= num)
{
AboveHalfHealthActions(target, rangedEnemyCounts, meleeEnemyCounts, rangedFriendCounts, meleeFriendCounts);
}
else
{
BelowHalfHealthActions(target, rangedEnemyCounts, meleeEnemyCounts, rangedFriendCounts, meleeFriendCounts);
}
}
}
private void Advance()
{
movementHandler.multiplier = originalWalkSpeed;
animationHandler.currentState = 2;
}
private void HoldPosition()
{
movementHandler.multiplier = 0f;
animationHandler.currentState = 0;
}
private string GetDamageKey(Vector3 position)
{
return ((object)(Vector3)(ref position)).ToString();
}
private void Update()
{
counter += Time.deltaTime;
if (Object.op_Implicit((Object)(object)unit) && !unit.data.Dead)
{
if (counter >= timer)
{
damagePositions.Clear();
}
DamageHistoryDetection();
ScanForUnits();
}
else
{
DeathEvent();
}
}
public BattlefieldAI()
{
rangedFriends = new List<Unit>();
meleeFriends = new List<Unit>();
rangedEnemy = new List<Unit>();
meleeEnemy = new List<Unit>();
damagePositions = new List<Vector3>();
force = 25f;
}
private void DeathEvent()
{
Object.Destroy((Object)(object)((Component)this).gameObject);
}
private Team OppTeams(Team team)
{
//IL_0000: Unknown result type (might be due to invalid IL or missing references)
if ((int)team == 0)
{
return (Team)1;
}
return (Team)0;
}
private void HandleUnits(List<Unit> friends, List<Unit> foes)
{
try
{
ClearUnitLists();
CategorizeUnits(friends, foes);
EvaluatePosition();
}
catch (Exception ex)
{
Debug.LogError((object)ex);
}
}
private void TakeDamage()
{
//IL_000c: Unknown result type (might be due to invalid IL or missing references)
//IL_0041: Unknown result type (might be due to invalid IL or missing references)
//IL_005e: Unknown result type (might be due to invalid IL or missing references)
string damageKey = GetDamageKey(unitData.mainRig.position);
if (damagePositions.Count > 4)
{
damagePositions.Clear();
}
if (!damagePositions.Contains(unitData.mainRig.position))
{
damagePositions.Add(unitData.mainRig.position);
}
else
{
Debug.LogWarning((object)("Already accounted damage history at: " + damageKey));
}
}
private void Retreat()
{
animationHandler.currentState = 3;
movementHandler.multiplier = originalWalkSpeed * -0.2f;
}
private void DamageHistoryDetection()
{
//IL_0010: Unknown result type (might be due to invalid IL or missing references)
//IL_0015: 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_0026: Unknown result type (might be due to invalid IL or missing references)
//IL_0056: Unknown result type (might be due to invalid IL or missing references)
//IL_005b: Unknown result type (might be due to invalid IL or missing references)
//IL_005c: Unknown result type (might be due to invalid IL or missing references)
//IL_0067: Unknown result type (might be due to invalid IL or missing references)
foreach (Vector3 damagePosition in damagePositions)
{
if (Vector3.Distance(unitData.mainRig.position, damagePosition) <= 1f)
{
Rigidbody[] allRigs = unitData.allRigs.AllRigs;
for (int i = 0; i < allRigs.Length; i++)
{
allRigs[i].AddForce((unitData.mainRig.position - damagePosition) * force, (ForceMode)5);
}
}
}
}
private void ClearUnitLists()
{
rangedFriends.Clear();
meleeFriends.Clear();
rangedEnemy.Clear();
meleeEnemy.Clear();
}
private void CategorizeUnits(List<Unit> friends, List<Unit> foes)
{
foreach (Unit fo in foes)
{
if (IsRangedUnit(fo))
{
rangedEnemy.Add(fo);
}
else
{
meleeEnemy.Add(fo);
}
}
foreach (Unit friend in friends)
{
if (IsRangedUnit(friend))
{
rangedFriends.Add(friend);
}
else
{
meleeFriends.Add(friend);
}
}
}
private bool IsRangedUnit(Unit unit)
{
if (!Object.op_Implicit((Object)(object)unit.data.weaponHandler.rightWeapon) || !unit.data.weaponHandler.rightWeapon.isRange)
{
if (Object.op_Implicit((Object)(object)unit.data.weaponHandler.leftWeapon))
{
return unit.data.weaponHandler.leftWeapon.isRange;
}
return false;
}
return true;
}
private void AboveHalfHealthActions(Unit target, float rangedEnemyCounts, float meleeEnemyCounts, float rangedFriendCounts, float meleeFriendCounts)
{
if (target.unitBlueprint.GetUnitCost(true) >= unit.unitBlueprint.GetUnitCost(true))
{
Advance();
}
else if (rangedEnemyCounts > Mathf.Round(rangedFriendCounts / 2f))
{
if (meleeEnemyCounts > Mathf.Round(meleeFriendCounts / 2f))
{
HoldPosition();
}
else
{
Advance();
}
}
else if (meleeEnemyCounts > Mathf.Round(meleeFriendCounts / 2f))
{
Advance();
}
else
{
HoldPosition();
}
}
private void BelowHalfHealthActions(Unit target, float rangedEnemyCounts, float meleeEnemyCounts, float rangedFriendCounts, float meleeFriendCounts)
{
if (target.unitBlueprint.GetUnitCost(true) >= unit.unitBlueprint.GetUnitCost(true))
{
Retreat();
}
else if (rangedEnemyCounts <= Mathf.Round(rangedFriendCounts / 2f))
{
HoldPosition();
}
else if (meleeEnemyCounts > Mathf.Round(meleeFriendCounts / 2f))
{
HoldPosition();
}
else
{
Retreat();
}
}
}
public class StoneManBehaviour : MonoBehaviour
{
private Unit unit;
public string soundEffect;
public void Start()
{
unit = ((Component)((Component)this).gameObject.transform.root).GetComponentInChildren<Unit>();
unit.data.healthHandler.AddDieAction((Action)DeathAction);
}
private void DeathAction()
{
//IL_008a: Unknown result type (might be due to invalid IL or missing references)
if (Object.op_Implicit((Object)(object)unit))
{
((Component)unit).gameObject.AddComponent<SinkOnDeath>().Sink();
for (int i = 0; i < unit.data.allRigs.AllRigs.Length; i++)
{
unit.data.allRigs.AllRigs[i].isKinematic = true;
}
SpawnParticles();
ServiceLocator.GetService<SoundPlayer>().PlaySoundEffect(soundEffect, 1.3f, unit.data.mainRig.position, (MaterialType)0, (Transform)null, 1f);
}
}
public void Update()
{
//IL_0013: Unknown result type (might be due to invalid IL or missing references)
//IL_0028: 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_0036: 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_0044: Unknown result type (might be due to invalid IL or missing references)
//IL_004a: Unknown result type (might be due to invalid IL or missing references)
if (unit.data.Dead)
{
ConfigurableJointMotion val = (ConfigurableJointMotion)2;
ConfigurableJoint[] componentsInChildren = ((Component)unit).GetComponentsInChildren<ConfigurableJoint>();
foreach (ConfigurableJoint obj in componentsInChildren)
{
obj.xMotion = val;
obj.yMotion = val;
obj.zMotion = val;
obj.angularXMotion = val;
obj.angularYMotion = val;
obj.angularZMotion = val;
}
}
}
public bool SwitchBool(bool currentBool)
{
return !currentBool;
}
public void SpawnParticles()
{
//IL_001b: Unknown result type (might be due to invalid IL or missing references)
//IL_0020: Unknown result type (might be due to invalid IL or missing references)
Rigidbody[] componentsInChildren = ((Component)unit).GetComponentsInChildren<Rigidbody>();
foreach (Rigidbody val in componentsInChildren)
{
ServiceLocator.GetService<ParticlePlayer>().PlayEffect(0, val.position, Vector3.up, (SkinnedMeshRenderer)null);
}
}
}
public class HardRockPassiveMovement : MonoBehaviour
{
}
[HarmonyPatch(typeof(HealthHandler), "TakeDamage")]
internal class TakeDamagePatch
{
private static void Prefix(HealthHandler __instance, float damage)
{
//IL_0111: Unknown result type (might be due to invalid IL or missing references)
//IL_01c2: Unknown result type (might be due to invalid IL or missing references)
if (!float.IsNaN(damage) && !float.IsInfinity(damage) && damage != 0f)
{
FieldInfo field = typeof(HealthHandler).GetField("data", (BindingFlags)(-1));
object? obj = ((field != null) ? field.GetValue(__instance) : null);
DataHandler val = (DataHandler)((obj is DataHandler) ? obj : null);
FieldInfo field2 = typeof(HealthHandler).GetField("isInvulnerable", (BindingFlags)(-1));
bool? flag = ((field2 != null) ? field2.GetValue(__instance) : null) as bool?;
if ((!flag.HasValue || !flag.Value) && Object.op_Implicit((Object)(object)val) && !val.Dead && val.lifeTime >= 0.3f && (val.immunityForSeconds <= 0f || damage <= 0f) && (Object)(object)((Component)val.unit).gameObject.GetComponentInChildren<HardRockPassiveMovement>() != (Object)null && damage < 200f)
{
val.health += damage;
ServiceLocator.GetService<SoundPlayer>().PlaySoundEffect("Effects/TombStonePush", 0.6f, val.mainRig.position, (MaterialType)0, (Transform)null, 0.6f);
}
else if ((!flag.HasValue || !flag.Value) && Object.op_Implicit((Object)(object)val) && !val.Dead && val.lifeTime >= 0.3f && (val.immunityForSeconds <= 0f || damage <= 0f) && (Object)(object)((Component)val.unit).gameObject.GetComponentInChildren<HardenedBodyPassiveMovement>() != (Object)null && Random.Range(0f, 1f) <= 0.1f)
{
val.health += damage;
ServiceLocator.GetService<SoundPlayer>().PlaySoundEffect("Effects/BoneSpell", 1f, val.mainRig.position, (MaterialType)0, (Transform)null, 0.7f);
}
}
}
}
public class AncientArcherDeathEvent : MonoBehaviour
{
private Unit unit;
public GameObject skull;
public GameObject bones;
public void Start()
{
unit = ((Component)((Component)this).gameObject.transform.root).GetComponent<Unit>();
unit.data.healthHandler.AddDieAction((Action)Execute);
}
private void Execute()
{
//IL_001b: 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_0056: Unknown result type (might be due to invalid IL or missing references)
//IL_005c: Unknown result type (might be due to invalid IL or missing references)
//IL_0090: Unknown result type (might be due to invalid IL or missing references)
Object.Instantiate<GameObject>(skull, ((Component)unit.data.head).transform.position, randomQuaternion());
Rigidbody[] allRigs = unit.data.allRigs.AllRigs;
foreach (Rigidbody val in allRigs)
{
Object.Instantiate<GameObject>(bones, ((Component)val).transform.position, randomQuaternion());
}
ServiceLocator.GetService<SoundPlayer>().PlaySoundEffect("Footsteps/Skeleton", 1f, unit.data.mainRig.position, (MaterialType)0, (Transform)null, 0.8f);
Object.Destroy((Object)(object)((Component)unit).gameObject);
}
private Quaternion randomQuaternion()
{
//IL_0031: Unknown result type (might be due to invalid IL or missing references)
float num = Random.Range(0f, 359f);
float num2 = Random.Range(0f, 359f);
float num3 = Random.Range(0f, 359f);
return Quaternion.Euler(num, num2, num3);
}
}
public class UndeadBookBehaviors : MonoBehaviour
{
public void Start()
{
//IL_002c: Unknown result type (might be due to invalid IL or missing references)
//IL_0036: Expected O, but got Unknown
UnitSpawner[] componentsInChildren = ((Component)this).gameObject.GetComponentsInChildren<UnitSpawner>();
for (int i = 0; i < componentsInChildren.Length; i++)
{
componentsInChildren[i].unitBlueprint = (UnitBlueprint)SLMALoader.SDic["blueprints"]["UNIT_HALLOWEEN_SKELETONWARRIOR"];
}
}
}
public class HardenedBodyPassiveMovement : MonoBehaviour
{
}
public class RandomUnitBlueprintSpawner : MonoBehaviour
{
public UnitBlueprint[] unitBlueprints;
public UnitSpawner[] unitSpawners;
private void ChangeUnit(GameObject gameObject)
{
UnitSpawner[] array = unitSpawners;
for (int i = 0; i < array.Length; i++)
{
array[i].unitBlueprint = RandomUnit();
}
}
public void Start()
{
unitSpawners = ((Component)this).gameObject.GetComponentsInChildren<UnitSpawner>();
UnitSpawner[] array = unitSpawners;
for (int i = 0; i < array.Length; i++)
{
array[i].spawnUnitAction = ChangeUnit;
array[i].unitBlueprint = RandomUnit();
}
}
private UnitBlueprint RandomUnit()
{
return unitBlueprints[Random.Range(0, unitBlueprints.Length)];
}
}
}