Decompiled source of Zer0sUnits v1.0.0

Zer0sUnits.dll

Decompiled 2 days 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.Versioning;
using BepInEx;
using CASA.Main;
using CASA.ObjectManagement;
using CASA.Tools;
using CASA.UnitSerializing;
using Landfall.TABS;
using Landfall.TABS.Workshop;
using UnityEngine;

[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)]
[assembly: TargetFramework(".NETFramework,Version=v4.7.2", FrameworkDisplayName = ".NET Framework 4.7.2")]
[assembly: AssemblyCompany("Zer0sUnits")]
[assembly: AssemblyConfiguration("Debug")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: AssemblyInformationalVersion("1.0.0")]
[assembly: AssemblyProduct("Zer0sUnits")]
[assembly: AssemblyTitle("Zer0sUnits")]
[assembly: AssemblyVersion("1.0.0.0")]
[BepInPlugin("com.NegativeZer0.Zer0sUnits", "Zer0s Units", "1.0.0")]
public class Zer0sUnits : CASAMod
{
	[CompilerGenerated]
	private sealed class <InitializeFactionAndUnits>d__4 : IEnumerator<object>, IDisposable, IEnumerator
	{
		private int <>1__state;

		private object <>2__current;

		public Zer0sUnits <>4__this;

		object IEnumerator<object>.Current
		{
			[DebuggerHidden]
			get
			{
				return <>2__current;
			}
		}

		object IEnumerator.Current
		{
			[DebuggerHidden]
			get
			{
				return <>2__current;
			}
		}

		[DebuggerHidden]
		public <InitializeFactionAndUnits>d__4(int <>1__state)
		{
			this.<>1__state = <>1__state;
		}

		[DebuggerHidden]
		void IDisposable.Dispose()
		{
			<>1__state = -2;
		}

		private bool MoveNext()
		{
			//IL_0032: Unknown result type (might be due to invalid IL or missing references)
			//IL_003c: Expected O, but got Unknown
			switch (<>1__state)
			{
			default:
				return false;
			case 0:
				<>1__state = -1;
				<>4__this.CreateFaction();
				<>2__current = (object)new WaitForSeconds(3f);
				<>1__state = 1;
				return true;
			case 1:
				<>1__state = -1;
				<>4__this.AddUnitToFaction();
				return false;
			}
		}

		bool IEnumerator.MoveNext()
		{
			//ILSpy generated this explicit interface implementation from .override directive in MoveNext
			return this.MoveNext();
		}

		[DebuggerHidden]
		void IEnumerator.Reset()
		{
			throw new NotSupportedException();
		}
	}

	private Faction myFaction;

	public override void Init()
	{
	}

	private void Awake()
	{
		((BaseUnityPlugin)this).Logger.LogInfo((object)"[CASA] Loading Zer0s Units...");
		((MonoBehaviour)this).StartCoroutine(InitializeFactionAndUnits());
	}

	public override ModPropreties GetModPropreties()
	{
		//IL_0021: Unknown result type (might be due to invalid IL or missing references)
		//IL_0027: Expected O, but got Unknown
		Sprite val = CASATools.LoadSprite("icon.png");
		return new ModPropreties("Zer0sUnits", "Negative0", "Some units i made Some are balanced and some are OP but all of them are well designed", "Some units i made Some are balanced and some are OP but all of them are well designed", val);
	}

	[IteratorStateMachine(typeof(<InitializeFactionAndUnits>d__4))]
	private IEnumerator InitializeFactionAndUnits()
	{
		//yield-return decompiler failed: Unexpected instruction in Iterator.Dispose()
		return new <InitializeFactionAndUnits>d__4(0)
		{
			<>4__this = this
		};
	}

	private void CreateFaction()
	{
		//IL_001b: Unknown result type (might be due to invalid IL or missing references)
		//IL_0020: Unknown result type (might be due to invalid IL or missing references)
		//IL_0021: Unknown result type (might be due to invalid IL or missing references)
		//IL_0026: Unknown result type (might be due to invalid IL or missing references)
		//IL_002c: Expected O, but got Unknown
		//IL_0034: Unknown result type (might be due to invalid IL or missing references)
		//IL_003e: Expected O, but got Unknown
		Sprite val = LoadFactionSprite();
		myFaction = CASATools.CreateFaction("Zer0's Units", 101, val);
		CustomFactionColor customFactionColor = new CustomFactionColor
		{
			m_Color = Color.black
		};
		FactionIcon val2 = ScriptableObject.CreateInstance<FactionIcon>();
		val2.Entity = new DatabaseEntity((WorkshopContentType)0);
		val2.Entity.SpriteIcon = val;
		myFaction.FactionIcon = val2;
		myFaction.CustomFactionColor = customFactionColor;
		((BaseUnityPlugin)this).Logger.LogInfo((object)("[CASA] Created faction: " + ((Object)myFaction).name));
	}

	private Sprite LoadFactionSprite()
	{
		//IL_0056: Unknown result type (might be due to invalid IL or missing references)
		//IL_005d: Expected O, but got Unknown
		//IL_0088: Unknown result type (might be due to invalid IL or missing references)
		//IL_0097: Unknown result type (might be due to invalid IL or missing references)
		try
		{
			string name = "Zer0sUnits.icon.png";
			Assembly executingAssembly = Assembly.GetExecutingAssembly();
			using Stream stream = executingAssembly.GetManifestResourceStream(name);
			if (stream == null)
			{
				((BaseUnityPlugin)this).Logger.LogWarning((object)"[CASA] Faction icon not found as embedded resource, using placeholder.");
				return null;
			}
			byte[] array = new byte[stream.Length];
			stream.Read(array, 0, array.Length);
			Texture2D val = new Texture2D(2, 2);
			if (ImageConversion.LoadImage(val, array))
			{
				return Sprite.Create(val, new Rect(0f, 0f, (float)((Texture)val).width, (float)((Texture)val).height), new Vector2(0.5f, 0.5f));
			}
		}
		catch
		{
			((BaseUnityPlugin)this).Logger.LogWarning((object)"[CASA] Failed to load faction icon.");
		}
		return null;
	}

	private void SerializeUnits()
	{
		UnitSerializer.SerializeUnit(ObjectSearcher.FindUnit("The Crimson Snatcher 2 Evolution"));
		UnitSerializer.SerializeUnit(ObjectSearcher.FindUnit("Zer0WarriorV1"));
		UnitSerializer.SerializeUnit(ObjectSearcher.FindUnit("Mutated Vampire"));
		UnitSerializer.SerializeUnit(ObjectSearcher.FindUnit("NegativeZer0 V3"));
		UnitSerializer.SerializeUnit(ObjectSearcher.FindUnit("Nexus-Sentinel Model-10"));
		UnitSerializer.SerializeUnit(ObjectSearcher.FindUnit("Nexus-Sentinel Model-07 Bomber"));
		UnitSerializer.SerializeUnit(ObjectSearcher.FindUnit("Nexus-Sentinel Heavy Unit"));
		UnitSerializer.SerializeUnit(ObjectSearcher.FindUnit("Soul Taker"));
		UnitSerializer.SerializeUnit(ObjectSearcher.FindUnit("Metallic Snatcher"));
		UnitSerializer.SerializeUnit(ObjectSearcher.FindUnit("The Crimson Snatcher"));
		UnitSerializer.SerializeUnit(ObjectSearcher.FindUnit("Radioactive"));
		UnitSerializer.SerializeUnit(ObjectSearcher.FindUnit("Ghost Knight"));
		UnitSerializer.SerializeUnit(ObjectSearcher.FindUnit("Stone Creature"));
		UnitSerializer.SerializeUnit(ObjectSearcher.FindUnit("ENERGY"));
		UnitSerializer.SerializeUnit(ObjectSearcher.FindUnit("Nexus-Sentinel Model-07"));
		UnitSerializer.SerializeUnit(ObjectSearcher.FindUnit("Blood Infecter (Minion)"));
		UnitSerializer.SerializeUnit(ObjectSearcher.FindUnit("Blood Infecter"));
		UnitSerializer.SerializeUnit(ObjectSearcher.FindUnit("Lord of Fire"));
		UnitSerializer.SerializeUnit(ObjectSearcher.FindUnit("Time Ripper"));
		UnitSerializer.SerializeUnit(ObjectSearcher.FindUnit("Negative0 V2"));
		UnitSerializer.SerializeUnit(ObjectSearcher.FindUnit("Shadowstriker"));
		UnitSerializer.SerializeUnit(ObjectSearcher.FindUnit("Venomous Tree Trapper"));
		UnitSerializer.SerializeUnit(ObjectSearcher.FindUnit("Void Stalker"));
	}

	private void SerializeUnits2()
	{
		SerializedUnitBlueprint[] array = UnitSerializer.SerializeAllCustomUnits();
		((BaseUnityPlugin)this).Logger.LogInfo((object)$"Found {array.Length} units!");
	}

	private void AddUnitToFaction()
	{
		CASATools.CreateUnit("The Crimson Snatcher 2 Evolution", 101, myFaction, (Sprite)null, UnitSerializer.GetEmbeddedUnitBlueprint("The Crimson Snatcher 2 Evolution"));
		CASATools.CreateUnit("Zer0WarriorV1", 102, myFaction, (Sprite)null, UnitSerializer.GetEmbeddedUnitBlueprint("Zer0WarriorV1"));
		CASATools.CreateUnit("Mutated Vampire", 103, myFaction, (Sprite)null, UnitSerializer.GetEmbeddedUnitBlueprint("Mutated Vampire"));
		CASATools.CreateUnit("<color=#00A8E8>N<color=#009AD8>e<color=#008CCC>x<color=#007EBB>u<color=#0070A3>s </color><color=#00A8E8>S<color=#009AD8>e<color=#008CCC>n<color=#007EBB>t<color=#0070A3>i<color=#006299>n<color=#005480>e<color=#004766>l </color><color=#00FFAA>M<color=#00E6A0>o<color=#00CC95>d<color=#00B28A>e<color=#00987F>l<color=#007E74>-<color=#006469>10<color=#004A5D></color", 105, myFaction, (Sprite)null, UnitSerializer.GetEmbeddedUnitBlueprint("Nexus-Sentinel Model-10"));
		CASATools.CreateUnit("<color=#00A8E8><color=#003366>N<color=#004080>e<color=#004d99>x<color=#005ab3>u<color=#0066cc>s </color><color=#0073e6>S<color=#0080ff>e<color=#3399ff>n<color=#4db8ff>t<color=#66ccff>i<color=#80e0ff>n<color=#99f2ff>e<color=#aaffee>l </color><color=#bbffdd>M<color=#ccffcc>o<color=#b3ffe0>d<color=#99ffe6>e<color=#80ffeb>l<color=#66fff0>-<color=#4dfff5>0<color=#33fffa>7 </color><color=#1affff>– </color><color=#1fffa3>B<color=#33ff99>o<color=#47ff8f>m<color=#5bff85>b<color=#6fff7a>e<color=#83ff70>r</color>\r\n<color=#009AD8><color=#008CCC><color=#007EBB><color=#0070A3></color><color=#00A8E8><color=#009AD8><color=#008CCC><color=#007EBB><color=#0070A3><color=#006299><color=#005480><color=#004766></color><color=#00FFAA><color=#00E6A0><color=#00CC95><color=#00B28A><color=#00987F><color=#007E74><color=#006469><color=#004A5D></color>", 106, myFaction, (Sprite)null, UnitSerializer.GetEmbeddedUnitBlueprint("Nexus-Sentinel Model-07 Bomber"));
		CASATools.CreateUnit("<color=#8b0000><color=#4d0000><color=#003366>N<color=#004080>e<color=#004d99>x<color=#005ab3>u<color=#0066cc>s </color><color=#0073e6>S<color=#0080ff>e<color=#3399ff>n<color=#4db8ff>t<color=#66ccff>i<color=#80e0ff>n<color=#99f2ff>e<color=#aaffee>l </color><color=#bbffdd>-</color><color=#ccffcc> </color><color=#66ffe0>H<color=#5effd4>e<color=#55ffc7>a<color=#4dffbb>v<color=#44ffaa>y </color><color=#3aff99>U<color=#31ff88>n<color=#28ff77>i<color=#1fff66>t</color>\r\n</color>\r<color=#7a0000><color=#6b0000><color=#5c0000><color=#4d0000></color><color=#8b0000><color=#7a0000><color=#6b0000><color=#5c0000><color=#4d0000><color=#3e0000><color=#2f0000><color=#200000></color><color=#990000></color><color=#7F0000></color><color=#8b0000><color=#7a0000><color=#6b0000><color=#5c0000><color=#4d0000></color>", 107, myFaction, (Sprite)null, UnitSerializer.GetEmbeddedUnitBlueprint("Nexus-Sentinel Heavy Unit"));
		CASATools.CreateUnit("<color=#FFFFFF>S<color=#EDEDED>o<color=#DBDBDB>u<color=#C9C9C9>l </color><color=#B7B7B7>T<color=#A5A5A5>a<color=#939393>k<color=#818181>e<color=#6F6F6F>r</color>", 108, myFaction, (Sprite)null, UnitSerializer.GetEmbeddedUnitBlueprint("Soul Taker"));
		CASATools.CreateUnit("<color=#C0C0C0>M<color=#B6B6B6>e<color=#ACACAC>t<color=#A2A2A2>a<color=#989898>l<color=#8E8E8E>l<color=#848484>i<color=#7A7A7A>c </color><color=#808080>S<color=#767676>n<color=#6C6C6C>a<color=#626262>t<color=#585858>c<color=#4E4E4E>h<color=#444444>e<color=#3A3A3A>r</color>\r\n", 109, myFaction, (Sprite)null, UnitSerializer.GetEmbeddedUnitBlueprint("Metallic Snatcher"));
		CASATools.CreateUnit("The Crimson Snatcher", 110, myFaction, (Sprite)null, UnitSerializer.GetEmbeddedUnitBlueprint("The Crimson Snatcher"));
		CASATools.CreateUnit("<color=#ADFF2F>R<color=#A0F52C>a<color=#93EB29>d<color=#86E126>i<color=#79D723>o<color=#6CCD20>a<color=#60C31D>c<color=#53B91A>t<color=#46AF17>i<color=#39A514>v<color=#2C9B11>e</color>", 111, myFaction, (Sprite)null, UnitSerializer.GetEmbeddedUnitBlueprint("Radioactive"));
		CASATools.CreateUnit("<color=#ADD8E6>G<color=#A0D0E0>h<color=#93C8DA>o<color=#86C0D4>s<color=#79B8CE>t </color><color=#FFFFFF>K<color=#E8E8E8>n<color=#D1D1D1>i<color=#BBBBBB>g<color=#A4A4A4>h<color=#8D8D8D>t</color>", 112, myFaction, (Sprite)null, UnitSerializer.GetEmbeddedUnitBlueprint("Ghost Knight"));
		CASATools.CreateUnit("<color=#8B4513><color=#A9A9A9>S<color=#9E9E9E>t<color=#939393>o<color=#888888>n<color=#7D7D7D>e </color><color=#B0B0B0>C<color=#A5A5A5>r<color=#9A9A9A>e<color=#8F8F8F>a<color=#848484>t<color=#797979>u<color=#6E6E6E>r<color=#636363>e</color><color=#7A3E12><color=#693711><color=#583010><color=#47290E></color><color=#2E8B57><color=#2A7E50><color=#267149><color=#226442><color=#1E573D><color=#1A4A36><color=#153D2F><color=#113027></color", 113, myFaction, (Sprite)null, UnitSerializer.GetEmbeddedUnitBlueprint("Stone Creature"));
		CASATools.CreateUnit("<color=#FF4500><color=#FF5E00><color=#FF7700><color=#FF9100><color=#FFAA00><color=#FFC300></color><color=#00BFFF>E<color=#00B2F0>N<color=#00A5E1>E<color=#0098D2>R<color=#008CC3>G<color=#007FB4>Y</color>", 114, myFaction, (Sprite)null, UnitSerializer.GetEmbeddedUnitBlueprint("ENERGY"));
		CASATools.CreateUnit("<color=#00A8E8>N<color=#009AD8>e<color=#008CCC>x<color=#007EBB>u<color=#0070A3>s </color><color=#00A8E8>S<color=#009AD8>e<color=#008CCC>n<color=#007EBB>t<color=#0070A3>i<color=#006299>n<color=#005480>e<color=#004766>l </color><color=#00FFAA>M<color=#00E6A0>o<color=#00CC95>d<color=#00B28A>e<color=#00987F>l<color=#007E74>-<color=#006469>0<color=#004A5D>7</color>", 115, myFaction, (Sprite)null, UnitSerializer.GetEmbeddedUnitBlueprint("Nexus-Sentinel Model-07"));
		CASATools.CreateUnit("<color=#8b0000>B<color=#7a0000>l<color=#6b0000>o<color=#5c0000>o<color=#4d0000>d </color><color=#8b0000>I<color=#7a0000>n<color=#6b0000>f<color=#5c0000>e<color=#4d0000>c<color=#3e0000>t<color=#2f0000>e<color=#200000>r (Minion)", 116, myFaction, (Sprite)null, UnitSerializer.GetEmbeddedUnitBlueprint("Blood Infecter (Minion)"));
		CASATools.CreateUnit("<color=#8b0000>B<color=#7a0000>l<color=#6b0000>o<color=#5c0000>o<color=#4d0000>d </color><color=#8b0000>I<color=#7a0000>n<color=#6b0000>f<color=#5c0000>e<color=#4d0000>c<color=#3e0000>t<color=#2f0000>e<color=#200000>r\r", 117, myFaction, (Sprite)null, UnitSerializer.GetEmbeddedUnitBlueprint("Blood Infecter"));
		CASATools.CreateUnit("<color=#ff0000>L<color=#ff4500>o<color=#ff7f00>r<color=#ffbd00>d </color><color=#ff9d00>o<color=#ff7f00>f </color><color=#ff4500>F<color=#ff0000>i<color=#ff4500>r<color=#ff7f00>e\r", 118, myFaction, (Sprite)null, UnitSerializer.GetEmbeddedUnitBlueprint("Lord of Fire"));
		CASATools.CreateUnit("</gradient></gradient><color=#ff0000><color=#ffffff>T<color=#e6e6e6>i<color=#cccccc>m<color=#b3b3b3>e </color><color=#999999>R<color=#808080>i<color=#666666>p<color=#4d4d4d>p<color=#333333>e<color=#1a1a1a>r\r\n<color=#ff4500><color=#ff8c00><color=#ffd700><color=#adff2f><color=#32cd32><color=#00ff7f></color><color=#00bfff><color=#1e90ff><color=#4169e1><color=#8a2be2><color=#9400d3><color=#8b0000><color=#dc143c><color=#ff69b4></color><color=#ff1493><color=#ff69b4><color=#ff7f50><color=#ff8c00><color=#ffd700><color=#adff2f></color><color=#32cd32><color=#00ff7f><color=#00bfff><color=#1e90ff><color=#4169e1><color=#8a2be2><color=#9400d3><color=#8b0000><color=#dc143c>", 119, myFaction, (Sprite)null, UnitSerializer.GetEmbeddedUnitBlueprint("Time Ripper"));
		CASATools.CreateUnit("<color=#f00>Negative0 V2", 120, myFaction, (Sprite)null, UnitSerializer.GetEmbeddedUnitBlueprint("Negative0 V2"));
		CASATools.CreateUnit("Shadowstriker", 121, myFaction, (Sprite)null, UnitSerializer.GetEmbeddedUnitBlueprint("Shadowstriker"));
		CASATools.CreateUnit("Venomous Tree Trapper", 122, myFaction, (Sprite)null, UnitSerializer.GetEmbeddedUnitBlueprint("Venomous Tree Trapper"));
		CASATools.CreateUnit("Void Stalker", 123, myFaction, (Sprite)null, UnitSerializer.GetEmbeddedUnitBlueprint("Void Stalker"));
		CASATools.CreateUnit("NegativeZer0 V3", 124, myFaction, (Sprite)null, UnitSerializer.GetEmbeddedUnitBlueprint("NegativeZer0 V3"));
	}
}
namespace CASA;

public class RemoveNulls : MonoBehaviour
{
	public static void RemoveAllNullAbilites()
	{
		UnitBlueprint[] array = Resources.FindObjectsOfTypeAll<UnitBlueprint>();
		for (int i = 0; i < array.Length; i++)
		{
			Debug.Log((object)"Removing null ablites for unit!");
			List<GameObject> list = array[i].objectsToSpawnAsChildren.ToList();
			for (int j = 0; j < array[i].objectsToSpawnAsChildren.Length; j++)
			{
				if (!Object.op_Implicit((Object)(object)array[i].objectsToSpawnAsChildren[j]))
				{
					list.Remove(array[i].objectsToSpawnAsChildren[j]);
				}
			}
			array[i].objectsToSpawnAsChildren = list.ToArray();
		}
	}
}