Decompiled source of Warhammer 40K v0.0.3

Warhammer.dll

Decompiled 2 weeks ago
using System;
using System.Collections;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using System.Runtime.Versioning;
using System.Security;
using System.Security.Permissions;
using BepInEx;
using DM;
using FhpSLib;
using HarmonyLib;
using Landfall.TABS;
using Landfall.TABS.AI.Components.Modifiers;
using Landfall.TABS.UnitEditor;
using SLMA;
using UnityEngine;
using UnityEngine.SceneManagement;
using WarhammerFunctions;

[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)]
[assembly: AssemblyTitle("Warhammer")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("Warhammer")]
[assembly: AssemblyProduct("Warhammer")]
[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 Warhammer
{
	public static class UManager
	{
		public class Utility : MonoBehaviour
		{
			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 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
				try
				{
					return (Material)bundle.LoadAsset(name);
				}
				catch (Exception ex)
				{
					Debug.Log((object)("Bundle Reference Name:" + name));
					Debug.Log((object)ex);
					return null;
				}
			}

			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 Sprite LoadBundleSprite(string name)
			{
				//IL_000b: Unknown result type (might be due to invalid IL or missing references)
				//IL_0011: Expected O, but got Unknown
				return (Sprite)bundle.LoadAsset(name);
			}

			public static void AddLocalization()
			{
				(string, string, string)[] array = new(string, string, string)[6]
				{
					("SCOUT_MARINE", "Scout Marines", "侦查连士兵"),
					("MK6_WARRIOR", "MK6 Warrior", "MK6战士"),
					("MK7_WARRIOR", "MK7 Warrior", "MK7战士"),
					("MK8_WARRIOR", "MK8 Warrior", "MK8战士"),
					("TERMINATOR_WARRIOR", "Terminator Warrior", "终结者战士"),
					("CASTRAFERRUM_DREADNOUGHT", "Castraferrum Dreadnought", "铸铁无畏")
				};
				Dictionary<Language, Dictionary<string, string>> dictionary = (Dictionary<Language, Dictionary<string, string>>)typeof(Localizer).GetField("m_localization", BindingFlags.Static | BindingFlags.NonPublic).GetValue(null);
				try
				{
					for (int i = 0; i < array.Length; i++)
					{
						dictionary[(Language)0].Add(array[i].Item1, array[i].Item2);
						dictionary[(Language)7].Add(array[i].Item1, array[i].Item3);
					}
				}
				catch
				{
				}
			}

			public static void AddToUnitLib(GameObject UnitBaseObject)
			{
				//IL_0029: Unknown result type (might be due to invalid IL or missing references)
				//IL_002e: Unknown result type (might be due to invalid IL or missing references)
				//IL_0034: Unknown result type (might be due to invalid IL or missing references)
				Unit component = UnitBaseObject.GetComponent<Unit>();
				if ((Object)(object)component == (Object)null || component.Entity == null)
				{
					Debug.LogError((object)"UnitBaseObject does not contain a valid Unit or Entity component.");
					return;
				}
				DatabaseID gUID = component.Entity.GUID;
				Debug.Log((object)$"Attempting to add Unit with GUID: {gUID}");
				unitBases.Add(UnitBaseObject.GetComponentInChildren<Unit>());
			}
		}

		private static string comment;

		public static AssetBundle bundle;

		public static List<Unit> unitBases;

		public static List<GameObject> unitBasesObject;

		public static void SetBlueprint(UnitBlueprint unit, LandfallContentDatabase db)
		{
			//IL_0284: Unknown result type (might be due to invalid IL or missing references)
			//IL_028a: Expected O, but got Unknown
			//IL_02a5: Unknown result type (might be due to invalid IL or missing references)
			//IL_02ab: Expected O, but got Unknown
			//IL_02c6: Unknown result type (might be due to invalid IL or missing references)
			//IL_02cc: Expected O, but got Unknown
			//IL_02da: Unknown result type (might be due to invalid IL or missing references)
			//IL_02e0: Unknown result type (might be due to invalid IL or missing references)
			//IL_0582: Unknown result type (might be due to invalid IL or missing references)
			//IL_0588: Expected O, but got Unknown
			//IL_05a3: Unknown result type (might be due to invalid IL or missing references)
			//IL_05a9: Expected O, but got Unknown
			//IL_05c4: Unknown result type (might be due to invalid IL or missing references)
			//IL_05ca: Expected O, but got Unknown
			//IL_05e5: Unknown result type (might be due to invalid IL or missing references)
			//IL_05eb: Expected O, but got Unknown
			//IL_0606: Unknown result type (might be due to invalid IL or missing references)
			//IL_060c: Expected O, but got Unknown
			//IL_0627: Unknown result type (might be due to invalid IL or missing references)
			//IL_062d: Expected O, but got Unknown
			//IL_063b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0641: Unknown result type (might be due to invalid IL or missing references)
			//IL_08f6: Unknown result type (might be due to invalid IL or missing references)
			//IL_08fc: Expected O, but got Unknown
			//IL_0917: Unknown result type (might be due to invalid IL or missing references)
			//IL_091d: Expected O, but got Unknown
			//IL_092b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0931: Unknown result type (might be due to invalid IL or missing references)
			//IL_0bc0: Unknown result type (might be due to invalid IL or missing references)
			//IL_0bc6: Expected O, but got Unknown
			//IL_0be1: Unknown result type (might be due to invalid IL or missing references)
			//IL_0be7: Expected O, but got Unknown
			//IL_0c02: Unknown result type (might be due to invalid IL or missing references)
			//IL_0c08: Expected O, but got Unknown
			//IL_0c23: Unknown result type (might be due to invalid IL or missing references)
			//IL_0c29: Expected O, but got Unknown
			//IL_0c44: Unknown result type (might be due to invalid IL or missing references)
			//IL_0c4a: Expected O, but got Unknown
			//IL_0c7c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0c82: Unknown result type (might be due to invalid IL or missing references)
			//IL_0f62: Unknown result type (might be due to invalid IL or missing references)
			//IL_0f68: Expected O, but got Unknown
			//IL_0f83: Unknown result type (might be due to invalid IL or missing references)
			//IL_0f89: Expected O, but got Unknown
			//IL_0fa4: Unknown result type (might be due to invalid IL or missing references)
			//IL_0faa: Expected O, but got Unknown
			//IL_0fb8: Unknown result type (might be due to invalid IL or missing references)
			//IL_0fbe: Unknown result type (might be due to invalid IL or missing references)
			//IL_110b: Unknown result type (might be due to invalid IL or missing references)
			//IL_1111: Expected O, but got Unknown
			//IL_112c: Unknown result type (might be due to invalid IL or missing references)
			//IL_1132: Expected O, but got Unknown
			//IL_1140: Unknown result type (might be due to invalid IL or missing references)
			//IL_1146: Unknown result type (might be due to invalid IL or missing references)
			if (unit.Entity.Name == "SCOUT_MARINE")
			{
				SLMATool.UnitCost(unit, 500);
				unit.UnitBase = UPool.MyPool.GetObject("Humanoid_Astarte_Base");
				s.SetField<UnitBlueprint>(unit, "VocalRef", (object)"Medieval Attack Vocals/Knight");
				s.SetField<UnitBlueprint>(unit, "DeathRef", (object)"Medieval Death Vocals/Knight");
				s.SetField<UnitBlueprint>(unit, "footRef", (object)"Footsteps/Big");
				s.SetField<UnitBlueprint>(unit, "VoicePitch", (object)0.8f);
				unit.health = 900f;
				unit.minSizeRandom = 1f;
				unit.maxSizeRandom = 1f;
				unit.sizeMultiplier = 1f;
				unit.stepMultiplier = 1.4f;
				unit.massMultiplier = 20f;
				unit.balanceMultiplier = 1.4f;
				unit.animationMultiplier = 1.2f;
				unit.balanceForceMultiplier = 1.2f;
				unit.movementSpeedMuiltiplier = 1.2f;
				unit.LeftWeapon = UPool.MyPool.GetObject("CombatKnife");
				unit.RightWeapon = UPool.MyPool.GetObject("BolterPistol");
				unit.m_props = (GameObject[])(object)new GameObject[17]
				{
					UPool.MyPool.GetObject("MicComms"),
					UPool.MyPool.GetObject("AstartePreparationGears"),
					UPool.MyPool.GetObject("ScoutShoulderArmor"),
					UPool.MyPool.GetObject("ReconnaissanceCSBelt"),
					UPool.MyPool.GetObject("ReconnaissanceCSBoots"),
					UPool.MyPool.GetObject("ReconnaissanceCSChestplateArmor"),
					UPool.MyPool.GetObject("ReconnaissanceCSForearmArmor"),
					UPool.MyPool.GetObject("ReconnaissanceCSFrontSigil"),
					UPool.MyPool.GetObject("ReconnaissanceCSGloves"),
					UPool.MyPool.GetObject("ReconnaissanceCSHair"),
					UPool.MyPool.GetObject("ReconnaissanceCSPant"),
					UPool.MyPool.GetObject("ReconnaissanceCSShirt"),
					UPool.MyPool.GetObject("ReconnaissanceCSShoulderArmor"),
					UPool.MyPool.GetObject("ReconnaissanceCSShoulderCap"),
					UPool.MyPool.GetObject("ReconnaissanceCSStomachArmor"),
					UPool.MyPool.GetObject("ReconnaissanceCSThighServoLeft"),
					UPool.MyPool.GetObject("ReconnaissanceCSThighServoRight")
				};
				unit.objectsToSpawnAsChildren = (GameObject[])(object)new GameObject[3]
				{
					(GameObject)SLMALoader.SDic["moves"]["Dragoncarrier_Walk"],
					(GameObject)SLMALoader.SDic["moves"]["Fencer_Dodge"],
					(GameObject)SLMALoader.SDic["moves"]["SwordArtParry"]
				};
				unit.MovementComponents = new List<IMovementComponent> { (IMovementComponent)(object)default(KeepPreferredDistance) };
			}
			if (unit.Entity.Name == "MK8_WARRIOR")
			{
				SLMATool.UnitCost(unit, 2000);
				unit.UnitBase = UPool.MyPool.GetObject("Humanoid_Astarte_Base");
				s.SetField<UnitBlueprint>(unit, "VocalRef", (object)"Medieval Attack Vocals/TheKing");
				s.SetField<UnitBlueprint>(unit, "DeathRef", (object)"Medieval Death Vocals/TheKing");
				s.SetField<UnitBlueprint>(unit, "footRef", (object)"Footsteps/Big");
				s.SetField<UnitBlueprint>(unit, "VoicePitch", (object)0.75f);
				unit.health = 1500f;
				unit.minSizeRandom = 1f;
				unit.maxSizeRandom = 1f;
				unit.sizeMultiplier = 1f;
				unit.stepMultiplier = 1.4f;
				unit.massMultiplier = 20f;
				unit.balanceMultiplier = 1.4f;
				unit.animationMultiplier = 1.2f;
				unit.balanceForceMultiplier = 1.2f;
				unit.movementSpeedMuiltiplier = 1.35f;
				unit.holdinigWithTwoHands = true;
				unit.RightWeapon = UPool.MyPool.GetObject("PowerSword");
				unit.m_props = (GameObject[])(object)new GameObject[19]
				{
					Utility.LoadBundleGameObject("MK8ShoulderArmorPatternLeft"),
					Utility.LoadBundleGameObject("MK8ShoulderArmorPatternRight"),
					UPool.MyPool.GetObject("ElectronicMuscleSuits"),
					UPool.MyPool.GetObject("WarhammerBoots"),
					UPool.MyPool.GetObject("MK8ChestArmor"),
					UPool.MyPool.GetObject("MK8KneeArmor"),
					UPool.MyPool.GetObject("MK8StomachArmor"),
					UPool.MyPool.GetObject("MK7BigShoulderArmor"),
					UPool.MyPool.GetObject("MK7ArmorBelt"),
					UPool.MyPool.GetObject("MK7ElbowJointArmor"),
					UPool.MyPool.GetObject("MK7ElbowJointCover"),
					UPool.MyPool.GetObject("MK7HandArmor"),
					UPool.MyPool.GetObject("MK7Helmet"),
					UPool.MyPool.GetObject("MK7KneeJointCover"),
					UPool.MyPool.GetObject("MK7LowerElbowArmor"),
					UPool.MyPool.GetObject("MK7StomachArmor"),
					UPool.MyPool.GetObject("MK7ThighArmor"),
					UPool.MyPool.GetObject("MK7Jetpack"),
					UPool.MyPool.GetObject("MK7UpperElbowArmor")
				};
				unit.objectsToSpawnAsChildren = (GameObject[])(object)new GameObject[6]
				{
					(GameObject)SLMALoader.SDic["moves"]["Dragoncarrier_Walk"],
					(GameObject)SLMALoader.SDic["moves"]["Dodge"],
					(GameObject)SLMALoader.SDic["moves"]["Head_up"],
					(GameObject)SLMALoader.SDic["moves"]["Halberd_Walk"],
					(GameObject)SLMALoader.SDic["moves"]["SwordArtParry_Piratequeen"],
					(GameObject)SLMALoader.SDic["moves"]["BlockSlow"]
				};
				unit.MovementComponents = new List<IMovementComponent> { (IMovementComponent)(object)default(KeepPreferredDistance) };
			}
			if (unit.Entity.Name == "MK7_WARRIOR")
			{
				SLMATool.UnitCost(unit, 1200);
				unit.UnitBase = UPool.MyPool.GetObject("Humanoid_Astarte_Base");
				s.SetField<UnitBlueprint>(unit, "VocalRef", (object)"Medieval Attack Vocals/TheKing");
				s.SetField<UnitBlueprint>(unit, "DeathRef", (object)"Medieval Death Vocals/TheKing");
				s.SetField<UnitBlueprint>(unit, "footRef", (object)"Footsteps/Big");
				s.SetField<UnitBlueprint>(unit, "VoicePitch", (object)0.75f);
				unit.health = 700f;
				unit.minSizeRandom = 1f;
				unit.maxSizeRandom = 1f;
				unit.sizeMultiplier = 1f;
				unit.stepMultiplier = 1.4f;
				unit.massMultiplier = 20f;
				unit.balanceMultiplier = 1.4f;
				unit.animationMultiplier = 1.2f;
				unit.balanceForceMultiplier = 1.2f;
				unit.movementSpeedMuiltiplier = 1.2f;
				unit.holdinigWithTwoHands = true;
				unit.RightWeapon = UPool.MyPool.GetObject("Bolter");
				unit.m_props = (GameObject[])(object)new GameObject[20]
				{
					Utility.LoadBundleGameObject("MK7ShoulderArmorPatternLeft"),
					Utility.LoadBundleGameObject("MK7ShoulderArmorPatternRight"),
					UPool.MyPool.GetObject("ElectronicMuscleSuits"),
					UPool.MyPool.GetObject("MK7ArmorBelt"),
					UPool.MyPool.GetObject("MK7BigShoulderArmor"),
					UPool.MyPool.GetObject("MK7Boot"),
					UPool.MyPool.GetObject("MK7ChestArmor"),
					UPool.MyPool.GetObject("MK7ChestCrest"),
					UPool.MyPool.GetObject("MK7ElbowJointArmor"),
					UPool.MyPool.GetObject("MK7ElbowJointCover"),
					UPool.MyPool.GetObject("MK7HandArmor"),
					UPool.MyPool.GetObject("MK7Helmet"),
					UPool.MyPool.GetObject("MK7Jetpack"),
					UPool.MyPool.GetObject("MK7KneeArmor"),
					UPool.MyPool.GetObject("MK7KneeJointCover"),
					UPool.MyPool.GetObject("MK7LowerElbowArmor"),
					UPool.MyPool.GetObject("MK7SmallShoulderArmor"),
					UPool.MyPool.GetObject("MK7StomachArmor"),
					UPool.MyPool.GetObject("MK7ThighArmor"),
					UPool.MyPool.GetObject("MK7UpperElbowArmor")
				};
				unit.objectsToSpawnAsChildren = (GameObject[])(object)new GameObject[2]
				{
					(GameObject)SLMALoader.SDic["moves"]["Dragoncarrier_Walk"],
					(GameObject)SLMALoader.SDic["moves"]["Dodge"]
				};
				unit.MovementComponents = new List<IMovementComponent> { (IMovementComponent)(object)default(KeepRangedDistance) };
			}
			if (unit.Entity.Name == "MK6_WARRIOR")
			{
				SLMATool.UnitCost(unit, 1800);
				unit.UnitBase = UPool.MyPool.GetObject("Humanoid_Astarte_Base");
				s.SetField<UnitBlueprint>(unit, "VocalRef", (object)"Medieval Attack Vocals/TheKing");
				s.SetField<UnitBlueprint>(unit, "DeathRef", (object)"Medieval Death Vocals/TheKing");
				s.SetField<UnitBlueprint>(unit, "footRef", (object)"Footsteps/Big");
				s.SetField<UnitBlueprint>(unit, "VoicePitch", (object)0.75f);
				unit.health = 1000f;
				unit.minSizeRandom = 1f;
				unit.maxSizeRandom = 1f;
				unit.sizeMultiplier = 1f;
				unit.stepMultiplier = 1.4f;
				unit.massMultiplier = 20f;
				unit.balanceMultiplier = 1.4f;
				unit.animationMultiplier = 1.2f;
				unit.balanceForceMultiplier = 1.2f;
				unit.movementSpeedMuiltiplier = 1.2f;
				unit.LeftWeapon = UPool.MyPool.GetObject("Leiting Claw Left");
				unit.RightWeapon = UPool.MyPool.GetObject("Leiting Claw Right");
				unit.m_props = (GameObject[])(object)new GameObject[17]
				{
					Utility.LoadBundleGameObject("MK6ShoulderArmorPattern"),
					UPool.MyPool.GetObject("ElectronicMuscleSuits"),
					UPool.MyPool.GetObject("WarhammerBoots"),
					UPool.MyPool.GetObject("MK6Backpack"),
					UPool.MyPool.GetObject("MK6Belts"),
					UPool.MyPool.GetObject("MK6ChestArmor"),
					UPool.MyPool.GetObject("MK6Helmet"),
					UPool.MyPool.GetObject("MK6KneeArmor"),
					UPool.MyPool.GetObject("MK6ShoulderArmor"),
					UPool.MyPool.GetObject("MK6StomachArmor"),
					UPool.MyPool.GetObject("MK7ElbowJointArmor"),
					UPool.MyPool.GetObject("MK7ElbowJointCover"),
					UPool.MyPool.GetObject("MK7HandArmor"),
					UPool.MyPool.GetObject("MK7KneeJointCover"),
					UPool.MyPool.GetObject("MK7LowerElbowArmor"),
					UPool.MyPool.GetObject("MK7ThighArmor"),
					UPool.MyPool.GetObject("MK7UpperElbowArmor")
				};
				unit.objectsToSpawnAsChildren = (GameObject[])(object)new GameObject[7]
				{
					(GameObject)SLMALoader.SDic["moves"]["Dragoncarrier_Walk"],
					(GameObject)SLMALoader.SDic["moves"]["ProjectileDodge_Cool2"],
					(GameObject)SLMALoader.SDic["moves"]["Fencer_Dodge"],
					(GameObject)SLMALoader.SDic["moves"]["SwordArtParry"],
					(GameObject)SLMALoader.SDic["moves"]["Dodge"],
					UPool.MyPool.GetObject("Move_JetCrash"),
					UPool.MyPool.GetObject("Move_JetHover")
				};
				unit.MovementComponents = new List<IMovementComponent> { (IMovementComponent)(object)default(NeverStopRunning) };
			}
			if (unit.Entity.Name == "TERMINATOR_WARRIOR")
			{
				SLMATool.UnitCost(unit, 3000);
				unit.UnitBase = UPool.MyPool.GetObject("Humanoid_Astarte_Base");
				s.SetField<UnitBlueprint>(unit, "VocalRef", (object)"Medieval Attack Vocals/TheKing");
				s.SetField<UnitBlueprint>(unit, "DeathRef", (object)"Medieval Death Vocals/TheKing");
				s.SetField<UnitBlueprint>(unit, "footRef", (object)"Footsteps/Big");
				s.SetField<UnitBlueprint>(unit, "VoicePitch", (object)0.75f);
				unit.health = 3000f;
				unit.minSizeRandom = 1f;
				unit.maxSizeRandom = 1f;
				unit.sizeMultiplier = 1f;
				unit.stepMultiplier = 1.4f;
				unit.massMultiplier = 20f;
				unit.balanceMultiplier = 1.4f;
				unit.animationMultiplier = 1.2f;
				unit.balanceForceMultiplier = 1.2f;
				unit.movementSpeedMuiltiplier = 1.2f;
				unit.LeftWeapon = UPool.MyPool.GetObject("Power Fist Left");
				unit.RightWeapon = UPool.MyPool.GetObject("Assault Cannon");
				unit.m_props = (GameObject[])(object)new GameObject[21]
				{
					UPool.MyPool.GetObject("TerminatorHandPipe"),
					UPool.MyPool.GetObject("ElectronicMuscleSuits"),
					UPool.MyPool.GetObject("TerminatorArmorArm"),
					UPool.MyPool.GetObject("TerminatorArmorBelt"),
					UPool.MyPool.GetObject("TerminatorArmorBigShoulder"),
					UPool.MyPool.GetObject("TerminatorArmorBoots"),
					UPool.MyPool.GetObject("TerminatorArmorCradle"),
					UPool.MyPool.GetObject("TerminatorArmorElbow"),
					UPool.MyPool.GetObject("TerminatorArmorElbowPipe"),
					UPool.MyPool.GetObject("TerminatorArmorForearm"),
					UPool.MyPool.GetObject("TerminatorArmorFrontSkullCrest"),
					UPool.MyPool.GetObject("TerminatorArmorGloves"),
					UPool.MyPool.GetObject("TerminatorArmorKnee"),
					UPool.MyPool.GetObject("TerminatorArmorLeftSkullCrest"),
					UPool.MyPool.GetObject("TerminatorArmorShin"),
					UPool.MyPool.GetObject("TerminatorArmorSkirt"),
					UPool.MyPool.GetObject("TerminatorArmorSmallShoulder"),
					UPool.MyPool.GetObject("TerminatorArmorStomach"),
					UPool.MyPool.GetObject("TerminatorArmorThighArmor"),
					UPool.MyPool.GetObject("TerminatorArmorAddons"),
					UPool.MyPool.GetObject("TerminatorHelmet")
				};
				unit.objectsToSpawnAsChildren = (GameObject[])(object)new GameObject[3]
				{
					(GameObject)SLMALoader.SDic["moves"]["Dragoncarrier_Walk"],
					(GameObject)SLMALoader.SDic["moves"]["Halberd_Walk"],
					(GameObject)SLMALoader.SDic["moves"]["Dodge"]
				};
				unit.MovementComponents = new List<IMovementComponent> { (IMovementComponent)(object)default(KeepRangedDistance) };
			}
			if (unit.Entity.Name == "CASTRAFERRUM_DREADNOUGHT")
			{
				SLMATool.UnitCost(unit, 40000);
				unit.UnitBase = UPool.MyPool.GetObject("Dreadnought_Unit_Base");
				s.SetField<UnitBlueprint>(unit, "VocalRef", (object)"Halloween Attack Vocals/Reaper");
				s.SetField<UnitBlueprint>(unit, "DeathRef", (object)"Halloween Death Vocals/Reaper");
				s.SetField<UnitBlueprint>(unit, "footRef", (object)"Footsteps/Mammoth");
				s.SetField<UnitBlueprint>(unit, "VoicePitch", (object)0.65f);
				unit.health = 100000f;
				unit.minSizeRandom = 1f;
				unit.maxSizeRandom = 1f;
				unit.sizeMultiplier = 1f;
				unit.stepMultiplier = 1.4f;
				unit.massMultiplier = 100f;
				unit.balanceMultiplier = 1.4f;
				unit.animationMultiplier = 1.2f;
				unit.balanceForceMultiplier = 1.2f;
				unit.movementSpeedMuiltiplier = 1.2f;
				unit.LeftWeapon = UPool.MyPool.GetObject("StrongClawDreadnought");
				unit.RightWeapon = UPool.MyPool.GetObject("TwinHeavyLaserCannons");
				unit.objectsToSpawnAsChildren = (GameObject[])(object)new GameObject[2]
				{
					(GameObject)SLMALoader.SDic["moves"]["Small_Hover"],
					(GameObject)SLMALoader.SDic["moves"]["SwordArtParry_Piratequeen"]
				};
				unit.MovementComponents = new List<IMovementComponent> { (IMovementComponent)(object)default(NeverStopRunning) };
			}
		}

		public static void SetClothes(GameObject cloth, CharacterItem item, PropItemData data, LandfallContentDatabase db)
		{
		}

		public static void SetMoves(GameObject move, LandfallContentDatabase db)
		{
		}

		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)
			if (((Object)((Component)unit).gameObject).name == ((Object)UPool.MyPool.GetObject("Humanoid_Astarte_Base")).name)
			{
				Transform transform = ((Component)unit).transform;
				transform.localScale *= 1.25f;
				SkinnedMeshRenderer[] componentsInChildren = ((Component)unit).GetComponentsInChildren<SkinnedMeshRenderer>();
				for (int i = 0; i < componentsInChildren.Length; i++)
				{
					((Component)componentsInChildren[i]).gameObject.tag = "UnitMesh";
				}
			}
		}

		public static void Init(LandfallContentDatabase db)
		{
			//IL_0074: Unknown result type (might be due to invalid IL or missing references)
			//IL_0079: Unknown result type (might be due to invalid IL or missing references)
			comment = "----------------------------------------------------------------------------------------------------------------------------";
			comment = "Starting Objects";
			comment = "----------------------------------------------------------------------------------------------------------------------------";
			LoadBundle("warhammerbundles");
			Sprite val = Utility.LoadBundleTextureToSprite("UltramarinesBadgeTexture");
			comment = "----------------------------------------------------------------------------------------------------------------------------";
			comment = "Create Custom Faction";
			comment = "----------------------------------------------------------------------------------------------------------------------------";
			Faction val2 = SLMATool.CreateFaction("Warhammer", (UnitBlueprint[])null, val, 332421);
			val2.m_FactionColor = new Color(0f, 0f, 0.2f);
			comment = "----------------------------------------------------------------------------------------------------------------------------";
			comment = "Create Custom Units";
			comment = "----------------------------------------------------------------------------------------------------------------------------";
			SLMATool.CreateUnit("SCOUT_MARINE", (UnitBlueprint)null, val2, val);
			SLMATool.CreateUnit("MK6_WARRIOR", (UnitBlueprint)null, val2, val);
			SLMATool.CreateUnit("MK7_WARRIOR", (UnitBlueprint)null, val2, val);
			SLMATool.CreateUnit("MK8_WARRIOR", (UnitBlueprint)null, val2, val);
			SLMATool.CreateUnit("TERMINATOR_WARRIOR", (UnitBlueprint)null, val2, val);
			SLMATool.CreateUnit("CASTRAFERRUM_DREADNOUGHT", (UnitBlueprint)null, val2, Utility.LoadBundleTextureToSprite("CASTRAFERRUM_DREADNOUGHT_LOGO"));
			comment = "----------------------------------------------------------------------------------------------------------------------------";
			comment = "Custom Weapons";
			comment = "----------------------------------------------------------------------------------------------------------------------------";
			UPool.MyPool.AddObject("Bolter", Utility.LoadBundleGameObject("Bolter"), true, (HideFlags)52, val, Utilities.Utility.IDChecker(Utilities.AssetType.Weapon, 523432), true);
			UPool.MyPool.AddObject("BolterPistol", Utility.LoadBundleGameObject("BolterPistol"), true, (HideFlags)52, val, Utilities.Utility.IDChecker(Utilities.AssetType.Weapon, 634544), true);
			UPool.MyPool.AddObject("CombatKnife", Utility.LoadBundleGameObject("CombatKnife"), true, (HideFlags)52, val, Utilities.Utility.IDChecker(Utilities.AssetType.Weapon, 421321), true);
			UPool.MyPool.AddObject("PowerSword", Utility.LoadBundleGameObject("PowerSword"), true, (HideFlags)52, val, Utilities.Utility.IDChecker(Utilities.AssetType.Weapon, 6345434), true);
			UPool.MyPool.AddObject("Power Fist Left", Utility.LoadBundleGameObject("Power Fist Left"), true, (HideFlags)52, val, Utilities.Utility.IDChecker(Utilities.AssetType.Weapon, 84563245), true);
			UPool.MyPool.AddObject("Power Fist Right", Utility.LoadBundleGameObject("Power Fist Right"), true, (HideFlags)52, val, Utilities.Utility.IDChecker(Utilities.AssetType.Weapon, 84563246), true);
			UPool.MyPool.AddObject("Leiting Claw Left", Utility.LoadBundleGameObject("Leiting Claw Left"), true, (HideFlags)52, val, Utilities.Utility.IDChecker(Utilities.AssetType.Weapon, 84563247), true);
			UPool.MyPool.AddObject("Leiting Claw Right", Utility.LoadBundleGameObject("Leiting Claw Right"), true, (HideFlags)52, val, Utilities.Utility.IDChecker(Utilities.AssetType.Weapon, 84563248), true);
			UPool.MyPool.AddObject("Assault Cannon", Utility.LoadBundleGameObject("Assault Cannon"), true, (HideFlags)52, val, Utilities.Utility.IDChecker(Utilities.AssetType.Weapon, 3562353), true);
			UPool.MyPool.AddObject("StrongClawDreadnought", Utility.LoadBundleGameObject("StrongClawDreadnought"), true, (HideFlags)52, val, Utilities.Utility.IDChecker(Utilities.AssetType.Weapon, 6234324), true);
			UPool.MyPool.AddObject("TwinHeavyLaserCannons", Utility.LoadBundleGameObject("TwinHeavyLaserCannons"), true, (HideFlags)52, val, Utilities.Utility.IDChecker(Utilities.AssetType.Weapon, 7625324), true);
			comment = "----------------------------------------------------------------------------------------------------------------------------";
			comment = "Custom Projectiles";
			comment = "----------------------------------------------------------------------------------------------------------------------------";
			UPool.MyPool.AddObject("P_BolterAmmunition", Utility.LoadBundleGameObject("P_BolterAmmunition"), true, (HideFlags)52, val, Utilities.Utility.IDChecker(Utilities.AssetType.Projectile, 4533423), true);
			UPool.MyPool.AddObject("P_FastHeavyLaser", Utility.LoadBundleGameObject("P_FastHeavyLaser"), true, (HideFlags)52, val, Utilities.Utility.IDChecker(Utilities.AssetType.Projectile, 63215423), true);
			comment = "----------------------------------------------------------------------------------------------------------------------------";
			comment = "Custom Ability";
			comment = "----------------------------------------------------------------------------------------------------------------------------";
			UPool.MyPool.AddObject("Move_JetHover", Utility.LoadBundleGameObject("Move_JetHover"), true, (HideFlags)52, val, Utilities.Utility.IDChecker(Utilities.AssetType.Ability, 61232132), true);
			UPool.MyPool.AddObject("Move_JetCrash", Utility.LoadBundleGameObject("Move_JetCrash"), true, (HideFlags)52, val, Utilities.Utility.IDChecker(Utilities.AssetType.Ability, 74352433), true);
			comment = "----------------------------------------------------------------------------------------------------------------------------";
			comment = "Custom Explosions";
			comment = "----------------------------------------------------------------------------------------------------------------------------";
			UPool.MyPool.AddObject("E_Explosion_Bolt", Utility.LoadBundleGameObject("E_Explosion_Bolt"), true, (HideFlags)52, val, 0, true);
			UPool.MyPool.AddObject("E_LaserExplosionHit", Utility.LoadBundleGameObject("E_LaserExplosionHit"), true, (HideFlags)52, val, 0, true);
			comment = "----------------------------------------------------------------------------------------------------------------------------";
			comment = "Custom Clothing";
			comment = "----------------------------------------------------------------------------------------------------------------------------";
			comment = "MK6";
			UPool.MyPool.AddObject("MK6Backpack", Utility.LoadBundleGameObject("MK6Backpack"), true, (HideFlags)52, (Sprite)null, Utilities.Utility.IDChecker(Utilities.AssetType.Prop, 5642341), true);
			UPool.MyPool.AddObject("MK6Belts", Utility.LoadBundleGameObject("MK6Belts"), true, (HideFlags)52, (Sprite)null, Utilities.Utility.IDChecker(Utilities.AssetType.Prop, 3644321), true);
			UPool.MyPool.AddObject("MK6ChestArmor", Utility.LoadBundleGameObject("MK6ChestArmor"), true, (HideFlags)52, (Sprite)null, Utilities.Utility.IDChecker(Utilities.AssetType.Prop, 6234322), true);
			UPool.MyPool.AddObject("MK6Helmet", Utility.LoadBundleGameObject("MK6Helmet"), true, (HideFlags)52, (Sprite)null, Utilities.Utility.IDChecker(Utilities.AssetType.Prop, 7456454), true);
			UPool.MyPool.AddObject("MK6KneeArmor", Utility.LoadBundleGameObject("MK6KneeArmor"), true, (HideFlags)52, (Sprite)null, Utilities.Utility.IDChecker(Utilities.AssetType.Prop, 6345323), true);
			UPool.MyPool.AddObject("MK6ShoulderArmor", Utility.LoadBundleGameObject("MK6ShoulderArmor"), true, (HideFlags)52, (Sprite)null, Utilities.Utility.IDChecker(Utilities.AssetType.Prop, 754634), true);
			UPool.MyPool.AddObject("MK6StomachArmor", Utility.LoadBundleGameObject("MK6StomachArmor"), true, (HideFlags)52, (Sprite)null, Utilities.Utility.IDChecker(Utilities.AssetType.Prop, 7343542), true);
			comment = "MK7";
			UPool.MyPool.AddObject("MK7ArmorBelt", Utility.LoadBundleGameObject("MK7ArmorBelt"), true, (HideFlags)52, (Sprite)null, Utilities.Utility.IDChecker(Utilities.AssetType.Prop, 987654321), true);
			UPool.MyPool.AddObject("MK7BigShoulderArmor", Utility.LoadBundleGameObject("MK7BigShoulderArmor"), true, (HideFlags)52, (Sprite)null, Utilities.Utility.IDChecker(Utilities.AssetType.Prop, 123456789), true);
			UPool.MyPool.AddObject("MK7Boot", Utility.LoadBundleGameObject("MK7Boot"), true, (HideFlags)52, (Sprite)null, Utilities.Utility.IDChecker(Utilities.AssetType.Prop, 456789012), true);
			UPool.MyPool.AddObject("MK7ChestArmor", Utility.LoadBundleGameObject("MK7ChestArmor"), true, (HideFlags)52, (Sprite)null, Utilities.Utility.IDChecker(Utilities.AssetType.Prop, 789012345), true);
			UPool.MyPool.AddObject("MK7ChestCrest", Utility.LoadBundleGameObject("MK7ChestCrest"), true, (HideFlags)52, (Sprite)null, Utilities.Utility.IDChecker(Utilities.AssetType.Prop, 234567890), true);
			UPool.MyPool.AddObject("MK7ElbowJointArmor", Utility.LoadBundleGameObject("MK7ElbowJointArmor"), true, (HideFlags)52, (Sprite)null, Utilities.Utility.IDChecker(Utilities.AssetType.Prop, 567890123), true);
			UPool.MyPool.AddObject("MK7ElbowJointCover", Utility.LoadBundleGameObject("MK7ElbowJointCover"), true, (HideFlags)52, (Sprite)null, Utilities.Utility.IDChecker(Utilities.AssetType.Prop, 890123456), true);
			UPool.MyPool.AddObject("MK7HandArmor", Utility.LoadBundleGameObject("MK7HandArmor"), true, (HideFlags)52, (Sprite)null, Utilities.Utility.IDChecker(Utilities.AssetType.Prop, 345678901), true);
			UPool.MyPool.AddObject("MK7Helmet", Utility.LoadBundleGameObject("MK7Helmet"), true, (HideFlags)52, (Sprite)null, Utilities.Utility.IDChecker(Utilities.AssetType.Prop, 678901234), true);
			UPool.MyPool.AddObject("MK7Jetpack", Utility.LoadBundleGameObject("MK7Jetpack"), true, (HideFlags)52, (Sprite)null, Utilities.Utility.IDChecker(Utilities.AssetType.Prop, 901234567), true);
			UPool.MyPool.AddObject("MK7KneeArmor", Utility.LoadBundleGameObject("MK7KneeArmor"), true, (HideFlags)52, (Sprite)null, Utilities.Utility.IDChecker(Utilities.AssetType.Prop, 123789456), true);
			UPool.MyPool.AddObject("MK7KneeJointCover", Utility.LoadBundleGameObject("MK7KneeJointCover"), true, (HideFlags)52, (Sprite)null, Utilities.Utility.IDChecker(Utilities.AssetType.Prop, 234567891), true);
			UPool.MyPool.AddObject("MK7LowerElbowArmor", Utility.LoadBundleGameObject("MK7LowerElbowArmor"), true, (HideFlags)52, (Sprite)null, Utilities.Utility.IDChecker(Utilities.AssetType.Prop, 345678902), true);
			UPool.MyPool.AddObject("MK7SmallShoulderArmor", Utility.LoadBundleGameObject("MK7SmallShoulderArmor"), true, (HideFlags)52, (Sprite)null, Utilities.Utility.IDChecker(Utilities.AssetType.Prop, 456789013), true);
			UPool.MyPool.AddObject("MK7StomachArmor", Utility.LoadBundleGameObject("MK7StomachArmor"), true, (HideFlags)52, (Sprite)null, Utilities.Utility.IDChecker(Utilities.AssetType.Prop, 567890122), true);
			UPool.MyPool.AddObject("MK7ThighArmor", Utility.LoadBundleGameObject("MK7ThighArmor"), true, (HideFlags)52, (Sprite)null, Utilities.Utility.IDChecker(Utilities.AssetType.Prop, 678901235), true);
			UPool.MyPool.AddObject("MK7UpperElbowArmor", Utility.LoadBundleGameObject("MK7UpperElbowArmor"), true, (HideFlags)52, (Sprite)null, Utilities.Utility.IDChecker(Utilities.AssetType.Prop, 789012346), true);
			comment = "MK8";
			UPool.MyPool.AddObject("MK8ChestArmor", Utility.LoadBundleGameObject("MK8ChestArmor"), true, (HideFlags)52, (Sprite)null, Utilities.Utility.IDChecker(Utilities.AssetType.Prop, 6343232), true);
			UPool.MyPool.AddObject("MK8KneeArmor", Utility.LoadBundleGameObject("MK8KneeArmor"), true, (HideFlags)52, (Sprite)null, Utilities.Utility.IDChecker(Utilities.AssetType.Prop, 8456445), true);
			UPool.MyPool.AddObject("MK8StomachArmor", Utility.LoadBundleGameObject("MK8StomachArmor"), true, (HideFlags)52, (Sprite)null, Utilities.Utility.IDChecker(Utilities.AssetType.Prop, 6433534), true);
			comment = "Terminator";
			UPool.MyPool.AddObject("TerminatorArmorAddons", Utility.LoadBundleGameObject("TerminatorArmorAddons"), true, (HideFlags)52, (Sprite)null, Utilities.Utility.IDChecker(Utilities.AssetType.Prop, 7834354), true);
			UPool.MyPool.AddObject("TerminatorHelmet", Utility.LoadBundleGameObject("TerminatorHelmet"), true, (HideFlags)52, (Sprite)null, Utilities.Utility.IDChecker(Utilities.AssetType.Prop, 64332431), true);
			UPool.MyPool.AddObject("TerminatorArmorArm", Utility.LoadBundleGameObject("TerminatorArmorArm"), true, (HideFlags)52, (Sprite)null, Utilities.Utility.IDChecker(Utilities.AssetType.Prop, 6435212), true);
			UPool.MyPool.AddObject("TerminatorArmorBelt", Utility.LoadBundleGameObject("TerminatorArmorBelt"), true, (HideFlags)52, (Sprite)null, Utilities.Utility.IDChecker(Utilities.AssetType.Prop, 6435213), true);
			UPool.MyPool.AddObject("TerminatorArmorBigShoulder", Utility.LoadBundleGameObject("TerminatorArmorBigShoulder"), true, (HideFlags)52, (Sprite)null, Utilities.Utility.IDChecker(Utilities.AssetType.Prop, 6435214), true);
			UPool.MyPool.AddObject("TerminatorArmorBoots", Utility.LoadBundleGameObject("TerminatorArmorBoots"), true, (HideFlags)52, (Sprite)null, Utilities.Utility.IDChecker(Utilities.AssetType.Prop, 6435215), true);
			UPool.MyPool.AddObject("TerminatorArmorCradle", Utility.LoadBundleGameObject("TerminatorArmorCradle"), true, (HideFlags)52, (Sprite)null, Utilities.Utility.IDChecker(Utilities.AssetType.Prop, 6435216), true);
			UPool.MyPool.AddObject("TerminatorArmorElbow", Utility.LoadBundleGameObject("TerminatorArmorElbow"), true, (HideFlags)52, (Sprite)null, Utilities.Utility.IDChecker(Utilities.AssetType.Prop, 6435217), true);
			UPool.MyPool.AddObject("TerminatorArmorElbowPipe", Utility.LoadBundleGameObject("TerminatorArmorElbowPipe"), true, (HideFlags)52, (Sprite)null, Utilities.Utility.IDChecker(Utilities.AssetType.Prop, 6435218), true);
			UPool.MyPool.AddObject("TerminatorArmorForearm", Utility.LoadBundleGameObject("TerminatorArmorForearm"), true, (HideFlags)52, (Sprite)null, Utilities.Utility.IDChecker(Utilities.AssetType.Prop, 6435219), true);
			UPool.MyPool.AddObject("TerminatorArmorFrontSkullCrest", Utility.LoadBundleGameObject("TerminatorArmorFrontSkullCrest"), true, (HideFlags)52, (Sprite)null, Utilities.Utility.IDChecker(Utilities.AssetType.Prop, 6435220), true);
			UPool.MyPool.AddObject("TerminatorArmorGloves", Utility.LoadBundleGameObject("TerminatorArmorGloves"), true, (HideFlags)52, (Sprite)null, Utilities.Utility.IDChecker(Utilities.AssetType.Prop, 6435221), true);
			UPool.MyPool.AddObject("TerminatorArmorKnee", Utility.LoadBundleGameObject("TerminatorArmorKnee"), true, (HideFlags)52, (Sprite)null, Utilities.Utility.IDChecker(Utilities.AssetType.Prop, 6435222), true);
			UPool.MyPool.AddObject("TerminatorArmorLeftSkullCrest", Utility.LoadBundleGameObject("TerminatorArmorLeftSkullCrest"), true, (HideFlags)52, (Sprite)null, Utilities.Utility.IDChecker(Utilities.AssetType.Prop, 6435223), true);
			UPool.MyPool.AddObject("TerminatorArmorShin", Utility.LoadBundleGameObject("TerminatorArmorShin"), true, (HideFlags)52, (Sprite)null, Utilities.Utility.IDChecker(Utilities.AssetType.Prop, 6435224), true);
			UPool.MyPool.AddObject("TerminatorArmorSkirt", Utility.LoadBundleGameObject("TerminatorArmorSkirt"), true, (HideFlags)52, (Sprite)null, Utilities.Utility.IDChecker(Utilities.AssetType.Prop, 6435225), true);
			UPool.MyPool.AddObject("TerminatorArmorSmallShoulder", Utility.LoadBundleGameObject("TerminatorArmorSmallShoulder"), true, (HideFlags)52, (Sprite)null, Utilities.Utility.IDChecker(Utilities.AssetType.Prop, 6435226), true);
			UPool.MyPool.AddObject("TerminatorArmorStomach", Utility.LoadBundleGameObject("TerminatorArmorStomach"), true, (HideFlags)52, (Sprite)null, Utilities.Utility.IDChecker(Utilities.AssetType.Prop, 6435227), true);
			UPool.MyPool.AddObject("TerminatorArmorThighArmor", Utility.LoadBundleGameObject("TerminatorArmorThighArmor"), true, (HideFlags)52, (Sprite)null, Utilities.Utility.IDChecker(Utilities.AssetType.Prop, 6435228), true);
			UPool.MyPool.AddObject("TerminatorHandPipe", Utility.LoadBundleGameObject("TerminatorHandPipe"), true, (HideFlags)52, (Sprite)null, Utilities.Utility.IDChecker(Utilities.AssetType.Prop, 73544532), true);
			comment = "CompanySoldiers";
			UPool.MyPool.AddObject("MicComms", Utility.LoadBundleGameObject("MicComms"), true, (HideFlags)52, (Sprite)null, Utilities.Utility.IDChecker(Utilities.AssetType.Prop, 3254523), true);
			UPool.MyPool.AddObject("AstartePreparationGears", Utility.LoadBundleGameObject("AstartePreparationGears"), true, (HideFlags)52, (Sprite)null, Utilities.Utility.IDChecker(Utilities.AssetType.Prop, 642532), true);
			UPool.MyPool.AddObject("ScoutShoulderArmor", Utility.LoadBundleGameObject("ScoutShoulderArmor"), true, (HideFlags)52, (Sprite)null, Utilities.Utility.IDChecker(Utilities.AssetType.Prop, 745243), true);
			UPool.MyPool.AddObject("ReconnaissanceCSBelt", Utility.LoadBundleGameObject("ReconnaissanceCSBelt"), true, (HideFlags)52, (Sprite)null, Utilities.Utility.IDChecker(Utilities.AssetType.Prop, 5817342), true);
			UPool.MyPool.AddObject("ReconnaissanceCSBoots", Utility.LoadBundleGameObject("ReconnaissanceCSBoots"), true, (HideFlags)52, (Sprite)null, Utilities.Utility.IDChecker(Utilities.AssetType.Prop, 5692187), true);
			UPool.MyPool.AddObject("ReconnaissanceCSChestplateArmor", Utility.LoadBundleGameObject("ReconnaissanceCSChestplateArmor"), true, (HideFlags)52, (Sprite)null, Utilities.Utility.IDChecker(Utilities.AssetType.Prop, 5934061), true);
			UPool.MyPool.AddObject("ReconnaissanceCSForearmArmor", Utility.LoadBundleGameObject("ReconnaissanceCSForearmArmor"), true, (HideFlags)52, (Sprite)null, Utilities.Utility.IDChecker(Utilities.AssetType.Prop, 5748923), true);
			UPool.MyPool.AddObject("ReconnaissanceCSFrontSigil", Utility.LoadBundleGameObject("ReconnaissanceCSFrontSigil"), true, (HideFlags)52, (Sprite)null, Utilities.Utility.IDChecker(Utilities.AssetType.Prop, 5629074), true);
			UPool.MyPool.AddObject("ReconnaissanceCSGloves", Utility.LoadBundleGameObject("ReconnaissanceCSGloves"), true, (HideFlags)52, (Sprite)null, Utilities.Utility.IDChecker(Utilities.AssetType.Prop, 5881349), true);
			UPool.MyPool.AddObject("ReconnaissanceCSHair", Utility.LoadBundleGameObject("ReconnaissanceCSHair"), true, (HideFlags)52, (Sprite)null, Utilities.Utility.IDChecker(Utilities.AssetType.Prop, 5716608), true);
			UPool.MyPool.AddObject("ReconnaissanceCSPant", Utility.LoadBundleGameObject("ReconnaissanceCSPant"), true, (HideFlags)52, (Sprite)null, Utilities.Utility.IDChecker(Utilities.AssetType.Prop, 5962835), true);
			UPool.MyPool.AddObject("ReconnaissanceCSShirt", Utility.LoadBundleGameObject("ReconnaissanceCSShirt"), true, (HideFlags)52, (Sprite)null, Utilities.Utility.IDChecker(Utilities.AssetType.Prop, 5679401), true);
			UPool.MyPool.AddObject("ReconnaissanceCSShoulderArmor", Utility.LoadBundleGameObject("ReconnaissanceCSShoulderArmor"), true, (HideFlags)52, (Sprite)null, Utilities.Utility.IDChecker(Utilities.AssetType.Prop, 5907726), true);
			UPool.MyPool.AddObject("ReconnaissanceCSShoulderCap", Utility.LoadBundleGameObject("ReconnaissanceCSShoulderCap"), true, (HideFlags)52, (Sprite)null, Utilities.Utility.IDChecker(Utilities.AssetType.Prop, 5843190), true);
			UPool.MyPool.AddObject("ReconnaissanceCSStomachArmor", Utility.LoadBundleGameObject("ReconnaissanceCSStomachArmor"), true, (HideFlags)52, (Sprite)null, Utilities.Utility.IDChecker(Utilities.AssetType.Prop, 5724806), true);
			UPool.MyPool.AddObject("ReconnaissanceCSThighServoLeft", Utility.LoadBundleGameObject("ReconnaissanceCSThighServoLeft"), true, (HideFlags)52, (Sprite)null, Utilities.Utility.IDChecker(Utilities.AssetType.Prop, 5990512), true);
			UPool.MyPool.AddObject("ReconnaissanceCSThighServoRight", Utility.LoadBundleGameObject("ReconnaissanceCSThighServoRight"), true, (HideFlags)52, (Sprite)null, Utilities.Utility.IDChecker(Utilities.AssetType.Prop, 5867348), true);
			comment = "General Armor";
			UPool.MyPool.AddObject("ElectronicMuscleSuits", Utility.LoadBundleGameObject("ElectronicMuscleSuits"), true, (HideFlags)52, (Sprite)null, Utilities.Utility.IDChecker(Utilities.AssetType.Prop, 6345412), true);
			UPool.MyPool.AddObject("WarhammerShoulderMedalsInner", Utility.LoadBundleGameObject("WarhammerShoulderMedalsInner"), true, (HideFlags)52, (Sprite)null, Utilities.Utility.IDChecker(Utilities.AssetType.Prop, 6345342), true);
			UPool.MyPool.AddObject("WarhammerShoulderMedalsLeft", Utility.LoadBundleGameObject("WarhammerShoulderMedalsLeft"), true, (HideFlags)52, (Sprite)null, Utilities.Utility.IDChecker(Utilities.AssetType.Prop, 6345343), true);
			UPool.MyPool.AddObject("WarhammerShoulderMedalsRight", Utility.LoadBundleGameObject("WarhammerShoulderMedalsRight"), true, (HideFlags)52, (Sprite)null, Utilities.Utility.IDChecker(Utilities.AssetType.Prop, 6345344), true);
			UPool.MyPool.AddObject("WarhammerBoots", Utility.LoadBundleGameObject("WarhammerBoots"), true, (HideFlags)52, (Sprite)null, Utilities.Utility.IDChecker(Utilities.AssetType.Prop, 7824523), true);
			UPool.MyPool.AddObject("CrotchCloth", Utility.LoadBundleGameObject("CrotchCloth"), true, (HideFlags)52, (Sprite)null, Utilities.Utility.IDChecker(Utilities.AssetType.Prop, 32421232), true);
			comment = "Emblems";
			UPool.MyPool.AddObject("AssaultCareerSignsSCTShoulderArmor", Utility.LoadBundleGameObject("AssaultCareerSignsSCTShoulderArmor"), true, (HideFlags)52, (Sprite)null, Utilities.Utility.IDChecker(Utilities.AssetType.Prop, 700001), true);
			UPool.MyPool.AddObject("AssaultCareerSignsShoulderLeft", Utility.LoadBundleGameObject("AssaultCareerSignsShoulderLeft"), true, (HideFlags)52, (Sprite)null, Utilities.Utility.IDChecker(Utilities.AssetType.Prop, 700002), true);
			UPool.MyPool.AddObject("AssaultCareerSignsShoulderRight", Utility.LoadBundleGameObject("AssaultCareerSignsShoulderRight"), true, (HideFlags)52, (Sprite)null, Utilities.Utility.IDChecker(Utilities.AssetType.Prop, 700003), true);
			UPool.MyPool.AddObject("AssaultCareerSignsTMTRShoulderRight", Utility.LoadBundleGameObject("AssaultCareerSignsTMTRShoulderRight"), true, (HideFlags)52, (Sprite)null, Utilities.Utility.IDChecker(Utilities.AssetType.Prop, 700004), true);
			UPool.MyPool.AddObject("BloodAngelsLegionSignsSCTShoulderArmor", Utility.LoadBundleGameObject("BloodAngelsLegionSignsSCTShoulderArmor"), true, (HideFlags)52, (Sprite)null, Utilities.Utility.IDChecker(Utilities.AssetType.Prop, 700005), true);
			UPool.MyPool.AddObject("BloodAngelsLegionSignsShoulderLeft", Utility.LoadBundleGameObject("BloodAngelsLegionSignsShoulderLeft"), true, (HideFlags)52, (Sprite)null, Utilities.Utility.IDChecker(Utilities.AssetType.Prop, 700006), true);
			UPool.MyPool.AddObject("BloodAngelsLegionSignsShoulderRight", Utility.LoadBundleGameObject("BloodAngelsLegionSignsShoulderRight"), true, (HideFlags)52, (Sprite)null, Utilities.Utility.IDChecker(Utilities.AssetType.Prop, 700007), true);
			UPool.MyPool.AddObject("BloodAngelsLegionSignsTMTRShoulderRight", Utility.LoadBundleGameObject("BloodAngelsLegionSignsTMTRShoulderRight"), true, (HideFlags)52, (Sprite)null, Utilities.Utility.IDChecker(Utilities.AssetType.Prop, 700008), true);
			UPool.MyPool.AddObject("DarkAngelsLegionSignsSCTShoulderArmor", Utility.LoadBundleGameObject("DarkAngelsLegionSignsSCTShoulderArmor"), true, (HideFlags)52, (Sprite)null, Utilities.Utility.IDChecker(Utilities.AssetType.Prop, 700009), true);
			UPool.MyPool.AddObject("DarkAngelsLegionSignsShoulderLeft", Utility.LoadBundleGameObject("DarkAngelsLegionSignsShoulderLeft"), true, (HideFlags)52, (Sprite)null, Utilities.Utility.IDChecker(Utilities.AssetType.Prop, 700010), true);
			UPool.MyPool.AddObject("DarkAngelsLegionSignsShoulderRight", Utility.LoadBundleGameObject("DarkAngelsLegionSignsShoulderRight"), true, (HideFlags)52, (Sprite)null, Utilities.Utility.IDChecker(Utilities.AssetType.Prop, 700011), true);
			UPool.MyPool.AddObject("DarkAngelsLegionSignsTMTRShoulderRight", Utility.LoadBundleGameObject("DarkAngelsLegionSignsTMTRShoulderRight"), true, (HideFlags)52, (Sprite)null, Utilities.Utility.IDChecker(Utilities.AssetType.Prop, 700012), true);
			UPool.MyPool.AddObject("DevastatorCareerSignsSCTShoulderArmor", Utility.LoadBundleGameObject("DevastatorCareerSignsSCTShoulderArmor"), true, (HideFlags)52, (Sprite)null, Utilities.Utility.IDChecker(Utilities.AssetType.Prop, 700013), true);
			UPool.MyPool.AddObject("DevastatorCareerSignsShoulderLeft", Utility.LoadBundleGameObject("DevastatorCareerSignsShoulderLeft"), true, (HideFlags)52, (Sprite)null, Utilities.Utility.IDChecker(Utilities.AssetType.Prop, 700014), true);
			UPool.MyPool.AddObject("DevastatorCareerSignsShoulderRight", Utility.LoadBundleGameObject("DevastatorCareerSignsShoulderRight"), true, (HideFlags)52, (Sprite)null, Utilities.Utility.IDChecker(Utilities.AssetType.Prop, 700015), true);
			UPool.MyPool.AddObject("DevastatorCareerSignsTMTRShoulderRight", Utility.LoadBundleGameObject("DevastatorCareerSignsTMTRShoulderRight"), true, (HideFlags)52, (Sprite)null, Utilities.Utility.IDChecker(Utilities.AssetType.Prop, 700016), true);
			UPool.MyPool.AddObject("UltramarinesScoutMarkerMatSCTShoulderArmor", Utility.LoadBundleGameObject("DreadnoughtInscriptionMatSCTShoulderArmor"), true, (HideFlags)52, (Sprite)null, Utilities.Utility.IDChecker(Utilities.AssetType.Prop, 700017), true);
			UPool.MyPool.AddObject("UltramarinesScoutMarkerMatShoulderLeft", Utility.LoadBundleGameObject("DreadnoughtInscriptionMatShoulderLeft"), true, (HideFlags)52, (Sprite)null, Utilities.Utility.IDChecker(Utilities.AssetType.Prop, 700018), true);
			UPool.MyPool.AddObject("UltramarinesScoutMarkerMatShoulderRight", Utility.LoadBundleGameObject("DreadnoughtInscriptionMatShoulderRight"), true, (HideFlags)52, (Sprite)null, Utilities.Utility.IDChecker(Utilities.AssetType.Prop, 700019), true);
			UPool.MyPool.AddObject("UltramarinesScoutMarkerMatTMTRShoulderRight", Utility.LoadBundleGameObject("DreadnoughtInscriptionMatTMTRShoulderRight"), true, (HideFlags)52, (Sprite)null, Utilities.Utility.IDChecker(Utilities.AssetType.Prop, 700020), true);
			UPool.MyPool.AddObject("ImperialFistsLegionSignsSCTShoulderArmor", Utility.LoadBundleGameObject("ImperialFistsLegionSignsSCTShoulderArmor"), true, (HideFlags)52, (Sprite)null, Utilities.Utility.IDChecker(Utilities.AssetType.Prop, 700021), true);
			UPool.MyPool.AddObject("ImperialFistsLegionSignsShoulderLeft", Utility.LoadBundleGameObject("ImperialFistsLegionSignsShoulderLeft"), true, (HideFlags)52, (Sprite)null, Utilities.Utility.IDChecker(Utilities.AssetType.Prop, 700022), true);
			UPool.MyPool.AddObject("ImperialFistsLegionSignsShoulderRight", Utility.LoadBundleGameObject("ImperialFistsLegionSignsShoulderRight"), true, (HideFlags)52, (Sprite)null, Utilities.Utility.IDChecker(Utilities.AssetType.Prop, 700023), true);
			UPool.MyPool.AddObject("ImperialFistsLegionSignsTMTRShoulderRight", Utility.LoadBundleGameObject("ImperialFistsLegionSignsTMTRShoulderRight"), true, (HideFlags)52, (Sprite)null, Utilities.Utility.IDChecker(Utilities.AssetType.Prop, 700024), true);
			UPool.MyPool.AddObject("IronHandsLegionSignsSCTShoulderArmor", Utility.LoadBundleGameObject("IronHandsLegionSignsSCTShoulderArmor"), true, (HideFlags)52, (Sprite)null, Utilities.Utility.IDChecker(Utilities.AssetType.Prop, 700025), true);
			UPool.MyPool.AddObject("IronHandsLegionSignsShoulderLeft", Utility.LoadBundleGameObject("IronHandsLegionSignsShoulderLeft"), true, (HideFlags)52, (Sprite)null, Utilities.Utility.IDChecker(Utilities.AssetType.Prop, 700026), true);
			UPool.MyPool.AddObject("IronHandsLegionSignsShoulderRight", Utility.LoadBundleGameObject("IronHandsLegionSignsShoulderRight"), true, (HideFlags)52, (Sprite)null, Utilities.Utility.IDChecker(Utilities.AssetType.Prop, 700027), true);
			UPool.MyPool.AddObject("IronHandsLegionSignsTMTRShoulderRight", Utility.LoadBundleGameObject("IronHandsLegionSignsTMTRShoulderRight"), true, (HideFlags)52, (Sprite)null, Utilities.Utility.IDChecker(Utilities.AssetType.Prop, 700028), true);
			UPool.MyPool.AddObject("RavenGuardLegionSignsSCTShoulderArmor", Utility.LoadBundleGameObject("RavenGuardLegionSignsSCTShoulderArmor"), true, (HideFlags)52, (Sprite)null, Utilities.Utility.IDChecker(Utilities.AssetType.Prop, 700029), true);
			UPool.MyPool.AddObject("RavenGuardLegionSignsShoulderLeft", Utility.LoadBundleGameObject("RavenGuardLegionSignsShoulderLeft"), true, (HideFlags)52, (Sprite)null, Utilities.Utility.IDChecker(Utilities.AssetType.Prop, 700030), true);
			UPool.MyPool.AddObject("RavenGuardLegionSignsShoulderRight", Utility.LoadBundleGameObject("RavenGuardLegionSignsShoulderRight"), true, (HideFlags)52, (Sprite)null, Utilities.Utility.IDChecker(Utilities.AssetType.Prop, 700031), true);
			UPool.MyPool.AddObject("RavenGuardLegionSignsTMTRShoulderRight", Utility.LoadBundleGameObject("RavenGuardLegionSignsTMTRShoulderRight"), true, (HideFlags)52, (Sprite)null, Utilities.Utility.IDChecker(Utilities.AssetType.Prop, 700032), true);
			UPool.MyPool.AddObject("SalamandersLegionSignsSCTShoulderArmor", Utility.LoadBundleGameObject("SalamandersLegionSignsSCTShoulderArmor"), true, (HideFlags)52, (Sprite)null, Utilities.Utility.IDChecker(Utilities.AssetType.Prop, 700033), true);
			UPool.MyPool.AddObject("SalamandersLegionSignsShoulderLeft", Utility.LoadBundleGameObject("SalamandersLegionSignsShoulderLeft"), true, (HideFlags)52, (Sprite)null, Utilities.Utility.IDChecker(Utilities.AssetType.Prop, 700034), true);
			UPool.MyPool.AddObject("SalamandersLegionSignsShoulderRight", Utility.LoadBundleGameObject("SalamandersLegionSignsShoulderRight"), true, (HideFlags)52, (Sprite)null, Utilities.Utility.IDChecker(Utilities.AssetType.Prop, 700035), true);
			UPool.MyPool.AddObject("SalamandersLegionSignsTMTRShoulderRight", Utility.LoadBundleGameObject("SalamandersLegionSignsTMTRShoulderRight"), true, (HideFlags)52, (Sprite)null, Utilities.Utility.IDChecker(Utilities.AssetType.Prop, 700036), true);
			UPool.MyPool.AddObject("SpaceWolvesLegionSignsSCTShoulderArmor", Utility.LoadBundleGameObject("SpaceWolvesLegionSignsSCTShoulderArmor"), true, (HideFlags)52, (Sprite)null, Utilities.Utility.IDChecker(Utilities.AssetType.Prop, 700037), true);
			UPool.MyPool.AddObject("SpaceWolvesLegionSignsShoulderLeft", Utility.LoadBundleGameObject("SpaceWolvesLegionSignsShoulderLeft"), true, (HideFlags)52, (Sprite)null, Utilities.Utility.IDChecker(Utilities.AssetType.Prop, 700038), true);
			UPool.MyPool.AddObject("SpaceWolvesLegionSignsShoulderRight", Utility.LoadBundleGameObject("SpaceWolvesLegionSignsShoulderRight"), true, (HideFlags)52, (Sprite)null, Utilities.Utility.IDChecker(Utilities.AssetType.Prop, 700039), true);
			UPool.MyPool.AddObject("SpaceWolvesLegionSignsTMTRShoulderRight", Utility.LoadBundleGameObject("SpaceWolvesLegionSignsTMTRShoulderRight"), true, (HideFlags)52, (Sprite)null, Utilities.Utility.IDChecker(Utilities.AssetType.Prop, 700040), true);
			UPool.MyPool.AddObject("TacticalCareerSignsSCTShoulderArmor", Utility.LoadBundleGameObject("TacticalCareerSignsSCTShoulderArmor"), true, (HideFlags)52, (Sprite)null, Utilities.Utility.IDChecker(Utilities.AssetType.Prop, 700041), true);
			UPool.MyPool.AddObject("TacticalCareerSignsShoulderLeft", Utility.LoadBundleGameObject("TacticalCareerSignsShoulderLeft"), true, (HideFlags)52, (Sprite)null, Utilities.Utility.IDChecker(Utilities.AssetType.Prop, 700042), true);
			UPool.MyPool.AddObject("TacticalCareerSignsShoulderRight", Utility.LoadBundleGameObject("TacticalCareerSignsShoulderRight"), true, (HideFlags)52, (Sprite)null, Utilities.Utility.IDChecker(Utilities.AssetType.Prop, 700043), true);
			UPool.MyPool.AddObject("TacticalCareerSignsTMTRShoulderRight", Utility.LoadBundleGameObject("TacticalCareerSignsTMTRShoulderRight"), true, (HideFlags)52, (Sprite)null, Utilities.Utility.IDChecker(Utilities.AssetType.Prop, 700044), true);
			UPool.MyPool.AddObject("UltramarinesBadgeMatSCTShoulderArmor", Utility.LoadBundleGameObject("UltramarinesBadgeMatSCTShoulderArmor"), true, (HideFlags)52, (Sprite)null, Utilities.Utility.IDChecker(Utilities.AssetType.Prop, 700045), true);
			UPool.MyPool.AddObject("UltramarinesBadgeMatShoulderLeft", Utility.LoadBundleGameObject("UltramarinesBadgeMatShoulderLeft"), true, (HideFlags)52, (Sprite)null, Utilities.Utility.IDChecker(Utilities.AssetType.Prop, 700046), true);
			UPool.MyPool.AddObject("UltramarinesBadgeMatShoulderRight", Utility.LoadBundleGameObject("UltramarinesBadgeMatShoulderRight"), true, (HideFlags)52, (Sprite)null, Utilities.Utility.IDChecker(Utilities.AssetType.Prop, 700047), true);
			UPool.MyPool.AddObject("UltramarinesBadgeMatTMTRShoulderRight", Utility.LoadBundleGameObject("UltramarinesBadgeMatTMTRShoulderRight"), true, (HideFlags)52, (Sprite)null, Utilities.Utility.IDChecker(Utilities.AssetType.Prop, 700048), true);
			UPool.MyPool.AddObject("VeteranCareerSignsSCTShoulderArmor", Utility.LoadBundleGameObject("VeteranCareerSignsSCTShoulderArmor"), true, (HideFlags)52, (Sprite)null, Utilities.Utility.IDChecker(Utilities.AssetType.Prop, 700049), true);
			UPool.MyPool.AddObject("VeteranCareerSignsShoulderLeft", Utility.LoadBundleGameObject("VeteranCareerSignsShoulderLeft"), true, (HideFlags)52, (Sprite)null, Utilities.Utility.IDChecker(Utilities.AssetType.Prop, 700050), true);
			UPool.MyPool.AddObject("VeteranCareerSignsShoulderRight", Utility.LoadBundleGameObject("VeteranCareerSignsShoulderRight"), true, (HideFlags)52, (Sprite)null, Utilities.Utility.IDChecker(Utilities.AssetType.Prop, 700051), true);
			UPool.MyPool.AddObject("VeteranCareerSignsTMTRShoulderRight", Utility.LoadBundleGameObject("VeteranCareerSignsTMTRShoulderRight"), true, (HideFlags)52, (Sprite)null, Utilities.Utility.IDChecker(Utilities.AssetType.Prop, 700052), true);
			UPool.MyPool.AddObject("WhiteScarsLegionSignsSCTShoulderArmor", Utility.LoadBundleGameObject("WhiteScarsLegionSignsSCTShoulderArmor"), true, (HideFlags)52, (Sprite)null, Utilities.Utility.IDChecker(Utilities.AssetType.Prop, 700053), true);
			UPool.MyPool.AddObject("WhiteScarsLegionSignsShoulderLeft", Utility.LoadBundleGameObject("WhiteScarsLegionSignsShoulderLeft"), true, (HideFlags)52, (Sprite)null, Utilities.Utility.IDChecker(Utilities.AssetType.Prop, 700054), true);
			UPool.MyPool.AddObject("WhiteScarsLegionSignsShoulderRight", Utility.LoadBundleGameObject("WhiteScarsLegionSignsShoulderRight"), true, (HideFlags)52, (Sprite)null, Utilities.Utility.IDChecker(Utilities.AssetType.Prop, 700055), true);
			UPool.MyPool.AddObject("WhiteScarsLegionSignsTMTRShoulderRight", Utility.LoadBundleGameObject("WhiteScarsLegionSignsTMTRShoulderRight"), true, (HideFlags)52, (Sprite)null, Utilities.Utility.IDChecker(Utilities.AssetType.Prop, 700056), true);
			comment = "----------------------------------------------------------------------------------------------------------------------------";
			comment = "Custom Unit Bases";
			comment = "----------------------------------------------------------------------------------------------------------------------------";
			unitBasesObject.Add(UPool.MyPool.AddObject("Humanoid_Astarte_Base", Utility.LoadBundleGameObject("Humanoid_Astarte_Base"), true, (HideFlags)52, val, Utilities.Utility.IDChecker(Utilities.AssetType.UnitBase, 624534324), true));
			unitBasesObject.Add(UPool.MyPool.AddObject("Dreadnought_Unit_Base", Utility.LoadBundleGameObject("Dreadnought_Unit_Base"), true, (HideFlags)52, val, Utilities.Utility.IDChecker(Utilities.AssetType.UnitBase, 743523432), true));
			foreach (GameObject item in unitBasesObject)
			{
				Utility.AddToUnitLib(item);
			}
		}

		public static void SetWeapon(GameObject weapon, MeleeWeapon melee, RangeWeapon range, LandfallContentDatabase db)
		{
			if ((Object)(object)weapon == (Object)(object)UPool.MyPool.GetObject("Leiting Claw Right"))
			{
				weapon.AddComponent<AimedRigidbody>().speed = 0.5f;
			}
			if ((Object)(object)weapon == (Object)(object)UPool.MyPool.GetObject("Leiting Claw Left"))
			{
				weapon.AddComponent<AimedRigidbody>().speed = 0.5f;
			}
			if ((Object)(object)weapon == (Object)(object)UPool.MyPool.GetObject("TwinHeavyLaserCannons"))
			{
				weapon.AddComponent<AimedRigidbody>();
			}
		}

		public static void SetEffects(GameObject effect)
		{
		}

		public static void SetExplosion(GameObject explosion)
		{
		}

		public static void SetProjectile(GameObject proj, ProjectileHit projhit, LandfallContentDatabase db)
		{
		}

		static UManager()
		{
			unitBasesObject = new List<GameObject>();
			unitBases = new List<Unit>();
		}

		public static AssetBundle LoadBundle(string assetBundleName)
		{
			Stream manifestResourceStream = Assembly.GetExecutingAssembly().GetManifestResourceStream(assetBundleName);
			if (manifestResourceStream == null)
			{
				Debug.LogError((object)("[LoadBundle] Failed to find resource: " + assetBundleName));
				return null;
			}
			if (!manifestResourceStream.CanRead)
			{
				Debug.LogError((object)("[LoadBundle] Resource stream is not readable: " + assetBundleName));
				return null;
			}
			return Utilities.bundle = (bundle = AssetBundle.LoadFromStream(manifestResourceStream));
		}
	}
	[BepInDependency(/*Could not decode attribute arguments.*/)]
	[BepInPlugin("GeeztJeez.Warhammer", "Warhammer", "1.0.2")]
	internal class Loader : BaseUnityPlugin
	{
		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));
			Debug.Log((object)"Loading Warhammer!");
			SLMALoader.GetInstance();
			LandfallContentDatabase landfallContentDatabase = ContentDatabase.Instance().LandfallContentDatabase;
			UManager.Init(landfallContentDatabase);
			UManager.Utility.AddLocalization();
			new Harmony("Warhammer").PatchAll();
			GameObject[] array = Resources.FindObjectsOfTypeAll<GameObject>();
			for (int i = 0; i < array.Length; i++)
			{
				if (Object.op_Implicit((Object)(object)array[i].GetComponent<Explosion>()))
				{
					UManager.SetExplosion(array[i]);
				}
				if (Object.op_Implicit((Object)(object)array[i].GetComponent<ProjectileHit>()))
				{
					UManager.SetProjectile(array[i], array[i].GetComponent<ProjectileHit>(), landfallContentDatabase);
				}
				if (Object.op_Implicit((Object)(object)array[i].GetComponent<Unit>()))
				{
					UManager.SetUnits(array[i].GetComponent<Unit>(), landfallContentDatabase);
				}
				if (Object.op_Implicit((Object)(object)array[i].GetComponent<WeaponItem>()))
				{
					UManager.SetWeapon(array[i], array[i].GetComponent<MeleeWeapon>(), array[i].GetComponent<RangeWeapon>(), landfallContentDatabase);
				}
				if (Object.op_Implicit((Object)(object)array[i].GetComponent<PlaySoundEffect>()))
				{
					UManager.SetEffects(array[i]);
				}
				if (Object.op_Implicit((Object)(object)array[i].GetComponent<SpecialAbility>()))
				{
					UManager.SetMoves(array[i], landfallContentDatabase);
				}
				if (Object.op_Implicit((Object)(object)array[i].GetComponent<PropItem>()))
				{
					UManager.SetClothes(array[i], array[i].GetComponent<CharacterItem>(), array[i].GetComponent<PropItemData>(), landfallContentDatabase);
				}
			}
			UnitBlueprint[] array2 = Resources.FindObjectsOfTypeAll<UnitBlueprint>();
			for (int j = 0; j < array2.Length; j++)
			{
				UManager.SetBlueprint(array2[j], landfallContentDatabase);
				array2[j].Validate();
			}
			SceneManager.sceneLoaded += SceneLoaded;
			Debug.Log((object)"Loaded Warhammer Successfully!");
		}

		public void SceneLoaded(Scene scene, LoadSceneMode loadSceneMode)
		{
			//IL_009e: Unknown result type (might be due to invalid IL or missing references)
			//IL_00aa: Expected O, but got Unknown
			//IL_00ba: 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_00d0: Unknown result type (might be due to invalid IL or missing references)
			//IL_00e1: Unknown result type (might be due to invalid IL or missing references)
			//IL_00e9: Unknown result type (might be due to invalid IL or missing references)
			//IL_00eb: Unknown result type (might be due to invalid IL or missing references)
			//IL_00f5: Expected O, but got Unknown
			if (!(((Scene)(ref scene)).name == "UnitCreator_GamepadUI"))
			{
				return;
			}
			UnitEditorManager component = ((Scene)(ref scene)).GetRootGameObjects().ToList().Find((GameObject x) => Object.op_Implicit((Object)(object)x.GetComponent<UnitEditorManager>()))
				.GetComponent<UnitEditorManager>();
			List<UnitBaseWrapper> list = component.UnitBases.ToList();
			foreach (Unit unitBasis in UManager.unitBases)
			{
				UnitBlueprint val = SLMATool.CreateUnit("MoreContent Custom:" + unitBasis.Entity.Name, (UnitBlueprint)SLMALoader.SDic["blueprints"]["CustomWobbler"], (Faction)null, (Sprite)null);
				val.UnitBase = ((Component)unitBasis).gameObject;
				list.Add(new UnitBaseWrapper
				{
					BaseDisplayName = unitBasis.Entity.Name,
					BaseIcon = unitBasis.Entity.SpriteIcon,
					UnitBaseBlueprint = val,
					UnitBaseRestriction = (UnitBaseRestrictions)0
				});
				Debug.Log((object)("Inserted Warhammer Unit Bases: " + unitBasis.Entity.Name));
			}
			component.UnitBases = list.ToArray();
		}
	}
}
namespace WarhammerFunctions
{
	public class AimedRigidbody : MonoBehaviour
	{
		public Unit rootUnit;

		public Unit target;

		public float speed = 10f;

		private Rigidbody rigidbody;

		public void Start()
		{
			rigidbody = ((Component)this).GetComponentInChildren<Rigidbody>();
			rootUnit = ((Component)((Component)this).gameObject.transform.root).GetComponentInChildren<Unit>();
		}

		public void Update()
		{
			//IL_00a7: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b2: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b7: Unknown result type (might be due to invalid IL or missing references)
			//IL_00bc: 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_00c4: 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_00d0: Unknown result type (might be due to invalid IL or missing references)
			//IL_00d5: Unknown result type (might be due to invalid IL or missing references)
			//IL_00e2: Unknown result type (might be due to invalid IL or missing references)
			//IL_00e7: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ee: Unknown result type (might be due to invalid IL or missing references)
			if (Object.op_Implicit((Object)(object)rootUnit) && Object.op_Implicit((Object)(object)rootUnit.data.targetData) && Object.op_Implicit((Object)(object)rootUnit.data))
			{
				target = rootUnit.data.targetData.unit;
				if (Object.op_Implicit((Object)(object)rigidbody) && Object.op_Implicit((Object)(object)target) && (Object)(object)target != (Object)null && !rootUnit.data.Dead)
				{
					Vector3 val = target.data.mainRig.position - ((Component)this).transform.position;
					Quaternion val2 = Quaternion.LookRotation(((Vector3)(ref val)).normalized);
					Quaternion val3 = Quaternion.Slerp(rigidbody.rotation, val2, speed * Time.deltaTime);
					rigidbody.MoveRotation(val3);
				}
			}
		}
	}
}
namespace Warhammer
{
	public sealed class Utilities
	{
		public class Utility : MonoBehaviour
		{
			public static class ItemCategorizer
			{
				public static GameObject SetTag(GameObject item, string categoryName = "WARHAMMER", 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
								}
							};
						}
					}
					catch (Exception ex)
					{
						Debug.Log((object)ex);
					}
					return item;
				}
			}

			private static Dictionary<DatabaseID, GameObject> CombatMoves
			{
				get
				{
					Dictionary<DatabaseID, GameObject> dictionary = HelpLibrary.m_combatMoves;
					if (dictionary == null)
					{
						dictionary = (HelpLibrary.m_combatMoves = new Dictionary<DatabaseID, GameObject>());
					}
					return dictionary;
				}
			}

			private static Dictionary<DatabaseID, GameObject> CharacterProps
			{
				get
				{
					Dictionary<DatabaseID, GameObject> dictionary = HelpLibrary.m_characterProps;
					if (dictionary == null)
					{
						dictionary = (HelpLibrary.m_characterProps = new Dictionary<DatabaseID, GameObject>());
					}
					return dictionary;
				}
			}

			private static Dictionary<DatabaseID, GameObject> UnitBases
			{
				get
				{
					Dictionary<DatabaseID, GameObject> dictionary = HelpLibrary.m_unitBases;
					if (dictionary == null)
					{
						dictionary = (HelpLibrary.m_unitBases = new Dictionary<DatabaseID, GameObject>());
					}
					return dictionary;
				}
			}

			private static Dictionary<DatabaseID, Faction> Factions
			{
				get
				{
					Dictionary<DatabaseID, Faction> dictionary = HelpLibrary.m_factions;
					if (dictionary == null)
					{
						dictionary = (HelpLibrary.m_factions = new Dictionary<DatabaseID, Faction>());
					}
					return dictionary;
				}
			}

			private static Dictionary<DatabaseID, GameObject> Weapons
			{
				get
				{
					Dictionary<DatabaseID, GameObject> dictionary = HelpLibrary.m_weapons;
					if (dictionary == null)
					{
						dictionary = (HelpLibrary.m_weapons = new Dictionary<DatabaseID, GameObject>());
					}
					return dictionary;
				}
			}

			private static Dictionary<DatabaseID, GameObject> Projectiles
			{
				get
				{
					Dictionary<DatabaseID, GameObject> dictionary = HelpLibrary.m_projectiles;
					if (dictionary == null)
					{
						dictionary = (HelpLibrary.m_projectiles = new Dictionary<DatabaseID, GameObject>());
					}
					return dictionary;
				}
			}

			public static int IDChecker(AssetType type, int startId = 1)
			{
				//IL_0042: Unknown result type (might be due to invalid IL or missing references)
				int num = Math.Max(1, startId);
				DatabaseID id = default(DatabaseID);
				((DatabaseID)(ref id))..ctor(num);
				while (IsOccupied(type, id))
				{
					Debug.LogWarning((object)$"[IDChecker] ID {num} in use for {type}, trying {num + 1}…");
					num++;
					((DatabaseID)(ref id))..ctor(num);
				}
				Debug.Log((object)$"[IDChecker] Found free ID for {type}: {num}");
				return num;
			}

			private static bool IsOccupied(AssetType type, DatabaseID id)
			{
				//IL_0025: Unknown result type (might be due to invalid IL or missing references)
				//IL_0031: 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_0049: Unknown result type (might be due to invalid IL or missing references)
				//IL_0055: Unknown result type (might be due to invalid IL or missing references)
				//IL_0061: Unknown result type (might be due to invalid IL or missing references)
				return type switch
				{
					AssetType.Prop => CharacterProps.ContainsKey(id), 
					AssetType.UnitBase => UnitBases.ContainsKey(id), 
					AssetType.Faction => Factions.ContainsKey(id), 
					AssetType.Ability => CombatMoves.ContainsKey(id), 
					AssetType.Weapon => Weapons.ContainsKey(id), 
					AssetType.Projectile => Projectiles.ContainsKey(id), 
					_ => throw new ArgumentOutOfRangeException("type", type, null), 
				};
			}
		}

		public enum AssetType
		{
			Prop,
			UnitBase,
			Faction,
			Ability,
			Weapon,
			Projectile
		}

		public static AssetBundle bundle;
	}
}