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();
}
}
}