Decompiled source of Plants vs Zombies v0.7.0

ZephtPvZ.dll

Decompiled 2 months ago
using System;
using System.Collections;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.Versioning;
using System.Security;
using System.Security.Permissions;
using BepInEx;
using BepInEx.Logging;
using DiskCardGame;
using HarmonyLib;
using Infiniscryption.PackManagement;
using InscryptionAPI.Ascension;
using InscryptionAPI.Card;
using InscryptionAPI.Guid;
using InscryptionAPI.Helpers;
using Microsoft.CodeAnalysis;
using UnityEngine;
using ZephtSun;

[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)]
[assembly: TargetFramework(".NETStandard,Version=v2.0", FrameworkDisplayName = ".NET Standard 2.0")]
[assembly: AssemblyCompany("ZephtPvZ")]
[assembly: AssemblyConfiguration("Debug")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: AssemblyInformationalVersion("1.0.0")]
[assembly: AssemblyProduct("ZephtPvZ")]
[assembly: AssemblyTitle("ZephtPvZ")]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: AssemblyVersion("1.0.0.0")]
[module: UnverifiableCode]
[module: RefSafetyRules(11)]
namespace Microsoft.CodeAnalysis
{
	[CompilerGenerated]
	[Microsoft.CodeAnalysis.Embedded]
	internal sealed class EmbeddedAttribute : Attribute
	{
	}
}
namespace System.Runtime.CompilerServices
{
	[CompilerGenerated]
	[Microsoft.CodeAnalysis.Embedded]
	[AttributeUsage(AttributeTargets.Module, AllowMultiple = false, Inherited = false)]
	internal sealed class RefSafetyRulesAttribute : Attribute
	{
		public readonly int Version;

		public RefSafetyRulesAttribute(int P_0)
		{
			Version = P_0;
		}
	}
}
namespace ZephtPvZ
{
	public class EvolveSprout : SpecialCardBehaviour
	{
		public static SpecialTriggeredAbility SpecialTriggeredAbility;

		private void Start()
		{
		}

		public override bool RespondsToUpkeep(bool playerUpkeep)
		{
			return true;
		}

		public override IEnumerator OnUpkeep(bool playerUpkeep)
		{
			Plugin.Log.LogInfo((object)"evocheck 1");
			EvolveParams evoParams = new EvolveParams();
			evoParams.turnsToEvolve = 1;
			int randomSeed = ((TriggerReceiver)this).GetRandomSeed();
			CardInfo randomChoosableCard = GetRandomSproutEvo(randomSeed);
			evoParams.evolution = randomChoosableCard;
			((SpecialCardBehaviour)this).Card.Info.evolveParams = evoParams;
			yield break;
		}

		public static CardInfo GetRandomSproutEvo(int randomSeed)
		{
			List<CardInfo> plantCards = GetPlantCards();
			return CardLoader.Clone(plantCards[SeededRandom.Range(0, plantCards.Count, randomSeed)]);
		}

		public static List<CardInfo> GetPlantCards()
		{
			return CardLoader.RemoveDeckSingletonsIfInDeck(ScriptableObjectLoader<CardInfo>.AllData.FindAll((CardInfo x) => (x.metaCategories.Contains((CardMetaCategory)0) || x.metaCategories.Contains((CardMetaCategory)3)) && (x.IsOfTribe(Plugin.PlantFlower) || x.IsOfTribe(Plugin.PlantFruit) || x.IsOfTribe(Plugin.PlantShroom) || x.IsOfTribe(Plugin.PlantVeg) || x.IsOfTribe(Plugin.PlantSpiky)) && !(((Object)x).name == "zep_pvz_sprout") && !x.specialAbilities.Contains(SpecialTriggeredAbility) && !x.HasAbility(Plugin.AddStats.ability)));
		}
	}
	public class InfoStoreIce : SpecialCardBehaviour
	{
		public static SpecialTriggeredAbility SpecialTriggeredAbility;

		public override bool RespondsToDie(bool wasSacrifice, PlayableCard killer)
		{
			return true;
		}

		public override IEnumerator OnDie(bool wasSacrifice, PlayableCard killer)
		{
			Plugin.Log.LogInfo((object)"icecheck 2");
			CardModificationInfo copymod = new CardModificationInfo(0, 0);
			copymod.abilities.AddRange(((SpecialCardBehaviour)this).Card.Info.ModAbilities);
			if (((SpecialCardBehaviour)this).Card.Info.ModAbilities.Count > 0)
			{
				copymod.fromDuplicateMerge = true;
			}
			CardExtensions.SetIceCube(((SpecialCardBehaviour)this).Card.Info, "zep_pvz_infininutbase", (IEnumerable<CardModificationInfo>)null);
			((SpecialCardBehaviour)this).Card.Info.iceCubeParams.creatureWithin.Mods.Add(copymod);
			Plugin.Log.LogInfo((object)"icecheck 2");
			yield break;
		}
	}
	[BepInPlugin("zepht.inscryption.ZephtPvZ", "PvZbyZepht", "0.7.0")]
	[BepInDependency(/*Could not decode attribute arguments.*/)]
	[BepInDependency(/*Could not decode attribute arguments.*/)]
	public class Plugin : BaseUnityPlugin
	{
		public class Spudow : AbilityBehaviour
		{
			public static Ability ability;

			public override Ability Ability => ability;

			public override bool RespondsToPreDeathAnimation(bool wasSacrifice)
			{
				return ((AbilityBehaviour)this).Card.OnBoard;
			}

			public override IEnumerator OnPreDeathAnimation(bool wasSacrifice)
			{
				((Card)((AbilityBehaviour)this).Card).Anim.LightNegationEffect();
				yield return ((AbilityBehaviour)this).PreSuccessfulTriggerSequence();
				if (!wasSacrifice)
				{
					yield return ExplodeFromSlot(((AbilityBehaviour)this).Card.Slot);
				}
			}

			protected IEnumerator ExplodeFromSlot(CardSlot Slot)
			{
				if ((Object)(object)Slot.opposingSlot.Card != (Object)null && !Slot.opposingSlot.Card.Dead)
				{
					yield return BombCard(Slot.opposingSlot.Card, Slot.Card);
				}
			}

			private IEnumerator BombCard(PlayableCard target, PlayableCard attacker)
			{
				yield return (object)new WaitForSeconds(0.1f);
				((Card)((AbilityBehaviour)this).Card).Anim.StrongNegationEffect();
				yield return (object)new WaitForSeconds(0.1f);
				((Card)((AbilityBehaviour)this).Card).Anim.StrongNegationEffect();
				yield return (object)new WaitForSeconds(0.1f);
				((Card)((AbilityBehaviour)this).Card).Anim.StrongNegationEffect();
				yield return target.TakeDamage(4, attacker);
			}

			public override bool RespondsToDie(bool wasSacrifice, PlayableCard killer)
			{
				return !wasSacrifice && ((AbilityBehaviour)this).Card.OnBoard;
			}

			public override IEnumerator OnDie(bool wasSacrifice, PlayableCard killer)
			{
				yield return ((AbilityBehaviour)this).PreSuccessfulTriggerSequence();
				yield return ((AbilityBehaviour)this).LearnAbility(0.5f);
			}
		}

		public class Sweet : AbilityBehaviour
		{
			public static Ability ability;

			public override Ability Ability => ability;

			public override bool RespondsToPreDeathAnimation(bool wasSacrifice)
			{
				return ((AbilityBehaviour)this).Card.OnBoard;
			}

			public override IEnumerator OnPreDeathAnimation(bool wasSacrifice)
			{
				((Card)((AbilityBehaviour)this).Card).Anim.LightNegationEffect();
				yield return ((AbilityBehaviour)this).PreSuccessfulTriggerSequence();
				if (!wasSacrifice)
				{
					yield return ExplodeFromSlot(((AbilityBehaviour)this).Card.Slot);
				}
			}

			protected IEnumerator ExplodeFromSlot(CardSlot Slot)
			{
				List<CardSlot> adjacentSlots = Singleton<BoardManager>.Instance.GetAdjacentSlots(Slot);
				if (adjacentSlots.Count > 0 && adjacentSlots[0].Index < Slot.Index)
				{
					if ((Object)(object)adjacentSlots[0].Card != (Object)null && !adjacentSlots[0].Card.Dead)
					{
						yield return BombCard(adjacentSlots[0].Card, Slot.Card, 1);
					}
					if ((Object)(object)adjacentSlots[0].opposingSlot.Card != (Object)null && !adjacentSlots[0].opposingSlot.Card.Dead)
					{
						yield return BombCard(adjacentSlots[0].opposingSlot.Card, Slot.Card, 3);
					}
					adjacentSlots.RemoveAt(0);
				}
				if ((Object)(object)Slot.opposingSlot.Card != (Object)null && !Slot.opposingSlot.Card.Dead)
				{
					yield return BombCard(Slot.opposingSlot.Card, Slot.Card, 3);
				}
				if (adjacentSlots.Count > 0 && (Object)(object)adjacentSlots[0].opposingSlot.Card != (Object)null && !adjacentSlots[0].opposingSlot.Card.Dead)
				{
					yield return BombCard(adjacentSlots[0].opposingSlot.Card, Slot.Card, 3);
				}
				if (adjacentSlots.Count > 0 && (Object)(object)adjacentSlots[0].Card != (Object)null && !adjacentSlots[0].Card.Dead)
				{
					yield return BombCard(adjacentSlots[0].Card, Slot.Card, 1);
				}
			}

			private IEnumerator BombCard(PlayableCard target, PlayableCard attacker, int damage)
			{
				yield return (object)new WaitForSeconds(0.1f);
				((Card)target).Anim.PlayHitAnimation();
				yield return target.TakeDamage(damage, attacker);
			}

			public override bool RespondsToTurnEnd(bool playerTurnEnd)
			{
				return ((AbilityBehaviour)this).Card.OpponentCard != playerTurnEnd;
			}

			public override IEnumerator OnTurnEnd(bool playerTurnEnd)
			{
				yield return ((AbilityBehaviour)this).PreSuccessfulTriggerSequence();
				((Card)((AbilityBehaviour)this).Card).Anim.StrongNegationEffect();
				yield return (object)new WaitForSeconds(0.1f);
				((Card)((AbilityBehaviour)this).Card).Anim.StrongNegationEffect();
				yield return (object)new WaitForSeconds(0.1f);
				((Card)((AbilityBehaviour)this).Card).Anim.StrongNegationEffect();
				yield return (object)new WaitForSeconds(0.1f);
				((Card)((AbilityBehaviour)this).Card).Anim.StrongNegationEffect();
				if ((Object)(object)((AbilityBehaviour)this).Card != (Object)null && !((AbilityBehaviour)this).Card.Dead)
				{
					if (!SaveManager.SaveFile.IsPart2)
					{
						Singleton<ViewManager>.Instance.SwitchToView((View)4, false, false);
						yield return (object)new WaitForSeconds(0.1f);
					}
					yield return ((AbilityBehaviour)this).Card.Die(false, (PlayableCard)null, true);
					if (!SaveManager.SaveFile.IsPart2)
					{
						yield return (object)new WaitForSeconds(0.1f);
					}
				}
			}

			public override bool RespondsToDie(bool wasSacrifice, PlayableCard killer)
			{
				return !wasSacrifice && ((AbilityBehaviour)this).Card.OnBoard;
			}

			public override IEnumerator OnDie(bool wasSacrifice, PlayableCard killer)
			{
				yield return ((AbilityBehaviour)this).PreSuccessfulTriggerSequence();
				yield return ((AbilityBehaviour)this).LearnAbility(0.5f);
			}
		}

		public class Spicy : AbilityBehaviour
		{
			public static Ability ability;

			public override Ability Ability => ability;

			public override bool RespondsToPreDeathAnimation(bool wasSacrifice)
			{
				return ((AbilityBehaviour)this).Card.OnBoard;
			}

			public override IEnumerator OnPreDeathAnimation(bool wasSacrifice)
			{
				((Card)((AbilityBehaviour)this).Card).Anim.LightNegationEffect();
				yield return ((AbilityBehaviour)this).PreSuccessfulTriggerSequence();
				if (!wasSacrifice)
				{
					yield return ExplodeFromSlot(((AbilityBehaviour)this).Card.Slot);
				}
			}

			protected IEnumerator ExplodeFromSlot(CardSlot Slot)
			{
				if ((Object)(object)Slot.opposingSlot.Card != (Object)null && !Slot.opposingSlot.Card.Dead)
				{
					yield return BombCard(Slot.opposingSlot.Card, Slot.Card);
				}
				if ((Object)(object)Singleton<BoardManager>.Instance.GetCardQueuedForSlot(Slot.opposingSlot) != (Object)null)
				{
					yield return BombCard(Singleton<BoardManager>.Instance.GetCardQueuedForSlot(Slot.opposingSlot), Slot.Card);
				}
			}

			private IEnumerator BombCard(PlayableCard target, PlayableCard attacker)
			{
				yield return (object)new WaitForSeconds(0.1f);
				((Card)target).Anim.PlayHitAnimation();
				yield return target.TakeDamage(4, attacker);
			}

			public override bool RespondsToTurnEnd(bool playerTurnEnd)
			{
				return ((AbilityBehaviour)this).Card.OpponentCard != playerTurnEnd;
			}

			public override IEnumerator OnTurnEnd(bool playerTurnEnd)
			{
				yield return ((AbilityBehaviour)this).PreSuccessfulTriggerSequence();
				((Card)((AbilityBehaviour)this).Card).Anim.StrongNegationEffect();
				yield return (object)new WaitForSeconds(0.1f);
				((Card)((AbilityBehaviour)this).Card).Anim.StrongNegationEffect();
				yield return (object)new WaitForSeconds(0.1f);
				((Card)((AbilityBehaviour)this).Card).Anim.StrongNegationEffect();
				yield return (object)new WaitForSeconds(0.1f);
				((Card)((AbilityBehaviour)this).Card).Anim.StrongNegationEffect();
				if ((Object)(object)((AbilityBehaviour)this).Card != (Object)null && !((AbilityBehaviour)this).Card.Dead)
				{
					if (!SaveManager.SaveFile.IsPart2)
					{
						Singleton<ViewManager>.Instance.SwitchToView((View)4, false, false);
						yield return (object)new WaitForSeconds(0.1f);
					}
					yield return ((AbilityBehaviour)this).Card.Die(false, (PlayableCard)null, true);
					if (!SaveManager.SaveFile.IsPart2)
					{
						yield return (object)new WaitForSeconds(0.1f);
					}
				}
			}

			public override bool RespondsToDie(bool wasSacrifice, PlayableCard killer)
			{
				return !wasSacrifice && ((AbilityBehaviour)this).Card.OnBoard;
			}

			public override IEnumerator OnDie(bool wasSacrifice, PlayableCard killer)
			{
				yield return ((AbilityBehaviour)this).PreSuccessfulTriggerSequence();
				yield return ((AbilityBehaviour)this).LearnAbility(0.5f);
			}
		}

		public class DoomBringer : AbilityBehaviour
		{
			public static Ability ability;

			public override Ability Ability => ability;

			public override bool RespondsToPreDeathAnimation(bool wasSacrifice)
			{
				return ((AbilityBehaviour)this).Card.OnBoard;
			}

			public override IEnumerator OnPreDeathAnimation(bool wasSacrifice)
			{
				((Card)((AbilityBehaviour)this).Card).Anim.LightNegationEffect();
				yield return ((AbilityBehaviour)this).PreSuccessfulTriggerSequence();
				if (!wasSacrifice)
				{
					yield return ExplodeFromSlot(((AbilityBehaviour)this).Card.Slot);
				}
			}

			protected IEnumerator ExplodeFromSlot(CardSlot Slot)
			{
				foreach (CardSlot cardSlot in Singleton<BoardManager>.Instance.OpponentSlotsCopy)
				{
					if ((Object)(object)cardSlot.Card != (Object)null && !cardSlot.Card.Dead)
					{
						yield return BombCard(cardSlot.Card, Slot.Card, 7);
					}
					if ((Object)(object)cardSlot.opposingSlot.Card != (Object)null && !cardSlot.opposingSlot.Card.Dead)
					{
						yield return BombCard(cardSlot.opposingSlot.Card, Slot.Card, 1);
					}
				}
			}

			private IEnumerator BombCard(PlayableCard target, PlayableCard attacker, int damage)
			{
				yield return (object)new WaitForSeconds(0.003f);
				((Card)target).Anim.PlayHitAnimation();
				yield return target.TakeDamage(damage, attacker);
			}

			public override bool RespondsToTurnEnd(bool playerTurnEnd)
			{
				return ((AbilityBehaviour)this).Card.OpponentCard != playerTurnEnd;
			}

			public override IEnumerator OnTurnEnd(bool playerTurnEnd)
			{
				yield return ((AbilityBehaviour)this).PreSuccessfulTriggerSequence();
				((Card)((AbilityBehaviour)this).Card).Anim.LightNegationEffect();
				yield return (object)new WaitForSeconds(0.3f);
				((Card)((AbilityBehaviour)this).Card).Anim.LightNegationEffect();
				yield return (object)new WaitForSeconds(0.2f);
				((Card)((AbilityBehaviour)this).Card).Anim.StrongNegationEffect();
				yield return (object)new WaitForSeconds(0.1f);
				((Card)((AbilityBehaviour)this).Card).Anim.StrongNegationEffect();
				yield return (object)new WaitForSeconds(0.1f);
				((Card)((AbilityBehaviour)this).Card).Anim.StrongNegationEffect();
				yield return (object)new WaitForSeconds(0.05f);
				((Card)((AbilityBehaviour)this).Card).Anim.StrongNegationEffect();
				yield return (object)new WaitForSeconds(0.02f);
				((Card)((AbilityBehaviour)this).Card).Anim.StrongNegationEffect();
				if ((Object)(object)((AbilityBehaviour)this).Card != (Object)null && !((AbilityBehaviour)this).Card.Dead)
				{
					if (!SaveManager.SaveFile.IsPart2)
					{
						Singleton<ViewManager>.Instance.SwitchToView((View)4, false, false);
						yield return (object)new WaitForSeconds(0.1f);
					}
					yield return ((AbilityBehaviour)this).Card.Die(false, (PlayableCard)null, true);
					if (!SaveManager.SaveFile.IsPart2)
					{
						yield return (object)new WaitForSeconds(0.1f);
					}
				}
			}
		}

		public class Hypnotist : AbilityBehaviour
		{
			public static Ability ability;

			public override Ability Ability => ability;

			public override bool RespondsToDie(bool wasSacrifice, PlayableCard killer)
			{
				return !wasSacrifice && ((AbilityBehaviour)this).Card.OnBoard;
			}

			public override IEnumerator OnDie(bool wasSacrifice, PlayableCard killer)
			{
				if (!wasSacrifice && (Object)(object)killer != (Object)null && !CardExtensions.HasAnyOfTraits(killer, (Trait[])(object)new Trait[2]
				{
					(Trait)16,
					(Trait)14
				}))
				{
					yield return Singleton<BoardManager>.Instance.AssignCardToSlot(killer, ((AbilityBehaviour)this).Card.Slot, 0.1f, (Action)null, true);
					killer.SetIsOpponentCard(!killer.Slot.IsPlayerSlot);
					((Card)killer).Anim.LightNegationEffect();
					yield return ((AbilityBehaviour)this).PreSuccessfulTriggerSequence();
					yield return ((AbilityBehaviour)this).LearnAbility(0.5f);
				}
			}
		}

		public class TacticalRetreat : AbilityBehaviour
		{
			public static Ability ability;

			public override Ability Ability => ability;
		}

		[HarmonyPatch(typeof(PlayableCard), "GetPassiveAttackBuffs")]
		public class ScaredyAttack_patch
		{
			[HarmonyPostfix]
			public static void Postfix(ref int __result, ref PlayableCard __instance)
			{
				//IL_0033: Unknown result type (might be due to invalid IL or missing references)
				//IL_006f: Unknown result type (might be due to invalid IL or missing references)
				if (__instance.OnBoard && (Object)(object)__instance.Slot.Card != (Object)null && __instance.Slot.Card.HasAbility(TacticalRetreat.ability) && (Object)(object)__instance.Slot.opposingSlot.Card != (Object)null && !__instance.Slot.opposingSlot.Card.HasAbility(TacticalRetreat.ability) && __instance.Slot.opposingSlot.Card.Attack >= 1)
				{
					__result--;
				}
			}
		}

		[HarmonyPatch(typeof(PlayableCard), "GetPassiveHealthBuffs")]
		public class ScaredHealth_patch
		{
			[HarmonyPostfix]
			public static void Postfix(ref int __result, ref PlayableCard __instance)
			{
				//IL_0033: Unknown result type (might be due to invalid IL or missing references)
				//IL_0088: Unknown result type (might be due to invalid IL or missing references)
				if (__instance.OnBoard && (Object)(object)__instance.Slot.Card != (Object)null && __instance.Slot.Card.HasAbility(TacticalRetreat.ability) && (Object)(object)__instance.Slot.opposingSlot.Card != (Object)null && __instance.Slot.opposingSlot.Card.Attack >= 1 && !__instance.Slot.opposingSlot.Card.HasAbility(TacticalRetreat.ability))
				{
					__result++;
				}
			}
		}

		public class Pierce : AbilityBehaviour
		{
			public static Ability ability;

			public override Ability Ability => ability;

			public override bool RespondsToSlotTargetedForAttack(CardSlot slot, PlayableCard attacker)
			{
				return !slot.IsPlayerSlot && (Object)(object)((AbilityBehaviour)this).Card == (Object)(object)attacker;
			}

			public override IEnumerator OnSlotTargetedForAttack(CardSlot slot, PlayableCard attacker)
			{
				if (!slot.IsPlayerSlot)
				{
					PlayableCard queued = Singleton<BoardManager>.Instance.GetCardQueuedForSlot(slot);
					if ((Object)(object)queued != (Object)null && (Object)(object)attacker != (Object)null && CardExtensions.NotDead(attacker))
					{
						Singleton<ViewManager>.Instance.SwitchToView((View)6, false, true);
						yield return (object)new WaitForSeconds(0.3f);
						((Card)queued).Anim.LightNegationEffect();
						((Card)attacker).Anim.PlayAttackAnimation(false, queued.Slot);
						yield return queued.TakeDamage(((AbilityBehaviour)this).Card.Attack, ((AbilityBehaviour)this).Card);
						yield return (object)new WaitForSeconds(0.3f);
						((Card)queued).Anim.PlayHitAnimation();
						yield return ((AbilityBehaviour)this).PreSuccessfulTriggerSequence();
						yield return ((AbilityBehaviour)this).LearnAbility(0.5f);
						Singleton<ViewManager>.Instance.SwitchToView((View)4, false, true);
						Singleton<ViewManager>.Instance.Controller.LockState = (ViewLockState)0;
					}
				}
			}
		}

		[HarmonyPatch(typeof(CombatPhaseManager), "DealOverkillDamage")]
		public class PierceOverkill_patch
		{
			[HarmonyPrefix]
			public static void CheckforPierce(ref int damage, CardSlot attackingSlot, CardSlot opposingSlot)
			{
				//IL_0022: Unknown result type (might be due to invalid IL or missing references)
				if ((Object)(object)attackingSlot.Card != (Object)null && attackingSlot.IsPlayerSlot && ((Card)attackingSlot.Card).Info.HasAbility(Pierce.ability))
				{
					damage = 0;
				}
			}
		}

		[HarmonyPatch(typeof(CombatPhaseManager), "SlotAttackSlot")]
		public class PierceArmor_patch
		{
			[HarmonyPrefix]
			public static void CheckforPierceArmor(ref CardSlot opposingSlot, CardSlot attackingSlot)
			{
				//IL_001a: Unknown result type (might be due to invalid IL or missing references)
				//IL_00d5: Unknown result type (might be due to invalid IL or missing references)
				//IL_00db: Expected O, but got Unknown
				if (!((Object)(object)attackingSlot.Card != (Object)null) || !((Card)attackingSlot.Card).Info.HasAbility(Pierce.ability) || attackingSlot.Card.Dead || !((Object)(object)opposingSlot.Card != (Object)null) || !((Card)opposingSlot.Card).Info.HasAbility((Ability)54) || opposingSlot.Card.Dead)
				{
					return;
				}
				object obj = ((Card)opposingSlot.Card).Info.Clone();
				CardInfo val = (CardInfo)((obj is CardInfo) ? obj : null);
				foreach (CardModificationInfo mod in ((Card)opposingSlot.Card).Info.Mods)
				{
					val.Mods.Add(mod);
				}
				CardModificationInfo val2 = new CardModificationInfo();
				val2.negateAbilities = new List<Ability>
				{
					(Ability)54,
					(Ability)54,
					(Ability)54
				};
				val.Mods.Add(val2);
				((Card)opposingSlot.Card).SetInfo(val);
			}
		}

		public class SporeSpread : AbilityBehaviour
		{
			public static Ability ability;

			public override Ability Ability => ability;

			public override bool RespondsToOtherCardDie(PlayableCard card, CardSlot deathSlot, bool fromCombat, PlayableCard killer)
			{
				return (Object)(object)((AbilityBehaviour)this).Card == (Object)(object)killer && fromCombat;
			}

			public override IEnumerator OnOtherCardDie(PlayableCard card, CardSlot deathSlot, bool fromCombat, PlayableCard killer)
			{
				CardInfo CardToDraw = ((Card)((AbilityBehaviour)this).Card).Info;
				if (killer.Slot.IsPlayerSlot)
				{
					if ((int)Singleton<ViewManager>.Instance.CurrentView != 1)
					{
						yield return (object)new WaitForSeconds(0.2f);
						Singleton<ViewManager>.Instance.SwitchToView((View)1, false, false);
						yield return (object)new WaitForSeconds(0.2f);
					}
					yield return Singleton<CardSpawner>.Instance.SpawnCardToHand(CardToDraw, (List<CardModificationInfo>)null, 0.25f, (Action<PlayableCard>)null);
					yield return (object)new WaitForSeconds(0.45f);
					yield return ((AbilityBehaviour)this).LearnAbility(0.1f);
				}
				else if ((Object)(object)Singleton<BoardManager>.Instance.GetCardQueuedForSlot(deathSlot.opposingSlot) == (Object)null)
				{
					PlayableCard newcard = new PlayableCard();
					((Card)newcard).Info = CardToDraw;
					Singleton<BoardManager>.Instance.QueueCardForSlot(card, deathSlot.opposingSlot, 0.1f, true, true);
					yield return (object)new WaitForSeconds(0.45f);
					yield return ((AbilityBehaviour)this).LearnAbility(0.1f);
				}
			}
		}

		public class AddStats : AbilityBehaviour
		{
			public static Ability ability;

			public override Ability Ability => ability;

			public override bool RespondsToResolveOnBoard()
			{
				return ((AbilityBehaviour)this).Card.OnBoard;
			}

			public override IEnumerator OnResolveOnBoard()
			{
				((Card)((AbilityBehaviour)this).Card).Anim.LightNegationEffect();
				yield return ((AbilityBehaviour)this).PreSuccessfulTriggerSequence();
				foreach (CardSlot cardSlot in Singleton<BoardManager>.Instance.PlayerSlotsCopy)
				{
					if (!((Object)(object)cardSlot.Card != (Object)null) || cardSlot.Card.Dead || !Object.op_Implicit((Object)(object)((AbilityBehaviour)this).Card) || !((Object)(object)cardSlot.Card != (Object)(object)((AbilityBehaviour)this).Card) || ((Card)cardSlot.Card).Info.traits.Contains((Trait)12) || ((Card)cardSlot.Card).Info.traits.Contains(NoSacs))
					{
						continue;
					}
					((Card)((AbilityBehaviour)this).Card).Anim.LightNegationEffect();
					yield return (object)new WaitForSeconds(0.2f);
					((Card)((AbilityBehaviour)this).Card).Anim.StrongNegationEffect();
					yield return (object)new WaitForSeconds(0.2f);
					((Card)((AbilityBehaviour)this).Card).Anim.StrongNegationEffect();
					yield return (object)new WaitForSeconds(0.3f);
					((Card)cardSlot.Card).Anim.PlayTransformAnimation();
					object obj = ((Card)cardSlot.Card).Info.Clone();
					CardInfo targetCardInfo = (CardInfo)((obj is CardInfo) ? obj : null);
					foreach (CardModificationInfo cardmod in ((Card)cardSlot.Card).Info.Mods)
					{
						targetCardInfo.Mods.Add(cardmod);
					}
					foreach (Ability ability in ((Card)((AbilityBehaviour)this).Card).Info.Abilities)
					{
						if (ability != AddStats.ability)
						{
							CardModificationInfo cardModificationInfoPvZ = new CardModificationInfo(ability);
							targetCardInfo.Mods.Add(cardModificationInfoPvZ);
						}
					}
					CardModificationInfo cardModificationInfoPvZ2 = new CardModificationInfo();
					cardModificationInfoPvZ2.attackAdjustment = ((Card)((AbilityBehaviour)this).Card).Info.Attack;
					cardModificationInfoPvZ2.healthAdjustment = ((Card)((AbilityBehaviour)this).Card).Info.Health;
					targetCardInfo.Mods.Add(cardModificationInfoPvZ2);
					((Card)cardSlot.Card).SetInfo(targetCardInfo);
					((Card)cardSlot.Card).RenderCard();
					yield return (object)new WaitForSeconds(0.3f);
				}
				yield return (object)new WaitForSeconds(0.2f);
				yield return ((AbilityBehaviour)this).Card.Die(false, (PlayableCard)null, true);
				yield return (object)new WaitForSeconds(0.2f);
				yield return ((AbilityBehaviour)this).LearnAbility(0.5f);
				Singleton<ViewManager>.Instance.SwitchToView(Singleton<BoardManager>.Instance.DefaultView, false, false);
			}
		}

		public class AddStatsOpponent : AbilityBehaviour
		{
			public static Ability ability;

			public override Ability Ability => ability;

			public override bool RespondsToResolveOnBoard()
			{
				return ((AbilityBehaviour)this).Card.OnBoard;
			}

			public override IEnumerator OnResolveOnBoard()
			{
				((Card)((AbilityBehaviour)this).Card).Anim.LightNegationEffect();
				yield return ((AbilityBehaviour)this).PreSuccessfulTriggerSequence();
				foreach (CardSlot cardSlot in Singleton<BoardManager>.Instance.OpponentSlotsCopy)
				{
					if (!((Object)(object)cardSlot.Card != (Object)null) || cardSlot.Card.Dead || !Object.op_Implicit((Object)(object)((AbilityBehaviour)this).Card) || ((Card)cardSlot.Card).Info.traits.Contains(NoSacs))
					{
						continue;
					}
					((Card)cardSlot.Card).Anim.LightNegationEffect();
					yield return (object)new WaitForSeconds(0.2f);
					((Card)((AbilityBehaviour)this).Card).Anim.StrongNegationEffect();
					yield return (object)new WaitForSeconds(0.2f);
					((Card)((AbilityBehaviour)this).Card).Anim.StrongNegationEffect();
					yield return (object)new WaitForSeconds(0.3f);
					((Card)cardSlot.Card).Anim.PlayTransformAnimation();
					object obj = ((Card)cardSlot.Card).Info.Clone();
					CardInfo targetCardInfo = (CardInfo)((obj is CardInfo) ? obj : null);
					foreach (CardModificationInfo cardmod in ((Card)cardSlot.Card).Info.Mods)
					{
						targetCardInfo.Mods.Add(cardmod);
					}
					foreach (Ability ability in ((Card)((AbilityBehaviour)this).Card).Info.Abilities)
					{
						if (ability != AddStatsOpponent.ability)
						{
							CardModificationInfo cardModificationInfoPvZ = new CardModificationInfo(ability);
							targetCardInfo.Mods.Add(cardModificationInfoPvZ);
						}
					}
					CardModificationInfo cardModificationInfoPvZ2 = new CardModificationInfo();
					cardModificationInfoPvZ2.attackAdjustment = ((Card)((AbilityBehaviour)this).Card).Info.Attack;
					cardModificationInfoPvZ2.healthAdjustment = ((Card)((AbilityBehaviour)this).Card).Info.Health;
					targetCardInfo.Mods.Add(cardModificationInfoPvZ2);
					((Card)cardSlot.Card).SetInfo(targetCardInfo);
					((Card)cardSlot.Card).RenderCard();
					yield return (object)new WaitForSeconds(0.3f);
				}
				yield return (object)new WaitForSeconds(0.2f);
				yield return ((AbilityBehaviour)this).Card.Die(false, (PlayableCard)null, true);
				yield return (object)new WaitForSeconds(0.2f);
				yield return ((AbilityBehaviour)this).LearnAbility(0.5f);
				Singleton<ViewManager>.Instance.SwitchToView(Singleton<BoardManager>.Instance.DefaultView, false, false);
			}
		}

		public class ArmorBreak : AbilityBehaviour
		{
			public static Ability ability;

			public override Ability Ability => ability;

			public override bool RespondsToResolveOnBoard()
			{
				return ((AbilityBehaviour)this).Card.OnBoard;
			}

			public override IEnumerator OnResolveOnBoard()
			{
				((Card)((AbilityBehaviour)this).Card).Anim.LightNegationEffect();
				yield return ((AbilityBehaviour)this).PreSuccessfulTriggerSequence();
				Ability[] array = new Ability[6];
				RuntimeHelpers.InitializeArray(array, (RuntimeFieldHandle)/*OpCode not supported: LdMemberToken*/);
				array[0] = (Ability)(int)HardHeaded.ability;
				Ability[] armorAbilities = (Ability[])(object)array;
				foreach (CardSlot cardSlot in Singleton<BoardManager>.Instance.OpponentSlotsCopy)
				{
					if (!((Object)(object)cardSlot.Card != (Object)null) || cardSlot.Card.Dead)
					{
						continue;
					}
					Ability[] array2 = armorAbilities;
					foreach (Ability ability1 in array2)
					{
						if (!((Card)cardSlot.Card).Info.HasAbility(ability1))
						{
							continue;
						}
						((Card)((AbilityBehaviour)this).Card).Anim.LightNegationEffect();
						yield return (object)new WaitForSeconds(0.1f);
						((Card)((AbilityBehaviour)this).Card).Anim.StrongNegationEffect();
						yield return (object)new WaitForSeconds(0.1f);
						((Card)((AbilityBehaviour)this).Card).Anim.StrongNegationEffect();
						yield return (object)new WaitForSeconds(0.2f);
						((Card)cardSlot.Card).Anim.PlayTransformAnimation();
						object obj = ((Card)cardSlot.Card).Info.Clone();
						CardInfo targetCardInfo = (CardInfo)((obj is CardInfo) ? obj : null);
						foreach (CardModificationInfo cardmod in ((Card)cardSlot.Card).Info.Mods)
						{
							targetCardInfo.Mods.Add(cardmod);
						}
						CardModificationInfo cardModificationInfo = new CardModificationInfo();
						cardModificationInfo.negateAbilities = new List<Ability> { ability1 };
						targetCardInfo.Mods.Add(cardModificationInfo);
						((Card)cardSlot.Card).SetInfo(targetCardInfo);
						((Card)cardSlot.Card).RenderCard();
						yield return (object)new WaitForSeconds(0.1f);
						yield return ((AbilityBehaviour)this).LearnAbility(0.5f);
					}
				}
			}
		}

		public class ZombieWave : AbilityBehaviour
		{
			public static Ability ability;

			public override Ability Ability => ability;

			public override bool RespondsToResolveOnBoard()
			{
				return true;
			}

			public override IEnumerator OnResolveOnBoard()
			{
				Singleton<ViewManager>.Instance.SwitchToView((View)4, false, false);
				CardSlot toLeft = Singleton<BoardManager>.Instance.GetAdjacent(((AbilityBehaviour)this).Card.Slot, true);
				CardSlot toRight = Singleton<BoardManager>.Instance.GetAdjacent(((AbilityBehaviour)this).Card.Slot, false);
				bool toLeftValid = (Object)(object)toLeft != (Object)null && (Object)(object)toLeft.Card == (Object)null;
				bool toRightValid = (Object)(object)toRight != (Object)null && (Object)(object)toRight.Card == (Object)null;
				yield return ((AbilityBehaviour)this).PreSuccessfulTriggerSequence();
				if (toLeftValid)
				{
					yield return (object)new WaitForSeconds(0.1f);
					yield return SpawnCardOnSlot(toLeft);
				}
				if (toRightValid)
				{
					yield return (object)new WaitForSeconds(0.1f);
					yield return SpawnCardOnSlot(toRight);
				}
				if (toLeftValid || toRightValid)
				{
					Say("A huge wave of zombies is approaching");
				}
			}

			private IEnumerator SpawnCardOnSlot(CardSlot Slot)
			{
				int rand = SeededRandom.Range(0, 10, ((TriggerReceiver)this).GetRandomSeed());
				if (rand <= 6)
				{
					yield return Singleton<BoardManager>.Instance.CreateCardInSlot(CardLoader.GetCardByName("zep_pvz_zombie"), Slot, 0.15f, true);
				}
				else if (rand <= 9)
				{
					yield return Singleton<BoardManager>.Instance.CreateCardInSlot(CardLoader.GetCardByName("zep_pvz_zombiecone"), Slot, 0.15f, true);
				}
				else
				{
					yield return Singleton<BoardManager>.Instance.CreateCardInSlot(CardLoader.GetCardByName("zep_pvz_zombiebucket"), Slot, 0.15f, true);
				}
			}
		}

		public class HardHeaded : AbilityBehaviour
		{
			public static Ability ability;

			public override Ability Ability => ability;

			public override bool RespondsToResolveOnBoard()
			{
				return true;
			}

			public override bool RespondsToTakeDamage(PlayableCard source)
			{
				return true;
			}

			public override IEnumerator OnTakeDamage(PlayableCard source)
			{
				if ((Object)(object)((AbilityBehaviour)this).Card != (Object)null && ((Card)((AbilityBehaviour)this).Card).Info.HasAbility(ability) && !((AbilityBehaviour)this).Card.Dead && hardheadHealth > 0)
				{
					if (hardheadHealth - ((AbilityBehaviour)this).Card.Health == 0)
					{
						((AbilityBehaviour)this).Card.HealDamage(-2);
					}
					else if (hardheadHealth - ((AbilityBehaviour)this).Card.Health >= 1)
					{
						object obj = ((Card)((AbilityBehaviour)this).Card).Info.Clone();
						CardInfo targetCardInfo = (CardInfo)((obj is CardInfo) ? obj : null);
						foreach (CardModificationInfo cardmod in ((Card)((AbilityBehaviour)this).Card).Info.Mods)
						{
							targetCardInfo.Mods.Add(cardmod);
						}
						CardModificationInfo cardModificationInfo = new CardModificationInfo();
						cardModificationInfo.negateAbilities = new List<Ability> { ability };
						targetCardInfo.Mods.Add(cardModificationInfo);
						((Card)((AbilityBehaviour)this).Card).SetInfo(targetCardInfo);
						if (((Object)targetCardInfo).name == "zep_pvz_zombiebucket" && !((AbilityBehaviour)this).Card.HasAbility(ability))
						{
							((AbilityBehaviour)this).Card.SwitchToAlternatePortrait();
						}
						if (hardheadHealth - ((AbilityBehaviour)this).Card.Health == 1)
						{
							((AbilityBehaviour)this).Card.HealDamage(-1);
						}
					}
					if (((AbilityBehaviour)this).Card.Health <= 0)
					{
						((AbilityBehaviour)this).Card.Die(false, (PlayableCard)null, true);
					}
				}
				hardheadHealth = 0;
				yield break;
			}
		}

		[HarmonyPatch(typeof(CombatPhaseManager), "SlotAttackSlot")]
		public class HardHeaded_patch
		{
			[HarmonyPrefix]
			public static void CheckforHardHeaded(ref CardSlot opposingSlot, CardSlot attackingSlot)
			{
				//IL_001c: Unknown result type (might be due to invalid IL or missing references)
				if ((Object)(object)opposingSlot.Card != (Object)null && ((Card)opposingSlot.Card).Info.HasAbility(HardHeaded.ability))
				{
					opposingSlot.Card.HealDamage(2);
					hardheadHealth = opposingSlot.Card.Health;
				}
			}
		}

		public class FadeAway : AbilityBehaviour
		{
			public static Ability ability;

			public override Ability Ability => ability;

			public override bool RespondsToTurnEnd(bool playerTurnEnd)
			{
				return ((AbilityBehaviour)this).Card.OpponentCard != playerTurnEnd && !((AbilityBehaviour)this).Card.Dead;
			}

			public override IEnumerator OnTurnEnd(bool playerTurnEnd)
			{
				Singleton<ViewManager>.Instance.SwitchToView((View)4, false, true);
				yield return ((AbilityBehaviour)this).PreSuccessfulTriggerSequence();
				yield return (object)new WaitForSeconds(0.3f);
				((Card)((AbilityBehaviour)this).Card).Anim.LightNegationEffect();
				yield return (object)new WaitForSeconds(0.3f);
				((Card)((AbilityBehaviour)this).Card).Anim.PlayHitAnimation();
				yield return ((AbilityBehaviour)this).Card.TakeDamage(1, (PlayableCard)null);
				yield return (object)new WaitForSeconds(0.3f);
				yield return ((AbilityBehaviour)this).LearnAbility(0.1f);
				Singleton<ViewManager>.Instance.Controller.LockState = (ViewLockState)0;
			}
		}

		public class InstantCardBackground : CardAppearanceBehaviour
		{
			public static Appearance CustomAppearance;

			public override void ApplyAppearance()
			{
				((CardAppearanceBehaviour)this).Card.RenderInfo.baseTextureOverride = (Texture)(object)findTexture("InstantBack");
				if (((CardAppearanceBehaviour)this).Card.Info.baseAttack == 0)
				{
					((CardAppearanceBehaviour)this).Card.RenderInfo.hiddenAttack = true;
				}
				if (((CardAppearanceBehaviour)this).Card.Info.baseHealth == 0)
				{
					((CardAppearanceBehaviour)this).Card.RenderInfo.hiddenHealth = true;
				}
			}
		}

		[HarmonyPatch(typeof(DeckTrialSequencer), "GenerateRewardChoices")]
		public class TrialChoice_patch
		{
			[HarmonyPostfix]
			public static void Postfix(ref List<CardInfo> __result, int randomSeed)
			{
				//IL_0023: Unknown result type (might be due to invalid IL or missing references)
				//IL_0129: Unknown result type (might be due to invalid IL or missing references)
				//IL_01f1: Unknown result type (might be due to invalid IL or missing references)
				List<CardInfo> list = __result;
				for (int i = 0; i < list.Count; i++)
				{
					if (!list[i].HasTrait(NoSacs))
					{
						continue;
					}
					List<CardInfo> list2 = CardLoader.RemoveDeckSingletonsIfInDeck(ScriptableObjectLoader<CardInfo>.AllData.FindAll((CardInfo x) => x.metaCategories.Contains((CardMetaCategory)0) && !x.HasTrait(NoSacs) && ((Object)x).name != ((Object)list[0]).name && ((Object)x).name != ((Object)list[1]).name && ((Object)x).name != ((Object)list[2]).name));
					list[i] = CardLoader.Clone(list2[SeededRandom.Range(0, list2.Count, randomSeed)]);
					CardModificationInfo randomAbilityModForCard = CardLoader.GetRandomAbilityModForCard(randomSeed++, list[i], false);
					if (ProgressionData.NumLearnedAbilities < 3)
					{
						if (list[i].HasAbility((Ability)19))
						{
							randomAbilityModForCard.abilities[0] = (Ability)15;
						}
						else
						{
							randomAbilityModForCard.abilities[0] = (Ability)19;
						}
					}
					else
					{
						while (list[i].HasAbility(randomAbilityModForCard.abilities[0]))
						{
							randomAbilityModForCard = CardLoader.GetRandomAbilityModForCard(randomSeed++, list[i], false);
						}
					}
					list[i].Mods.Add(randomAbilityModForCard);
					CardModificationInfo randomAbilityModForCard2 = CardLoader.GetRandomAbilityModForCard(randomSeed++, list[i], false);
					if (ProgressionData.NumLearnedAbilities < 3)
					{
						if (list[i].HasAbility((Ability)19))
						{
							randomAbilityModForCard2.abilities[0] = (Ability)15;
						}
						else
						{
							randomAbilityModForCard2.abilities[0] = (Ability)19;
						}
					}
					else
					{
						while (list[i].HasAbility(randomAbilityModForCard2.abilities[0]))
						{
							randomAbilityModForCard2 = CardLoader.GetRandomAbilityModForCard(randomSeed++, list[i], false);
						}
					}
					list[i].Mods.Add(randomAbilityModForCard2);
				}
				__result = list;
			}
		}

		[HarmonyPatch(typeof(GainConsumablesSequencer), "FullConsumablesSequence")]
		public class Rat_patch
		{
			[HarmonyPrefix]
			public static void Prefix(ref GainConsumablesSequencer __instance)
			{
				CardInfo cardByName = CardLoader.GetCardByName("zep_pvz_magnetshroom");
				__instance.fullConsumablesReward = cardByName;
			}
		}

		[HarmonyPatch(typeof(PackMule), "GenerateCardPack")]
		public class Mule_patch
		{
			[HarmonyPostfix]
			public static void Postfix(ref List<CardInfo> __result)
			{
				List<CardInfo> list = __result;
				int currentRandomSeed = SaveManager.SaveFile.GetCurrentRandomSeed();
				while (list.Count <= 5)
				{
					list.Add(GetRandomChoosableCardWithSunCost(currentRandomSeed++));
				}
				__result = list;
			}
		}

		[HarmonyPatch(typeof(CardMergeSequencer), "GetValidCardsForHost")]
		public class SacStoneHost_patch
		{
			[HarmonyPostfix]
			public static void Postfix(ref List<CardInfo> __result)
			{
				List<CardInfo> list = __result;
				list.RemoveAll((CardInfo x) => x.traits.Contains(NoSacs) || x.Abilities.Contains(AddStats.ability) || x.Abilities.Contains(Spicy.ability) || x.Abilities.Contains(Sweet.ability));
				__result = list;
			}
		}

		[HarmonyPatch(typeof(CardMergeSequencer), "GetValidCardsForSacrifice")]
		public class SacStoneSacrifice_patch
		{
			[HarmonyPostfix]
			public static void Postfix(ref List<CardInfo> __result)
			{
				List<CardInfo> list = __result;
				list.RemoveAll((CardInfo x) => x.traits.Contains(NoSacs) || x.Abilities.Contains(AddStats.ability) || x.Abilities.Contains(Spicy.ability) || x.Abilities.Contains(Sweet.ability));
				__result = list;
			}
		}

		[HarmonyPatch(typeof(CardStatBoostSequencer), "GetValidCards")]
		public class CampfireBoost_patch
		{
			[HarmonyPostfix]
			public static void Postfix(ref List<CardInfo> __result)
			{
				List<CardInfo> list = __result;
				list.RemoveAll((CardInfo x) => x.traits.Contains(NoSacs) || x.Abilities.Contains(AddStats.ability) || x.Abilities.Contains(Spicy.ability) || x.Abilities.Contains(Sweet.ability));
				__result = list;
			}
		}

		public const string PluginGuid = "zepht.inscryption.ZephtPvZ";

		private const string PluginName = "PvZbyZepht";

		private const string PluginVersion = "0.7.0";

		public static Tribe PlantShroom;

		public static Tribe PlantFruit;

		public static Tribe PlantVeg;

		public static Tribe PlantFlower;

		public static Tribe PlantSpiky;

		public static readonly SpecialTriggeredAbility EvolveSprout = SpecialTriggeredAbilityManager.Add("zepht.inscryption.ZephtPvZ", "Sprout Evolve", typeof(EvolveSprout)).Id;

		public static readonly SpecialTriggeredAbility InheritIce = SpecialTriggeredAbilityManager.Add("zepht.inscryption.ZephtPvZ", "Inherit Ice", typeof(InfoStoreIce)).Id;

		public static readonly Appearance InstantCardApp = CardAppearanceBehaviourManager.Add("zepht.inscryption.ZephtPvZ", "InstantCardApp", typeof(InstantCardBackground)).Id;

		public static readonly CardMetaCategory SIDE_DECK_CATEGORY = GuidManager.GetEnumValue<CardMetaCategory>("zorro.inscryption.infiniscryption.sidedecks", "SideDeck");

		public static Trait NoSacs = (Trait)7802;

		internal static ManualLogSource Log;

		public static Random rng = new Random();

		public static int hardheadHealth = 0;

		public static Assembly _assembly;

		public static GameObject Particle;

		public static Assembly CurrentAssembly => _assembly ?? (_assembly = Assembly.GetExecutingAssembly());

		private void Awake()
		{
			//IL_0031: Unknown result type (might be due to invalid IL or missing references)
			//IL_0037: Expected O, but got Unknown
			Log = ((BaseUnityPlugin)this).Logger;
			Log.LogInfo((object)"Loaded PvZbyZepht!");
			Log.LogInfo((object)"Inside Awake");
			Harmony val = new Harmony("zepht.inscryption.ZephtPvZ");
			val.PatchAll();
			Log.LogInfo((object)"DonePatch");
			AddTribes();
			Log.LogInfo((object)"DoneTribes");
			AddSigils();
			Log.LogInfo((object)"DoneSigils");
			AddCards();
			Log.LogInfo((object)"DoneCards");
			AddStarters();
			Log.LogInfo((object)"DoneStarters");
			AddChallenges();
			Log.LogInfo((object)"DoneChallenges");
		}

		private void AddChallenges()
		{
		}

		private void AddTribes()
		{
			//IL_0024: Unknown result type (might be due to invalid IL or missing references)
			//IL_0029: Unknown result type (might be due to invalid IL or missing references)
			//IL_0051: Unknown result type (might be due to invalid IL or missing references)
			//IL_0056: Unknown result type (might be due to invalid IL or missing references)
			//IL_007e: 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_00ab: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b0: Unknown result type (might be due to invalid IL or missing references)
			//IL_00d8: Unknown result type (might be due to invalid IL or missing references)
			//IL_00dd: Unknown result type (might be due to invalid IL or missing references)
			string text = "PlantFruit";
			PlantFruit = TribeManager.Add("zepht.inscryption.ZephtPvZ", text, findTexture(text), true, findTexture(text + "Pick"));
			text = "PlantVeg";
			PlantVeg = TribeManager.Add("zepht.inscryption.ZephtPvZ", text, findTexture(text), true, findTexture(text + "Pick"));
			text = "PlantFlower";
			PlantFlower = TribeManager.Add("zepht.inscryption.ZephtPvZ", text, findTexture(text), true, findTexture(text + "Pick"));
			text = "PlantShroom";
			PlantShroom = TribeManager.Add("zepht.inscryption.ZephtPvZ", text, findTexture(text), true, findTexture(text + "Pick"));
			text = "PlantSpiky";
			PlantSpiky = TribeManager.Add("zepht.inscryption.ZephtPvZ", text, findTexture(text), true, findTexture(text + "Pick"));
		}

		private void AddCards()
		{
			//IL_005b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0061: Expected I4, but got Unknown
			//IL_006b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0071: Expected I4, but got Unknown
			//IL_00a6: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ac: Expected I4, but got Unknown
			//IL_020c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0212: Expected I4, but got Unknown
			//IL_034f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0355: Expected I4, but got Unknown
			//IL_0490: Unknown result type (might be due to invalid IL or missing references)
			//IL_0496: Expected I4, but got Unknown
			//IL_05cf: Unknown result type (might be due to invalid IL or missing references)
			//IL_05d5: Expected I4, but got Unknown
			//IL_0713: Unknown result type (might be due to invalid IL or missing references)
			//IL_0719: Expected I4, but got Unknown
			//IL_0851: Unknown result type (might be due to invalid IL or missing references)
			//IL_0857: Expected I4, but got Unknown
			//IL_0990: Unknown result type (might be due to invalid IL or missing references)
			//IL_0996: Expected I4, but got Unknown
			//IL_0abc: Unknown result type (might be due to invalid IL or missing references)
			//IL_0ac2: Expected I4, but got Unknown
			//IL_0ad4: Unknown result type (might be due to invalid IL or missing references)
			//IL_0ada: Expected I4, but got Unknown
			//IL_0c0e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0c14: Expected I4, but got Unknown
			//IL_0d48: Unknown result type (might be due to invalid IL or missing references)
			//IL_0d4e: Expected I4, but got Unknown
			//IL_0e82: Unknown result type (might be due to invalid IL or missing references)
			//IL_0e88: Expected I4, but got Unknown
			//IL_0fdd: Unknown result type (might be due to invalid IL or missing references)
			//IL_0fe3: Expected I4, but got Unknown
			//IL_1125: Unknown result type (might be due to invalid IL or missing references)
			//IL_112b: Expected I4, but got Unknown
			//IL_1261: Unknown result type (might be due to invalid IL or missing references)
			//IL_1267: Expected I4, but got Unknown
			//IL_13a3: Unknown result type (might be due to invalid IL or missing references)
			//IL_13a9: Expected I4, but got Unknown
			//IL_14db: Unknown result type (might be due to invalid IL or missing references)
			//IL_14e1: Expected I4, but got Unknown
			//IL_14f3: Unknown result type (might be due to invalid IL or missing references)
			//IL_14f9: Expected I4, but got Unknown
			//IL_154b: Unknown result type (might be due to invalid IL or missing references)
			//IL_1551: Expected I4, but got Unknown
			//IL_155e: Unknown result type (might be due to invalid IL or missing references)
			//IL_1563: Unknown result type (might be due to invalid IL or missing references)
			//IL_1685: Unknown result type (might be due to invalid IL or missing references)
			//IL_168b: Expected I4, but got Unknown
			//IL_16d6: Unknown result type (might be due to invalid IL or missing references)
			//IL_16dc: Expected I4, but got Unknown
			//IL_16e9: Unknown result type (might be due to invalid IL or missing references)
			//IL_16ee: Unknown result type (might be due to invalid IL or missing references)
			//IL_17d8: Unknown result type (might be due to invalid IL or missing references)
			//IL_17de: Expected I4, but got Unknown
			//IL_17f0: Unknown result type (might be due to invalid IL or missing references)
			//IL_17f6: Expected I4, but got Unknown
			//IL_1844: Unknown result type (might be due to invalid IL or missing references)
			//IL_184a: Expected I4, but got Unknown
			//IL_1857: Unknown result type (might be due to invalid IL or missing references)
			//IL_185c: Unknown result type (might be due to invalid IL or missing references)
			//IL_1969: Unknown result type (might be due to invalid IL or missing references)
			//IL_196f: Expected I4, but got Unknown
			//IL_1981: Unknown result type (might be due to invalid IL or missing references)
			//IL_1987: Expected I4, but got Unknown
			//IL_19d5: Unknown result type (might be due to invalid IL or missing references)
			//IL_19db: Expected I4, but got Unknown
			//IL_19e8: Unknown result type (might be due to invalid IL or missing references)
			//IL_19ed: Unknown result type (might be due to invalid IL or missing references)
			//IL_1afa: Unknown result type (might be due to invalid IL or missing references)
			//IL_1b00: Expected I4, but got Unknown
			//IL_1b12: Unknown result type (might be due to invalid IL or missing references)
			//IL_1b18: Expected I4, but got Unknown
			//IL_1b66: Unknown result type (might be due to invalid IL or missing references)
			//IL_1b6c: Expected I4, but got Unknown
			//IL_1b79: Unknown result type (might be due to invalid IL or missing references)
			//IL_1b7e: Unknown result type (might be due to invalid IL or missing references)
			//IL_1c68: Unknown result type (might be due to invalid IL or missing references)
			//IL_1c6e: Expected I4, but got Unknown
			//IL_1c85: Unknown result type (might be due to invalid IL or missing references)
			//IL_1c8b: Expected I4, but got Unknown
			//IL_1e0e: Unknown result type (might be due to invalid IL or missing references)
			//IL_1e14: Expected I4, but got Unknown
			//IL_1e26: Unknown result type (might be due to invalid IL or missing references)
			//IL_1e2c: Expected I4, but got Unknown
			//IL_1faa: Unknown result type (might be due to invalid IL or missing references)
			//IL_1fb0: Expected I4, but got Unknown
			//IL_1fc6: Unknown result type (might be due to invalid IL or missing references)
			//IL_1fcc: Expected I4, but got Unknown
			//IL_214e: Unknown result type (might be due to invalid IL or missing references)
			//IL_2154: Expected I4, but got Unknown
			//IL_216a: Unknown result type (might be due to invalid IL or missing references)
			//IL_2170: Expected I4, but got Unknown
			//IL_22af: Unknown result type (might be due to invalid IL or missing references)
			//IL_22b5: Expected I4, but got Unknown
			//IL_22c7: Unknown result type (might be due to invalid IL or missing references)
			//IL_22cd: Expected I4, but got Unknown
			//IL_240c: Unknown result type (might be due to invalid IL or missing references)
			//IL_2412: Expected I4, but got Unknown
			//IL_2424: Unknown result type (might be due to invalid IL or missing references)
			//IL_242a: Expected I4, but got Unknown
			//IL_2562: Unknown result type (might be due to invalid IL or missing references)
			//IL_2568: Expected I4, but got Unknown
			//IL_256a: Unknown result type (might be due to invalid IL or missing references)
			//IL_2570: Expected I4, but got Unknown
			//IL_258a: Unknown result type (might be due to invalid IL or missing references)
			//IL_2590: Expected I4, but got Unknown
			//IL_279f: Unknown result type (might be due to invalid IL or missing references)
			//IL_27a5: Expected I4, but got Unknown
			//IL_2991: Unknown result type (might be due to invalid IL or missing references)
			//IL_2997: Expected I4, but got Unknown
			//IL_2b54: Unknown result type (might be due to invalid IL or missing references)
			//IL_2b5a: Expected I4, but got Unknown
			//IL_2d13: Unknown result type (might be due to invalid IL or missing references)
			//IL_2d19: Expected I4, but got Unknown
			//IL_2ed2: Unknown result type (might be due to invalid IL or missing references)
			//IL_2ed8: Expected I4, but got Unknown
			//IL_2f3e: Unknown result type (might be due to invalid IL or missing references)
			//IL_2f44: Expected I4, but got Unknown
			//IL_30a1: Unknown result type (might be due to invalid IL or missing references)
			//IL_30a7: Expected I4, but got Unknown
			//IL_3242: Unknown result type (might be due to invalid IL or missing references)
			//IL_3248: Expected I4, but got Unknown
			//IL_3262: Unknown result type (might be due to invalid IL or missing references)
			//IL_3268: Expected I4, but got Unknown
			//IL_342f: Unknown result type (might be due to invalid IL or missing references)
			//IL_3435: Expected I4, but got Unknown
			//IL_3443: Unknown result type (might be due to invalid IL or missing references)
			//IL_3449: Expected I4, but got Unknown
			//IL_3457: Unknown result type (might be due to invalid IL or missing references)
			//IL_345d: Expected I4, but got Unknown
			//IL_35f6: Unknown result type (might be due to invalid IL or missing references)
			//IL_35fc: Expected I4, but got Unknown
			//IL_360a: Unknown result type (might be due to invalid IL or missing references)
			//IL_3610: Expected I4, but got Unknown
			//IL_361e: Unknown result type (might be due to invalid IL or missing references)
			//IL_3624: Expected I4, but got Unknown
			//IL_37bd: Unknown result type (might be due to invalid IL or missing references)
			//IL_37c3: Expected I4, but got Unknown
			//IL_37d6: Unknown result type (might be due to invalid IL or missing references)
			//IL_37dc: Expected I4, but got Unknown
			//IL_37ea: Unknown result type (might be due to invalid IL or missing references)
			//IL_37f0: Expected I4, but got Unknown
			//IL_39a5: Unknown result type (might be due to invalid IL or missing references)
			//IL_39ab: Expected I4, but got Unknown
			//IL_3b4c: Unknown result type (might be due to invalid IL or missing references)
			//IL_3b52: Expected I4, but got Unknown
			//IL_3b6c: Unknown result type (might be due to invalid IL or missing references)
			//IL_3b72: Expected I4, but got Unknown
			//IL_3d0b: Unknown result type (might be due to invalid IL or missing references)
			//IL_3d11: Expected I4, but got Unknown
			//IL_3d30: Unknown result type (might be due to invalid IL or missing references)
			//IL_3d36: Expected I4, but got Unknown
			//IL_3ed2: Unknown result type (might be due to invalid IL or missing references)
			//IL_3ed8: Expected I4, but got Unknown
			//IL_3eda: Unknown result type (might be due to invalid IL or missing references)
			//IL_3ee0: Expected I4, but got Unknown
			//IL_3eee: Unknown result type (might be due to invalid IL or missing references)
			//IL_3ef4: Expected I4, but got Unknown
			//IL_3f02: Unknown result type (might be due to invalid IL or missing references)
			//IL_3f08: Expected I4, but got Unknown
			//IL_40a1: Unknown result type (might be due to invalid IL or missing references)
			//IL_40a7: Expected I4, but got Unknown
			//IL_40ba: Unknown result type (might be due to invalid IL or missing references)
			//IL_40c0: Expected I4, but got Unknown
			//IL_40ce: Unknown result type (might be due to invalid IL or missing references)
			//IL_40d4: Expected I4, but got Unknown
			//IL_426d: Unknown result type (might be due to invalid IL or missing references)
			//IL_4273: Expected I4, but got Unknown
			//IL_4286: Unknown result type (might be due to invalid IL or missing references)
			//IL_428c: Expected I4, but got Unknown
			//IL_429a: Unknown result type (might be due to invalid IL or missing references)
			//IL_42a0: Expected I4, but got Unknown
			//IL_4439: Unknown result type (might be due to invalid IL or missing references)
			//IL_443f: Expected I4, but got Unknown
			//IL_4451: Unknown result type (might be due to invalid IL or missing references)
			//IL_4457: Expected I4, but got Unknown
			//IL_4465: Unknown result type (might be due to invalid IL or missing references)
			//IL_446b: Expected I4, but got Unknown
			//IL_4620: Unknown result type (might be due to invalid IL or missing references)
			//IL_4626: Expected I4, but got Unknown
			//IL_4628: Unknown result type (might be due to invalid IL or missing references)
			//IL_462e: Expected I4, but got Unknown
			//IL_4630: Unknown result type (might be due to invalid IL or missing references)
			//IL_4636: Expected I4, but got Unknown
			//IL_4638: Unknown result type (might be due to invalid IL or missing references)
			//IL_463e: Expected I4, but got Unknown
			//IL_4640: Unknown result type (might be due to invalid IL or missing references)
			//IL_4646: Expected I4, but got Unknown
			//IL_46af: Unknown result type (might be due to invalid IL or missing references)
			//IL_46b5: Expected I4, but got Unknown
			//IL_49f1: Unknown result type (might be due to invalid IL or missing references)
			//IL_49f7: Expected I4, but got Unknown
			//IL_4bca: Unknown result type (might be due to invalid IL or missing references)
			//IL_4bd0: Expected I4, but got Unknown
			//IL_4bd2: Unknown result type (might be due to invalid IL or missing references)
			//IL_4bd8: Expected I4, but got Unknown
			//IL_4deb: Unknown result type (might be due to invalid IL or missing references)
			//IL_4df1: Expected I4, but got Unknown
			//IL_551c: Unknown result type (might be due to invalid IL or missing references)
			//IL_5522: Expected I4, but got Unknown
			//IL_57d2: Unknown result type (might be due to invalid IL or missing references)
			//IL_57d8: Expected I4, but got Unknown
			//IL_5929: Unknown result type (might be due to invalid IL or missing references)
			//IL_592f: Expected I4, but got Unknown
			//IL_5bc7: Unknown result type (might be due to invalid IL or missing references)
			//IL_5bcd: Expected I4, but got Unknown
			CardMetaCategory[] array = (CardMetaCategory[])(object)new CardMetaCategory[2]
			{
				default(CardMetaCategory),
				(CardMetaCategory)1
			};
			CardMetaCategory[] array2 = (CardMetaCategory[])(object)new CardMetaCategory[1];
			CardMetaCategory[] array3 = (CardMetaCategory[])(object)new CardMetaCategory[1] { (CardMetaCategory)3 };
			CardMetaCategory[] array4 = (CardMetaCategory[])(object)new CardMetaCategory[0];
			Appearance[] array5 = (Appearance[])(object)new Appearance[2]
			{
				(Appearance)2,
				(Appearance)9
			};
			Appearance[] array6 = (Appearance[])(object)new Appearance[1] { (Appearance)13 };
			Appearance[] array7 = (Appearance[])(object)new Appearance[1] { (Appearance)7 };
			Appearance[] array8 = (Appearance[])(object)new Appearance[2]
			{
				(Appearance)6,
				(Appearance)(int)InstantCardApp
			};
			Appearance[] array9 = (Appearance[])(object)new Appearance[1] { (Appearance)(int)InstantCardApp };
			Texture2D val = findTexture("ZA");
			string text = "zep_pvz";
			string text2 = "Peashooter";
			Ability[] array10 = (Ability[])(object)new Ability[0];
			Trait[] array11 = (Trait[])(object)new Trait[0];
			Tribe[] array12 = (Tribe[])(object)new Tribe[1] { (Tribe)(int)PlantFruit };
			string text3 = "repeater";
			string text4 = "leaflitter";
			int num = 2;
			CardInfo val2 = CardManager.New(text, "peashooter", "Peashooter", 1, 2, "A plant commonly used to fend off the undead");
			CardExtensions.AddAppearances(val2, Array.Empty<Appearance>());
			CardExtensions.AddMetaCategories(val2, array);
			CardExtensions.SetExtendedProperty(val2, "SunCost", (object)num);
			CardExtensions.SetPortrait(val2, findTexture(text2), (FilterMode?)null);
			CardExtensions.SetEmissivePortrait(val2, findTexture(text2 + "2"), (FilterMode?)null);
			CardExtensions.SetPixelPortrait(val2, findTexture(text2 + "3"), (FilterMode?)null);
			CardExtensions.AddDecal(val2, (Texture[])(object)new Texture[1] { (Texture)val });
			CardExtensions.AddAbilities(val2, array10);
			CardExtensions.AddTraits(val2, array11);
			if (text3 != null)
			{
				CardExtensions.SetEvolve(val2, text + "_" + text3, 1, (IEnumerable<CardModificationInfo>)null);
			}
			CardExtensions.SetTail(val2, text + "_" + text4, (IEnumerable<CardModificationInfo>)null);
			CardExtensions.SetIceCube(val2, text + "_" + text4, (IEnumerable<CardModificationInfo>)null);
			CardExtensions.AddTribes(val2, array12);
			string text5 = "Repeater";
			Ability[] array13 = (Ability[])(object)new Ability[1] { (Ability)100 };
			Trait[] array14 = (Trait[])(object)new Trait[0];
			Tribe[] array15 = (Tribe[])(object)new Tribe[1] { (Tribe)(int)PlantFruit };
			string text6 = "threepeater";
			string text7 = "leaflitter";
			int num2 = 4;
			CardInfo val3 = CardManager.New(text, "repeater", "Repeater", 1, 2, "A more powerful version of the iconic peashooter");
			CardExtensions.AddAppearances(val3, Array.Empty<Appearance>());
			CardExtensions.AddMetaCategories(val3, array);
			CardExtensions.SetExtendedProperty(val3, "SunCost", (object)num2);
			CardExtensions.SetPortrait(val3, findTexture(text5), (FilterMode?)null);
			CardExtensions.SetEmissivePortrait(val3, findTexture(text5 + "2"), (FilterMode?)null);
			CardExtensions.AddDecal(val3, (Texture[])(object)new Texture[1] { (Texture)val });
			CardExtensions.AddAbilities(val3, array13);
			CardExtensions.AddTraits(val3, array14);
			if (text6 != null)
			{
				CardExtensions.SetEvolve(val3, text + "_" + text6, 1, (IEnumerable<CardModificationInfo>)null);
			}
			CardExtensions.SetTail(val3, text + "_" + text7, (IEnumerable<CardModificationInfo>)null);
			CardExtensions.SetIceCube(val3, text + "_" + text7, (IEnumerable<CardModificationInfo>)null);
			CardExtensions.AddTribes(val3, array15);
			string text8 = "Threepeater";
			Ability[] array16 = (Ability[])(object)new Ability[1] { (Ability)25 };
			Trait[] array17 = (Trait[])(object)new Trait[0];
			Tribe[] array18 = (Tribe[])(object)new Tribe[1] { (Tribe)(int)PlantFruit };
			string text9 = null;
			string text10 = "leaflitter";
			int num3 = 5;
			CardInfo val4 = CardManager.New(text, "threepeater", "Threepeater", 1, 3, "they say 3 heads are better than one");
			CardExtensions.AddAppearances(val4, array7);
			CardExtensions.AddMetaCategories(val4, array3);
			CardExtensions.SetExtendedProperty(val4, "SunCost", (object)num3);
			CardExtensions.SetPortrait(val4, findTexture(text8), (FilterMode?)null);
			CardExtensions.SetEmissivePortrait(val4, findTexture(text8 + "2"), (FilterMode?)null);
			CardExtensions.AddDecal(val4, (Texture[])(object)new Texture[1] { (Texture)val });
			CardExtensions.AddAbilities(val4, array16);
			CardExtensions.AddTraits(val4, array17);
			if (text9 != null)
			{
				CardExtensions.SetEvolve(val4, text + "_" + text9, 1, (IEnumerable<CardModificationInfo>)null);
			}
			CardExtensions.SetTail(val4, text + "_" + text10, (IEnumerable<CardModificationInfo>)null);
			CardExtensions.SetIceCube(val4, text + "_" + text10, (IEnumerable<CardModificationInfo>)null);
			CardExtensions.AddTribes(val4, array18);
			string text11 = "Cactus";
			Ability[] array19 = (Ability[])(object)new Ability[2]
			{
				(Ability)15,
				(Ability)23
			};
			Trait[] array20 = (Trait[])(object)new Trait[0];
			Tribe[] array21 = (Tribe[])(object)new Tribe[1] { (Tribe)(int)PlantSpiky };
			string text12 = null;
			string text13 = "splinters";
			int num4 = 5;
			CardInfo val5 = CardManager.New(text, "cactus", "Cactus", 2, 2, "Try not to prick yourself on it");
			CardExtensions.AddAppearances(val5, Array.Empty<Appearance>());
			CardExtensions.AddMetaCategories(val5, array);
			CardExtensions.SetExtendedProperty(val5, "SunCost", (object)num4);
			CardExtensions.SetPortrait(val5, findTexture(text11), (FilterMode?)null);
			CardExtensions.SetEmissivePortrait(val5, findTexture(text11 + "2"), (FilterMode?)null);
			CardExtensions.AddDecal(val5, (Texture[])(object)new Texture[1] { (Texture)val });
			CardExtensions.AddAbilities(val5, array19);
			CardExtensions.AddTraits(val5, array20);
			if (text12 != null)
			{
				CardExtensions.SetEvolve(val5, text + "_" + text12, 1, (IEnumerable<CardModificationInfo>)null);
			}
			CardExtensions.SetTail(val5, text + "_" + text13, (IEnumerable<CardModificationInfo>)null);
			CardExtensions.SetIceCube(val5, text + "_" + text13, (IEnumerable<CardModificationInfo>)null);
			CardExtensions.AddTribes(val5, array21);
			string text14 = "Thistle";
			Ability[] array22 = (Ability[])(object)new Ability[1] { (Ability)53 };
			Trait[] array23 = (Trait[])(object)new Trait[0];
			Tribe[] array24 = (Tribe[])(object)new Tribe[1] { (Tribe)(int)PlantSpiky };
			string text15 = null;
			string text16 = "splinters";
			int num5 = 6;
			CardInfo val6 = CardManager.New(text, "thistle", "Homing Thistle", 3, 2, "This one tracks down its target with ease");
			CardExtensions.AddAppearances(val6, Array.Empty<Appearance>());
			CardExtensions.AddMetaCategories(val6, array);
			CardExtensions.SetExtendedProperty(val6, "SunCost", (object)num5);
			CardExtensions.SetPortrait(val6, findTexture(text14), (FilterMode?)null);
			CardExtensions.SetEmissivePortrait(val6, findTexture(text14 + "2"), (FilterMode?)null);
			CardExtensions.AddDecal(val6, (Texture[])(object)new Texture[1] { (Texture)val });
			CardExtensions.AddAbilities(val6, array22);
			CardExtensions.AddTraits(val6, array23);
			if (text15 != null)
			{
				CardExtensions.SetEvolve(val6, text + "_" + text15, 1, (IEnumerable<CardModificationInfo>)null);
			}
			CardExtensions.SetTail(val6, text + "_" + text16, (IEnumerable<CardModificationInfo>)null);
			CardExtensions.SetIceCube(val6, text + "_" + text16, (IEnumerable<CardModificationInfo>)null);
			CardExtensions.AddTribes(val6, array24);
			string text17 = "Cattail";
			Ability[] array25 = (Ability[])(object)new Ability[2]
			{
				(Ability)53,
				(Ability)13
			};
			Trait[] array26 = (Trait[])(object)new Trait[0];
			Tribe[] array27 = (Tribe[])(object)new Tribe[1] { (Tribe)(int)PlantSpiky };
			string text18 = null;
			string text19 = "leaflitter";
			int num6 = 3;
			CardInfo val7 = CardManager.New(text, "cattail", "Cattail", 1, 1, "Nyah~");
			CardExtensions.AddAppearances(val7, Array.Empty<Appearance>());
			CardExtensions.AddMetaCategories(val7, array);
			CardExtensions.SetExtendedProperty(val7, "SunCost", (object)num6);
			CardExtensions.SetPortrait(val7, findTexture(text17), (FilterMode?)null);
			CardExtensions.SetEmissivePortrait(val7, findTexture(text17 + "2"), (FilterMode?)null);
			CardExtensions.AddDecal(val7, (Texture[])(object)new Texture[1] { (Texture)val });
			CardExtensions.AddAbilities(val7, array25);
			CardExtensions.AddTraits(val7, array26);
			if (text18 != null)
			{
				CardExtensions.SetEvolve(val7, text + "_" + text18, 1, (IEnumerable<CardModificationInfo>)null);
			}
			CardExtensions.SetTail(val7, text + "_" + text19, (IEnumerable<CardModificationInfo>)null);
			CardExtensions.SetIceCube(val7, text + "_" + text19, (IEnumerable<CardModificationInfo>)null);
			CardExtensions.AddTribes(val7, array27);
			string text20 = "Chomper";
			Ability[] array28 = (Ability[])(object)new Ability[1] { (Ability)4 };
			Trait[] array29 = (Trait[])(object)new Trait[0];
			Tribe[] array30 = (Tribe[])(object)new Tribe[1] { (Tribe)(int)PlantSpiky };
			string text21 = null;
			string text22 = "leaflitter";
			int num7 = 4;
			CardInfo val8 = CardManager.New(text, "chomper", "Chomper", 2, 1, "No bark and all bite");
			CardExtensions.AddAppearances(val8, Array.Empty<Appearance>());
			CardExtensions.AddMetaCategories(val8, array);
			CardExtensions.SetExtendedProperty(val8, "SunCost", (object)num7);
			CardExtensions.SetPortrait(val8, findTexture(text20), (FilterMode?)null);
			CardExtensions.SetEmissivePortrait(val8, findTexture(text20 + "2"), (FilterMode?)null);
			CardExtensions.AddDecal(val8, (Texture[])(object)new Texture[1] { (Texture)val });
			CardExtensions.AddAbilities(val8, array28);
			CardExtensions.AddTraits(val8, array29);
			if (text21 != null)
			{
				CardExtensions.SetEvolve(val8, text + "_" + text21, 1, (IEnumerable<CardModificationInfo>)null);
			}
			CardExtensions.SetTail(val8, text + "_" + text22, (IEnumerable<CardModificationInfo>)null);
			CardExtensions.SetIceCube(val8, text + "_" + text22, (IEnumerable<CardModificationInfo>)null);
			CardExtensions.AddTribes(val8, array30);
			string text23 = "Starfruit";
			Ability[] array31 = (Ability[])(object)new Ability[1] { (Ability)33 };
			Trait[] array32 = (Trait[])(object)new Trait[0];
			Tribe[] array33 = (Tribe[])(object)new Tribe[1] { (Tribe)(int)PlantFruit };
			string text24 = null;
			string text25 = "leaflitter";
			int num8 = 3;
			CardInfo val9 = CardManager.New(text, "starfruit", "Starfruit", 1, 1, "Surprisingly not a ball of fire");
			CardExtensions.AddAppearances(val9, array7);
			CardExtensions.AddMetaCategories(val9, array3);
			CardExtensions.SetExtendedProperty(val9, "SunCost", (object)num8);
			CardExtensions.SetPortrait(val9, findTexture(text23), (FilterMode?)null);
			CardExtensions.SetEmissivePortrait(val9, findTexture(text23 + "2"), (FilterMode?)null);
			CardExtensions.AddDecal(val9, (Texture[])(object)new Texture[1] { (Texture)val });
			CardExtensions.AddAbilities(val9, array31);
			CardExtensions.AddTraits(val9, array32);
			if (text24 != null)
			{
				CardExtensions.SetEvolve(val9, text + "_" + text24, 1, (IEnumerable<CardModificationInfo>)null);
			}
			CardExtensions.SetTail(val9, text + "_" + text25, (IEnumerable<CardModificationInfo>)null);
			CardExtensions.SetIceCube(val9, text + "_" + text25, (IEnumerable<CardModificationInfo>)null);
			CardExtensions.AddTribes(val9, array33);
			string text26 = "Bloomerang";
			Ability[] array34 = (Ability[])(object)new Ability[2]
			{
				(Ability)100,
				(Ability)(int)Pierce.ability
			};
			Trait[] array35 = (Trait[])(object)new Trait[0];
			Tribe[] array36 = (Tribe[])(object)new Tribe[1] { (Tribe)(int)PlantFlower };
			string text27 = null;
			string text28 = "splinters";
			int num9 = 5;
			CardInfo val10 = CardManager.New(text, "bloomerang", "Bloomerang", 2, 2, "Don't be deceived, it won't just return if you throw it away");
			CardExtensions.AddAppearances(val10, Array.Empty<Appearance>());
			CardExtensions.AddMetaCategories(val10, array);
			CardExtensions.SetExtendedProperty(val10, "SunCost", (object)num9);
			CardExtensions.SetPortrait(val10, findTexture(text26), (FilterMode?)null);
			CardExtensions.SetEmissivePortrait(val10, findTexture(text26 + "2"), (FilterMode?)null);
			CardExtensions.AddDecal(val10, (Texture[])(object)new Texture[1] { (Texture)val });
			CardExtensions.AddAbilities(val10, array34);
			CardExtensions.AddTraits(val10, array35);
			if (text27 != null)
			{
				CardExtensions.SetEvolve(val10, text + "_" + text27, 1, (IEnumerable<CardModificationInfo>)null);
			}
			CardExtensions.SetTail(val10, text + "_" + text28, (IEnumerable<CardModificationInfo>)null);
			CardExtensions.SetIceCube(val10, text + "_" + text28, (IEnumerable<CardModificationInfo>)null);
			CardExtensions.AddTribes(val10, array36);
			string text29 = "BonkChoy";
			Ability[] array37 = (Ability[])(object)new Ability[0];
			Trait[] array38 = (Trait[])(object)new Trait[0];
			Tribe[] array39 = (Tribe[])(object)new Tribe[1] { (Tribe)(int)PlantVeg };
			string text30 = null;
			string text31 = "leaflitter";
			int num10 = 4;
			CardInfo val11 = CardManager.New(text, "bonkchoy", "bonk choy", 2, 2, "A feisty one for sure");
			CardExtensions.AddAppearances(val11, Array.Empty<Appearance>());
			CardExtensions.AddMetaCategories(val11, array);
			CardExtensions.SetExtendedProperty(val11, "SunCost", (object)num10);
			CardExtensions.SetPortrait(val11, findTexture(text29), (FilterMode?)null);
			CardExtensions.SetEmissivePortrait(val11, findTexture(text29 + "2"), (FilterMode?)null);
			CardExtensions.AddDecal(val11, (Texture[])(object)new Texture[1] { (Texture)val });
			CardExtensions.AddAbilities(val11, array37);
			CardExtensions.AddTraits(val11, array38);
			if (text30 != null)
			{
				CardExtensions.SetEvolve(val11, text + "_" + text30, 1, (IEnumerable<CardModificationInfo>)null);
			}
			CardExtensions.SetTail(val11, text + "_" + text31, (IEnumerable<CardModificationInfo>)null);
			CardExtensions.SetIceCube(val11, text + "_" + text31, (IEnumerable<CardModificationInfo>)null);
			CardExtensions.AddTribes(val11, array39);
			string text32 = "Citron";
			Ability[] array40 = (Ability[])(object)new Ability[0];
			Trait[] array41 = (Trait[])(object)new Trait[0];
			Tribe[] array42 = (Tribe[])(object)new Tribe[1] { (Tribe)(int)PlantFruit };
			string text33 = null;
			string text34 = "leaflitter";
			int num11 = 5;
			CardInfo val12 = CardManager.New(text, "citron", "Citron", 3, 2, "If you can afford to play it, it's zest is bound to aid you");
			CardExtensions.AddAppearances(val12, Array.Empty<Appearance>());
			CardExtensions.AddMetaCategories(val12, array);
			CardExtensions.SetExtendedProperty(val12, "SunCost", (object)num11);
			CardExtensions.SetPortrait(val12, findTexture(text32), (FilterMode?)null);
			CardExtensions.SetEmissivePortrait(val12, findTexture(text32 + "2"), (FilterMode?)null);
			CardExtensions.AddDecal(val12, (Texture[])(object)new Texture[1] { (Texture)val });
			CardExtensions.AddAbilities(val12, array40);
			CardExtensions.AddTraits(val12, array41);
			if (text33 != null)
			{
				CardExtensions.SetEvolve(val12, text + "_" + text33, 1, (IEnumerable<CardModificationInfo>)null);
			}
			CardExtensions.SetTail(val12, text + "_" + text34, (IEnumerable<CardModificationInfo>)null);
			CardExtensions.SetIceCube(val12, text + "_" + text34, (IEnumerable<CardModificationInfo>)null);
			CardExtensions.AddTribes(val12, array42);
			string text35 = "RedStinger";
			Ability[] array43 = (Ability[])(object)new Ability[0];
			Trait[] array44 = (Trait[])(object)new Trait[0];
			Tribe[] array45 = (Tribe[])(object)new Tribe[1] { (Tribe)(int)PlantFlower };
			string text36 = null;
			string text37 = "leaflitter";
			int num12 = 5;
			CardInfo val13 = CardManager.New(text, "redstinger", "Red Stinger", 0, 1, "Position it strategically if you want to use its full potential");
			CardExtensions.AddAppearances(val13, Array.Empty<Appearance>());
			CardExtensions.AddMetaCategories(val13, array);
			CardExtensions.SetStatIcon(val13, (SpecialStatIcon)4);
			CardExtensions.AddSpecialAbilities(val13, (SpecialTriggeredAbility[])(object)new SpecialTriggeredAbility[1] { (SpecialTriggeredAbility)12 });
			CardExtensions.SetExtendedProperty(val13, "SunCost", (object)num12);
			CardExtensions.SetPortrait(val13, findTexture(text35), (FilterMode?)null);
			CardExtensions.SetEmissivePortrait(val13, findTexture(text35 + "2"), (FilterMode?)null);
			CardExtensions.AddDecal(val13, (Texture[])(object)new Texture[1] { (Texture)val });
			CardExtensions.AddAbilities(val13, array43);
			CardExtensions.AddTraits(val13, array44);
			if (text36 != null)
			{
				CardExtensions.SetEvolve(val13, text + "_" + text36, 1, (IEnumerable<CardModificationInfo>)null);
			}
			CardExtensions.SetTail(val13, text + "_" + text37, (IEnumerable<CardModificationInfo>)null);
			CardExtensions.SetIceCube(val13, text + "_" + text37, (IEnumerable<CardModificationInfo>)null);
			CardExtensions.AddTribes(val13, array45);
			string text38 = "Spikeweed";
			Ability[] array46 = (Ability[])(object)new Ability[1] { (Ability)62 };
			Trait[] array47 = (Trait[])(object)new Trait[0];
			Tribe[] array48 = (Tribe[])(object)new Tribe[1] { (Tribe)(int)PlantSpiky };
			string text39 = "spikerock";
			string text40 = "splinters";
			int num13 = 4;
			CardInfo val14 = CardManager.New(text, "spikeweed", "Spikeweed", 1, 1, "Will you lay the spikeweed as a trap for those who dare approach it?");
			CardExtensions.AddAppearances(val14, Array.Empty<Appearance>());
			CardExtensions.AddMetaCategories(val14, array);
			CardExtensions.SetExtendedProperty(val14, "SunCost", (object)num13);
			CardExtensions.SetPortrait(val14, findTexture(text38), (FilterMode?)null);
			CardExtensions.SetEmissivePortrait(val14, findTexture(text38 + "2"), (FilterMode?)null);
			CardExtensions.AddDecal(val14, (Texture[])(object)new Texture[1] { (Texture)val });
			CardExtensions.AddAbilities(val14, array46);
			CardExtensions.AddTraits(val14, array47);
			if (text39 != null)
			{
				CardExtensions.SetEvolve(val14, text + "_" + text39, 1, (IEnumerable<CardModificationInfo>)null);
			}
			CardExtensions.SetTail(val14, text + "_" + text40, (IEnumerable<CardModificationInfo>)null);
			CardExtensions.SetIceCube(val14, text + "_" + text40, (IEnumerable<CardModificationInfo>)null);
			CardExtensions.AddTribes(val14, array48);
			string text41 = "Spikerock";
			Ability[] array49 = (Ability[])(object)new Ability[2]
			{
				(Ability)62,
				(Ability)62
			};
			Trait[] array50 = (Trait[])(object)new Trait[0];
			Tribe[] array51 = (Tribe[])(object)new Tribe[1] { (Tribe)(int)PlantSpiky };
			string text42 = null;
			string text43 = "splinters";
			int num14 = 5;
			CardInfo val15 = CardManager.New(text, "spikerock", "Spikerock", 2, 3, "Anybody who attempts to trample it will meet a sharp fate.");
			CardExtensions.AddAppearances(val15, array7);
			CardExtensions.AddMetaCategories(val15, array3);
			CardExtensions.SetExtendedProperty(val15, "SunCost", (object)num14);
			CardExtensions.SetPortrait(val15, findTexture(text41), (FilterMode?)null);
			CardExtensions.SetEmissivePortrait(val15, findTexture(text41 + "2"), (FilterMode?)null);
			CardExtensions.AddDecal(val15, (Texture[])(object)new Texture[1] { (Texture)val });
			CardExtensions.AddAbilities(val15, array49);
			CardExtensions.AddTraits(val15, array50);
			if (text42 != null)
			{
				CardExtensions.SetEvolve(val15, text + "_" + text42, 1, (IEnumerable<CardModificationInfo>)null);
			}
			CardExtensions.SetTail(val15, text + "_" + text43, (IEnumerable<CardModificationInfo>)null);
			CardExtensions.SetIceCube(val15, text + "_" + text43, (IEnumerable<CardModificationInfo>)null);
			CardExtensions.AddTribes(val15, array51);
			string text44 = "Artichoke";
			Ability[] array52 = (Ability[])(object)new Ability[1] { (Ability)19 };
			Trait[] array53 = (Trait[])(object)new Trait[0];
			Tribe[] array54 = (Tribe[])(object)new Tribe[1] { (Tribe)(int)PlantVeg };
			string text45 = null;
			string text46 = "leaflitter";
			int num15 = 2;
			CardInfo val16 = CardManager.New(text, "artichoke", "Artichoke", 1, 1, "This drone has seen some warfare");
			CardExtensions.AddAppearances(val16, Array.Empty<Appearance>());
			CardExtensions.AddMetaCategories(val16, array);
			CardExtensions.SetExtendedProperty(val16, "SunCost", (object)num15);
			CardExtensions.SetPortrait(val16, findTexture(text44), (FilterMode?)null);
			CardExtensions.SetEmissivePortrait(val16, findTexture(text44 + "2"), (FilterMode?)null);
			CardExtensions.AddDecal(val16, (Texture[])(object)new Texture[1] { (Texture)val });
			CardExtensions.AddAbilities(val16, array52);
			CardExtensions.AddTraits(val16, array53);
			if (text45 != null)
			{
				CardExtensions.SetEvolve(val16, text + "_" + text45, 1, (IEnumerable<CardModificationInfo>)null);
			}
			CardExtensions.SetTail(val16, text + "_" + text46, (IEnumerable<CardModificationInfo>)null);
			CardExtensions.SetIceCube(val16, text + "_" + text46, (IEnumerable<CardModificationInfo>)null);
			CardExtensions.AddTribes(val16, array54);
			string text47 = "Beeshooter";
			Ability[] array55 = (Ability[])(object)new Ability[1] { (Ability)2 };
			Trait[] array56 = (Trait[])(object)new Trait[0];
			Tribe[] array57 = (Tribe[])(object)new Tribe[2]
			{
				(Tribe)6,
				(Tribe)(int)PlantFruit
			};
			string text48 = null;
			string text49 = "leaflitter";
			int num16 = 2;
			CardInfo val17 = CardManager.New(text, "beeshooter", "Beeshooter", 2, 2, "According to all known laws of aviation, there is no way a bee should be able to fly");
			CardExtensions.AddAppearances(val17, Array.Empty<Appearance>());
			CardExtensions.AddMetaCategories(val17, array);
			CardExtensions.SetBloodCost(val17, (int?)1);
			CardExtensions.SetExtendedProperty(val17, "SunCost", (object)num16);
			CardExtensions.SetPortrait(val17, findTexture(text47), (FilterMode?)null);
			CardExtensions.SetEmissivePortrait(val17, findTexture(text47 + "2"), (FilterMode?)null);
			CardExtensions.AddDecal(val17, (Texture[])(object)new Texture[1] { (Texture)val });
			CardExtensions.AddAbilities(val17, array55);
			CardExtensions.AddTraits(val17, array56);
			if (text48 != null)
			{
				CardExtensions.SetEvolve(val17, text + "_" + text48, 1, (IEnumerable<CardModificationInfo>)null);
			}
			CardExtensions.SetTail(val17, text + "_" + text49, (IEnumerable<CardModificationInfo>)null);
			CardExtensions.SetIceCube(val17, text + "_" + text49, (IEnumerable<CardModificationInfo>)null);
			CardExtensions.AddTribes(val17, array57);
			string text50 = "Puff";
			Ability[] array58 = (Ability[])(object)new Ability[1] { (Ability)(int)FadeAway.ability };
			Trait[] array59 = (Trait[])(object)new Trait[0];
			Tribe[] array60 = (Tribe[])(object)new Tribe[1] { (Tribe)(int)PlantShroom };
			string text51 = "fumeshroom";
			string text52 = "shroomchunks";
			int num17 = 0;
			CardInfo val18 = CardManager.New(text, "puffshroom", "Puffshroom", 0, 1, "It might not be very powerful, but it can get you out of a pinch");
			CardExtensions.AddAppearances(val18, Array.Empty<Appearance>());
			CardExtensions.AddMetaCategories(val18, array);
			CardExtensions.AddSpecialAbilities(val18, (SpecialTriggeredAbility[])(object)new SpecialTriggeredAbility[1] { (SpecialTriggeredAbility)(int)AttackForShroom.FullSpecial.Id });
			val18.specialStatIcon = AttackForShroom.FullStatIcon.Id;
			CardExtensions.SetExtendedProperty(val18, "SunCost", (object)num17);
			CardExtensions.SetPortrait(val18, findTexture(text50), (FilterMode?)null);
			CardExtensions.SetEmissivePortrait(val18, findTexture(text50 + "2"), (FilterMode?)null);
			CardExtensions.SetPixelPortrait(val18, findTexture(text50 + "3"), (FilterMode?)null);
			CardExtensions.AddDecal(val18, (Texture[])(object)new Texture[1] { (Texture)val });
			CardExtensions.AddAbilities(val18, array58);
			CardExtensions.AddTraits(val18, array59);
			if (text51 != null)
			{
				CardExtensions.SetEvolve(val18, text + "_" + text51, 1, (IEnumerable<CardModificationInfo>)null);
			}
			CardExtensions.SetTail(val18, text + "_" + text52, (IEnumerable<CardModificationInfo>)null);
			CardExtensions.SetIceCube(val18, text + "_" + text52, (IEnumerable<CardModificationInfo>)null);
			CardExtensions.AddTribes(val18, array60);
			string text53 = "SeaShroom";
			Ability[] array61 = (Ability[])(object)new Ability[1] { (Ability)13 };
			Trait[] array62 = (Trait[])(object)new Trait[0];
			Tribe[] array63 = (Tribe[])(object)new Tribe[1] { (Tribe)(int)PlantShroom };
			string text54 = null;
			string text55 = "shroomchunks";
			int num18 = 0;
			CardInfo val19 = CardManager.New(text, "seashroom", "Seashroom", 0, 1, "Just a little mushroom, sitting on the water");
			CardExtensions.AddAppearances(val19, array7);
			CardExtensions.AddMetaCategories(val19, array3);
			CardExtensions.AddSpecialAbilities(val19, (SpecialTriggeredAbility[])(object)new SpecialTriggeredAbility[1] { (SpecialTriggeredAbility)(int)AttackForShroom.FullSpecial.Id });
			val19.specialStatIcon = AttackForShroom.FullStatIcon.Id;
			CardExtensions.SetExtendedProperty(val19, "SunCost", (object)num18);
			CardExtensions.SetPortrait(val19, findTexture(text53), (FilterMode?)null);
			CardExtensions.SetEmissivePortrait(val19, findTexture(text53 + "2"), (FilterMode?)null);
			CardExtensions.AddDecal(val19, (Texture[])(object)new Texture[1] { (Texture)val });
			CardExtensions.AddAbilities(val19, array61);
			CardExtensions.AddTraits(val19, array62);
			if (text54 != null)
			{
				CardExtensions.SetEvolve(val19, text + "_" + text54, 1, (IEnumerable<CardModificationInfo>)null);
			}
			CardExtensions.SetTail(val19, text + "_" + text55, (IEnumerable<CardModificationInfo>)null);
			CardExtensions.SetIceCube(val19, text + "_" + text55, (IEnumerable<CardModificationInfo>)null);
			CardExtensions.AddTribes(val19, array63);
			string text56 = "Scaredy";
			Ability[] array64 = (Ability[])(object)new Ability[1] { (Ability)(int)TacticalRetreat.ability };
			Trait[] array65 = (Trait[])(object)new Trait[0];
			Tribe[] array66 = (Tribe[])(object)new Tribe[1] { (Tribe)(int)PlantShroom };
			string text57 = null;
			string text58 = "shroomchunks";
			int num19 = 1;
			CardInfo val20 = CardManager.New(text, "scaredyshroom", "Scaredyshroom", 0, 1, "Some may consider this one a coward for its tactics");
			CardExtensions.AddAppearances(val20, Array.Empty<Appearance>());
			CardExtensions.AddMetaCategories(val20, array);
			CardExtensions.AddSpecialAbilities(val20, (SpecialTriggeredAbility[])(object)new SpecialTriggeredAbility[1] { (SpecialTriggeredAbility)(int)AttackForShroom.FullSpecial.Id });
			val20.specialStatIcon = AttackForShroom.FullStatIcon.Id;
			CardExtensions.SetExtendedProperty(val20, "SunCost", (object)num19);
			CardExtensions.SetPortrait(val20, findTexture(text56), (FilterMode?)null);
			CardExtensions.SetEmissivePortrait(val20, findTexture(text56 + "2"), (FilterMode?)null);
			CardExtensions.SetPixelPortrait(val20, findTexture(text56 + "3"), (FilterMode?)null);
			CardExtensions.AddDecal(val20, (Texture[])(object)new Texture[1] { (Texture)val });
			CardExtensions.AddAbilities(val20, array64);
			CardExtensions.AddTraits(val20, array65);
			if (text57 != null)
			{
				CardExtensions.SetEvolve(val20, text + "_" + text57, 1, (IEnumerable<CardModificationInfo>)null);
			}
			CardExtensions.SetTail(val20, text + "_" + text58, (IEnumerable<CardModificationInfo>)null);
			CardExtensions.SetIceCube(val20, text + "_" + text58, (IEnumerable<CardModificationInfo>)null);
			CardExtensions.AddTribes(val20, array66);
			string text59 = "Fume";
			Ability[] array67 = (Ability[])(object)new Ability[1] { (Ability)(int)Pierce.ability };
			Trait[] array68 = (Trait[])(object)new Trait[0];
			Tribe[] array69 = (Tribe[])(object)new Tribe[1] { (Tribe)(int)PlantShroom };
			string text60 = null;
			string text61 = "shroomchunks";
			int num20 = 4;
			CardInfo val21 = CardManager.New(text, "fumeshroom", "Fumeshroom", 0, 1, "Its fumes can hit many foes");
			CardExtensions.AddAppearances(val21, Array.Empty<Appearance>());
			CardExtensions.AddMetaCategories(val21, array);
			CardExtensions.AddSpecialAbilities(val21, (SpecialTriggeredAbility[])(object)new SpecialTriggeredAbility[1] { (SpecialTriggeredAbility)(int)AttackForShroom.FullSpecial.Id });
			val21.specialStatIcon = AttackForShroom.FullStatIcon.Id;
			CardExtensions.SetExtendedProperty(val21, "SunCost", (object)num20);
			CardExtensions.SetPortrait(val21, findTexture(text59), (FilterMode?)null);
			CardExtensions.SetEmissivePortrait(val21, findTexture(text59 + "2"), (FilterMode?)null);
			CardExtensions.SetPixelPortrait(val21, findTexture(text59 + "3"), (FilterMode?)null);
			CardExtensions.AddDecal(val21, (Texture[])(object)new Texture[1] { (Texture)val });
			CardExtensions.AddAbilities(val21, array67);
			CardExtensions.AddTraits(val21, array68);
			if (text60 != null)
			{
				CardExtensions.SetEvolve(val21, text + "_" + text60, 1, (IEnumerable<CardModificationInfo>)null);
			}
			CardExtensions.SetTail(val21, text + "_" + text61, (IEnumerable<CardModificationInfo>)null);
			CardExtensions.SetIceCube(val21, text + "_" + text61, (IEnumerable<CardModificationInfo>)null);
			CardExtensions.AddTribes(val21, array69);
			string text62 = "Spore";
			Ability[] array70 = (Ability[])(object)new Ability[1] { (Ability)(int)SporeSpread.ability };
			Trait[] array71 = (Trait[])(object)new Trait[0];
			Tribe[] array72 = (Tribe[])(object)new Tribe[1] { (Tribe)(int)PlantShroom };
			string text63 = null;
			string text64 = "shroomchunks";
			int num21 = 3;
			CardInfo val22 = CardManager.New(text, "sporeshroom", "Sporeshroom", 0, 1, "Put divide and conquer into practice");
			CardExtensions.AddAppearances(val22, Array.Empty<Appearance>());
			CardExtensions.AddMetaCategories(val22, array);
			CardExtensions.AddSpecialAbilities(val22, (SpecialTriggeredAbility[])(object)new SpecialTriggeredAbility[1] { (SpecialTriggeredAbility)(int)AttackForShroom.FullSpecial.Id });
			val22.specialStatIcon = AttackForShroom.FullStatIcon.Id;
			CardExtensions.SetExtendedProperty(val22, "SunCost", (object)num21);
			CardExtensions.SetPortrait(val22, findTexture(text62), (FilterMode?)null);
			CardExtensions.SetEmissivePortrait(val22, findTexture(text62 + "2"), (FilterMode?)null);
			CardExtensions.AddDecal(val22, (Texture[])(object)new Texture[1] { (Texture)val });
			CardExtensions.AddAbilities(val22, array70);
			CardExtensions.AddTraits(val22, array71);
			if (text63 != null)
			{
				CardExtensions.SetEvolve(val22, text + "_" + text63, 1, (IEnumerable<CardModificationInfo>)null);
			}
			CardExtensions.SetTail(val22, text + "_" + text64, (IEnumerable<CardModificationInfo>)null);
			CardExtensions.SetIceCube(val22, text + "_" + text64, (IEnumerable<CardModificationInfo>)null);
			CardExtensions.AddTribes(val22, array72);
			string text65 = "Sunflower";
			Ability[] array73 = (Ability[])(object)new Ability[1] { (Ability)(int)Sunmaker2.ability };
			Trait[] array74 = (Trait[])(object)new Trait[1] { (Trait)20 };
			Tribe[] array75 = (Tribe[])(object)new Tribe[2]
			{
				(Tribe)(int)PlantFlower,
				(Tribe)1
			};
			string text66 = "twinflower";
			string text67 = "leaflitter";
			int num22 = 1;
			CardInfo val23 = CardManager.New(text, "sunflower", "Sunflower", 0, 1, "These can power entire infantries");
			CardExtensions.AddAppearances(val23, array6);
			CardExtensions.AddMetaCategories(val23, array);
			CardExtensions.SetExtendedProperty(val23, "CSDIsSideDeck", (object)"true");
			CardExtensions.SetExtendedProperty(val23, "CSDSideDeckType", (object)"Basic");
			CardExtensions.SetExtendedProperty(val23, "Sunmaker", (object)2);
			CardExtensions.SetExtendedProperty(val23, "SunCost", (object)num22);
			CardExtensions.SetPortrait(val23, findTexture(text65), (FilterMode?)null);
			CardExtensions.SetEmissivePortrait(val23, findTexture(text65 + "2"), (FilterMode?)null);
			CardExtensions.SetPixelPortrait(val23, findTexture(text65 + "3"), (FilterMode?)null);
			CardExtensions.AddDecal(val23, (Texture[])(object)new Texture[1] { (Texture)val });
			CardExtensions.AddAbilities(val23, array73);
			CardExtensions.AddTraits(val23, array74);
			if (text66 != null)
			{
				CardExtensions.SetEvolve(val23, text + "_" + text66, 1, (IEnumerable<CardModificationInfo>)null);
			}
			CardExtensions.SetTail(val23, text + "_" + text67, (IEnumerable<CardModificationInfo>)null);
			CardExtensions.SetIceCube(val23, text + "_" + text67, (IEnumerable<CardModificationInfo>)null);
			CardExtensions.AddTribes(val23, array75);
			string text68 = "Twinflower";
			Ability[] array76 = (Ability[])(object)new Ability[1] { (Ability)(int)Sunmaker3.ability };
			Trait[] array77 = (Trait[])(object)new Trait[0];
			Tribe[] array78 = (Tribe[])(object)new Tribe[1] { (Tribe)(int)PlantFlower };
			string text69 = null;
			string text70 = "leaflitter";
			int num23 = 2;
			CardInfo val24 = CardManager.New(text, "twinflower", "Twin Sunflower", 0, 2, "Truly a great powerplant");
			CardExtensions.AddAppearances(val24, Array.Empty<Appearance>());
			CardExtensions.AddMetaCategories(val24, array);
			CardExtensions.SetExtendedProperty(val24, "CSDIsSideDeck", (object)"true");
			CardExtensions.SetExtendedProperty(val24, "CSDSideDeckType", (object)"Basic");
			CardExtensions.SetExtendedProperty(val24, "Sunmaker", (object)3);
			CardExtensions.SetExtendedProperty(val24, "SunCost", (object)num23);
			CardExtensions.SetPortrait(val24, findTexture(text68), (FilterMode?)null);
			CardExtensions.SetEmissivePortrait(val24, findTexture(text68 + "2"), (FilterMode?)null);
			CardExtensions.SetPixelPortrait(val24, findTexture(text68 + "3"), (FilterMode?)null);
			CardExtensions.AddDecal(val24, (Texture[])(object)new Texture[1] { (Texture)val });
			CardExtensions.AddAbilities(val24, array76);
			CardExtensions.AddTraits(val24, array77);
			if (text69 != null)
			{
				CardExtensions.SetEvolve(val24, text + "_" + text69, 1, (IEnumerable<CardModificationInfo>)null);
			}
			CardExtensions.SetTail(val24, text + "_" + text70, (IEnumerable<CardModificationInfo>)null);
			CardExtensions.SetIceCube(val24, text + "_" + text70, (IEnumerable<CardModificationInfo>)null);
			CardExtensions.AddTribes(val24, array78);
			string text71 = "SunShroomS";
			Ability[] array79 = (Ability[])(object)new Ability[2]
			{
				(Ability)(int)Sunmaker1.ability,
				(Ability)5
			};
			Trait[] array80 = (Trait[])(object)new Trait[0];
			Tribe[] array81 = (Tribe[])(object)new Tribe[1] { (Tribe)(int)PlantShroom };
			string text72 = "sunshroom2";
			string text73 = "shroomchunks";
			int num24 = 1;
			CardInfo val25 = CardManager.New(text, "sunshroom1", "SunShroom", 0, 1, "allow the sunshroom some time to reach its full potential");
			CardExtensions.AddAppearances(val25, Array.Empty<Appearance>());
			CardExtensions.AddMetaCategories(val25, array);
			CardExtensions.SetExtendedProperty(val25, "CSDIsSideDeck", (object)"true");
			CardExtensions.SetExtendedProperty(val25, "CSDSideDeckType", (object)"Basic");
			CardExtensions.SetExtendedProperty(val25, "Sunmaker", (object)1);
			CardExtensions.SetExtendedProperty(val25, "SunCost", (object)num24);
			CardExtensions.SetPortrait(val25, findTexture(text71), (FilterMode?)null);
			CardExtensions.SetEmissivePortrait(val25, findTexture(text71 + "2"), (FilterMode?)null);
			CardExtensions.SetPixelPortrait(val25, findTexture(text71 + "3"), (FilterMode?)null);
			CardExtensions.AddDecal(val25, (Texture[])(object)new Texture[1] { (Texture)val });
			CardExtensions.AddAbilities(val25, array79);
			CardExtensions.AddTraits(val25, array80);
			if (text72 != null)
			{
				CardExtensions.SetEvolve(val25, text + "_" + text72, 1, (IEnumerable<CardModificationInfo>)null);
			}
			CardExtensions.SetTail(val25, text + "_" + text73, (IEnumerable<CardModificationInfo>)null);
			CardExtensions.SetIceCube(val25, text + "_" + text73, (IEnumerable<CardModificationInfo>)null);
			CardExtensions.AddTribes(val25, array81);
			string text74 = "SunShroomM";
			Ability[] array82 = (Ability[])(object)new Ability[2]
			{
				(Ability)(int)Sunmaker2.ability,
				(Ability)5
			};
			Trait[] array83 = (Trait[])(object)new Trait[0];
			Tribe[] array84 = (Tribe[])(object)new Tribe[1] { (Tribe)(int)PlantShroom };
			string text75 = "sunshroom3";
			string text76 = "shroomchunks";
			int num25 = 1;
			CardInfo val26 = CardManager.New(text, "sunshroom2", "SunShroom", 0, 2, "allow the sunshroom some time to reach its full potential");
			CardExtensions.AddAppearances(val26, Array.Empty<Appearance>());
			CardExtensions.AddMetaCategories(val26, Array.Empty<CardMetaCategory>());
			CardExtensions.SetExtendedProperty(val26, "Sunmaker", (object)2);
			CardExtensions.SetExtendedProperty(val26, "SunCost", (object)num25);
			CardExtensions.SetPortrait(val26, findTexture(text74), (FilterMode?)null);
			CardExtensions.SetEmissivePortrait(val26, findTexture(text74 + "2"), (FilterMode?)null);
			CardExtensions.AddDecal(val26, (Texture[])(object)new Texture[1] { (Texture)val });
			CardExtensions.AddAbilities(val26, array82);
			CardExtensions.AddTraits(val26, array83);
			if (text75 != null)
			{
				CardExtensions.SetEvolve(val26, text + "_" + text75, 1, (IEnumerable<CardModificationInfo>)null);
			}
			CardExtensions.SetTail(val26, text + "_" + text76, (IEnumerable<CardModificationInfo>)null);
			CardExtensions.SetIceCube(val26, text + "_" + text76, (IEnumerable<CardModificationInfo>)null);
			CardExtensions.AddTribes(val26, array84);
			string text77 = "SunShroomL";
			Ability[] array85 = (Ability[])(object)new Ability[1] { (Ability)(int)Sunmaker3.ability };
			Trait[] array86 = (Trait[])(object)new Trait[0];
			Tribe[] array87 = (Tribe[])(object)new Tribe[1] { (Tribe)(int)PlantShroom };
			string text78 = null;
			string text79 = "shroomchunks";
			int num26 = 1;
			CardInfo val27 = CardManager.New(text, "sunshroom3", "SunShroom", 0, 3, "allow the sunshroom some time to reach its full potential");
			CardExtensions.AddAppearances(val27, Array.Empty<Appearance>());
			CardExtensions.AddMetaCategories(val27, Array.Empty<CardMetaCategory>());
			CardExtensions.SetExtendedProperty(val27, "Sunmaker", (object)3);
			CardExtensions.SetExtendedProperty(val27, "SunCost", (object)num26);
			CardExtensions.SetPortrait(val27, findTexture(text77), (FilterMode?)null);
			CardExtensions.SetEmissivePortrait(val27, findTexture(text77 + "2"), (FilterMode?)null);
			CardExtensions.AddDecal(val27, (Texture[])(object)new Texture[1] { (Texture)val });
			CardExtensions.AddAbilities(val27, array85);
			CardExtensions.AddTraits(val27, array86);
			if (text78 != null)
			{
				CardExtensions.SetEvolve(val27, text + "_" + text78, 1, (IEnumerable<CardModificationInfo>)null);
			}
			CardExtensions.SetTail(val27, text + "_" + text79, (IEnumerable<CardModificationInfo>)null);
			CardExtensions.SetIceCube(val27, text + "_" + text79, (IEnumerable<CardModificationInfo>)null);
			CardExtensions.AddTribes(val27, array87);
			string text80 = "Toadstool";
			Ability[] array88 = (Ability[])(object)new Ability[2]
			{
				(Ability)4,
				(Ability)(int)SunKill.ability
			};
			Trait[] array89 = (Trait[])(object)new Trait[0];
			Tribe[] array90 = (Tribe[])(object)new Tribe[1] { (Tribe)(int)PlantShroom };
			string text81 = null;
			string text82 = "shroomchunks";
			int num27 = 6;
			CardInfo val28 = CardManager.New(text, "toadstool", "ToadStool", 1, 2, "A frogish fungus, how curious");
			CardExtensions.AddAppearances(val28, array7);
			CardExtensions.AddMetaCategories(val28, array3);
			CardExtensions.SetExtendedProperty(val28, "Sunmaker", (object)3);
			CardExtensions.SetExtendedProperty(val28, "SunCost", (object)num27);
			CardExtensions.SetPortrait(val28, findTexture(text80), (FilterMode?)null);
			CardExtensions.SetEmissivePortrait(val28, findTexture(text80 + "2"), (FilterMode?)null);
			CardExtensions.AddDecal(val28, (Texture[])(object)new Texture[1] { (Texture)val });
			CardExtensions.AddAbilities(val28, array88);
			CardExtensions.AddTraits(val28, array89);
			if (text81 != null)
			{
				CardExtensions.SetEvolve(val28, text + "_" + text81, 1, (IEnumerable<CardModificationInfo>)null);
			}
			CardExtensions.SetTail(val28, text + "_" + text82, (IEnumerable<CardModificationInfo>)null);
			CardExtensions.SetIceCube(val28, text + "_" + text82, (IEnumerable<CardModificationInfo>)null);
			CardExtensions.AddTribes(val28, array90);
			string text83 = "SunBean";
			Ability[] array91 = (Ability[])(object)new Ability[2]
			{
				(Ability)(int)SunKill.ability,
				(Ability)(int)Spudow.ability
			};
			Trait[] array92 = (Trait[])(object)new Trait[0];
			Tribe[] array93 = (Tribe[])(object)new Tribe[1] { (Tribe)(int)PlantFruit };
			string text84 = null;
			string text85 = "leaflitter";
			int num28 = 2;
			CardInfo val29 = CardManager.New(text, "sunbean", "Sun bean", 0, 2, "will you invest in the sun bean?");
			CardExtensions.AddAppearances(val29, Array.Empty<Appearance>());
			CardExtensions.AddMetaCategories(val29, array);
			CardExtensions.SetExtendedProperty(val29, "CSDIsSideDeck", (object)"true");
			CardExtensions.SetExtendedProperty(val29, "CSDSideDeckType", (object)"Basic");
			CardExtensions.SetExtendedProperty(val29, "SunCost", (object)num28);
			CardExtensions.SetPortrait(val29, findTexture(text83), (FilterMode?)null);
			CardExtensions.SetEmissivePortrait(val29, findTexture(text83 + "2"), (FilterMode?)null);
			CardExtensions.SetPixelPortrait(val29, findTexture(text83 + "3"), (FilterMode?)null);
			CardExtensions.AddDecal(val29, (Texture[])(object)new Texture[1] { (Texture)val });
			CardExtensions.AddAbilities(val29, array91);
			CardExtensions.AddTraits(val29, array92);
			if (text84 != null)
			{
				CardExtensions.SetEvolve(val29, text + "_" + text84, 1, (IEnumerable<CardModificationInfo>)null);
			}
			CardExtensions.SetTail(val29, text + "_" + text85, (IEnumerable<CardModificationInfo>)null);
			CardExtensions.SetIceCube(val29, text + "_" + text85, (IEnumerable<CardModificationInfo>)null);
			CardExtensions.AddTribes(val29, array93);
			string text86 = "Wallnut";
			Ability[] array94 = (Ability[])(object)new Ability[1] { (Ability)8 };
			Trait[] array95 = (Trait[])(object)new Trait[0];
			Tribe[] array96 = (Tribe[])(object)new Tribe[1] { (Tribe)(int)PlantFruit };
			string text87 = "tallnut";
			string text88 = "splinters";
			int num29 = 2;
			CardInfo val30 = CardManager.New(text, "wallnut", "Wallnut", 0, 4, "What an iconic line of defence");
			CardExtensions.AddAppearances(val30, Array.Empty<Appearance>());
			CardExtensions.AddMetaCategories(val30, array);
			CardExtensions.SetExtendedProperty(val30, "SunCost", (object)num29);
			CardExtensions.SetPortrait(val30, findTexture(text86), (FilterMode?)null);
			CardExtensions.SetEmissivePortrait(val30, findTexture(text86 + "2"), (FilterMode?)null);
			CardExtensions.SetPixelPortrait(val30, findTexture(text86 + "3"), (FilterMode?)null);
			CardExtensions.AddDecal(val30, (Texture[])(object)new Texture[1] { (Texture)val });
			CardExtensions.AddAbilities(val30, array94);
			CardExtensions.AddTraits(val30, array95);
			if (text87 != null)
			{
				CardExtensions.SetEvolve(val30, text + "_" + text87, 1, (IEnumerable<CardModificationInfo>)null);
			}
			CardExtensions.SetTail(val30, text + "_" + text88, (IEnumerable<CardModificationInfo>)null);
			CardExtensions.SetIceCube(val30, text + "_" + text88, (IEnumerable<CardModificationInfo>)null);
			CardExtensions.AddTribes(val30, array96);
			string text89 = "Tallnut";
			Ability[] array97 = (Ability[])(object)new Ability[2]
			{
				(Ability)8,
				(Abilit