Decompiled source of HeMoDingDing Mod v1.0.3

HeMoDingDingMod.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 EzECS.Barriers;
using HarmonyLib;
using HeMoDingDingMod.ECS;
using HeMoDingDingMod.unity脚本;
using HeMoDingDingMod.unity脚本.事件相关;
using HeMoDingDingMod.unity脚本.场景清理相关;
using HeMoDingDingMod.unity脚本.检测相关类.基类;
using HeMoDingDingMod.unity脚本.蠕虫类;
using HeMoDingDingMod.unity脚本.补丁空间;
using HeMoDingDingMod.unity脚本.补丁空间.补丁添加进;
using HeMoDingDingMod.unity脚本.补丁空间.锁定胜利判断单例;
using HeMoDingDingMod.工具文件夹.我的工具单例;
using HeMoDingDingMod.我的反射;
using HeMoDingDingMod.角色类.初王;
using HeMoDingDingMod.角色类.基兰;
using HeMoDingDingMod.角色类.幸运方块j;
using HeMoDingDingMod.角色类.武装直升机;
using HeMoDingDingMod.角色类.至高神性;
using Landfall.TABC;
using Landfall.TABS;
using Landfall.TABS.AI.Components;
using Landfall.TABS.AI.Components.Modifiers;
using Landfall.TABS.AI.Components.Tags;
using Landfall.TABS.AI.Systems;
using Landfall.TABS.GameMode;
using Landfall.TABS.GameState;
using Landfall.TABS.UnitEditor;
using TFBGames;
using Unity.Collections;
using Unity.Entities;
using Unity.Jobs;
using Unity.Mathematics;
using UnityEngine;
using UnityEngine.Events;
using UnityEngine.Rendering.PostProcessing;
using UnityEngine.SceneManagement;
using UnityEngine.UI;
using ZhaoHuanshi.召唤类;

[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)]
[assembly: AssemblyTitle("HeMoDingDingMod")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("")]
[assembly: AssemblyCopyright("")]
[assembly: AssemblyTrademark("")]
[assembly: ComVisible(false)]
[assembly: Guid("3a45c3cf-230c-4310-952f-0887d4266a22")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: TargetFramework(".NETFramework,Version=v4.8", FrameworkDisplayName = ".NET Framework 4.8")]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: AssemblyVersion("1.0.0.0")]
[module: UnverifiableCode]
namespace ZhaoHuanshi.召唤类
{
	public enum SimulatedButtonType
	{
		Normal,
		Confirm,
		Cooldown
	}
	public class SimulatedButtonConfig
	{
		public string Key { get; set; }

		public string DisplayName { get; set; }

		public SimulatedButtonType Type { get; set; } = SimulatedButtonType.Normal;

		public Action OnClick { get; set; }

		public float CooldownSeconds { get; set; } = 1f;

		public string ConfirmMessage { get; set; } = "确认执行?";
	}
	public static class 模拟按钮管理器
	{
		private class ButtonState
		{
			public bool IsOnCooldown = false;

			public bool IsWaitingConfirm = false;

			public float LastClickTime = 0f;

			public SettingsInstance SettingsInstance;

			public SimulatedButtonConfig Config;
		}

		private static GlobalSettingsHandler _settingsHandler;

		private static Dictionary<string, ButtonState> _buttonStates = new Dictionary<string, ButtonState>();

		private static MonoBehaviour _coroutineRunner;

		private static bool _isInitialized = false;

		public static void Initialize(MonoBehaviour coroutineRunner)
		{
			if (!_isInitialized)
			{
				_coroutineRunner = coroutineRunner;
				_settingsHandler = ServiceLocator.GetService<GlobalSettingsHandler>();
				if ((Object)(object)_settingsHandler == (Object)null)
				{
					Debug.LogError((object)"[模拟按钮管理器] 无法获取 GlobalSettingsHandler");
					return;
				}
				_isInitialized = true;
				Debug.Log((object)"[模拟按钮管理器] 初始化成功");
			}
		}

		public static void AddNormalButton(string key, string displayName, Action onClick)
		{
			SimulatedButtonConfig config = new SimulatedButtonConfig
			{
				Key = key,
				DisplayName = displayName,
				Type = SimulatedButtonType.Normal,
				OnClick = onClick
			};
			AddButton(config);
		}

		public static void AddCooldownButton(string key, string displayName, Action onClick, float cooldownSeconds = 1f)
		{
			SimulatedButtonConfig config = new SimulatedButtonConfig
			{
				Key = key,
				DisplayName = displayName,
				Type = SimulatedButtonType.Cooldown,
				OnClick = onClick,
				CooldownSeconds = cooldownSeconds
			};
			AddButton(config);
		}

		public static void AddConfirmButton(string key, string displayName, Action onClick, string confirmMessage = "确认执行?")
		{
			SimulatedButtonConfig config = new SimulatedButtonConfig
			{
				Key = key,
				DisplayName = displayName,
				Type = SimulatedButtonType.Confirm,
				OnClick = onClick,
				ConfirmMessage = confirmMessage
			};
			AddButton(config);
		}

		public static void AddButton(SimulatedButtonConfig config)
		{
			if (!_isInitialized)
			{
				Debug.LogError((object)"[模拟按钮管理器] 未初始化,请先调用 Initialize()");
				return;
			}
			try
			{
				if (_buttonStates.ContainsKey(config.Key))
				{
					Debug.LogWarning((object)("[模拟按钮管理器] 按钮已存在: " + config.Key));
					return;
				}
				ButtonState buttonState = new ButtonState
				{
					Config = config,
					IsOnCooldown = false,
					IsWaitingConfirm = false,
					LastClickTime = 0f
				};
				SettingsInstance val = (buttonState.SettingsInstance = CreateButtonSettingsInstance(config));
				AddToGameplaySettings(val);
				val.OnValueChanged += delegate(int value)
				{
					OnButtonValueChanged(config.Key, value > 0);
				};
				_buttonStates[config.Key] = buttonState;
				Debug.Log((object)("[模拟按钮管理器] 成功添加按钮: " + config.DisplayName + " (" + config.Key + ")"));
			}
			catch (Exception ex)
			{
				Debug.LogError((object)("[模拟按钮管理器] 添加按钮失败: " + ex.Message));
			}
		}

		private static SettingsInstance CreateButtonSettingsInstance(SimulatedButtonConfig config)
		{
			//IL_0001: Unknown result type (might be due to invalid IL or missing references)
			//IL_0007: Expected O, but got Unknown
			//IL_0010: Unknown result type (might be due to invalid IL or missing references)
			SettingsInstance val = new SettingsInstance();
			val.localizeOptions = false;
			val.settingsType = (SettingsType)0;
			val.m_settingsKey = config.Key;
			val.settingName = config.DisplayName;
			val.toolTip = GetTooltipByType(config);
			val.options = new string[2] { "点击执行", "已点击" };
			val.defaultValue = 0;
			val.currentValue = 0;
			val.defaultSliderValue = 0f;
			val.currentSliderValue = 0f;
			val.min = 0f;
			val.max = 1f;
			return val;
		}

		private static string GetTooltipByType(SimulatedButtonConfig config)
		{
			return config.Type switch
			{
				SimulatedButtonType.Normal => "点击执行:" + config.DisplayName, 
				SimulatedButtonType.Confirm => "点击后需要再次确认:" + config.DisplayName, 
				SimulatedButtonType.Cooldown => $"点击执行(冷却 {config.CooldownSeconds} 秒):{config.DisplayName}", 
				_ => "点击执行:" + config.DisplayName, 
			};
		}

		private static void OnButtonValueChanged(string key, bool isClicked)
		{
			if (!_buttonStates.TryGetValue(key, out var value) || !isClicked)
			{
				return;
			}
			if (value.IsOnCooldown)
			{
				Debug.Log((object)("[模拟按钮管理器] 按钮 " + key + " 正在冷却中"));
				ResetButtonValue(value);
				return;
			}
			switch (value.Config.Type)
			{
			case SimulatedButtonType.Normal:
				ExecuteButtonClick(value);
				break;
			case SimulatedButtonType.Confirm:
				HandleConfirmButton(value);
				break;
			case SimulatedButtonType.Cooldown:
				HandleCooldownButton(value);
				break;
			}
		}

		private static void ExecuteButtonClick(ButtonState state)
		{
			try
			{
				Debug.Log((object)("[模拟按钮管理器] 按钮被点击: " + state.Config.DisplayName));
				state.Config.OnClick?.Invoke();
			}
			catch (Exception ex)
			{
				Debug.LogError((object)("[模拟按钮管理器] 按钮执行失败: " + ex.Message));
			}
			finally
			{
				_coroutineRunner.StartCoroutine(ResetButtonValueDelayed(state, 0.1f));
			}
		}

		private static void HandleConfirmButton(ButtonState state)
		{
			if (!state.IsWaitingConfirm)
			{
				state.IsWaitingConfirm = true;
				UpdateButtonOptions(state, new string[2] { "确认执行?", "取消" }, 0);
				Debug.Log((object)("[模拟按钮管理器] 请再次点击确认: " + state.Config.DisplayName));
			}
			else
			{
				state.IsWaitingConfirm = false;
				ExecuteButtonClick(state);
				UpdateButtonOptions(state, new string[2] { "点击执行", "已点击" }, 0);
			}
		}

		private static void HandleCooldownButton(ButtonState state)
		{
			state.IsOnCooldown = true;
			state.LastClickTime = Time.time;
			ExecuteButtonClick(state);
			_coroutineRunner.StartCoroutine(CooldownCoroutine(state));
		}

		private static IEnumerator CooldownCoroutine(ButtonState state)
		{
			float elapsed = 0f;
			float cooldown = state.Config.CooldownSeconds;
			UpdateButtonOptions(state, new string[2] { "冷却中...", "冷却中..." }, 0);
			while (elapsed < cooldown)
			{
				elapsed += Time.deltaTime;
				if (elapsed < cooldown)
				{
					int remaining = Mathf.CeilToInt(cooldown - elapsed);
					UpdateButtonOptions(state, new string[2]
					{
						$"冷却中 {remaining}s",
						$"冷却中 {remaining}s"
					}, 0);
				}
				yield return null;
			}
			state.IsOnCooldown = false;
			UpdateButtonOptions(state, new string[2] { "点击执行", "已点击" }, 0);
			Debug.Log((object)("[模拟按钮管理器] 按钮 " + state.Config.Key + " 冷却结束"));
		}

		private static void UpdateButtonOptions(ButtonState state, string[] options, int currentValue)
		{
			if (state.SettingsInstance != null)
			{
				state.SettingsInstance.options = options;
				state.SettingsInstance.currentValue = currentValue;
				FieldInfo field = typeof(SettingsInstance).GetField("OnValueChanged", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic);
			}
		}

		private static void ResetButtonValue(ButtonState state)
		{
			if (state.SettingsInstance != null)
			{
				typeof(SettingsInstance).GetField("currentValue", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic)?.SetValue(state.SettingsInstance, 0);
			}
		}

		private static IEnumerator ResetButtonValueDelayed(ButtonState state, float delay)
		{
			yield return (object)new WaitForSecondsRealtime(delay);
			ResetButtonValue(state);
		}

		private static void AddToGameplaySettings(SettingsInstance instance)
		{
			FieldInfo field = typeof(GlobalSettingsHandler).GetField("m_gameplaySettings", BindingFlags.Instance | BindingFlags.NonPublic);
			List<SettingsInstance> list = ((SettingsInstance[])field.GetValue(_settingsHandler))?.ToList() ?? new List<SettingsInstance>();
			if (list.Any((SettingsInstance s) => s.m_settingsKey == instance.m_settingsKey))
			{
				Debug.LogWarning((object)("[模拟按钮管理器] 设置项已存在: " + instance.m_settingsKey));
				return;
			}
			list.Add(instance);
			field.SetValue(_settingsHandler, list.ToArray());
		}

		public static void RemoveButton(string key)
		{
			if (_buttonStates.ContainsKey(key))
			{
				FieldInfo field = typeof(GlobalSettingsHandler).GetField("m_gameplaySettings", BindingFlags.Instance | BindingFlags.NonPublic);
				List<SettingsInstance> list = ((SettingsInstance[])field.GetValue(_settingsHandler))?.ToList() ?? new List<SettingsInstance>();
				SettingsInstance val = ((IEnumerable<SettingsInstance>)list).FirstOrDefault((Func<SettingsInstance, bool>)((SettingsInstance s) => s.m_settingsKey == key));
				if (val != null)
				{
					list.Remove(val);
					field.SetValue(_settingsHandler, list.ToArray());
				}
				_buttonStates.Remove(key);
				Debug.Log((object)("[模拟按钮管理器] 已移除按钮: " + key));
			}
		}

		public static void ClearAllButtons()
		{
			foreach (string item in _buttonStates.Keys.ToList())
			{
				RemoveButton(item);
			}
		}
	}
}
namespace HeMoDingDingMod
{
	[BepInPlugin("HeMoDingDingMod", "HeMoDingDingMod", "1.0.0")]
	internal class Loader : BaseUnityPlugin
	{
		private void Awake()
		{
			//IL_0017: Unknown result type (might be due to invalid IL or missing references)
			//IL_001d: Expected O, but got Unknown
			((BaseUnityPlugin)this).Logger.LogInfo((object)"黑莫丁丁补丁注入中...");
			Harmony val = new Harmony("HeMoDingDingMod");
			val.PatchAll();
			((BaseUnityPlugin)this).Logger.LogInfo((object)"黑莫丁丁补丁注入完成!");
			((MonoBehaviour)this).StartCoroutine(call());
		}

		private IEnumerator call()
		{
			UManager.Init();
			GameObject HeMoDingdingDanli = new GameObject("HeMoDingdingDanli");
			Object.DontDestroyOnLoad((Object)(object)HeMoDingdingDanli);
			HeMoDingdingDanli.AddComponent<添加自定义内容>();
			Debug.Log((object)"黑莫丁丁mod已加载完毕");
			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));
			UManager.音库合并方法();
			多国语言部分333.添加语言();
			幸运方块加载类.更新列表();
			幸运方块加载类.更新爆炸对象列表();
			幸运方块加载类.更新效果对象列表();
			添加设置按钮.Initialize();
			模拟按钮管理器.Initialize((MonoBehaviour)(object)this);
			模拟按钮管理器.AddNormalButton("幸运方块刷新所有单位列表", "[幸运方块] 刷新所有单位列表", delegate
			{
				Debug.Log((object)"刷新列表!!");
				幸运方块加载类.更新列表();
			});
			模拟按钮管理器.AddNormalButton("幸运方块刷新爆炸物列表和效果列表", "[幸运方块] ", delegate
			{
				Debug.Log((object)"刷新列表!!");
				幸运方块加载类.更新爆炸对象列表();
				幸运方块加载类.更新效果对象列表();
			});
			添加设置按钮.AddToggle("单位测试模式", "[黑莫丁丁] 特色功能", HeMoDingDing游戏模式单例.Instance.IsLocked, delegate(bool isEnabled)
			{
				if (isEnabled)
				{
					HeMoDingDing游戏模式单例.Instance.Lock();
				}
				else
				{
					HeMoDingDing游戏模式单例.Instance.Unlock();
				}
				Debug.Log((object)("沉浸式模式" + (isEnabled ? "启用" : "禁用")));
			});
			_ = 死亡单位清理组件.Instance;
		}
	}
	public static class UManager
	{
		public enum 对象类
		{
			单位模型,
			武器,
			技能,
			服饰,
			抛射物
		}

		public static string modname = "HeMoDingDingMod";

		public static AssetBundle ab包;

		public static List<UnitBlueprint> 编辑器单位基础 = new List<UnitBlueprint>();

		public static int MYmodid = 228472303;

		public static int MYmodunitid = 62847203;

		public static void 音库合并方法()
		{
			SoundPlayer service = ServiceLocator.GetService<SoundPlayer>();
			if ((Object)(object)service == (Object)null)
			{
				Debug.LogError((object)"无法获取SoundPlayer服务");
				ab包.Unload(false);
				return;
			}
			SoundBank soundBank = service.soundBank;
			if ((Object)(object)soundBank == (Object)null)
			{
				Debug.LogError((object)"SoundPlayer中的soundBank为空");
				ab包.Unload(false);
				return;
			}
			SoundBank[] array = ab包.LoadAllAssets<SoundBank>();
			if (array != null && array.Length != 0)
			{
				List<SoundBankCategory> list = soundBank.Categories?.ToList() ?? new List<SoundBankCategory>();
				SoundBank[] array2 = array;
				foreach (SoundBank val in array2)
				{
					if ((Object)(object)val != (Object)null && val.Categories != null)
					{
						list.AddRange(val.Categories);
						Debug.Log((object)$"已合并SoundBank: {((Object)val).name}, 类别数: {val.Categories.Length}");
					}
					else if ((Object)(object)val == (Object)null)
					{
						Debug.LogWarning((object)"遇到空的SoundBank引用,已跳过");
					}
					else
					{
						Debug.LogWarning((object)("SoundBank " + ((Object)val).name + " 的Categories为空"));
					}
				}
				soundBank.Categories = list.ToArray();
				Debug.Log((object)$"SoundBank合并完成,总类别数: {list.Count}");
			}
			else
			{
				Debug.LogWarning((object)"主AssetBundle中没有找到任何SoundBank");
			}
		}

		public static void Init()
		{
			//IL_013f: Unknown result type (might be due to invalid IL or missing references)
			//IL_015d: Unknown result type (might be due to invalid IL or missing references)
			//IL_01c3: Unknown result type (might be due to invalid IL or missing references)
			//IL_01e0: Unknown result type (might be due to invalid IL or missing references)
			//IL_0224: Unknown result type (might be due to invalid IL or missing references)
			//IL_0256: Unknown result type (might be due to invalid IL or missing references)
			//IL_0288: Unknown result type (might be due to invalid IL or missing references)
			//IL_02b8: Unknown result type (might be due to invalid IL or missing references)
			//IL_040d: Unknown result type (might be due to invalid IL or missing references)
			//IL_041e: Unknown result type (might be due to invalid IL or missing references)
			//IL_04ca: Unknown result type (might be due to invalid IL or missing references)
			//IL_055d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0575: Unknown result type (might be due to invalid IL or missing references)
			//IL_05d9: Unknown result type (might be due to invalid IL or missing references)
			//IL_061f: Unknown result type (might be due to invalid IL or missing references)
			//IL_073f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0745: Unknown result type (might be due to invalid IL or missing references)
			//IL_078d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0846: Unknown result type (might be due to invalid IL or missing references)
			//IL_088c: Unknown result type (might be due to invalid IL or missing references)
			//IL_09ba: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a8a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0b09: Unknown result type (might be due to invalid IL or missing references)
			//IL_0d15: Unknown result type (might be due to invalid IL or missing references)
			//IL_0d74: Unknown result type (might be due to invalid IL or missing references)
			//IL_0d87: Unknown result type (might be due to invalid IL or missing references)
			//IL_0d9a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0dad: Unknown result type (might be due to invalid IL or missing references)
			//IL_0e19: Unknown result type (might be due to invalid IL or missing references)
			//IL_0e4a: Unknown result type (might be due to invalid IL or missing references)
			//IL_10ca: Unknown result type (might be due to invalid IL or missing references)
			//IL_10d0: Unknown result type (might be due to invalid IL or missing references)
			//IL_1107: Unknown result type (might be due to invalid IL or missing references)
			//IL_1211: Unknown result type (might be due to invalid IL or missing references)
			//IL_124d: Unknown result type (might be due to invalid IL or missing references)
			//IL_1253: Unknown result type (might be due to invalid IL or missing references)
			//IL_1286: Unknown result type (might be due to invalid IL or missing references)
			//IL_129e: Unknown result type (might be due to invalid IL or missing references)
			//IL_12b6: Unknown result type (might be due to invalid IL or missing references)
			//IL_12ce: Unknown result type (might be due to invalid IL or missing references)
			//IL_1301: Unknown result type (might be due to invalid IL or missing references)
			//IL_1313: Unknown result type (might be due to invalid IL or missing references)
			//IL_1350: Unknown result type (might be due to invalid IL or missing references)
			//IL_13d3: Unknown result type (might be due to invalid IL or missing references)
			//IL_1518: Unknown result type (might be due to invalid IL or missing references)
			//IL_151e: Unknown result type (might be due to invalid IL or missing references)
			//IL_15b2: Unknown result type (might be due to invalid IL or missing references)
			//IL_17aa: Unknown result type (might be due to invalid IL or missing references)
			//IL_1808: Unknown result type (might be due to invalid IL or missing references)
			//IL_183d: Unknown result type (might be due to invalid IL or missing references)
			//IL_19b6: Unknown result type (might be due to invalid IL or missing references)
			//IL_1bab: Unknown result type (might be due to invalid IL or missing references)
			//IL_1bb1: Unknown result type (might be due to invalid IL or missing references)
			//IL_1c70: Unknown result type (might be due to invalid IL or missing references)
			//IL_1cd3: Unknown result type (might be due to invalid IL or missing references)
			//IL_1e1e: Unknown result type (might be due to invalid IL or missing references)
			//IL_1e7c: Unknown result type (might be due to invalid IL or missing references)
			//IL_1eda: Unknown result type (might be due to invalid IL or missing references)
			//IL_1f38: Unknown result type (might be due to invalid IL or missing references)
			//IL_1f96: Unknown result type (might be due to invalid IL or missing references)
			//IL_1ff4: Unknown result type (might be due to invalid IL or missing references)
			//IL_2052: Unknown result type (might be due to invalid IL or missing references)
			//IL_20b0: Unknown result type (might be due to invalid IL or missing references)
			//IL_210e: Unknown result type (might be due to invalid IL or missing references)
			Assembly executingAssembly = Assembly.GetExecutingAssembly();
			Stream manifestResourceStream = executingAssembly.GetManifestResourceStream("HeMoDingDingMod.hemodingdongsass");
			AssetBundle val = (ab包 = AssetBundle.LoadFromStream(manifestResourceStream));
			Material[] array = val.LoadAllAssets<Material>();
			if (array == null || array.Length == 0)
			{
				Debug.LogWarning((object)"主AssetBundle中没有找到任何材质");
			}
			else
			{
				Material[] array2 = array;
				foreach (Material val2 in array2)
				{
					if ((Object)(object)val2 == (Object)null)
					{
						Debug.LogWarning((object)"遇到空的材质引用,已跳过");
					}
					else if ((Object)(object)val2.shader == (Object)null)
					{
						Debug.LogWarning((object)("材质 " + ((Object)val2).name + " 的Shader为空,无法修复"));
					}
					else
					{
						材质修复工具.刷新材质属性(val2);
					}
				}
			}
			Faction val3 = 游戏内容工具.创建派系("UNIT_KONGBUSHENGWU", null, val.LoadAsset<Sprite>("恐怖生物派系dsadsicon"), -4, 49582393);
			GameObject val4 = 游戏内容工具.注册单位Base(val.LoadAsset<GameObject>("世界吞噬者模型"));
			val4.GetComponentInChildren<平滑蠕虫跟随>().节间距 = 2f;
			val4.GetComponentInChildren<平滑蠕虫跟随>().最大允许距离倍数 = 0.9f;
			val4.GetComponentInChildren<吞噬者移动类>().巡游时间 = 7f;
			val4.GetComponentInChildren<吞噬者移动类>().转向速度 = 80f;
			UnitBlueprint val5 = 游戏内容工具.复制单位("UNIT_SHIJIETUNSHIZHE", 游戏内容工具.获取原版单位蓝图(new DatabaseID(-1, 1166250463)), val3, val.LoadAsset<Sprite>("世界吞噬者dsfk"), (DatabaseID?)new DatabaseID(-3, 350452348));
			val5.UnitBase = val4;
			val5.sizeMultiplier = 0.8f;
			val5.health = 599f;
			val5.forceCost = 4800u;
			val5.SetUnitSounds("Secret Attack Vocals/Raptor", "Secret Death Vocals/Raptor", 0.6f);
			UnitBlueprint val6 = 游戏内容工具.复制单位("世界吞噬者基础蓝图", 游戏内容工具.获取原版单位蓝图(new DatabaseID(-1, 1166250463)), (Faction)null, val.LoadAsset<Sprite>("世界吞噬者dsfk"), (DatabaseID?)new DatabaseID(-3, 345363465));
			val6.UnitBase = val4;
			编辑器单位基础.Add(val6);
			游戏内容工具.注册道具(游戏物品加入.Instance.创建物品("调整身体体节连接", val.LoadAsset<GameObject>("空服饰3453"), new DatabaseID(-3, 176742343))).AddComponent<蠕虫服饰调整>();
			游戏内容工具.注册道具(游戏物品加入.Instance.创建物品("调整蠕虫移动属性", val.LoadAsset<GameObject>("空服饰3453"), new DatabaseID(-3, 176742344))).AddComponent<蠕虫服饰调整2>();
			游戏内容工具.注册道具(游戏物品加入.Instance.创建物品("调整蠕虫移动属性2", val.LoadAsset<GameObject>("空服饰3453"), new DatabaseID(-3, 176742345))).AddComponent<蠕虫服饰调整3>();
			UnitBlueprint val7 = 游戏内容工具.复制单位("UNIT_HEIJIABUBUSIZHAN", (UnitBlueprint)null, val3, val.LoadAsset<Sprite>("玛丽卡死icon"), (DatabaseID?)new DatabaseID(-3, 312534211));
			val7.objectsToSpawnAsChildren = (GameObject[])(object)new GameObject[0];
			val7.health = 9000f;
			val7.massMultiplier = 20f;
			GameObject rightWeapon = 注册创建游戏对象自动id分配(val.LoadAsset<GameObject>("黑剑23243"), 对象类.武器);
			val7.RightWeapon = rightWeapon;
			val7.m_props = (GameObject[])(object)new GameObject[11]
			{
				注册创建游戏对象自动id分配(val.LoadAsset<GameObject>("玛利喀斯后披风"), 对象类.服饰),
				注册创建游戏对象自动id分配(val.LoadAsset<GameObject>("玛利喀斯大腿护甲"), 对象类.服饰),
				注册创建游戏对象自动id分配(val.LoadAsset<GameObject>("玛利喀斯大臂护甲"), 对象类.服饰),
				注册创建游戏对象自动id分配(val.LoadAsset<GameObject>("玛利喀斯头盔"), 对象类.服饰),
				注册创建游戏对象自动id分配(val.LoadAsset<GameObject>("玛利喀斯小腿护甲"), 对象类.服饰),
				注册创建游戏对象自动id分配(val.LoadAsset<GameObject>("玛利喀斯小臂护甲"), 对象类.服饰),
				注册创建游戏对象自动id分配(val.LoadAsset<GameObject>("玛利喀斯护膝"), 对象类.服饰),
				注册创建游戏对象自动id分配(val.LoadAsset<GameObject>("玛利喀斯肩膀护甲"), 对象类.服饰),
				注册创建游戏对象自动id分配(val.LoadAsset<GameObject>("玛利喀斯胸甲"), 对象类.服饰),
				注册创建游戏对象自动id分配(val.LoadAsset<GameObject>("玛利喀斯腰部护甲"), 对象类.服饰),
				注册创建游戏对象自动id分配(val.LoadAsset<GameObject>("玛利喀斯鞋子"), 对象类.服饰)
			};
			GameObject val8 = 游戏内容工具.注册单位Base(游戏物品加入.Instance.创建物品("灰色人物模型", 获取工具.获取原版内容游戏物品("m_unitBases", new DatabaseID(-1, 1760500345)), new DatabaseID(-3, 13972330)));
			TeamColor[] componentsInChildren = val8.GetComponentsInChildren<TeamColor>();
			for (int j = 0; j < componentsInChildren.Length; j++)
			{
				componentsInChildren[j].blueMaterial = val.LoadAsset<Material>("低反射灰色12");
				componentsInChildren[j].redMaterial = val.LoadAsset<Material>("低反射灰色12");
			}
			val7.UnitBase = val8;
			val7.forceCost = 10000u;
			val7.SetUnitSounds("Reinassance Attack Vocals/Jouster", "Reinassance Attack Vocals/Jouster", 0.4f);
			UnitBlueprint val9 = 游戏内容工具.复制单位("UNIT_YILIUTI", (UnitBlueprint)null, val3, val.LoadAsset<Sprite>("遗留着uu"), (DatabaseID?)new DatabaseID(-3, 312534212));
			val9.forceCost = 120u;
			val9.m_props = (GameObject[])(object)new GameObject[7]
			{
				注册创建游戏对象自动id分配(val.LoadAsset<GameObject>("死亡剑士上衣"), 对象类.服饰),
				注册创建游戏对象自动id分配(val.LoadAsset<GameObject>("死亡剑士大臂套"), 对象类.服饰),
				注册创建游戏对象自动id分配(val.LoadAsset<GameObject>("死亡剑士头部插件"), 对象类.服饰),
				注册创建游戏对象自动id分配(val.LoadAsset<GameObject>("死亡剑士小臂刺"), 对象类.服饰),
				注册创建游戏对象自动id分配(val.LoadAsset<GameObject>("死亡剑士躯干装饰剑"), 对象类.服饰),
				获取工具.获取原版内容游戏物品("m_characterProps", new DatabaseID(-1, 1944888562)),
				获取工具.获取原版内容游戏物品("m_characterProps", new DatabaseID(-1, 273394296))
			};
			val9.RightWeapon = 注册创建游戏对象自动id分配(val.LoadAsset<GameObject>("死亡剑士刀剑"), 对象类.武器);
			val9.health = 20f;
			val9.objectsToSpawnAsChildren = (GameObject[])(object)new GameObject[1] { 注册创建游戏对象自动id分配(val.LoadAsset<GameObject>("cd瞬移技能")) };
			val9.UnitBase = 获取工具.获取原版内容游戏物品("m_unitBases", new DatabaseID(-1, 1288909650));
			val9.SetUnitSounds("Reinassance Attack Vocals/Halberd", "Reinassance Death Vocals/Halberd", 0.5f);
			UnitBlueprint val10 = 游戏内容工具.复制单位("UNIT_KUANGBAOZHADANREN", (UnitBlueprint)null, val3, val.LoadAsset<Sprite>("精神病人32213"), (DatabaseID?)new DatabaseID(-3, 312534213));
			val10.sizeMultiplier = 1f;
			val10.health = 70f;
			val10.forceCost = 350u;
			val10.m_props = (GameObject[])(object)new GameObject[6]
			{
				注册创建游戏对象自动id分配(val.LoadAsset<GameObject>("爆破鬼才左腿装饰"), 对象类.服饰),
				注册创建游戏对象自动id分配(val.LoadAsset<GameObject>("爆破鬼才的夹克"), 对象类.服饰),
				注册创建游戏对象自动id分配(val.LoadAsset<GameObject>("爆破鬼才的脑袋"), 对象类.服饰),
				注册创建游戏对象自动id分配(val.LoadAsset<GameObject>("爆破鬼才的连体服饰"), 对象类.服饰),
				注册创建游戏对象自动id分配(val.LoadAsset<GameObject>("爆破鬼才背包342"), 对象类.服饰),
				注册创建游戏对象自动id分配(val.LoadAsset<GameObject>("爆破鬼才的轮子腰带"), 对象类.服饰)
			};
			val10.RightWeapon = 注册创建游戏对象自动id分配(val.LoadAsset<GameObject>("扔炸弹34"), 对象类.武器);
			val10.LeftWeapon = val10.RightWeapon;
			注册创建游戏对象自动id分配(val.LoadAsset<GameObject>("大小炸弹34"), 对象类.抛射物);
			val10.objectsToSpawnAsChildren = (GameObject[])(object)new GameObject[1] { 注册创建游戏对象自动id分配(val.LoadAsset<GameObject>("桶装爆破进243")) };
			val10.MovementComponents = new List<IMovementComponent> { (IMovementComponent)(object)default(NeverStopRunning) };
			val10.SetUnitSounds("Western Attack Vocals/Quickdraw", "Western Death Vocals/Quickdraw", 1.5f);
			UnitBlueprint val11 = 游戏内容工具.复制单位("UNIT_JUEXINGSHUBING", (UnitBlueprint)null, val3, val.LoadAsset<Sprite>("觉醒骷髅兵3we"), (DatabaseID?)new DatabaseID(-3, 312534214));
			val11.sizeMultiplier = 0.7f;
			val11.health = 200f;
			val11.forceCost = 500u;
			val11.m_props = (GameObject[])(object)new GameObject[4]
			{
				注册创建游戏对象自动id分配(val.LoadAsset<GameObject>("觉醒骷髅大褂"), 对象类.服饰),
				注册创建游戏对象自动id分配(val.LoadAsset<GameObject>("觉醒骷髅帽子"), 对象类.服饰),
				注册创建游戏对象自动id分配(val.LoadAsset<GameObject>("觉醒骷髅裤子"), 对象类.服饰),
				注册创建游戏对象自动id分配(val.LoadAsset<GameObject>("觉醒骷髅鞋子"), 对象类.服饰)
			};
			val11.RightWeapon = 注册创建游戏对象自动id分配(val.LoadAsset<GameObject>("觉醒骷髅复制剑"), 对象类.武器);
			val11.UnitBase = 获取工具.获取原版内容游戏物品("m_unitBases", new DatabaseID(-1, 1288909650));
			val11.SetUnitSounds("Halloween Attack Vocals/SkeletonWarrior", "Halloween Death Vocals/SkeletonWarrior", 0.95f);
			UnitBlueprint val12 = 游戏内容工具.复制单位("UNIT_YONGYEQIANXINGZHE", (UnitBlueprint)null, val3, val.LoadAsset<Sprite>("幻影刺客sdkfhj"), (DatabaseID?)new DatabaseID(-3, 332534267));
			val12.health = 900f;
			val12.objectsToSpawnAsChildren = (GameObject[])(object)new GameObject[2]
			{
				注册创建游戏对象自动id分配(val.LoadAsset<GameObject>("体积雾技能")),
				注册创建游戏对象自动id分配(val.LoadAsset<GameObject>("暗影刺客瞬移技能"))
			};
			val12.m_props = (GameObject[])(object)new GameObject[5]
			{
				注册创建游戏对象自动id分配(val.LoadAsset<GameObject>("暗影刺客上衣"), 对象类.服饰),
				注册创建游戏对象自动id分配(val.LoadAsset<GameObject>("暗影刺客头发"), 对象类.服饰),
				注册创建游戏对象自动id分配(val.LoadAsset<GameObject>("暗影刺客意义不明的手臂套子"), 对象类.服饰),
				注册创建游戏对象自动id分配(val.LoadAsset<GameObject>("暗影刺客裤子"), 对象类.服饰),
				注册创建游戏对象自动id分配(val.LoadAsset<GameObject>("暗影刺客鞋子"), 对象类.服饰)
			};
			val12.RightWeapon = 注册创建游戏对象自动id分配(val.LoadAsset<GameObject>("暗影刺客武器"), 对象类.武器);
			val12.LeftWeapon = val12.RightWeapon;
			val12.forceCost = 1500u;
			val12.SetUnitSounds("Fantasy Dark Attack Vocals/FantasyAssassin", "Fantasy Dark Death Vocals/FantasyAssassin", 0.95f);
			UnitBlueprint val13 = 游戏内容工具.复制单位("UNIT_SHIluoTANXIANJIA", (UnitBlueprint)null, val3, val.LoadAsset<Sprite>("失落冒险家43rdsf"), (DatabaseID?)new DatabaseID(-3, 332534268));
			val13.sizeMultiplier = 1.5f;
			val13.health = 1400f;
			val13.massMultiplier = 20f;
			val13.m_props = (GameObject[])(object)new GameObject[6]
			{
				注册创建游戏对象自动id分配(val.LoadAsset<GameObject>("迷雾行者上衣"), 对象类.服饰),
				注册创建游戏对象自动id分配(val.LoadAsset<GameObject>("迷雾行者外套"), 对象类.服饰),
				注册创建游戏对象自动id分配(val.LoadAsset<GameObject>("迷雾行者头盔和头发"), 对象类.服饰),
				注册创建游戏对象自动id分配(val.LoadAsset<GameObject>("迷雾行者披风"), 对象类.服饰),
				注册创建游戏对象自动id分配(val.LoadAsset<GameObject>("迷雾行者裤子"), 对象类.服饰),
				注册创建游戏对象自动id分配(val.LoadAsset<GameObject>("迷雾行者鞋子"), 对象类.服饰)
			};
			val13.objectsToSpawnAsChildren = (GameObject[])(object)new GameObject[1] { 获取工具.获取原版内容游戏物品("m_combatMoves", new DatabaseID(-1, 920020464)) };
			val13.RightWeapon = 注册创建游戏对象自动id分配(val.LoadAsset<GameObject>("十字巨剑3434"), 对象类.武器);
			val13.holdinigWithTwoHands = true;
			val13.movementSpeedMuiltiplier = 1.8f;
			val13.forceCost = 3700u;
			val13.SetUnitSounds("Fantasy Dark Attack Vocals/StormPriest", "Fantasy Dark Death Vocals/StormPriest", 0.85f);
			UnitBlueprint val14 = 游戏内容工具.复制单位("UNIT_ZHONGXINGJUNCHUANQIANGQBING", (UnitBlueprint)null, val3, val.LoadAsset<Sprite>("重装步兵daskfn"), (DatabaseID?)new DatabaseID(-3, 332534269));
			val14.health = 3000f;
			val14.sizeMultiplier = 1.7f;
			val14.massMultiplier = 30f;
			val14.m_props = (GameObject[])(object)new GameObject[12]
			{
				注册创建游戏对象自动id分配(val.LoadAsset<GameObject>("重装亡灵上板甲"), 对象类.服饰),
				注册创建游戏对象自动id分配(val.LoadAsset<GameObject>("重装亡灵下体板甲"), 对象类.服饰),
				注册创建游戏对象自动id分配(val.LoadAsset<GameObject>("重装亡灵前挡"), 对象类.服饰),
				注册创建游戏对象自动id分配(val.LoadAsset<GameObject>("重装亡灵大腿护甲"), 对象类.服饰),
				注册创建游戏对象自动id分配(val.LoadAsset<GameObject>("重装亡灵大臂护甲"), 对象类.服饰),
				注册创建游戏对象自动id分配(val.LoadAsset<GameObject>("重装亡灵头盔"), 对象类.服饰),
				注册创建游戏对象自动id分配(val.LoadAsset<GameObject>("重装亡灵护手"), 对象类.服饰),
				注册创建游戏对象自动id分配(val.LoadAsset<GameObject>("重装亡灵护膝刺甲"), 对象类.服饰),
				注册创建游戏对象自动id分配(val.LoadAsset<GameObject>("重装亡灵护颈"), 对象类.服饰),
				注册创建游戏对象自动id分配(val.LoadAsset<GameObject>("重装亡灵板甲裤子"), 对象类.服饰),
				注册创建游戏对象自动id分配(val.LoadAsset<GameObject>("重装亡灵羊角护臂"), 对象类.服饰),
				注册创建游戏对象自动id分配(val.LoadAsset<GameObject>("重装亡灵鞋子"), 对象类.服饰)
			};
			GameObject val15 = 注册创建游戏对象自动id分配(val.LoadAsset<GameObject>("空技能3434"));
			val15.AddComponent<重装亡灵抛射物免疫添加工具>();
			val14.objectsToSpawnAsChildren = (GameObject[])(object)new GameObject[1] { val15 };
			val14.RightWeapon = 注册创建游戏对象自动id分配(val.LoadAsset<GameObject>("戳矛23"), 对象类.武器);
			val14.LeftWeapon = 注册创建游戏对象自动id分配(val.LoadAsset<GameObject>("石头盾牌345"), 对象类.武器);
			val14.MovementComponents = new List<IMovementComponent> { (IMovementComponent)(object)default(重装亡灵后撤步) };
			val14.forceCost = 8000u;
			val14.SetUnitSounds("Pirate Attack Vocals/Cannon", "Pirate Attack Vocals/Cannon", 0.85f);
			GameObject unitBase = 注册创建游戏对象自动id分配(val.LoadAsset<GameObject>("单位模型直升机23"), 对象类.单位模型);
			UnitBlueprint val16 = 游戏内容工具.复制单位("UNIT_WUZHUANGZHISHENGJI", (UnitBlueprint)null, (Faction)null, val.LoadAsset<Sprite>("生成武装直升机图标"), (DatabaseID?)new DatabaseID(-3, 332534270));
			val16.UnitBase = unitBase;
			val16.RightWeapon = 注册创建游戏对象自动id分配(val.LoadAsset<GameObject>("直升机机炮sad"), 对象类.武器);
			val16.LeftWeapon = val16.RightWeapon;
			val16.massMultiplier = 100f;
			val16.SetRiders((UnitBlueprint[])(object)new UnitBlueprint[4]
			{
				游戏内容工具.获取原版单位蓝图(new DatabaseID(-1, 1885243923)),
				游戏内容工具.获取原版单位蓝图(new DatabaseID(-1, 1885243923)),
				游戏内容工具.获取原版单位蓝图(new DatabaseID(-1, 1885243923)),
				游戏内容工具.获取原版单位蓝图(new DatabaseID(-1, 1885243923))
			});
			val16.forceCost = 6000u;
			GameObject val17 = 注册创建游戏对象自动id分配(val.LoadAsset<GameObject>("空技能3434"));
			val17.AddComponent<直升机抗性添加工具>();
			val16.objectsToSpawnAsChildren = (GameObject[])(object)new GameObject[1] { val17 };
			val16.SetUnitSounds("Legacy Attack Vocals/Tank", "Legacy Attack Vocals/Tank");
			Faction 指定派系 = 游戏内容工具.获取原版派系(new DatabaseID(-1, 673578412));
			添加单位到指定派系(val16, 指定派系, 自动排序: true, 去重: true);
			UnitBlueprint val18 = 游戏内容工具.复制单位("UNIT_AERDENGZHINAGEFULEI", (UnitBlueprint)null, (Faction)null, val.LoadAsset<Sprite>("葛孚雷图标32"), (DatabaseID?)new DatabaseID(-3, 332534271));
			val18.health = 1500f;
			val18.massMultiplier = 12f;
			val18.movementSpeedMuiltiplier = 1.8f;
			GameObject[] first = (GameObject[])(object)new GameObject[6]
			{
				注册创建游戏对象自动id分配(val.LoadAsset<GameObject>("初王服饰—上衣"), 对象类.服饰),
				注册创建游戏对象自动id分配(val.LoadAsset<GameObject>("初王服饰—护肘"), 对象类.服饰),
				注册创建游戏对象自动id分配(val.LoadAsset<GameObject>("初王服饰—肩甲"), 对象类.服饰),
				注册创建游戏对象自动id分配(val.LoadAsset<GameObject>("初王服饰—躯干护甲"), 对象类.服饰),
				注册创建游戏对象自动id分配(val.LoadAsset<GameObject>("初王服饰—披风"), 对象类.服饰),
				注册创建游戏对象自动id分配(val.LoadAsset<GameObject>("初王服饰—狮子宰相"), 对象类.服饰)
			};
			GameObject[] array3 = (GameObject[])(object)new GameObject[12]
			{
				注册创建游戏对象自动id分配(val.LoadAsset<GameObject>("初王服饰—下把胡子"), 对象类.服饰),
				注册创建游戏对象自动id分配(val.LoadAsset<GameObject>("初王服饰—前摆"), 对象类.服饰),
				注册创建游戏对象自动id分配(val.LoadAsset<GameObject>("初王服饰—右摆"), 对象类.服饰),
				注册创建游戏对象自动id分配(val.LoadAsset<GameObject>("初王服饰—后摆"), 对象类.服饰),
				注册创建游戏对象自动id分配(val.LoadAsset<GameObject>("初王服饰—头发"), 对象类.服饰),
				注册创建游戏对象自动id分配(val.LoadAsset<GameObject>("初王服饰—左摆"), 对象类.服饰),
				注册创建游戏对象自动id分配(val.LoadAsset<GameObject>("初王服饰—无骨骼胡子"), 对象类.服饰),
				注册创建游戏对象自动id分配(val.LoadAsset<GameObject>("初王服饰—毛发挂件"), 对象类.服饰),
				注册创建游戏对象自动id分配(val.LoadAsset<GameObject>("初王服饰—皇冠"), 对象类.服饰),
				注册创建游戏对象自动id分配(val.LoadAsset<GameObject>("初王服饰—腰部系绳"), 对象类.服饰),
				注册创建游戏对象自动id分配(val.LoadAsset<GameObject>("初王服饰—裤子"), 对象类.服饰),
				注册创建游戏对象自动id分配(val.LoadAsset<GameObject>("初王服饰—鞋子"), 对象类.服饰)
			};
			val18.m_props = first.Concat(array3).ToArray();
			val18.RightWeapon = 注册创建游戏对象自动id分配(val.LoadAsset<GameObject>("初王武器dsfj"), 对象类.武器);
			val18.holdinigWithTwoHands = true;
			GameObject unitBase2 = (val18.UnitBase = 注册创建游戏对象自动id分配(val.LoadAsset<GameObject>("强壮的人形单位"), 对象类.单位模型));
			val18.sizeMultiplier = 1.8f;
			GameObject val20 = 注册创建游戏对象自动id分配(val.LoadAsset<GameObject>("半血升级技能"));
			GameObject val21 = 注册创建游戏对象自动id分配(val.LoadAsset<GameObject>("葛孚雷死亡二阶段"));
			val18.objectsToSpawnAsChildren = (GameObject[])(object)new GameObject[4]
			{
				注册创建游戏对象自动id分配(val.LoadAsset<GameObject>("初王冲刺践踏")),
				注册创建游戏对象自动id分配(val.LoadAsset<GameObject>("向下砸斧子asd")),
				val20,
				val21
			};
			val18.MovementComponents = new List<IMovementComponent> { (IMovementComponent)(object)default(KeepRangedDistance) };
			val18.forceCost = 16000u;
			UnitBlueprint val22 = 游戏内容工具.复制单位("战士何来露", (UnitBlueprint)null, (Faction)null, val.LoadAsset<Sprite>("葛孚雷图标32"), (DatabaseID?)new DatabaseID(-3, 332534272));
			val22.UnitBase = unitBase2;
			val22.health = 1000f;
			val22.objectsToSpawnAsChildren = (GameObject[])(object)new GameObject[3]
			{
				注册创建游戏对象自动id分配(val.LoadAsset<GameObject>("何来露投技")),
				注册创建游戏对象自动id分配(val.LoadAsset<GameObject>("何来露掀地板23")),
				val20
			};
			val22.m_props = array3;
			val22.RightWeapon = 注册创建游戏对象自动id分配(val.LoadAsset<GameObject>("何来露拳头245"), 对象类.武器);
			val22.LeftWeapon = val22.RightWeapon;
			val22.sizeMultiplier = 1.8f;
			val22.movementSpeedMuiltiplier = 3f;
			val21.GetComponent<死亡后进入2阶段>().二阶段单位蓝图 = val22;
			val18.SetUnitSounds("Viking Attack Vocals/Jarl", "Viking Attack Vocals/Jarl", 0.7f);
			val22.SetUnitSounds("Viking Attack Vocals/Jarl", "Viking Attack Vocals/Jarl", 0.7f);
			UnitBlueprint val23 = 游戏内容工具.复制单位("UNIT_SHUXUELAOSHI", (UnitBlueprint)null, (Faction)null, val.LoadAsset<Sprite>("数学老师图标32"), (DatabaseID?)new DatabaseID(-3, 332534273));
			val23.RightWeapon = 注册创建游戏对象自动id分配(val.LoadAsset<GameObject>("数学家之力sdakfh"), 对象类.武器);
			val23.holdinigWithTwoHands = true;
			val23.MovementComponents = new List<IMovementComponent> { (IMovementComponent)(object)default(KeepRangedDistance) };
			val23.forceCost = 600u;
			val23.m_props = (GameObject[])(object)new GameObject[4]
			{
				获取工具.获取原版内容游戏物品("m_characterProps", new DatabaseID(-1, 789074667)),
				获取工具.获取原版内容游戏物品("m_characterProps", new DatabaseID(-1, 1515039722)),
				获取工具.获取原版内容游戏物品("m_characterProps", new DatabaseID(-1, 1263832372)),
				获取工具.获取原版内容游戏物品("m_characterProps", new DatabaseID(-1, 1012097602))
			};
			val23.SetUnitSounds("Misc Attack Vocals/Crow", "Misc Attack Vocals/Crow");
			Faction 指定派系2 = 游戏内容工具.获取原版派系(new DatabaseID(-1, 442148333));
			Faction 指定派系3 = 游戏内容工具.获取原版派系(new DatabaseID(-1, 1701001489));
			添加单位到指定派系(val18, 指定派系2, 自动排序: true, 去重: true);
			添加单位到指定派系(val23, 指定派系3, 自动排序: true, 去重: true);
			UnitBlueprint val24 = 游戏内容工具.复制单位("UNIT_XINGYUNFANGKUAI", (UnitBlueprint)null, (Faction)null, val.LoadAsset<Sprite>("幸运方块图标123"), (DatabaseID?)new DatabaseID(-3, 332534274));
			val24.UnitBase = 注册创建游戏对象自动id分配(val.LoadAsset<GameObject>("幸运方块模型"), 对象类.单位模型);
			val24.forceCost = 650u;
			val24.health = 100f;
			val24.SetUnitSounds("Misc Attack Vocals/Crow", "Misc Attack Vocals/Crow");
			添加单位到指定派系(val24, 指定派系, 自动排序: true, 去重: true);
			UnitBlueprint val25 = 游戏内容工具.复制单位("UNIT_XINGUIREN", (UnitBlueprint)null, (Faction)null, val.LoadAsset<Sprite>("基兰图标asl1"), (DatabaseID?)new DatabaseID(-3, 332534275));
			val25.m_props = (GameObject[])(object)new GameObject[12]
			{
				注册创建游戏对象自动id分配(val.LoadAsset<GameObject>("基兰服饰--上衣"), 对象类.服饰),
				注册创建游戏对象自动id分配(val.LoadAsset<GameObject>("基兰服饰--前挡"), 对象类.服饰),
				注册创建游戏对象自动id分配(val.LoadAsset<GameObject>("基兰服饰--头发"), 对象类.服饰),
				注册创建游戏对象自动id分配(val.LoadAsset<GameObject>("基兰服饰--肩甲"), 对象类.服饰),
				注册创建游戏对象自动id分配(val.LoadAsset<GameObject>("基兰服饰--胡子"), 对象类.服饰),
				注册创建游戏对象自动id分配(val.LoadAsset<GameObject>("基兰服饰--胸甲"), 对象类.服饰),
				注册创建游戏对象自动id分配(val.LoadAsset<GameObject>("基兰服饰--腰部后披风"), 对象类.服饰),
				注册创建游戏对象自动id分配(val.LoadAsset<GameObject>("基兰服饰--腰部系绳"), 对象类.服饰),
				注册创建游戏对象自动id分配(val.LoadAsset<GameObject>("基兰服饰--裤子"), 对象类.服饰),
				注册创建游戏对象自动id分配(val.LoadAsset<GameObject>("基兰服饰--面具"), 对象类.服饰),
				注册创建游戏对象自动id分配(val.LoadAsset<GameObject>("基兰服饰--鞋子"), 对象类.服饰),
				注册创建游戏对象自动id分配(val.LoadAsset<GameObject>("基兰服饰--魔法圆盘"), 对象类.服饰)
			};
			val25.RightWeapon = 注册创建游戏对象自动id分配(val.LoadAsset<GameObject>("时间老头武器23"), 对象类.武器);
			val25.LeftWeapon = val25.RightWeapon;
			val25.MovementComponents = new List<IMovementComponent> { (IMovementComponent)(object)default(KeepRangedDistance) };
			val25.objectsToSpawnAsChildren = (GameObject[])(object)new GameObject[2]
			{
				注册创建游戏对象自动id分配(val.LoadAsset<GameObject>("在目标出召唤时钟")),
				注册创建游戏对象自动id分配(val.LoadAsset<GameObject>("给予高价值单位复活效果"))
			};
			val25.forceCost = 3000u;
			val25.SetUnitSounds("Misc Attack Vocals/Crow", "Misc Attack Vocals/Crow");
			添加单位到指定派系(val25, 指定派系, 自动排序: true, 去重: true);
			UnitBlueprint val26 = 游戏内容工具.复制单位("UNIT_SHETI", (UnitBlueprint)null, (Faction)null, val.LoadAsset<Sprite>("瑟提图标asdas"), (DatabaseID?)new DatabaseID(-3, 332534276));
			val26.UnitBase = 注册创建游戏对象自动id分配(val.LoadAsset<GameObject>("强壮人形单位带肌肉版本"), 对象类.单位模型);
			val26.m_props = (GameObject[])(object)new GameObject[9]
			{
				注册创建游戏对象自动id分配(val.LoadAsset<GameObject>("瑟提服饰_上衣"), 对象类.服饰),
				注册创建游戏对象自动id分配(val.LoadAsset<GameObject>("瑟提服饰_发型"), 对象类.服饰),
				注册创建游戏对象自动id分配(val.LoadAsset<GameObject>("瑟提服饰_手套"), 对象类.服饰),
				注册创建游戏对象自动id分配(val.LoadAsset<GameObject>("瑟提服饰_腰带"), 对象类.服饰),
				注册创建游戏对象自动id分配(val.LoadAsset<GameObject>("瑟提服饰_裤子"), 对象类.服饰),
				注册创建游戏对象自动id分配(val.LoadAsset<GameObject>("瑟提服饰_鞋子"), 对象类.服饰),
				注册创建游戏对象自动id分配(val.LoadAsset<GameObject>("瑟提服饰_龙头装饰"), 对象类.服饰),
				注册创建游戏对象自动id分配(val.LoadAsset<GameObject>("瑟提服饰_肩部皮毛"), 对象类.服饰),
				注册创建游戏对象自动id分配(val.LoadAsset<GameObject>("瑟提服饰_豪意值附体"), 对象类.服饰)
			};
			val26.health = 3000f;
			val26.massMultiplier = 20f;
			val26.forceCost = 20000u;
			val26.movementSpeedMuiltiplier = 1.8f;
			val26.objectsToSpawnAsChildren = (GameObject[])(object)new GameObject[4]
			{
				注册创建游戏对象自动id分配(val.LoadAsset<GameObject>("腕豪技能_强手裂颅")),
				注册创建游戏对象自动id分配(val.LoadAsset<GameObject>("腕豪技能_叹为观止")),
				注册创建游戏对象自动id分配(val.LoadAsset<GameObject>("腕豪技能_豪意值系统")),
				注册创建游戏对象自动id分配(val.LoadAsset<GameObject>("腕豪技能_蓄意轰拳"))
			};
			GameObject val27 = 注册创建游戏对象自动id分配(val.LoadAsset<GameObject>("瑟提拳头与中"), 对象类.武器);
			val27.GetComponent<MeleeWeapon>().curveForce = 150000f;
			val26.RightWeapon = val27;
			val26.LeftWeapon = val26.RightWeapon;
			val26.SetUnitSounds("Misc Attack Vocals/Crow", "Misc Attack Vocals/Crow");
			添加单位到指定派系(val26, 指定派系, 自动排序: true, 去重: true);
			UnitBlueprint val28 = 游戏内容工具.复制单位("手推车幸运方块sdf", (UnitBlueprint)null, (Faction)null, val.LoadAsset<Sprite>("幸运方块图标123"), (DatabaseID?)new DatabaseID(-3, 332534277));
			val28.UnitBase = 注册创建游戏对象自动id分配(val.LoadAsset<GameObject>("拉泡始幸运方块"), 对象类.单位模型);
			val28.forceCost = 650u;
			val28.health = 100f;
			添加单位到指定派系(val28, 指定派系, 自动排序: true, 去重: true);
			UnitBlueprint val29 = 游戏内容工具.复制单位("红魔鬼", (UnitBlueprint)null, val3, (Sprite)null, (DatabaseID?)new DatabaseID(-3, 332534278));
			val29.forceCost = uint.MaxValue;
			GameObject val30 = 游戏内容工具.注册能力(游戏物品加入.Instance.创建物品("一键清除所有单位asda", val.LoadAsset<GameObject>("空白技能asdkjas"), new DatabaseID(-3, 435475345)));
			测试超级清除 测试超级清除 = val30.AddComponent<测试超级清除>();
			测试超级清除.清除特效 = val.LoadAsset<GameObject>("受难特效");
			测试超级清除.清除预制体 = val.LoadAsset<GameObject>("清除实例有音效");
			val29.objectsToSpawnAsChildren = (GameObject[])(object)new GameObject[2]
			{
				注册创建游戏对象自动id分配(val.LoadAsset<GameObject>("抬手动作技能___1")),
				val30
			};
			val29.UnitBase = 注册创建游戏对象自动id分配(val.LoadAsset<GameObject>("残缺熔岩单位"), 对象类.单位模型);
			val29.massMultiplier = 10f;
			val29.health = 3000f;
			val29.m_props = (GameObject[])(object)new GameObject[8]
			{
				注册创建游戏对象自动id分配(val.LoadAsset<GameObject>("怨恨的化身服饰_头部"), 对象类.服饰),
				注册创建游戏对象自动id分配(val.LoadAsset<GameObject>("怨恨的化身服饰_插件2"), 对象类.服饰),
				注册创建游戏对象自动id分配(val.LoadAsset<GameObject>("怨恨的化身服饰_毛发"), 对象类.服饰),
				注册创建游戏对象自动id分配(val.LoadAsset<GameObject>("怨恨的化身服饰_肩部黑手"), 对象类.服饰),
				注册创建游戏对象自动id分配(val.LoadAsset<GameObject>("怨恨的化身服饰_背部装饰1"), 对象类.服饰),
				注册创建游戏对象自动id分配(val.LoadAsset<GameObject>("怨恨的化身服饰_背部装饰2"), 对象类.服饰),
				注册创建游戏对象自动id分配(val.LoadAsset<GameObject>("怨恨的化身服饰_背部装饰3"), 对象类.服饰),
				注册创建游戏对象自动id分配(val.LoadAsset<GameObject>("怨恨的化身服饰_躯干黑手"), 对象类.服饰)
			};
			val29.SetUnitSounds("Misc Attack Vocals/Crow", "Misc Attack Vocals/Crow");
			UnitBlueprint val31 = 游戏内容工具.复制单位("UNIT_WUWEIZHANSHI", (UnitBlueprint)null, (Faction)null, val.LoadAsset<Sprite>("无畏战士图标asdf"), (DatabaseID?)new DatabaseID(-3, 332534280));
			val31.m_props = (GameObject[])(object)new GameObject[18]
			{
				注册创建游戏对象自动id分配(val.LoadAsset<GameObject>("无畏战士服饰_上衣2"), 对象类.服饰),
				注册创建游戏对象自动id分配(val.LoadAsset<GameObject>("无畏战士服饰_大护甲"), 对象类.服饰),
				注册创建游戏对象自动id分配(val.LoadAsset<GameObject>("无畏战士服饰_头盔"), 对象类.服饰),
				注册创建游戏对象自动id分配(val.LoadAsset<GameObject>("无畏战士服饰_小臂护甲"), 对象类.服饰),
				注册创建游戏对象自动id分配(val.LoadAsset<GameObject>("无畏战士服饰_弹药背包"), 对象类.服饰),
				注册创建游戏对象自动id分配(val.LoadAsset<GameObject>("无畏战士服饰_手套"), 对象类.服饰),
				注册创建游戏对象自动id分配(val.LoadAsset<GameObject>("无畏战士服饰_手雷挂件"), 对象类.服饰),
				注册创建游戏对象自动id分配(val.LoadAsset<GameObject>("无畏战士服饰_护大腿"), 对象类.服饰),
				注册创建游戏对象自动id分配(val.LoadAsset<GameObject>("无畏战士服饰_护肘1"), 对象类.服饰),
				注册创建游戏对象自动id分配(val.LoadAsset<GameObject>("无畏战士服饰_护肩"), 对象类.服饰),
				注册创建游戏对象自动id分配(val.LoadAsset<GameObject>("无畏战士服饰_护胸"), 对象类.服饰),
				注册创建游戏对象自动id分配(val.LoadAsset<GameObject>("无畏战士服饰_护臂"), 对象类.服饰),
				注册创建游戏对象自动id分配(val.LoadAsset<GameObject>("无畏战士服饰_护颈1"), 对象类.服饰),
				注册创建游戏对象自动id分配(val.LoadAsset<GameObject>("无畏战士服饰_护颈2"), 对象类.服饰),
				注册创建游戏对象自动id分配(val.LoadAsset<GameObject>("无畏战士服饰_裤子"), 对象类.服饰),
				注册创建游戏对象自动id分配(val.LoadAsset<GameObject>("无畏战士服饰_面罩"), 对象类.服饰),
				注册创建游戏对象自动id分配(val.LoadAsset<GameObject>("无畏战士服饰_胯部护甲"), 对象类.服饰),
				注册创建游戏对象自动id分配(val.LoadAsset<GameObject>("无畏战士服饰_鞋子43"), 对象类.服饰)
			};
			val31.sizeMultiplier = 1.6f;
			val31.massMultiplier = 60f;
			val31.health = 4000f;
			GameObject val32 = 注册创建游戏对象自动id分配(val.LoadAsset<GameObject>("加特林_MiNiGatling333"), 对象类.武器);
			((Weapon)val32.GetComponent<RangeWeapon>()).maxRange = 30f;
			val31.RightWeapon = val32;
			val31.holdinigWithTwoHands = true;
			val31.MovementComponents = new List<IMovementComponent> { (IMovementComponent)(object)default(KeepRangedDistance) };
			val31.stepMultiplier = 3f;
			val31.movementSpeedMuiltiplier = 1.6f;
			val31.damageMultiplier = 2f;
			val31.forceCost = 15000u;
			val31.SetUnitSounds("Misc Attack Vocals/Crow", "Misc Attack Vocals/Crow", 1f, "Footsteps/IceGiant");
			添加单位到指定派系(val31, 指定派系, 自动排序: true, 去重: true);
			for (int k = 0; k < array.Length; k++)
			{
				if (((Object)array[k]).name.StartsWith("WuWeiZhanShiMats_"))
				{
					材质修复工具.调整颜色亮度(array[k], 1.4f);
				}
			}
			UnitBlueprint val33 = 游戏内容工具.复制单位("简易的房子", (UnitBlueprint)null, val3, (Sprite)null, (DatabaseID?)new DatabaseID(-3, 332534281));
			val33.UnitBase = 注册创建游戏对象自动id分配(val.LoadAsset<GameObject>("房子32234234"), 对象类.单位模型);
			val33.excludeFromWinCondition = true;
			val33.targetingPriorityMultiplier = 0.0001f;
			val33.health = float.PositiveInfinity;
			UnitBlueprint val34 = 游戏内容工具.复制单位("UNIT_WOLIBEIER", (UnitBlueprint)null, (Faction)null, val.LoadAsset<Sprite>("生成沃利贝尔图222标"), (DatabaseID?)new DatabaseID(-3, 332534282));
			val34.UnitBase = 注册创建游戏对象自动id分配(val.LoadAsset<GameObject>("沃利贝尔模型sdjhs"), 对象类.单位模型);
			val34.RightWeapon = 注册创建游戏对象自动id分配(val.LoadAsset<GameObject>("沃利贝尔拳击sdfjk"), 对象类.武器);
			val34.LeftWeapon = val34.RightWeapon;
			val34.holdinigWithTwoHands = false;
			val34.sizeMultiplier = 2f;
			val34.health = 3000f;
			val34.massMultiplier = 10f;
			val34.movementSpeedMuiltiplier = 1.6f;
			val34.stepMultiplier = 1.4f;
			val34.objectsToSpawnAsChildren = (GameObject[])(object)new GameObject[2]
			{
				注册创建游戏对象自动id分配(val.LoadAsset<GameObject>("天声雷落sd")),
				注册创建游戏对象自动id分配(val.LoadAsset<GameObject>("召唤雷电32d"))
			};
			val34.forceCost = 10000u;
			val34.SetUnitSounds("Misc Attack Vocals/Crow", "Misc Attack Vocals/Crow");
			添加单位到指定派系(val34, 指定派系2, 自动排序: true, 去重: true);
			Faction 所属派系 = 游戏内容工具.创建派系("UNIT_TIANTazhu", null, val.LoadAsset<Sprite>("天_塔_柱icon"), -4, 49582394);
			GameObject unitBase3 = 注册创建游戏对象自动id分配(val.LoadAsset<GameObject>("天踏著dsfj"), 对象类.单位模型);
			UnitBlueprint val35 = 游戏内容工具.复制单位("UNIT_LIANYUTIANTazhu", (UnitBlueprint)null, 所属派系, val.LoadAsset<Sprite>("天_塔_柱icon"), (DatabaseID?)new DatabaseID(-3, 332534283));
			val35.UnitBase = unitBase3;
			val35.objectsToSpawnAsChildren = (GameObject[])(object)new GameObject[1] { 注册创建游戏对象自动id分配(val.LoadAsset<GameObject>("天空盒替换技能_炼狱")) };
			设置装饰单位(val35);
			UnitBlueprint val36 = 游戏内容工具.复制单位("UNIT_YANJIANGLEIWENTIANTazhu", (UnitBlueprint)null, 所属派系, val.LoadAsset<Sprite>("天_塔_柱icon"), (DatabaseID?)new DatabaseID(-3, 332534284));
			val36.UnitBase = unitBase3;
			val36.objectsToSpawnAsChildren = (GameObject[])(object)new GameObject[1] { 注册创建游戏对象自动id分配(val.LoadAsset<GameObject>("天空盒替换技能_岩浆裂纹")) };
			设置装饰单位(val36);
			UnitBlueprint val37 = 游戏内容工具.复制单位("UNIT_RIYAOYANJIANGTIANTazhu", (UnitBlueprint)null, 所属派系, val.LoadAsset<Sprite>("天_塔_柱icon"), (DatabaseID?)new DatabaseID(-3, 332534285));
			val37.UnitBase = unitBase3;
			val37.objectsToSpawnAsChildren = (GameObject[])(object)new GameObject[1] { 注册创建游戏对象自动id分配(val.LoadAsset<GameObject>("天空盒替换技能_日耀岩浆")) };
			设置装饰单位(val37);
			UnitBlueprint val38 = 游戏内容工具.复制单位("UNIT_HUNDUNTIANTazhu", (UnitBlueprint)null, 所属派系, val.LoadAsset<Sprite>("天_塔_柱icon"), (DatabaseID?)new DatabaseID(-3, 332534286));
			val38.UnitBase = unitBase3;
			val38.objectsToSpawnAsChildren = (GameObject[])(object)new GameObject[1] { 注册创建游戏对象自动id分配(val.LoadAsset<GameObject>("天空盒替换技能_混沌")) };
			设置装饰单位(val38);
			UnitBlueprint val39 = 游戏内容工具.复制单位("UNIT_FANXINGTIANTazhu", (UnitBlueprint)null, 所属派系, val.LoadAsset<Sprite>("天_塔_柱icon"), (DatabaseID?)new DatabaseID(-3, 332534287));
			val39.UnitBase = unitBase3;
			val39.objectsToSpawnAsChildren = (GameObject[])(object)new GameObject[1] { 注册创建游戏对象自动id分配(val.LoadAsset<GameObject>("天空盒替换技能_繁星")) };
			设置装饰单位(val39);
			UnitBlueprint val40 = 游戏内容工具.复制单位("UNIT_HEIANFANXINGTIANTazhu", (UnitBlueprint)null, 所属派系, val.LoadAsset<Sprite>("天_塔_柱icon"), (DatabaseID?)new DatabaseID(-3, 332534288));
			val40.UnitBase = unitBase3;
			val40.objectsToSpawnAsChildren = (GameObject[])(object)new GameObject[1] { 注册创建游戏对象自动id分配(val.LoadAsset<GameObject>("天空盒替换技能_黑暗繁星")) };
			设置装饰单位(val40);
			UnitBlueprint val41 = 游戏内容工具.复制单位("UNIT_SHAMOHUANJINGzhu", (UnitBlueprint)null, 所属派系, val.LoadAsset<Sprite>("天_塔_柱icon"), (DatabaseID?)new DatabaseID(-3, 332534289));
			val41.UnitBase = unitBase3;
			val41.objectsToSpawnAsChildren = (GameObject[])(object)new GameObject[1] { 注册创建游戏对象自动id分配(val.LoadAsset<GameObject>("热浪生成技能")) };
			设置装饰单位(val41);
			UnitBlueprint val42 = 游戏内容工具.复制单位("UNIT_TIANHEILE_TIANTazhu", (UnitBlueprint)null, 所属派系, val.LoadAsset<Sprite>("天_塔_柱icon"), (DatabaseID?)new DatabaseID(-3, 332534290));
			val42.UnitBase = unitBase3;
			val42.objectsToSpawnAsChildren = (GameObject[])(object)new GameObject[1] { 注册创建游戏对象自动id分配(val.LoadAsset<GameObject>("技能_天黑了_兵编勿用")) };
			设置装饰单位(val42);
			UnitBlueprint val43 = 游戏内容工具.复制单位("UNIT_SANTISHIJIETIANTazhu", (UnitBlueprint)null, 所属派系, val.LoadAsset<Sprite>("天_塔_柱icon"), (DatabaseID?)new DatabaseID(-3, 332534291));
			val43.UnitBase = unitBase3;
			val43.objectsToSpawnAsChildren = (GameObject[])(object)new GameObject[1] { 注册创建游戏对象自动id分配(val.LoadAsset<GameObject>("天空盒替换技能_三体世界")) };
			设置装饰单位(val43);
			List<UnitBlueprint> list = new List<UnitBlueprint>();
			UnitBlueprint[] units = val3.Units;
			foreach (UnitBlueprint item in units)
			{
				list.Add(item);
			}
			list.Sort((UnitBlueprint unit1, UnitBlueprint unit2) => unit1.GetUnitCost(true).CompareTo(unit2.GetUnitCost(true)));
			val3.Units = list.ToArray();
		}

		public static GameObject 注册创建游戏对象自动id分配(GameObject 对象, 对象类 类型 = 对象类.技能)
		{
			//IL_001d: Unknown result type (might be due to invalid IL or missing references)
			//IL_005d: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a1: Unknown result type (might be due to invalid IL or missing references)
			//IL_00e5: Unknown result type (might be due to invalid IL or missing references)
			//IL_0126: Unknown result type (might be due to invalid IL or missing references)
			switch (类型)
			{
			case 对象类.技能:
			{
				GameObject result5 = 游戏内容工具.注册能力(游戏物品加入.Instance.创建物品(((Object)对象).name, 对象, new DatabaseID(-3, MYmodid)));
				MYmodid++;
				return result5;
			}
			case 对象类.服饰:
			{
				GameObject result4 = 游戏内容工具.注册道具(游戏物品加入.Instance.创建物品(((Object)对象).name, 对象, new DatabaseID(-3, MYmodid)));
				MYmodid++;
				return result4;
			}
			case 对象类.抛射物:
			{
				GameObject result3 = 游戏内容工具.注册投射物(游戏物品加入.Instance.创建物品(((Object)对象).name, 对象, new DatabaseID(-3, MYmodid)));
				MYmodid++;
				return result3;
			}
			case 对象类.单位模型:
			{
				GameObject result2 = 游戏内容工具.注册单位Base(游戏物品加入.Instance.创建物品(((Object)对象).name, 对象, new DatabaseID(-3, MYmodid)));
				MYmodid++;
				return result2;
			}
			case 对象类.武器:
			{
				GameObject result = 游戏内容工具.注册武器(游戏物品加入.Instance.创建物品(((Object)对象).name, 对象, new DatabaseID(-3, MYmodid)));
				MYmodid++;
				return result;
			}
			default:
				return null;
			}
		}

		public static void 添加单位到指定派系(UnitBlueprint[] 指定的所有单位, Faction 指定派系, bool 自动排序 = false, bool 去重 = false)
		{
			if (指定的所有单位 == null || 指定的所有单位.Length == 0)
			{
				return;
			}
			List<UnitBlueprint> list = new List<UnitBlueprint>();
			if (指定派系.Units != null)
			{
				list.AddRange(指定派系.Units);
			}
			list.AddRange(指定的所有单位);
			if (去重)
			{
				list = (from unit in list
					where ((unit != null) ? unit.Entity : null) != null
					group unit by unit.Entity.GUID into @group
					select @group.First()).ToList();
			}
			if (自动排序)
			{
				list.Sort((UnitBlueprint unit1, UnitBlueprint unit2) => unit1.GetUnitCost(true).CompareTo(unit2.GetUnitCost(true)));
			}
			指定派系.Units = list.ToArray();
		}

		public static void 添加单位到指定派系(UnitBlueprint 指定单位, Faction 指定派系, bool 自动排序 = false, bool 去重 = false)
		{
			if (!((Object)(object)指定单位 == (Object)null))
			{
				添加单位到指定派系((UnitBlueprint[])(object)new UnitBlueprint[1] { 指定单位 }, 指定派系, 自动排序, 去重);
			}
		}

		public static void 设置装饰单位(UnitBlueprint d)
		{
			d.excludeFromWinCondition = true;
			d.targetingPriorityMultiplier = 0.0001f;
			d.health = float.PositiveInfinity;
			d.forceCost = 170298124u;
			d.SetUnitSounds("Misc Attack Vocals/Crow", "Misc Attack Vocals/Crow");
		}
	}
	public class 游戏物品加入
	{
		private GameObject 物品对象池;

		private static 游戏物品加入 _instance;

		public static 游戏物品加入 Instance
		{
			get
			{
				if (_instance == null)
				{
					_instance = new 游戏物品加入();
				}
				return _instance;
			}
		}

		private 游戏物品加入()
		{
			//IL_0014: 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_0027: Expected O, but got Unknown
			Debug.Log((object)"开始创建对象池");
			物品对象池 = new GameObject
			{
				hideFlags = (HideFlags)61
			};
			((Object)物品对象池).name = "HeMoDingDingObject";
			物品对象池.SetActive(false);
			Debug.Log((object)"对象池创建完毕");
		}

		public GameObject 创建物品(string 名字, GameObject 要复制的物体, DatabaseID 物体标识, Sprite icon = null)
		{
			//IL_006a: Unknown result type (might be due to invalid IL or missing references)
			Debug.Log((object)"开始创建物品");
			GameObject val = Object.Instantiate<GameObject>(要复制的物体, 物品对象池.transform);
			((Object)val).hideFlags = (HideFlags)52;
			SetHideFlagsRecursive(val, (HideFlags)52);
			((Object)val).name = 名字 + Assembly.GetCallingAssembly().GetName().Name;
			IDatabaseEntity componentInChildren = val.GetComponentInChildren<IDatabaseEntity>();
			if (componentInChildren != null)
			{
				CharacterItem val2 = (CharacterItem)(object)((componentInChildren is CharacterItem) ? componentInChildren : null);
				componentInChildren.Entity.GUID = 物体标识;
				componentInChildren.Entity.Name = 名字;
				if ((Object)(object)icon != (Object)null)
				{
					componentInChildren.Entity.SpriteIcon = icon;
				}
			}
			Debug.Log((object)("物品创建完毕" + ((Object)val).name));
			return val;
		}

		private void SetHideFlagsRecursive(GameObject obj, HideFlags flags)
		{
			//IL_000f: Unknown result type (might be due to invalid IL or missing references)
			//IL_002b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0031: Expected O, but got Unknown
			//IL_0045: Unknown result type (might be due to invalid IL or missing references)
			if ((Object)(object)obj == (Object)null)
			{
				return;
			}
			((Object)obj).hideFlags = flags;
			foreach (Transform item in obj.transform)
			{
				Transform val = item;
				if ((Object)(object)val != (Object)null)
				{
					SetHideFlagsRecursive(((Component)val).gameObject, flags);
				}
			}
		}
	}
	public static class 游戏内容工具
	{
		private static LandfallContentDatabase 内容数据库 => ContentDatabase.Instance().LandfallContentDatabase;

		private static AssetLoader 资源加载器 => ContentDatabase.Instance().AssetLoader;

		private static Dictionary<DatabaseID, Object> 非流式资源字典 => (Dictionary<DatabaseID, Object>)(typeof(AssetLoader).GetField("m_nonStreamableAssets", BindingFlags.Instance | BindingFlags.NonPublic)?.GetValue(资源加载器));

		public static GameObject 注册单位Base(GameObject 单位基础)
		{
			//IL_000d: Unknown result type (might be due to invalid IL or missing references)
			return 注册游戏对象到数据库(单位基础, 单位基础.GetComponent<Unit>().Entity.GUID, "m_unitBases", (GameObject db) => db.GetComponent<Unit>().Entity.GUID);
		}

		public static GameObject 注册武器(GameObject 武器对象)
		{
			//IL_000d: Unknown result type (might be due to invalid IL or missing references)
			return 注册游戏对象到数据库(武器对象, ((CharacterItem)武器对象.GetComponent<WeaponItem>()).Entity.GUID, "m_weapons", (GameObject obj) => ((CharacterItem)obj.GetComponent<WeaponItem>()).Entity.GUID);
		}

		public static GameObject 注册能力(GameObject 能力对象)
		{
			//IL_000d: Unknown result type (might be due to invalid IL or missing references)
			return 注册游戏对象到数据库(能力对象, ((CharacterItem)能力对象.GetComponent<SpecialAbility>()).Entity.GUID, "m_combatMoves", (GameObject obj) => ((CharacterItem)obj.GetComponent<SpecialAbility>()).Entity.GUID);
		}

		public static GameObject 注册投射物(GameObject 投射物对象)
		{
			//IL_000d: Unknown result type (might be due to invalid IL or missing references)
			return 注册游戏对象到数据库(投射物对象, 投射物对象.GetComponent<ProjectileEntity>().Entity.GUID, "m_projectiles", (GameObject obj) => obj.GetComponent<ProjectileEntity>().Entity.GUID);
		}

		public static GameObject 注册道具(GameObject 道具对象)
		{
			//IL_000d: Unknown result type (might be due to invalid IL or missing references)
			return 注册游戏对象到数据库(道具对象, ((CharacterItem)道具对象.GetComponent<PropItem>()).Entity.GUID, "m_characterProps", (GameObject obj) => ((CharacterItem)obj.GetComponent<PropItem>()).Entity.GUID);
		}

		private static GameObject 注册游戏对象到数据库(GameObject 游戏对象, DatabaseID 对象ID, string 数据库字段名, Func<GameObject, DatabaseID> 获取ID函数)
		{
			//IL_0009: Unknown result type (might be due to invalid IL or missing references)
			//IL_0018: Unknown result type (might be due to invalid IL or missing references)
			//IL_0025: Unknown result type (might be due to invalid IL or missing references)
			Dictionary<DatabaseID, GameObject> dictionary = 获取字典<GameObject>(数据库字段名);
			if (!dictionary.ContainsKey(对象ID))
			{
				dictionary.Add(对象ID, 游戏对象);
				非流式资源字典.Add(对象ID, (Object)(object)游戏对象);
				设置字典值<GameObject>(数据库字段名, dictionary);
			}
			return 游戏对象;
		}

		public static UnitBlueprint 获取原版单位蓝图(DatabaseID id)
		{
			//IL_000d: Unknown result type (might be due to invalid IL or missing references)
			Dictionary<DatabaseID, UnitBlueprint> dictionary = 获取字典<UnitBlueprint>("m_unitBlueprints");
			UnitBlueprint value;
			return dictionary.TryGetValue(id, out value) ? value : null;
		}

		public static Faction 获取原版派系(DatabaseID id)
		{
			//IL_000d: Unknown result type (might be due to invalid IL or missing references)
			Dictionary<DatabaseID, Faction> dictionary = 获取字典<Faction>("m_factions");
			Faction value;
			return dictionary.TryGetValue(id, out value) ? value : null;
		}

		public static UnitBlueprint 复制单位(string 名称, UnitBlueprint 源单位蓝图 = null, Faction 所属派系 = null, Sprite 图标 = null, DatabaseID? 自定义ID = null)
		{
			//IL_0013: Unknown result type (might be due to invalid IL or missing references)
			//IL_006d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0064: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c6: Unknown result type (might be due to invalid IL or missing references)
			//IL_00e5: Unknown result type (might be due to invalid IL or missing references)
			//IL_00f8: Unknown result type (might be due to invalid IL or missing references)
			if ((Object)(object)源单位蓝图 == (Object)null)
			{
				源单位蓝图 = 获取原版单位蓝图(new DatabaseID(-1, 1166250463));
			}
			if ((Object)(object)源单位蓝图 == (Object)null)
			{
				Debug.LogError((object)"无法获取源单位蓝图");
				return null;
			}
			Debug.LogWarning((object)"开始创建蓝图");
			UnitBlueprint val = Object.Instantiate<UnitBlueprint>(源单位蓝图);
			val.Entity.GUID = (DatabaseID)(((??)自定义ID) ?? DatabaseID.NewID());
			val.Entity.Name = 名称;
			((Object)val).name = 名称;
			if ((Object)(object)图标 != (Object)null)
			{
				val.Entity.SpriteIcon = 图标;
			}
			Debug.LogWarning((object)"完成蓝图创建并指定ID");
			Dictionary<DatabaseID, UnitBlueprint> dictionary = 获取字典<UnitBlueprint>("m_unitBlueprints");
			if (!dictionary.ContainsKey(val.Entity.GUID))
			{
				非流式资源字典.Add(val.Entity.GUID, (Object)(object)val);
				dictionary.Add(val.Entity.GUID, val);
				设置字典值<UnitBlueprint>("m_unitBlueprints", dictionary);
				Debug.LogWarning((object)"成功添加到数据库");
			}
			if ((Object)(object)所属派系 != (Object)null && (Object)(object)val != (Object)null)
			{
				List<UnitBlueprint> list = 所属派系.Units?.ToList() ?? new List<UnitBlueprint>();
				if (!list.Contains(val))
				{
					list.Add(val);
					所属派系.Units = list.ToArray();
				}
			}
			return val;
		}

		public static Faction 创建派系(string 名称, UnitBlueprint[] 单位列表 = null, Sprite 图标 = null, int 模组ID = 0, int 派系ID = 0)
		{
			//IL_001b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0025: Unknown result type (might be due to invalid IL or missing references)
			//IL_0083: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a0: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b3: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ce: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ea: Unknown result type (might be due to invalid IL or missing references)
			Faction val = ScriptableObject.CreateInstance<Faction>();
			val.Init();
			val.Entity.GUID = (DatabaseID)((模组ID != 0 && 派系ID != 0) ? new DatabaseID(模组ID, 派系ID) : DatabaseID.NewID());
			val.Entity.Name = 名称;
			((Object)val).name = 名称;
			val.Units = (UnitBlueprint[])(((object)单位列表) ?? ((object)new UnitBlueprint[0]));
			if ((Object)(object)图标 != (Object)null)
			{
				val.Entity.SpriteIcon = 图标;
			}
			Dictionary<DatabaseID, Faction> dictionary = 获取字典<Faction>("m_factions");
			if (!dictionary.ContainsKey(val.Entity.GUID))
			{
				非流式资源字典.Add(val.Entity.GUID, (Object)(object)val);
				dictionary.Add(val.Entity.GUID, val);
				List<DatabaseID> list = 获取默认快捷栏派系ID列表();
				if (!list.Contains(val.Entity.GUID))
				{
					list.Add(val.Entity.GUID);
					排序并设置默认快捷栏列表(list, dictionary);
				}
				设置字典值<Faction>("m_factions", dictionary);
			}
			return val;
		}

		private static Dictionary<DatabaseID, T> 获取字典<T>(string 字段名) where T : Object
		{
			return (Dictionary<DatabaseID, T>)(typeof(LandfallContentDatabase).GetField(字段名, BindingFlags.Instance | BindingFlags.NonPublic)?.GetValue(内容数据库));
		}

		private static void 设置字典值<T>(string 字段名, Dictionary<DatabaseID, T> 字典) where T : Object
		{
			typeof(LandfallContentDatabase).GetField(字段名, BindingFlags.Instance | BindingFlags.NonPublic)?.SetValue(内容数据库, 字典);
		}

		private static List<DatabaseID> 获取默认快捷栏派系ID列表()
		{
			return (List<DatabaseID>)(typeof(LandfallContentDatabase).GetField("m_defaultHotbarFactionIds", BindingFlags.Instance | BindingFlags.NonPublic)?.GetValue(内容数据库));
		}

		private static void 排序并设置默认快捷栏列表(List<DatabaseID> 列表, Dictionary<DatabaseID, Faction> 派系字典)
		{
			Faction value2;
			List<DatabaseID> value = 列表.OrderBy((DatabaseID id) => 派系字典.TryGetValue(id, out value2) ? value2.index : int.MaxValue).ToList();
			typeof(LandfallContentDatabase).GetField("m_defaultHotbarFactionIds", BindingFlags.Instance | BindingFlags.NonPublic)?.SetValue(内容数据库, value);
		}
	}
	public static class 获取工具
	{
		private static LandfallContentDatabase 内容数据库 => ContentDatabase.Instance().LandfallContentDatabase;

		private static AssetLoader 资源加载器 => ContentDatabase.Instance().AssetLoader;

		private static Dictionary<DatabaseID, Object> 非流式资源字典 => (Dictionary<DatabaseID, Object>)(typeof(AssetLoader).GetField("m_nonStreamableAssets", BindingFlags.Instance | BindingFlags.NonPublic)?.GetValue(资源加载器));

		private static Dictionary<DatabaseID, T> 获取字典<T>(string 字段名) where T : Object
		{
			return (Dictionary<DatabaseID, T>)(typeof(LandfallContentDatabase).GetField(字段名, BindingFlags.Instance | BindingFlags.NonPublic)?.GetValue(内容数据库));
		}

		public static GameObject 获取原版内容游戏物品(string 字典名, DatabaseID id)
		{
			//IL_0007: Unknown result type (might be due to invalid IL or missing references)
			return 获取字典<GameObject>(字典名)[id];
		}
	}
}
namespace HeMoDingDingMod.角色类.英雄联盟.沃利贝尔
{
	[DisallowMultipleComponent]
	public class 描边添加器 : MonoBehaviour
	{
		[Header("描边设置")]
		[ColorUsage(true, true)]
		public Color 描边颜色 = Color.black;

		[Range(0f, 0.1f)]
		public float 描边宽度 = 0.02f;

		[Range(-0.01f, 0.01f)]
		public float 描边深度偏移 = -0.001f;

		[Tooltip("留空则自动查找 Custom/描边着色器Outline;也可以直接拖入指定的 Shader")]
		public Shader 指定着色器;

		[Tooltip("运行时自动应用(也可以在编辑器里点 Apply)")]
		public bool 启动时应用 = true;

		private Material _描边材质;

		private readonly List<Renderer> _受影响的渲染器 = new List<Renderer>();

		public bool 描边是否开启 { get; private set; }

		private void Start()
		{
			if (启动时应用)
			{
				应用();
			}
		}

		public void 设置描边开关(bool 开启)
		{
			if (开启)
			{
				应用();
			}
			else
			{
				移除描边();
			}
		}

		public void 切换描边()
		{
			设置描边开关(!描边是否开启);
		}

		public static void 设置描边(GameObject 目标, bool 开启)
		{
			if (!((Object)(object)目标 == (Object)null))
			{
				描边添加器 描边添加器2 = 目标.GetComponent<描边添加器>();
				if ((Object)(object)描边添加器2 == (Object)null)
				{
					描边添加器2 = 目标.AddComponent<描边添加器>();
					描边添加器2.启动时应用 = false;
				}
				描边添加器2.设置描边开关(开启);
			}
		}

		[ContextMenu("应用描边")]
		public void 应用()
		{
			//IL_0075: Unknown result type (might be due to invalid IL or missing references)
			//IL_004d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0057: Expected O, but got Unknown
			if ((Object)(object)_描边材质 == (Object)null)
			{
				Shader val = 指定着色器;
				if ((Object)(object)val == (Object)null)
				{
					val = Shader.Find("Custom/描边着色器Outline");
				}
				if ((Object)(object)val == (Object)null)
				{
					Debug.LogError((object)"[描边应用器] 找不到 Shader:Custom/描边着色器Outline,请确认 Outline.shader 已导入,或在“指定着色器”字段中手动指定。");
					return;
				}
				_描边材质 = new Material(val);
				((Object)_描边材质).name = "Outline (Runtime)";
			}
			_描边材质.SetColor("_OutlineColor", 描边颜色);
			_描边材质.SetFloat("_OutlineWidth", 描边宽度);
			_描边材质.SetFloat("_OutlineZOffset", 描边深度偏移);
			_受影响的渲染器.Clear();
			收集渲染器(((Component)this).transform.root, _受影响的渲染器);
			foreach (Renderer item in _受影响的渲染器)
			{
				List<Material> list = new List<Material>(item.sharedMaterials);
				bool flag = false;
				foreach (Material item2 in list)
				{
					if ((Object)(object)item2 != (Object)null && (Object)(object)item2.shader == (Object)(object)_描边材质.shader)
					{
						flag = true;
						break;
					}
				}
				if (!flag)
				{
					list.Add(_描边材质);
					item.sharedMaterials = list.ToArray();
				}
			}
			描边是否开启 = true;
		}

		[ContextMenu("移除描边")]
		public void 移除描边()
		{
			if ((Object)(object)_描边材质 == (Object)null)
			{
				描边是否开启 = false;
				return;
			}
			_受影响的渲染器.Clear();
			收集渲染器(((Component)this).transform.root, _受影响的渲染器);
			foreach (Renderer item in _受影响的渲染器)
			{
				List<Material> list = new List<Material>(item.sharedMaterials);
				int num = list.RemoveAll((Material 材质) => (Object)(object)材质 != (Object)null && (Object)(object)材质.shader == (Object)(object)_描边材质.shader);
				if (num > 0)
				{
					item.sharedMaterials = list.ToArray();
				}
			}
			描边是否开启 = false;
		}

		private void 收集渲染器(Transform 根节点, List<Renderer> 结果)
		{
			Renderer[] componentsInChildren = ((Component)根节点).GetComponentsInChildren<Renderer>();
			Renderer[] array = componentsInChildren;
			foreach (Renderer val in array)
			{
				if (!(val is ParticleSystemRenderer) && !结果.Contains(val))
				{
					结果.Add(val);
				}
			}
		}

		private void OnDestroy()
		{
			if ((Object)(object)_描边材质 != (Object)null)
			{
				Object.Destroy((Object)(object)_描边材质);
				_描边材质 = null;
			}
		}
	}
	public class 迅速绑定武器 : MonoBehaviour
	{
		public enum SyncMode
		{
			Once,
			Continuous,
			UntilGrabbed
		}

		[Header("同步设置")]
		[Tooltip("同步模式")]
		public SyncMode mode = SyncMode.Once;

		[Tooltip("是否在抓取后停止同步")]
		public bool stopWhenGrabbed = true;

		[Tooltip("同步频率(每秒)")]
		public float syncRate = 60f;

		private float syncTimer = 0f;

		private bool isGrabbed = false;

		private Holdable holdable;

		private Unit unit;

		[Header("调试")]
		public bool debugMode = false;

		private void Start()
		{
			unit = ((Component)((Component)this).transform.root).GetComponent<Unit>();
			holdable = ((Component)this).GetComponent<Holdable>();
			if (mode == SyncMode.Once)
			{
				SyncPosition();
				Object.Destroy((Object)(object)this);
			}
		}

		private void Update()
		{
			if ((Object)(object)unit == (Object)null || (Object)(object)holdable == (Object)null)
			{
				return;
			}
			if (stopWhenGrabbed && holdable.held)
			{
				if (!isGrabbed)
				{
					isGrabbed = true;
					if (debugMode)
					{
						Debug.Log((object)"武器已被抓取,停止同步");
					}
				}
				return;
			}
			syncTimer += Time.deltaTime;
			if (syncTimer >= 1f / syncRate)
			{
				syncTimer = 0f;
				if (mode == SyncMode.Continuous || (mode == SyncMode.UntilGrabbed && !holdable.held))
				{
					SyncPosition();
				}
			}
		}

		public void SyncPosition()
		{
			//IL_0157: Unknown result type (might be due to invalid IL or missing references)
			//IL_015c: Unknown result type (might be due to invalid IL or missing references)
			//IL_012c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0137: Unknown result type (might be due to invalid IL or missing references)
			//IL_013c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0141: Unknown result type (might be due to invalid IL or missing references)
			//IL_0144: Unknown result type (might be due to invalid IL or missing references)
			//IL_0149: Unknown result type (might be due to invalid IL or missing references)
			//IL_014b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0150: Unknown result type (might be due to invalid IL or missing references)
			//IL_0165: Unknown result type (might be due to invalid IL or missing references)
			//IL_01be: Unknown result type (might be due to invalid IL or missing references)
			//IL_017e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0189: Unknown result type (might be due to invalid IL or missing references)
			//IL_018e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0193: Unknown result type (might be due to invalid IL or missing references)
			//IL_0198: Unknown result type (might be due to invalid IL or missing references)
			//IL_01a1: Unknown result type (might be due to invalid IL or missing references)
			//IL_01a6: Unknown result type (might be due to invalid IL or missing references)
			//IL_01a8: Unknown result type (might be due to invalid IL or missing references)
			if ((Object)(object)unit == (Object)null)
			{
				return;
			}
			WeaponHandler weaponHandler = unit.WeaponHandler;
			if ((Object)(object)weaponHandler == (Object)null)
			{
				return;
			}
			bool flag = (Object)(object)weaponHandler.rightWeapon != (Object)null && (Object)(object)((Component)this).gameObject == (Object)(object)((Component)weaponHandler.rightWeapon).gameObject;
			bool flag2 = (Object)(object)weaponHandler.leftWeapon != (Object)null && (Object)(object)((Component)this).gameObject == (Object)(object)((Component)weaponHandler.leftWeapon).gameObject;
			Transform val = null;
			Transform val2 = null;
			if (flag && (Object)(object)unit.data.rightHand != (Object)null)
			{
				val = unit.data.rightHand;
				val2 = GetGripPoint(isRight: true);
			}
			else if (flag2 && (Object)(object)unit.data.leftHand != (Object)null)
			{
				val = unit.data.leftHand;
				val2 = GetGripPoint(isRight: false);
			}
			if (!((Object)(object)val == (Object)null))
			{
				Vector3 position;
				if ((Object)(object)val2 != (Object)null)
				{
					Vector3 val3 = val2.position - ((Component)this).transform.position;
					position = val.position - val3;
				}
				else
				{
					position = val.position;
				}
				((Component)this).transform.position = position;
				if ((Object)(object)val2 != (Object)null)
				{
					Quaternion val4 = val2.rotation * Quaternion.Inverse(((Component)this).transform.rotation);
					((Component)this).transform.rotation = val.rotation * val4;
				}
				else
				{
					((Component)this).transform.rotation = val.rotation;
				}
			}
		}

		private Transform GetGripPoint(bool isRight)
		{
			if (isRight)
			{
				HandRight componentInChildren = ((Component)this).GetComponentInChildren<HandRight>();
				if ((Object)(object)componentInChildren != (Object)null)
				{
					return ((Component)componentInChildren).transform;
				}
			}
			else
			{
				HandLeft componentInChildren2 = ((Component)this).GetComponentInChildren<HandLeft>();
				if ((Object)(object)componentInChildren2 != (Object)null)
				{
					return ((Component)componentInChildren2).transform;
				}
			}
			Transform val = ((Component)this).transform.Find("GripPoint");
			if ((Object)(object)val != (Object)null)
			{
				return val;
			}
			val = ((Component)this).transform.Find("Handle");
			if ((Object)(object)val != (Object)null)
			{
				return val;
			}
			return null;
		}
	}
	public class 近战切换生成物体 : MonoBehaviour
	{
		public MeleeWeaponSpawn 指定类;

		public void 切换(GameObject 指定)
		{
			指定类.objectToSpawn = 指定;
		}
	}
	public class 武器增加攻速 : MonoBehaviour
	{
		public Weapon 指定类;

		public void 执行cd(float cd)
		{
			指定类.internalCooldown = cd;
		}
	}
	public class 单位加速脚本 : MonoBehaviour
	{
		public MovementHandler 指定类;

		private float 初始乘数;

		private void Start()
		{
			指定类 = ((Component)((Component)this).transform.root).GetComponentInChildren<MovementHandler>();
			初始乘数 = 指定类.multiplier;
		}

		public void 执行cd(float 速度)
		{
			指定类.multiplier = 速度;
		}

		public void 回到初始速度()
		{
			指定类.multiplier = 初始乘数;
		}
	}
	public class 连锁闪电脚本 : MonoBehaviour
	{
		public LineRenderer 闪电线渲染器;

		public float 闪电伤害;

		public int 连锁次数;

		public float 每次连锁间隔;

		public float 闪电抖动幅度;

		[Header("每两个记录点之间小点的间隔距离")]
		public float 小点间隔距离 = 0.5f;

		[Header("最大连锁距离")]
		public float 最大连锁距离 = 8f;

		[Header("抖动刷新间隔(秒)")]
		public float 抖动间隔 = 0.1f;

		public GameObject 连锁位置生成预制体;

		private TeamHolder 队伍系统;

		private Team 队伍标识;

		private Vector3 目标定位器;

		private float 当前连锁次数 = 0f;

		private readonly List<Transform> 记录点 = new List<Transform>();

		private readonly HashSet<DataHandler> 已命中目标 = new HashSet<DataHandler>();

		private readonly List<GameObject> 已生成预制体 = new List<GameObject>();

		private readonly List<Vector3> 顶点缓存 = new List<Vector3>();

		private Coroutine 连锁协程;

		private bool 正在连锁 = false;

		private float 抖动计时 = 0f;

		private bool 需要立即刷新 = false;

		private void Start()
		{
			//IL_0014: 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_0025: Unknown result type (might be due to invalid IL or missing references)
			//IL_002a: Unknown result type (might be due to invalid IL or missing references)
			队伍系统 = ((Component)this).GetComponentInParent<TeamHolder>();
			队伍标识 = 队伍系统.team;
			目标定位器 = ((Component)this).transform.position;
			记录点.Clear();
			记录点.Add(((Component)this).transform);
		}

		private void Update()
		{
			if (正在连锁)
			{
				抖动计时 += Time.deltaTime;
				if (需要立即刷新 || 抖动计时 >= 抖动间隔)
				{
					抖动计时 = 0f;
					需要立即刷新 = false;
					刷新闪电线();
				}
			}
		}

		private List<DataHandler> 获取全部敌方数据()
		{
			//IL_0040: Unknown result type (might be due to invalid IL or missing references)
			//IL_0046: Unknown result type (might be due to invalid IL or missing references)
			List<Unit> list = 场内单位存储器.GetAliveUnits().ToList();
			List<DataHandler> list2 = new List<DataHandler>();
			if (list.Count > 0)
			{
				foreach (Unit item in list)
				{
					if ((Object)(object)item != (Object)null && item.Team != 队伍标识)
					{
						list2.Add(item.data);
					}
				}
			}
			return list2;
		}

		private DataHandler 获取最近单位(List<DataHandler> 全部敌方数据, Vector3 目标位置)
		{
			//IL_0071: Unknown result type (might be due to invalid IL or missing references)
			//IL_0076: Unknown result type (might be due to invalid IL or missing references)
			//IL_0078: Unknown result type (might be due to invalid IL or missing references)
			//IL_007a: Unknown result type (might be due to invalid IL or missing references)
			//IL_007b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0080: Unknown result type (might be due to invalid IL or missing references)
			if (全部敌方数据 == null || 全部敌方数据.Count == 0)
			{
				return null;
			}
			DataHandler result = null;
			float num = float.MaxValue;
			for (int i = 0; i < 全部敌方数据.Count; i++)
			{
				DataHandler val = 全部敌方数据[i];
				if (!((Object)(object)val == (Object)null) && !((Object)(object)val.mainRig == (Object)null) && !已命中目标.Contains(val))
				{
					Vector3 position = val.mainRig.position;
					Vector3 val2 = position - 目标位置;
					float sqrMagnitude = ((Vector3)(ref val2)).sqrMagnitude;
					if (sqrMagnitude < num)
					{
						num = sqrMagnitude;
						result = val;
					}
				}
			}
			return result;
		}

		private void 造成伤害(DataHandler 伤害目标, float 伤害)
		{
			//IL_0009: Unknown result type (might be due to invalid IL or missing references)
			((Damagable)伤害目标.healthHandler).TakeDamage(伤害, 目标定位器, (Unit)null, (DamageType)0);
		}

		private bool 连锁一次()
		{
			//IL_0062: Unknown result type (might be due to invalid IL or missing references)
			//IL_005a: 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)
			//IL_0071: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a4: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a9: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ab: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ac: Unknown result type (might be due to invalid IL or missing references)
			//IL_00e6: Unknown result type (might be due to invalid IL or missing references)
			//IL_00e8: Unknown result type (might be due to invalid IL or missing references)
			if (当前连锁次数 >= (float)连锁次数)
			{
				return false;
			}
			Transform val = ((记录点.Count > 0) ? 记录点[记录点.Count - 1] : ((Component)this).transform);
			Vector3 val2 = (((Object)(object)val != (Object)null) ? val.position : 目标定位器);
			List<DataHandler> 全部敌方数据 = 获取全部敌方数据();
			DataHandler val3 = 获取最近单位(全部敌方数据, val2);
			if ((Object)(object)val3 == (Object)null || (Object)(object)val3.mainRig == (Object)null)
			{
				return false;
			}
			Vector3 position = val3.mainRig.position;
			float num = Vector3.Distance(val2, position);
			if (num > 最大连锁距离)
			{
				return false;
			}
			if ((Object)(object)连锁位置生成预制体 != (Object)null)
			{
				GameObject val4 = Object.Instantiate<GameObject>(连锁位置生成预制体, position, Quaternion.identity);
				TeamHolder.AddTeamHolder(val4, ((Component)this).gameObject);
				已生成预制体.Add(val4);
			}
			造成伤害(val3, 闪电伤害);
			已命中目标.Add(val3);
			记录点.Add(((Component)val3.mainRig).transform);
			当前连锁次数 += 1f;
			需要立即刷新 = true;
			return true;
		}

		private void 刷新闪电线()
		{
			//IL_004a: Unknown result type (might be due to invalid IL or missing references)
			//IL_004f: Unknown result type (might be due to invalid IL or missing references)
			//IL_006b: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b5: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a0: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ba: 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_00be: Unknown result type (might be due to invalid IL or missing references)
			//IL_00fb: Unknown result type (might be due to invalid IL or missing references)
			//IL_00fd: Unknown result type (might be due to invalid IL or missing references)
			//IL_0100: Unknown result type (might be due to invalid IL or missing references)
			//IL_0105: Unknown result type (might be due to invalid IL or missing references)
			//IL_014a: Unknown result type (might be due to invalid IL or missing references)
			//IL_014c: Unknown result type (might be due to invalid IL or missing references)
			//IL_014e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0172: Unknown result type (might be due to invalid IL or missing references)
			if ((Object)(object)闪电线渲染器 == (Object)null)
			{
				return;
			}
			顶点缓存.Clear();
			Vector3 val4 = default(Vector3);
			for (int i = 0; i < 记录点.Count; i++)
			{
				Transform val = 记录点[i];
				if ((Object)(object)val == (Object)null)
				{
					continue;
				}
				Vector3 position = val.position;
				if (顶点缓存.Count == 0)
				{
					顶点缓存.Add(position);
					continue;
				}
				Vector3 val2 = (((Object)(object)记录点[i - 1] != (Object)null) ? 记录点[i - 1].position : 顶点缓存[顶点缓存.Count - 1]);
				float num = Vector3.Distance(val2, position);
				int num2 = ((!(小点间隔距离 > 0f)) ? 1 : Mathf.Max(1, Mathf.FloorToInt(num / 小点间隔距离)));
				for (int j = 1; j < num2; j++)
				{
					float num3 = (float)j / (float)num2;
					Vector3 val3 = Vector3.Lerp(val2, position, num3);
					((Vector3)(ref val4))..ctor(Random.Range(0f - 闪电抖动幅度, 闪电抖动幅度), Random.Range(0f - 闪电抖动幅度, 闪电抖动幅度), Random.Range(0f - 闪电抖动幅度, 闪电抖动幅度));
					顶点缓存.Add(val3 + val4);
				}
				顶点缓存.Add(position);
			}
			闪电线渲染器.positionCount = 顶点缓存.Count;
			闪电线渲染器.SetPositions(顶点缓存.ToArray());
		}

		public void 执行连锁()
		{
			if (连锁协程 != null)
			{
				((MonoBehaviour)this).StopCoroutine(连锁协程);
			}
			连锁协程 = ((MonoBehaviour)this).StartCoroutine(连锁流程());
		}

		private IEnumerator 连锁流程()
		{
			正在连锁 = true;
			抖动计时 = 0f;
			需要立即刷新 = true;
			for (int i = 0; i < 连锁次数; i++)
			{
				if (!连锁一次())
				{
					break;
				}
				if (每次连锁间隔 > 0f)
				{
					yield return (object)new WaitForSeconds(每次连锁间隔);
				}
			}
			if (每次连锁间隔 > 0f)
			{
				yield return (object)new WaitForSeconds(每次连锁间隔);
			}
			正在连锁 = false;
			if ((Object)(object)闪电线渲染器 != (Object)null)
			{
				yield return ((MonoBehaviour)this).StartCoroutine(线消散携程(0.3f));
			}
		}

		private IEnumerator 线消散携程(float 总时间)
		{
			float 起始宽度 = (((Object)(object)闪电线渲染器 != (Object)null) ? 闪电线渲染器.startWidth : 0f);
			float 结束宽度 = (((Object)(object)闪电线渲染器 != (Object)null) ? 闪电线渲染器.endWidth : 0f);
			float 计时 = 0f;
			while (计时 < 总时间)
			{
				计时 += Time.deltaTime;
				float t = Mathf.Clamp01(计时 / 总时间);
				if ((Object)(object)闪电线渲染器 != (Object)null)
				{
					闪电线渲染器.startWidth = Mathf.Lerp(起始宽度, 0f, t);
					闪电线渲染器.endWidth = Mathf.Lerp(结束宽度, 0f, t);
				}
				yield return null;
			}
			if ((Object)(object)闪电线渲染器 != (Object)null)
			{
				闪电线渲染器.positionCount = 0;
				闪电线渲染器.startWidth = 起始宽度;
				闪电线渲染器.endWidth = 结束宽度;
			}
			已生成预制体.Clear();
			记录点.Clear();
			已命中目标.Clear();
			当前连锁次数 = 0f;
		}
	}
}
namespace HeMoDingDingMod.角色类.至高神性
{
	public class 怨恨化身_普通技能 : MonoBehaviour
	{
		public Unit 此单位;

		public Team 队伍标识 = (Team)1;

		private void Start()
		{
			//IL_002d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0032: Unknown result type (might be due to invalid IL or missing references)
			此单位 = ((Component)((Component)this).transform.root).GetComponent<Unit>();
			if (Object.op_Implicit((Object)(object)此单位))
			{
				队伍标识 = 此单位.Team;
			}
		}
	}
	public class 清除单例设置 : MonoBehaviour
	{
		private static 清除单例设置 _instance;

		private static bool _isClearing;

		public static 清除单例设置 Instance
		{
			get
			{
				//IL_0016: Unknown result type (might be due to invalid IL or missing references)
				//IL_001c: Expected O, but got Unknown
				if ((Object)(object)_instance == (Object)null)
				{
					GameObject val = new GameObject("清除单例场景唯一");
					val.AddComponent<RemoveAfterSeconds>().seconds = 3f;
					_instance = val.AddComponent<清除单例设置>();
				}
				return _instance;
			}
		}

		public static bool IsClearing()
		{
			return _isClearing;
		}

		public static bool 开始清除()
		{
			if (_isClearing)
			{
				Debug.Log((object)"已有清除操作正在执行,跳过本次调用");
				return false;
			}
			_isClearing = true;
			清除单例设置 instance = Instance;
			((MonoBehaviour)instance).CancelInvoke("完成清除");
			((MonoBehaviour)instance).Invoke("完成清除", 5f);
			return true;
		}

		private void 完成清除()
		{
			Debug.Log((object)"5秒倒计时结束,清除操作完成");
			_isClearing = false;
			DestroySelf();
		}

		private void DestroySelf()
		{
			if ((Object)(object)_instance != (Object)null)
			{
				Debug.Log((object)"销毁清除单例");
				Object.Destroy((Object)(object)((Component)this).gameObject);
				_instance = null;
			}
		}