Decompiled source of CevinsGrimmyExpansion v0.0.5
plugins/CevinsGrimoraExpansion.dll
Decompiled a year ago
The result has been truncated due to the large size, download it to view full contents!
using System; using System.Collections; using System.Collections.Generic; using System.Diagnostics; using System.IO; using System.Linq; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using System.Security; using System.Security.Permissions; using BepInEx; using BepInEx.Logging; using CevinsGrimoraExpansion.Stats; using DiskCardGame; using GrimoraMod; using HarmonyLib; using InscryptionAPI.Card; using InscryptionAPI.Helpers; using InscryptionAPI.Saves; using Pixelplacement; using UnityEngine; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] [assembly: TargetFramework(".NETStandard,Version=v2.0", FrameworkDisplayName = "")] [assembly: AssemblyCompany("CevinsGrimoraExpansion")] [assembly: AssemblyConfiguration("Debug")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0")] [assembly: AssemblyProduct("CevinsGrimoraExpansion")] [assembly: AssemblyTitle("CevinsGrimoraExpansion")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.0.0.0")] [module: UnverifiableCode] public static class Tools { public static Assembly _assembly; public static GameObject Particle; public static Assembly CurrentAssembly => _assembly ?? (_assembly = Assembly.GetExecutingAssembly()); public static Texture2D LoadTexture(string name) { if (name == null) { return null; } return TextureHelper.GetImageAsTexture(name + (name.EndsWith(".png") ? "" : ".png"), CurrentAssembly, (FilterMode)0); } public static Sprite ConvertToSprite(Texture2D texture) { //IL_001a: Unknown result type (might be due to invalid IL or missing references) //IL_001f: Unknown result type (might be due to invalid IL or missing references) return Sprite.Create(texture, new Rect(0f, 0f, (float)((Texture)texture).width, (float)((Texture)texture).height), Vector2.zero); } public static Sprite ConvertToStarterDeckSprite(Texture2D texture) { //IL_001e: Unknown result type (might be due to invalid IL or missing references) //IL_002d: Unknown result type (might be due to invalid IL or missing references) ((Texture)texture).filterMode = (FilterMode)0; Sprite val = Sprite.Create(texture, new Rect(0f, 0f, 35f, 44f), new Vector2(0.5f, 0.5f)); ((Object)val).name = ((Object)texture).name; return val; } public static int GetActAsInt() { if (SaveManager.SaveFile.IsPart1) { return 1; } if (SaveManager.SaveFile.IsPart2) { return 2; } if (SaveManager.SaveFile.IsPart3) { return 3; } if (SaveManager.SaveFile.IsGrimora) { return 4; } if (SaveManager.SaveFile.IsMagnificus) { return 5; } return 0; } public static void SpawnParticlesOnCard(this PlayableCard target, Texture2D tex, float yOffset = 0f) { //IL_0079: 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_0093: Unknown result type (might be due to invalid IL or missing references) //IL_0098: Unknown result type (might be due to invalid IL or missing references) //IL_00a5: Expected O, but got Unknown //IL_00a8: Unknown result type (might be due to invalid IL or missing references) //IL_00ad: Unknown result type (might be due to invalid IL or missing references) //IL_00ba: Unknown result type (might be due to invalid IL or missing references) //IL_00bf: Unknown result type (might be due to invalid IL or missing references) //IL_00f8: Unknown result type (might be due to invalid IL or missing references) //IL_0115: Unknown result type (might be due to invalid IL or missing references) //IL_0132: Unknown result type (might be due to invalid IL or missing references) //IL_014b: Unknown result type (might be due to invalid IL or missing references) //IL_015c: Unknown result type (might be due to invalid IL or missing references) //IL_016f: Unknown result type (might be due to invalid IL or missing references) //IL_0179: Unknown result type (might be due to invalid IL or missing references) if (!Object.op_Implicit((Object)(object)((Card)target).Anim) || !(((Card)target).Anim is PaperCardAnimationController)) { return; } CardAnimationController anim = ((Card)target).Anim; PaperCardAnimationController val = (PaperCardAnimationController)(object)((anim is PaperCardAnimationController) ? anim : null); if (Object.op_Implicit((Object)(object)val.deathParticles)) { GameObject val2 = Object.Instantiate<GameObject>(val.deathParticles); ParticleSystem component = val2.GetComponent<ParticleSystem>(); if (Object.op_Implicit((Object)(object)component)) { MainModule main = component.main; ((Renderer)((Component)component).GetComponent<ParticleSystemRenderer>()).material = new Material(((Renderer)((Component)component).GetComponent<ParticleSystemRenderer>()).material) { mainTexture = (Texture)(object)tex }; EmissionModule emission = component.emission; ((EmissionModule)(ref emission)).enabled = true; ((MainModule)(ref main)).startColor = new MinMaxGradient(Color.white); val2.SetActive(true); val2.transform.SetParent(((Component)val).transform); val2.transform.position = val.deathParticles.transform.position; val2.transform.localScale = val.deathParticles.transform.localScale; val2.transform.rotation = val.deathParticles.transform.rotation; ((Component)component).transform.position = new Vector3(((Component)component).transform.position.x, ((Component)component).transform.position.y + yOffset, ((Component)component).transform.position.z); Object.Destroy((Object)(object)val2, 6f); } } } } namespace CevinsGrimoraExpansion { public class BoneStrafe : Strafe { public int Bonecollector = 0; public static Ability ability; public override Ability Ability => ability; public override IEnumerator PostSuccessfulMoveSequence(CardSlot cardSlot) { if (Bonecollector != 3) { Bonecollector++; } else if (Bonecollector == 3) { yield return ((AbilityBehaviour)this).Card.TakeDamage(9999, (PlayableCard)null); yield return (object)new WaitForSeconds(1f); yield return Singleton<BoardManager>.Instance.CreateCardInSlot(CardRelatedExtension.GetCardInfo("arackulele.inscryption.grimoramod_BuildSkeleton"), cardSlot, 0.1f, true); Bonecollector = 0; } } } public class DrawCardOnKill : AbilityBehaviour { public static Ability ability; public override Ability Ability => ability; public override bool RespondsToOtherCardDie(PlayableCard card, CardSlot deathSlot, bool fromCombat, PlayableCard killer) { return true; } public override IEnumerator OnOtherCardDie(PlayableCard card, CardSlot deathSlot, bool fromCombat, PlayableCard killer) { if (Singleton<CardDrawPiles>.Instance.DeckData.Any() && (Object)(object)killer == (Object)(object)((AbilityBehaviour)this).Card) { Singleton<ViewManager>.Instance.SwitchToView((View)0, false, false); Singleton<ViewManager>.Instance.Controller.LockState = (ViewLockState)1; yield return Singleton<CardDrawPiles>.Instance.DrawCardFromDeck((CardInfo)null, (Action<PlayableCard>)null); yield return (object)new WaitForSeconds(1.2f); Singleton<ViewManager>.Instance.SwitchToView((View)0, false, false); Singleton<ViewManager>.Instance.Controller.LockState = (ViewLockState)0; } } } public class DrawDeckAndSide : AbilityBehaviour { public static Ability ability; public override Ability Ability => ability; public override bool RespondsToResolveOnBoard() { return true; } public override IEnumerator OnResolveOnBoard() { if (Singleton<CardDrawPiles>.Instance.DeckData.Any() && CardDrawPiles3D.Instance.SideDeckData.Any()) { Singleton<ViewManager>.Instance.SwitchToView((View)0, false, false); Singleton<ViewManager>.Instance.Controller.LockState = (ViewLockState)1; yield return Singleton<CardDrawPiles>.Instance.DrawCardFromDeck((CardInfo)null, (Action<PlayableCard>)null); CardDrawPiles3D.Instance.SidePile.Draw(); yield return CardDrawPiles3D.Instance.DrawFromSidePile(); yield return (object)new WaitForSeconds(1.2f); Singleton<ViewManager>.Instance.SwitchToView((View)0, false, false); Singleton<ViewManager>.Instance.Controller.LockState = (ViewLockState)0; } else if (Singleton<CardDrawPiles>.Instance.DeckData.Any() && !CardDrawPiles3D.Instance.SideDeckData.Any()) { Singleton<ViewManager>.Instance.SwitchToView((View)0, false, false); Singleton<ViewManager>.Instance.Controller.LockState = (ViewLockState)1; yield return Singleton<CardDrawPiles>.Instance.DrawCardFromDeck((CardInfo)null, (Action<PlayableCard>)null); yield return (object)new WaitForSeconds(1.2f); Singleton<ViewManager>.Instance.SwitchToView((View)0, false, false); Singleton<ViewManager>.Instance.Controller.LockState = (ViewLockState)0; } else if (!Singleton<CardDrawPiles>.Instance.DeckData.Any() && CardDrawPiles3D.Instance.SideDeckData.Any()) { Singleton<ViewManager>.Instance.SwitchToView((View)0, false, false); Singleton<ViewManager>.Instance.Controller.LockState = (ViewLockState)1; CardDrawPiles3D.Instance.SidePile.Draw(); yield return CardDrawPiles3D.Instance.DrawFromSidePile(); yield return (object)new WaitForSeconds(1.2f); Singleton<ViewManager>.Instance.SwitchToView((View)0, false, false); Singleton<ViewManager>.Instance.Controller.LockState = (ViewLockState)0; } } } public class DruidAbility : AbilityBehaviour { public static Ability ability; public override Ability Ability => ability; public override bool RespondsToResolveOnBoard() { return true; } public override IEnumerator OnResolveOnBoard() { foreach (CardSlot slot in ((BoardManager)Singleton<BoardManager3D>.Instance).AllSlotsCopy) { if (!((Object)(object)slot.Card == (Object)null)) { continue; } CardModificationInfo info = new CardModificationInfo(); foreach (Ability ability in ((Card)((AbilityBehaviour)this).Card).Info.abilities) { info.abilities.Add(ability); } info.abilities.Remove(DruidAbility.ability); yield return ((AbilityBehaviour)this).PreSuccessfulTriggerSequence(); yield return (object)new WaitForSeconds(0.1f); yield return Singleton<BoardManager>.Instance.CreateCardInSlot(CardLoader.GetCardByName("arackulele.inscryption.grimoramod_DeadTree"), slot, 0.15f, true); slot.Card.AddTemporaryMod(info); foreach (CardModificationInfo info2 in ((AbilityBehaviour)this).Card.TemporaryMods) { slot.Card.AddTemporaryMod(info2); } yield return (object)new WaitForSeconds(0.3f); yield return ((AbilityBehaviour)this).LearnAbility(0.1f); } } } public class EvilHag : ActivatedAbilityBehaviour { public static Ability ability; public static GameObject target; private CardSlot recentlySelected; private GameObject instanceTarget; public override Ability Ability => ability; public override int EnergyCost => 3; public override IEnumerator Activate() { if ((Object)(object)target == (Object)null) { target = ResourceBank.Get<GameObject>("Prefabs/Cards/SpecificCardModels/CannonTargetIcon"); } Singleton<ViewManager>.Instance.Controller.SwitchToControlMode(Singleton<BoardManager>.Instance.ChoosingSlotViewMode, false); Singleton<ViewManager>.Instance.Controller.LockState = (ViewLockState)1; Singleton<InteractionCursor>.Instance.ForceCursorType((CursorType)16); BoardManager instance = Singleton<BoardManager>.Instance; List<CardSlot> playerSlots = Singleton<BoardManager>.Instance.OpponentSlotsCopy; List<CardSlot> playerSlotsWithCards = Singleton<BoardManager>.Instance.OpponentSlotsCopy.FindAll((CardSlot x) => (Object)(object)x.Card != (Object)null); yield return instance.ChooseTarget(playerSlots, playerSlotsWithCards, (Action<CardSlot>)CardSelected, (Action<CardSlot>)InvalidTargetSelected, (Action<CardSlot>)CursotEnteredSlot, (Func<bool>)(() => false), (CursorType)16); if ((Object)(object)instanceTarget != (Object)null && Tools.GetActAsInt() == 1) { Tween.LocalScale(instanceTarget.transform, Vector3.zero, 0.1f, 0f, Tween.EaseIn, (LoopType)0, (Action)null, (Action)delegate { Object.Destroy((Object)(object)instanceTarget); }, true); } if ((Object)(object)recentlySelected != (Object)null) { if (((Object)(object)recentlySelected.Card != (Object)null && ((Card)recentlySelected.Card).Info.BonesCost > 3) || ((Object)(object)recentlySelected.Card != (Object)null && ((Card)recentlySelected.Card).Info.EnergyCost > 3)) { yield return recentlySelected.Card.Die(false, (PlayableCard)null, true); Object.Destroy((Object)(object)instanceTarget); } else if ((Object)(object)recentlySelected.Card != (Object)null) { yield return recentlySelected.Card.TakeDamage(1, (PlayableCard)null); Object.Destroy((Object)(object)instanceTarget); } } Singleton<InteractionCursor>.Instance.ClearForcedCursorType(); Singleton<ViewManager>.Instance.Controller.SwitchToControlMode(Singleton<BoardManager>.Instance.DefaultViewMode, false); Singleton<ViewManager>.Instance.Controller.LockState = (ViewLockState)0; } private void CardSelected(CardSlot slot) { recentlySelected = slot; } private void InvalidTargetSelected(CardSlot slot) { } private void CursotEnteredSlot(CardSlot slot) { //IL_007f: Unknown result type (might be due to invalid IL or missing references) //IL_0090: Unknown result type (might be due to invalid IL or missing references) //IL_002f: Unknown result type (might be due to invalid IL or missing references) if ((Object)(object)instanceTarget != (Object)null) { GameObject inst = instanceTarget; Tween.LocalScale(inst.transform, Vector3.zero, 0.1f, 0f, Tween.EaseIn, (LoopType)0, (Action)null, (Action)delegate { Object.Destroy((Object)(object)inst); }, true); } GameObject val = Object.Instantiate<GameObject>(target, ((Component)slot).transform); val.transform.localPosition = new Vector3(0f, 0.25f, 0f); val.transform.localRotation = Quaternion.identity; instanceTarget = val; } } public class GemRevive : AbilityBehaviour { public static Ability ability; public static List<Ability> MoxAbilitiesForNecro = new List<Ability> { (Ability)43, (Ability)42, (Ability)40, (Ability)39, (Ability)37, (Ability)38, (Ability)64, ShieldSkeletons.ability, RandomMoxAbility.ability }; private List<CardInfo> cardlist2 = CardLoader.GetUnlockedCards((CardMetaCategory)0, (CardTemple)1).ToList(); private List<GemType> GemsAvailable = new List<GemType> { (GemType)0, (GemType)1, (GemType)2 }; public override Ability Ability => ability; public override IEnumerator OnOtherCardDie(PlayableCard card, CardSlot deathSlot, bool fromCombat, PlayableCard killer) { if (!((Object)((Card)card).Info).name.Contains("Skeleton") && ((AbilityBehaviour)this).Card.OnBoard) { Random RNG = new Random(); int randomNum = RNG.Next(MoxAbilitiesForNecro.Count - 1); int randomNum2 = RNG.Next(cardlist2.Count - 1); CardInfo randomcard = cardlist2[randomNum2]; Ability ability = MoxAbilitiesForNecro[randomNum]; CardModificationInfo info = new CardModificationInfo(); info.abilities.Add(ability); yield return ((AbilityBehaviour)this).PreSuccessfulTriggerSequence(); yield return (object)new WaitForSeconds(0.3f); yield return Singleton<BoardManager>.Instance.CreateCardInSlot(randomcard, deathSlot, 0.1f, true); if ((Object)(object)deathSlot.Card != (Object)null) { ((Card)deathSlot.Card).Anim.PlayTransformAnimation(); deathSlot.Card.AddTemporaryMod(info); } yield return ((AbilityBehaviour)this).LearnAbility(0.5f); } } public override bool RespondsToOtherCardDie(PlayableCard card, CardSlot deathSlot, bool fromCombat, PlayableCard killer) { return true; } } public class SideHealing : AbilityBehaviour { public static Ability ability; public override Ability Ability => ability; public override bool RespondsToUpkeep(bool playerUpkeep) { return ((AbilityBehaviour)this).Card.OpponentCard != playerUpkeep; } public override IEnumerator OnUpkeep(bool playerUpkeep) { yield return ((AbilityBehaviour)this).PreSuccessfulTriggerSequence(); foreach (CardSlot slot in Singleton<BoardManager>.Instance.GetAdjacentSlots(((AbilityBehaviour)this).Card.Slot)) { if (slot.Card.Status.damageTaken > 0 && (Object)(object)slot.Card != (Object)null) { slot.Card.HealDamage(1); } } yield return ((AbilityBehaviour)this).LearnAbility(0.25f); } } public class Hooker : AbilityBehaviour { public static Ability ability; public override Ability Ability => ability; public override IEnumerator OnResolveOnBoard() { if ((Object)(object)CardExtensions.OpposingSlot(((AbilityBehaviour)this).Card).Card != (Object)null && !((Card)CardExtensions.OpposingSlot(((AbilityBehaviour)this).Card).Card).Info.traits.Contains((Trait)16)) { yield return ((AbilityBehaviour)this).PreSuccessfulTriggerSequence(); yield return ((AbilityBehaviour)this).Card.Die(false, (PlayableCard)null, true); yield return (object)new WaitForSeconds(0.51f); PlayableCard targetCard = ((AbilityBehaviour)this).Card.slot.opposingSlot.Card; targetCard.SetIsOpponentCard(false); Transform transform = ((Component)targetCard).transform; transform.eulerAngles += new Vector3(0f, 0f, -180f); yield return Singleton<BoardManager>.Instance.AssignCardToSlot(targetCard, ((AbilityBehaviour)this).Card.slot, 0.33f, (Action)null, true); if (((Card)targetCard).FaceDown) { ((Card)targetCard).SetFaceDown(false, false); targetCard.UpdateFaceUpOnBoardEffects(); } yield return (object)new WaitForSeconds(0.66f); if (targetCard.Status != null && targetCard.Status.anglerHooked) { AchievementManager.Unlock((Achievement)16); } yield return ((AbilityBehaviour)this).LearnAbility(0.25f); } else { yield return Singleton<TextDisplayer>.Instance.ShowUntilInput("But there was no Target!", -2.5f, 0.5f, (Emotion)0, (LetterAnimation)0, (Speaker)0, (string[])null, true); } } public override bool RespondsToResolveOnBoard() { return ((AbilityBehaviour)this).Card.OnBoard && Object.op_Implicit((Object)(object)((AbilityBehaviour)this).Card.slot) && Object.op_Implicit((Object)(object)((AbilityBehaviour)this).Card.slot.opposingSlot) && Object.op_Implicit((Object)(object)((AbilityBehaviour)this).Card.slot.opposingSlot.Card) && !CardExtensions.HasTrait(((AbilityBehaviour)this).Card.slot.opposingSlot.Card, (Trait)14); } } public class IceStrafe : Strafe { public static Ability ability; public override Ability Ability => ability; public override IEnumerator PostSuccessfulMoveSequence(CardSlot cardSlot) { PlayableCard val2 = (cardSlot.Card = null); if (Object.op_Implicit((Object)(object)val2)) { yield return Singleton<BoardManager>.Instance.CreateCardInSlot(CardRelatedExtension.GetCardInfo("arackulele.inscryption.grimoramod_FrostSpiritIce"), cardSlot, 0.1f, true); } } } public class MeteorStrike : AbilityBehaviour { public static Ability ability; public override Ability Ability => ability; public override bool RespondsToResolveOnBoard() { return true; } public override IEnumerator OnResolveOnBoard() { if (((Card)((AbilityBehaviour)this).Card).Info.traits.Contains((Trait)14) || ((Card)((AbilityBehaviour)this).Card).Info.traits.Contains((Trait)12)) { yield break; } foreach (CardSlot slot in Singleton<BoardManager>.Instance.OpponentSlotsCopy) { if ((Object)(object)slot.Card != (Object)null) { yield return slot.Card.TakeDamage(2, (PlayableCard)null); } } } } public class Mitosis : AbilityBehaviour { public static Ability ability; public override Ability Ability => ability; public override IEnumerator OnDie(bool wasSacrifice, PlayableCard killer) { yield return ((AbilityBehaviour)this).PreSuccessfulTriggerSequence(); yield return (object)new WaitForSeconds(0.3f); string text = "arackulele.inscryption.grimoramod_Zombosis"; if (((Card)((AbilityBehaviour)this).Card).Info.iceCubeParams != null && (Object)(object)((Card)((AbilityBehaviour)this).Card).Info.iceCubeParams.creatureWithin != (Object)null) { text = ((Object)((Card)((AbilityBehaviour)this).Card).Info.iceCubeParams.creatureWithin).name; } yield return Singleton<BoardManager>.Instance.CreateCardInSlot(CardLoader.GetCardByName(text), ((AbilityBehaviour)this).Card.Slot, 0.15f, true); yield return ((AbilityBehaviour)this).LearnAbility(0.5f); } public override bool RespondsToDie(bool wasSacrifice, PlayableCard killer) { return true; } } public class MoxConstructor : ActivatedAbilityBehaviour { public static Ability ability; public static List<Ability> AbiltyList = new List<Ability> { (Ability)44, (Ability)104, (Ability)14, (Ability)33, DrawCardOnKill.ability, IceStrafe.ability }; public static GameObject target; private CardSlot recentlySelected; private GameObject instanceTarget; public override Ability Ability => ability; public override int EnergyCost => 3; public override IEnumerator Activate() { if ((Object)(object)target == (Object)null) { target = ResourceBank.Get<GameObject>("Prefabs/Cards/SpecificCardModels/CannonTargetIcon"); } Singleton<ViewManager>.Instance.Controller.SwitchToControlMode(Singleton<BoardManager>.Instance.ChoosingSlotViewMode, false); Singleton<ViewManager>.Instance.Controller.LockState = (ViewLockState)1; Singleton<InteractionCursor>.Instance.ForceCursorType((CursorType)16); BoardManager instance = Singleton<BoardManager>.Instance; List<CardSlot> playerSlots = Singleton<BoardManager>.Instance.PlayerSlotsCopy; List<CardSlot> playerSlotsWithCards = Singleton<BoardManager>.Instance.PlayerSlotsCopy.FindAll((CardSlot x) => ((Object)(object)x.Card != (Object)null && ((Card)x.Card).Info.Abilities.Contains((Ability)39) && !((Object)((Card)x.Card).Info).name.Contains(((Object)((Card)((AbilityBehaviour)this).Card).Info).name)) || ((Object)(object)x.Card != (Object)null && ((Card)x.Card).Info.Abilities.Contains((Ability)37) && !((Object)((Card)x.Card).Info).name.Contains(((Object)((Card)((AbilityBehaviour)this).Card).Info).name)) || ((Object)(object)x.Card != (Object)null && ((Card)x.Card).Info.Abilities.Contains((Ability)38) && !((Object)((Card)x.Card).Info).name.Contains(((Object)((Card)((AbilityBehaviour)this).Card).Info).name)) || ((Object)(object)x.Card != (Object)null && ((Card)x.Card).Info.Abilities.Contains((Ability)44) && !((Object)((Card)x.Card).Info).name.Contains(((Object)((Card)((AbilityBehaviour)this).Card).Info).name))); yield return instance.ChooseTarget(playerSlots, playerSlotsWithCards, (Action<CardSlot>)CardSelected, (Action<CardSlot>)InvalidTargetSelected, (Action<CardSlot>)CursotEnteredSlot, (Func<bool>)(() => false), (CursorType)16); if ((Object)(object)instanceTarget != (Object)null && Tools.GetActAsInt() == 1) { Tween.LocalScale(instanceTarget.transform, Vector3.zero, 0.1f, 0f, Tween.EaseIn, (LoopType)0, (Action)null, (Action)delegate { Object.Destroy((Object)(object)instanceTarget); }, true); } if ((Object)(object)recentlySelected != (Object)null) { if ((Object)(object)recentlySelected.Card != (Object)null && ((Card)recentlySelected.Card).Info.Abilities.Contains((Ability)39)) { Random RNG = new Random(); int randomNum = RNG.Next(AbiltyList.Count - 1); CardModificationInfo info2 = new CardModificationInfo(); info2.abilities.Add(AbiltyList[randomNum]); ((Card)((AbilityBehaviour)this).Card).Anim.PlayTransformAnimation(); ((AbilityBehaviour)this).Card.AddTemporaryMod(info2); yield return recentlySelected.Card.Die(false, (PlayableCard)null, true); Object.Destroy((Object)(object)instanceTarget); } if ((Object)(object)recentlySelected.Card != (Object)null && ((Card)recentlySelected.Card).Info.Abilities.Contains((Ability)38)) { CardModificationInfo info3 = new CardModificationInfo(1, 0); ((Card)((AbilityBehaviour)this).Card).Anim.PlayTransformAnimation(); ((AbilityBehaviour)this).Card.AddTemporaryMod(info3); yield return recentlySelected.Card.Die(false, (PlayableCard)null, true); Object.Destroy((Object)(object)instanceTarget); } if ((Object)(object)recentlySelected.Card != (Object)null && ((Card)recentlySelected.Card).Info.Abilities.Contains((Ability)37)) { CardModificationInfo info = new CardModificationInfo(0, 1); ((Card)((AbilityBehaviour)this).Card).Anim.PlayTransformAnimation(); ((AbilityBehaviour)this).Card.AddTemporaryMod(info); yield return recentlySelected.Card.Die(false, (PlayableCard)null, true); Object.Destroy((Object)(object)instanceTarget); } } Singleton<InteractionCursor>.Instance.ClearForcedCursorType(); Singleton<ViewManager>.Instance.Controller.SwitchToControlMode(Singleton<BoardManager>.Instance.DefaultViewMode, false); Singleton<ViewManager>.Instance.Controller.LockState = (ViewLockState)0; } private void CardSelected(CardSlot slot) { recentlySelected = slot; } private void InvalidTargetSelected(CardSlot slot) { } private void CursotEnteredSlot(CardSlot slot) { //IL_007f: Unknown result type (might be due to invalid IL or missing references) //IL_0090: Unknown result type (might be due to invalid IL or missing references) //IL_002f: Unknown result type (might be due to invalid IL or missing references) if ((Object)(object)instanceTarget != (Object)null) { GameObject inst = instanceTarget; Tween.LocalScale(inst.transform, Vector3.zero, 0.1f, 0f, Tween.EaseIn, (LoopType)0, (Action)null, (Action)delegate { Object.Destroy((Object)(object)inst); }, true); } GameObject val = Object.Instantiate<GameObject>(target, ((Component)slot).transform); val.transform.localPosition = new Vector3(0f, 0.25f, 0f); val.transform.localRotation = Quaternion.identity; instanceTarget = val; } } public class RageAbility : AbilityBehaviour { public static Ability ability; public override Ability Ability => ability; public override bool RespondsToTakeDamage(PlayableCard source) { return true; } public override IEnumerator OnTakeDamage(PlayableCard source) { yield return ((AbilityBehaviour)this).PreSuccessfulTriggerSequence(); ((Card)((AbilityBehaviour)this).Card).Anim.PlayTransformAnimation(); ((AbilityBehaviour)this).Card.temporaryMods.Add(new CardModificationInfo(1, 0)); yield return ((AbilityBehaviour)this).LearnAbility(0.1f); } } public class RandomMoxAbility : AbilityBehaviour { public static Ability ability; public override Ability Ability => ability; public override bool RespondsToDrawn() { return true; } public override IEnumerator OnDrawn() { PlayerHand instance = Singleton<PlayerHand>.Instance; ((PlayerHand3D)((instance is PlayerHand3D) ? instance : null)).MoveCardAboveHand(((AbilityBehaviour)this).Card); yield return ((AbilityBehaviour)this).Card.FlipInHand((Action)AddMod); yield return ((AbilityBehaviour)this).LearnAbility(0.5f); } private void AddMod() { //IL_0012: 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_0057: Unknown result type (might be due to invalid IL or missing references) //IL_0058: Unknown result type (might be due to invalid IL or missing references) //IL_005e: Expected O, but got Unknown ((AbilityBehaviour)this).Card.Status.hiddenAbilities.Add(((AbilityBehaviour)this).Ability); List<Ability> list = new List<Ability> { (Ability)39, (Ability)37, (Ability)38 }; Random random = new Random(); Ability val = list[random.Next(list.Count)]; CardModificationInfo val2 = new CardModificationInfo(val); CardModificationInfo val3 = ((AbilityBehaviour)this).Card.TemporaryMods.Find((CardModificationInfo x) => x.HasAbility(((AbilityBehaviour)this).Ability)); if (val3 == null) { val3 = ((Card)((AbilityBehaviour)this).Card).Info.Mods.Find((CardModificationInfo x) => x.HasAbility(((AbilityBehaviour)this).Ability)); } if (val3 != null) { val2.fromTotem = val3.fromTotem; val2.fromCardMerge = val3.fromCardMerge; } ((AbilityBehaviour)this).Card.AddTemporaryMod(val2); } } public class SatanCircle : AbilityBehaviour { public static Ability ability; public override Ability Ability => ability; public override bool RespondsToResolveOnBoard() { return (Object)(object)Singleton<ConduitCircuitManager>.Instance == (Object)null; } public override IEnumerator OnResolveOnBoard() { TryCreateConduitManager(); yield break; } protected void TryCreateConduitManager() { if ((Object)(object)Singleton<ConduitCircuitManager>.Instance == (Object)null) { ((Component)Singleton<BoardManager>.Instance).gameObject.AddComponent<ConduitCircuitManager>(); } } } public class SatanCircleSpawner : SatanCircle { public override Ability Ability => SatanCircle.ability; public override IEnumerator OnTurnEnd(bool playerTurnEnd) { List<CardInfo> cardlist = new List<CardInfo> { CardLoader.GetCardByName("GrimmificcusSkeletonGreen"), CardLoader.GetCardByName("GrimmificcusSkeletonOrange"), CardLoader.GetCardByName("GrimmificcusSkeletonBlue"), CardLoader.GetCardByName("Skeleton"), CardLoader.GetCardByName("Zombie") }; Random random = new Random(); CardInfo randomcard = cardlist[random.Next(cardlist.Count)]; List<CardSlot> slots = Singleton<BoardManager>.Instance.AllSlots; CardSlot randomslot = slots[random.Next(slots.Count)]; bool successfulTriggerShown = false; List<CardSlot> list = (((AbilityBehaviour)this).Card.OpponentCard ? Singleton<BoardManager>.Instance.OpponentSlotsCopy : Singleton<BoardManager>.Instance.PlayerSlotsCopy); foreach (CardSlot slot in list) { if ((Object)(object)slot.Card == (Object)null && Singleton<ConduitCircuitManager>.Instance.GetConduitsForSlot(slot).Contains(((AbilityBehaviour)this).Card)) { Singleton<ViewManager>.Instance.SwitchToView((View)4, false, false); yield return (object)new WaitForSeconds(0.05f); if (!successfulTriggerShown) { yield return ((AbilityBehaviour)this).PreSuccessfulTriggerSequence(); } successfulTriggerShown = true; yield return Singleton<BoardManager>.Instance.CreateCardInSlot(randomcard, randomslot, 0.15f, true); yield return ((AbilityBehaviour)this).LearnAbility(0.5f); } } yield return (object)new WaitForSeconds(0.2f); } } public class SealBreak : AbilityBehaviour { public static Ability ability; public override Ability Ability => ability; public override IEnumerator OnDie(bool wasSacrifice, PlayableCard killer) { yield return ((AbilityBehaviour)this).PreSuccessfulTriggerSequence(); yield return (object)new WaitForSeconds(0.3f); yield return Singleton<BoardManager>.Instance.CreateCardInSlot(CardLoader.GetCardByName("arackulele.inscryption.grimoramod_TrueOuroboros"), ((AbilityBehaviour)this).Card.Slot, 0.15f, true); yield return ((AbilityBehaviour)this).LearnAbility(0.5f); } public override bool RespondsToDie(bool wasSacrifice, PlayableCard killer) { return true; } } public class ShieldSkeletons : AbilityBehaviour { public static Ability ability; public override Ability Ability => ability; public override bool RespondsToResolveOnBoard() { return true; } public override IEnumerator OnResolveOnBoard() { List<CardSlot> list = (((AbilityBehaviour)this).Card.OpponentCard ? Singleton<BoardManager>.Instance.OpponentSlotsCopy : Singleton<BoardManager>.Instance.PlayerSlotsCopy); List<CardSlot> validSlots = list.FindAll((CardSlot x) => (Object)(object)x.Card != (Object)null && ((Card)x.Card).Info.HasAbility((Ability)43)); if (validSlots.Count > 0) { yield return (object)new WaitForSeconds(0.25f); ((Card)((AbilityBehaviour)this).Card).Anim.LightNegationEffect(); yield return (object)new WaitForSeconds(0.1f); List<PlayableCard> validCards = new List<PlayableCard>(); validSlots.ForEach(delegate(CardSlot x) { validCards.Add(x.Card); }); ShieldGeneratorItem.AddShieldsToCards(validCards, validSlots); yield return (object)new WaitForSeconds(0.25f); yield return ((AbilityBehaviour)this).LearnAbility(0f); } } } public class GrimoraMoxModule : MonoBehaviour { public GameObject MoxModule; public GameObject GreenMox; public GameObject BlueMox; public GameObject OrangeMox; public ParticleSystem GreenSpark; public ParticleSystem GreenArm; public ParticleSystem BlueSpark; public ParticleSystem BlueArm; public ParticleSystem OrangeSpark; public ParticleSystem OrangeArm; public Material GreenMat; public Material GreenRockMat; public bool GreenEnabled = false; public Material BlueMat; public Material BlueRockMat; public bool BlueEnabled = false; public Material OrangeMat; public Material OrangeRockMat; public bool OrangeEnabled = false; public bool addedMats = false; public void Start() { } public void FixedUpdate() { if (!addedMats) { MoxModule = ((Component)((Component)this).gameObject.transform.Find("MoxModule")).gameObject; GreenMox = ((Component)MoxModule.transform.Find("GreenMoxModule").Find("GreenMox")).gameObject; BlueMox = ((Component)MoxModule.transform.Find("BlueMoxModule").Find("BlueMox")).gameObject; OrangeMox = ((Component)MoxModule.transform.Find("OrangeMoxModule").Find("OrangeMox")).gameObject; GreenMat = ((Renderer)((Component)GreenMox.transform.Find("GemGreen")).gameObject.GetComponent<MeshRenderer>()).material; GreenRockMat = ((Renderer)((Component)GreenMox.transform.Find("GemGreenRock")).gameObject.GetComponent<MeshRenderer>()).material; BlueMat = ((Renderer)((Component)BlueMox.transform.Find("GemBlue")).gameObject.GetComponent<MeshRenderer>()).material; BlueRockMat = ((Renderer)((Component)BlueMox.transform.Find("GemBlueRock")).gameObject.GetComponent<MeshRenderer>()).material; OrangeMat = ((Renderer)((Component)OrangeMox.transform.Find("GemOrange")).gameObject.GetComponent<MeshRenderer>()).material; OrangeRockMat = ((Renderer)((Component)OrangeMox.transform.Find("GemOrangeRock")).gameObject.GetComponent<MeshRenderer>()).material; GreenSpark = ((Component)MoxModule.transform.Find("GreenMoxModule").Find("SparkGreen")).gameObject.GetComponent<ParticleSystem>(); GreenArm = ((Component)MoxModule.transform.Find("GreenMoxModule").Find("ArmGreen")).gameObject.GetComponent<ParticleSystem>(); BlueSpark = ((Component)MoxModule.transform.Find("BlueMoxModule").Find("SparkBlue")).gameObject.GetComponent<ParticleSystem>(); BlueArm = ((Component)MoxModule.transform.Find("BlueMoxModule").Find("ArmBlue")).gameObject.GetComponent<ParticleSystem>(); OrangeSpark = ((Component)MoxModule.transform.Find("OrangeMoxModule").Find("SparkOrange")).gameObject.GetComponent<ParticleSystem>(); OrangeArm = ((Component)MoxModule.transform.Find("OrangeMoxModule").Find("ArmOrange")).gameObject.GetComponent<ParticleSystem>(); GreenMat.DisableKeyword("_EMISSION"); GreenRockMat.DisableKeyword("_EMISSION"); BlueMat.DisableKeyword("_EMISSION"); BlueRockMat.DisableKeyword("_EMISSION"); OrangeMat.DisableKeyword("_EMISSION"); OrangeRockMat.DisableKeyword("_EMISSION"); addedMats = true; } if (Singleton<ResourcesManager>.Instance.HasGem((GemType)0)) { if (!GreenEnabled) { GreenMat.EnableKeyword("_EMISSION"); GreenRockMat.EnableKeyword("_EMISSION"); GreenSpark.Play(); GreenArm.Play(); GreenEnabled = true; } } else if (GreenEnabled) { GreenMat.DisableKeyword("_EMISSION"); GreenRockMat.DisableKeyword("_EMISSION"); GreenSpark.Stop(); GreenArm.Stop(); GreenEnabled = false; } if (Singleton<ResourcesManager>.Instance.HasGem((GemType)2)) { if (!BlueEnabled) { BlueMat.EnableKeyword("_EMISSION"); BlueRockMat.EnableKeyword("_EMISSION"); BlueSpark.Play(); BlueArm.Play(); BlueEnabled = true; } } else if (BlueEnabled) { BlueMat.DisableKeyword("_EMISSION"); BlueRockMat.DisableKeyword("_EMISSION"); BlueSpark.Stop(); BlueArm.Stop(); BlueEnabled = false; } if (Singleton<ResourcesManager>.Instance.HasGem((GemType)1)) { if (!OrangeEnabled) { OrangeMat.EnableKeyword("_EMISSION"); OrangeRockMat.EnableKeyword("_EMISSION"); OrangeSpark.Play(); OrangeArm.Play(); OrangeEnabled = true; } } else if (OrangeEnabled) { OrangeMat.DisableKeyword("_EMISSION"); OrangeRockMat.DisableKeyword("_EMISSION"); OrangeSpark.Stop(); OrangeArm.Stop(); OrangeEnabled = false; } } } [BepInPlugin("Cevin_2006.Inscryption.CevinsGrimoraExpansion", "CevinsGrimoraExpansion", "0.0.2")] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] public class Plugin : BaseUnityPlugin { public class CustomAppearences { public static Appearance GreenOrangeEmission; public static Appearance OrangeBlueEmission; public static Appearance BlueGreenEmission; public static Appearance TriEmission; public static Appearance MoxCardback; public static void Addappearences() { //IL_001a: Unknown result type (might be due to invalid IL or missing references) //IL_001f: Unknown result type (might be due to invalid IL or missing references) //IL_003d: Unknown result type (might be due to invalid IL or missing references) //IL_0042: Unknown result type (might be due to invalid IL or missing references) //IL_0060: Unknown result type (might be due to invalid IL or missing references) //IL_0065: 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_0088: Unknown result type (might be due to invalid IL or missing references) //IL_00a6: 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) GreenOrangeEmission = CardAppearanceBehaviourManager.Add("Cevin_2006.Inscryption.CevinsGrimoraExpansion", "GreenOrangeEmission", typeof(GreenOrangeGlow)).Id; OrangeBlueEmission = CardAppearanceBehaviourManager.Add("Cevin_2006.Inscryption.CevinsGrimoraExpansion", "OrangeBlueEmission", typeof(OrangeBlueGlow)).Id; BlueGreenEmission = CardAppearanceBehaviourManager.Add("Cevin_2006.Inscryption.CevinsGrimoraExpansion", "BlueGreenEmission", typeof(BlueGreenGlow)).Id; TriEmission = CardAppearanceBehaviourManager.Add("Cevin_2006.Inscryption.CevinsGrimoraExpansion", "TriEmission", typeof(TriMoxGlow)).Id; MoxCardback = CardAppearanceBehaviourManager.Add("Cevin_2006.Inscryption.CevinsGrimoraExpansion", "MoxCardback", typeof(MoxCardback)).Id; } } public class MoxCardback : CardAppearanceBehaviour { public override void ApplyAppearance() { if (((CardAppearanceBehaviour)this).Card.Info.metaCategories.Contains((CardMetaCategory)3)) { ((CardAppearanceBehaviour)this).Card.renderInfo.baseTextureOverride = (Texture)(object)Tools.LoadTexture("MoxGraveStoneRare"); } else { ((CardAppearanceBehaviour)this).Card.renderInfo.baseTextureOverride = (Texture)(object)Tools.LoadTexture("MoxGraveStone"); } } } public class GreenOrangeGlow : CardAppearanceBehaviour { public override void ApplyAppearance() { //IL_0022: Unknown result type (might be due to invalid IL or missing references) ((CardAppearanceBehaviour)this).Card.renderInfo.forceEmissivePortrait = true; ((CardAppearanceBehaviour)this).Card.StatsLayer.SetEmissionColor(GameColors.Instance.darkLimeGreen); TweenGreenToOrange(); } private void TweenGreenToOrange() { //IL_001b: Unknown result type (might be due to invalid IL or missing references) Tween.ShaderColor(((CardAppearanceBehaviour)this).Card.StatsLayer.Material, "_EmissionColor", GameColors.Instance.darkLimeGreen, 0.5f, 0f, Tween.EaseInOut, (LoopType)0, (Action)null, (Action)TweenOrangeToGreen, true); } private void TweenOrangeToGreen() { //IL_001b: Unknown result type (might be due to invalid IL or missing references) Tween.ShaderColor(((CardAppearanceBehaviour)this).Card.StatsLayer.Material, "_EmissionColor", GameColors.Instance.brightRed, 0.5f, 0f, Tween.EaseInOut, (LoopType)0, (Action)null, (Action)TweenGreenToOrange, true); } public override void ResetAppearance() { //IL_0022: Unknown result type (might be due to invalid IL or missing references) ((CardAppearanceBehaviour)this).Card.RenderInfo.forceEmissivePortrait = false; ((CardAppearanceBehaviour)this).Card.StatsLayer.SetEmissionColor(GameColors.instance.glowSeafoam); Tween.Stop(((Object)((CardAppearanceBehaviour)this).Card.StatsLayer.Material).GetInstanceID()); } } public class OrangeBlueGlow : CardAppearanceBehaviour { public override void ApplyAppearance() { //IL_0022: Unknown result type (might be due to invalid IL or missing references) ((CardAppearanceBehaviour)this).Card.renderInfo.forceEmissivePortrait = true; ((CardAppearanceBehaviour)this).Card.StatsLayer.SetEmissionColor(GameColors.Instance.brightRed); TweenOrangeToBlue(); } private void TweenOrangeToBlue() { //IL_001b: Unknown result type (might be due to invalid IL or missing references) Tween.ShaderColor(((CardAppearanceBehaviour)this).Card.StatsLayer.Material, "_EmissionColor", GameColors.Instance.brightRed, 0.5f, 0f, Tween.EaseInOut, (LoopType)0, (Action)null, (Action)TweenBlueToOrange, true); } private void TweenBlueToOrange() { //IL_001b: Unknown result type (might be due to invalid IL or missing references) Tween.ShaderColor(((CardAppearanceBehaviour)this).Card.StatsLayer.Material, "_EmissionColor", GameColors.Instance.blue, 0.5f, 0f, Tween.EaseInOut, (LoopType)0, (Action)null, (Action)TweenOrangeToBlue, true); } public override void ResetAppearance() { //IL_0022: Unknown result type (might be due to invalid IL or missing references) ((CardAppearanceBehaviour)this).Card.RenderInfo.forceEmissivePortrait = false; ((CardAppearanceBehaviour)this).Card.StatsLayer.SetEmissionColor(GameColors.instance.glowSeafoam); Tween.Stop(((Object)((CardAppearanceBehaviour)this).Card.StatsLayer.Material).GetInstanceID()); } } public class BlueGreenGlow : CardAppearanceBehaviour { public override void ApplyAppearance() { //IL_0076: Unknown result type (might be due to invalid IL or missing references) if (((CardAppearanceBehaviour)this).Card.Info.metaCategories.Contains((CardMetaCategory)3)) { ((CardAppearanceBehaviour)this).Card.renderInfo.baseTextureOverride = (Texture)(object)Tools.LoadTexture("MoxGraveStoneRare"); } else { ((CardAppearanceBehaviour)this).Card.renderInfo.baseTextureOverride = (Texture)(object)Tools.LoadTexture("MoxGraveStone"); } ((CardAppearanceBehaviour)this).Card.renderInfo.forceEmissivePortrait = true; ((CardAppearanceBehaviour)this).Card.StatsLayer.SetEmissionColor(GameColors.Instance.blue); TweenBlueToGreen(); } private void TweenBlueToGreen() { //IL_001b: Unknown result type (might be due to invalid IL or missing references) Tween.ShaderColor(((CardAppearanceBehaviour)this).Card.StatsLayer.Material, "_EmissionColor", GameColors.Instance.blue, 0.5f, 0f, Tween.EaseInOut, (LoopType)0, (Action)null, (Action)TweenGreenToBlue, true); } private void TweenGreenToBlue() { //IL_001b: Unknown result type (might be due to invalid IL or missing references) Tween.ShaderColor(((CardAppearanceBehaviour)this).Card.StatsLayer.Material, "_EmissionColor", GameColors.Instance.darkLimeGreen, 0.5f, 0f, Tween.EaseInOut, (LoopType)0, (Action)null, (Action)TweenBlueToGreen, true); } public override void ResetAppearance() { //IL_0076: Unknown result type (might be due to invalid IL or missing references) if (((CardAppearanceBehaviour)this).Card.Info.metaCategories.Contains((CardMetaCategory)3)) { ((CardAppearanceBehaviour)this).Card.renderInfo.baseTextureOverride = (Texture)(object)Tools.LoadTexture("MoxGraveStoneRare"); } else { ((CardAppearanceBehaviour)this).Card.renderInfo.baseTextureOverride = (Texture)(object)Tools.LoadTexture("MoxGraveStone"); } ((CardAppearanceBehaviour)this).Card.RenderInfo.forceEmissivePortrait = false; ((CardAppearanceBehaviour)this).Card.StatsLayer.SetEmissionColor(GameColors.instance.glowSeafoam); Tween.Stop(((Object)((CardAppearanceBehaviour)this).Card.StatsLayer.Material).GetInstanceID()); } } public class TriMoxGlow : CardAppearanceBehaviour { public override void ApplyAppearance() { //IL_0022: Unknown result type (might be due to invalid IL or missing references) ((CardAppearanceBehaviour)this).Card.renderInfo.forceEmissivePortrait = true; ((CardAppearanceBehaviour)this).Card.StatsLayer.SetEmissionColor(GameColors.Instance.brightRed); TriMox(); } private void TriMox() { //IL_001b: Unknown result type (might be due to invalid IL or missing references) Tween.ShaderColor(((CardAppearanceBehaviour)this).Card.StatsLayer.Material, "_EmissionColor", GameColors.Instance.blue, 0.5f, 0f, Tween.EaseInOut, (LoopType)0, (Action)null, (Action)TriMox2, true); } private void TriMox2() { //IL_001b: Unknown result type (might be due to invalid IL or missing references) Tween.ShaderColor(((CardAppearanceBehaviour)this).Card.StatsLayer.Material, "_EmissionColor", GameColors.Instance.darkLimeGreen, 0.5f, 0f, Tween.EaseInOut, (LoopType)0, (Action)null, (Action)TriMox3, true); } private void TriMox3() { //IL_001b: Unknown result type (might be due to invalid IL or missing references) Tween.ShaderColor(((CardAppearanceBehaviour)this).Card.StatsLayer.Material, "_EmissionColor", GameColors.Instance.brightRed, 0.5f, 0f, Tween.EaseInOut, (LoopType)0, (Action)null, (Action)TriMox, true); } public override void ResetAppearance() { //IL_0022: Unknown result type (might be due to invalid IL or missing references) ((CardAppearanceBehaviour)this).Card.RenderInfo.forceEmissivePortrait = false; ((CardAppearanceBehaviour)this).Card.StatsLayer.SetEmissionColor(GameColors.instance.glowSeafoam); Tween.Stop(((Object)((CardAppearanceBehaviour)this).Card.StatsLayer.Material).GetInstanceID()); } } public class Patches { [HarmonyPatch(typeof(RareCardBackground), "ApplyAppearance")] public class CardAppearanceBehaviourPatch { [HarmonyPrefix] public static bool CorrectBehaviourForGrimora(ref RareCardBackground __instance) { //IL_0023: Unknown result type (might be due to invalid IL or missing references) //IL_00ad: Unknown result type (might be due to invalid IL or missing references) //IL_00b2: Unknown result type (might be due to invalid IL or missing references) if (GrimoraSaveUtil.IsNotGrimoraModRun) { return true; } if (((CardAppearanceBehaviour)__instance).Card.Info.appearanceBehaviour.Contains(CustomAppearences.MoxCardback)) { GravestoneRenderStatsLayer componentInChildren = ((Component)((CardAppearanceBehaviour)__instance).Card).GetComponentInChildren<GravestoneRenderStatsLayer>(); if ((Object)(object)componentInChildren != (Object)null) { if (((CardAppearanceBehaviour)__instance).Card.Info.metaCategories.Contains((CardMetaCategory)3)) { UnityObjectExtensions.SetAlbedoTexture(((RenderStatsLayer)componentInChildren).Material, (Texture)(object)Tools.LoadTexture("MoxGraveStoneRare")); } else { UnityObjectExtensions.SetAlbedoTexture(((RenderStatsLayer)componentInChildren).Material, (Texture)(object)Tools.LoadTexture("MoxGraveStone")); } } return false; } ((CardAppearanceBehaviour)__instance).Card.renderInfo.defaultAbilityColor = Color.black; return true; } } [HarmonyPatch(typeof(GravestoneRenderStatsLayer), "RenderCard")] public static class MoxColoredEmissionsPatch { [HarmonyPostfix] public static void PrefixRessourceManager(GravestoneRenderStatsLayer __instance, ref CardRenderInfo info) { //IL_001f: Unknown result type (might be due to invalid IL or missing references) //IL_006d: Unknown result type (might be due to invalid IL or missing references) //IL_00b8: Unknown result type (might be due to invalid IL or missing references) if (info.baseInfo.Abilities.Contains((Ability)38)) { ((RenderStatsLayer)__instance).SetEmissionColor(GameColors.Instance.orange); CardExtensions.AddTraits(info.baseInfo, (Trait[])(object)new Trait[1] { (Trait)17 }); ((ManagedBehaviourBase)__instance).Update(); } else if (info.baseInfo.Abilities.Contains((Ability)39)) { ((RenderStatsLayer)__instance).SetEmissionColor(GameColors.Instance.blue); CardExtensions.AddTraits(info.baseInfo, (Trait[])(object)new Trait[1] { (Trait)17 }); ((ManagedBehaviourBase)__instance).Update(); } else if (info.baseInfo.Abilities.Contains((Ability)37)) { ((RenderStatsLayer)__instance).SetEmissionColor(GameColors.Instance.limeGreen); CardExtensions.AddTraits(info.baseInfo, (Trait[])(object)new Trait[1] { (Trait)17 }); ((ManagedBehaviourBase)__instance).Update(); } } } [HarmonyPatch(typeof(GrimoraGameFlowManager), "SceneSpecificInitialization")] public static class OnGameFlowManager_patch { [HarmonyPrefix] public static void Prefix() { //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_0010: Expected O, but got Unknown //IL_0015: Unknown result type (might be due to invalid IL or missing references) //IL_001f: Expected O, but got Unknown //IL_0038: Unknown result type (might be due to invalid IL or missing references) //IL_004c: Unknown result type (might be due to invalid IL or missing references) //IL_007a: Unknown result type (might be due to invalid IL or missing references) //IL_008e: Unknown result type (might be due to invalid IL or missing references) //IL_00bc: Unknown result type (might be due to invalid IL or missing references) //IL_00d0: Unknown result type (might be due to invalid IL or missing references) //IL_011a: Unknown result type (might be due to invalid IL or missing references) //IL_012e: Unknown result type (might be due to invalid IL or missing references) //IL_0164: Unknown result type (might be due to invalid IL or missing references) //IL_0178: Unknown result type (might be due to invalid IL or missing references) //IL_01b8: Unknown result type (might be due to invalid IL or missing references) //IL_01cc: Unknown result type (might be due to invalid IL or missing references) //IL_0234: Unknown result type (might be due to invalid IL or missing references) //IL_0255: Unknown result type (might be due to invalid IL or missing references) //IL_027b: Unknown result type (might be due to invalid IL or missing references) //IL_02b2: Unknown result type (might be due to invalid IL or missing references) //IL_02d3: Unknown result type (might be due to invalid IL or missing references) //IL_030a: Unknown result type (might be due to invalid IL or missing references) //IL_032b: Unknown result type (might be due to invalid IL or missing references) //IL_033b: Unknown result type (might be due to invalid IL or missing references) //IL_0342: Expected O, but got Unknown //IL_0358: Unknown result type (might be due to invalid IL or missing references) //IL_0379: Unknown result type (might be due to invalid IL or missing references) //IL_039a: Unknown result type (might be due to invalid IL or missing references) //IL_03bc: Unknown result type (might be due to invalid IL or missing references) //IL_03c3: Expected O, but got Unknown //IL_03d9: Unknown result type (might be due to invalid IL or missing references) //IL_03fa: Unknown result type (might be due to invalid IL or missing references) //IL_041b: Unknown result type (might be due to invalid IL or missing references) //IL_043d: Unknown result type (might be due to invalid IL or missing references) //IL_0444: Expected O, but got Unknown //IL_045a: Unknown result type (might be due to invalid IL or missing references) //IL_047b: Unknown result type (might be due to invalid IL or missing references) //IL_049c: Unknown result type (might be due to invalid IL or missing references) //IL_04ea: Unknown result type (might be due to invalid IL or missing references) Parent = new GameObject("Parent"); MagParent = new GameObject("MagParent"); GameObject val = Object.Instantiate<GameObject>(ResourceBank.Get<GameObject>("Art/Assets3D/WizardBattle/PracticeMage/ArcheryTarget"), new Vector3(38.2154f, 1.5766f, -43.2963f), Quaternion.Euler(0f, 320f, 0f), Parent.transform); GameObject val2 = Object.Instantiate<GameObject>(ResourceBank.Get<GameObject>("Prefabs/FinaleMagnificus/MarbleColumn"), new Vector3(-3.9745f, 4.7718f, 5.44f), Quaternion.Euler(0f, 240f, 0f), Parent.transform); GameObject val3 = Object.Instantiate<GameObject>(ResourceBank.Get<GameObject>("Prefabs/CabinIndoors/GooWizardBottle"), new Vector3(4.7481f, 5.0057f, 1.6509f), Quaternion.Euler(0f, 300f, 0f), Parent.transform); val3.SetActive(true); ((Object)val3).name = "GooBottle"; val3.SetActive(false); GameObject val4 = Object.Instantiate<GameObject>(ResourceBank.Get<GameObject>("Prefabs/FactoryIndoors/Gooplane3D/GooOrbSpawner"), new Vector3(0.1001f, 1.2882f, 5.2255f), Quaternion.Euler(0f, 300f, 0f), Parent.transform); val4.SetActive(true); GameObject val5 = Object.Instantiate<GameObject>(ResourceBank.Get<GameObject>("Prefabs/FactoryIndoors/Gooplane3D/GooOrbSpawner"), new Vector3(0.1001f, 1.2882f, 5.2255f), Quaternion.Euler(0f, 300f, 0f), Parent.transform); val5.SetActive(true); val4.SetActive(true); GameObject val6 = Object.Instantiate<GameObject>(ResourceBank.Get<GameObject>("Prefabs/Opponents/Magnificus/MagnificusAnim"), new Vector3(3.3819f, 1.2882f, 5.3819f), Quaternion.Euler(0f, 195.4337f, 1.1182f), MagParent.transform); val6.SetActive(true); ((Object)val6).name = "Magnificus"; val.SetActive(true); val2.SetActive(true); GameObject val7 = Object.Instantiate<GameObject>(MoxBundle.LoadAsset<GameObject>("DirtyGemEmerald")); val7.transform.localScale = new Vector3(0.09f, 0.09f, 0.09f); val7.transform.position = new Vector3(37.8863f, 2.3039f, -12.9416f); val7.transform.rotation = new Quaternion(7.7037f, 180.329f, 0f, 0f); GameObject val8 = Object.Instantiate<GameObject>(MoxBundle.LoadAsset<GameObject>("DirtyGemRuby")); val8.transform.localScale = new Vector3(0.09f, 0.09f, 0.09f); val8.transform.position = new Vector3(-47.0881f, 2.2675f, -39.9891f); GameObject val9 = Object.Instantiate<GameObject>(MoxBundle.LoadAsset<GameObject>("DirtyGemSapphire")); val9.transform.localScale = new Vector3(0.1f, 0.1f, 0.1f); val9.transform.position = new Vector3(-43.9718f, 3.373f, 29.0674f); GameObject val10 = new GameObject("GooParent2"); val10.transform.position = new Vector3(-75.84f, 7.76f, -26f); val10.transform.localScale = new Vector3(5f, 5f, 5f); val10.transform.rotation = Quaternion.Euler(0f, 180f, 0f); Object.Instantiate<GameObject>(GooWizard, val10.transform); GameObject val11 = new GameObject("LonelyParent2"); val11.transform.position = new Vector3(30.25f, 7.4691f, 65.6364f); val11.transform.localScale = new Vector3(3f, 3f, 3f); val11.transform.rotation = Quaternion.Euler(0f, 180f, 0f); Object.Instantiate<GameObject>(LonelyWizard, val11.transform); GameObject val12 = new GameObject("PikeParent2"); val12.transform.position = new Vector3(39.21f, 2.45f, -40f); val12.transform.localScale = new Vector3(5f, 5f, 5f); val12.transform.rotation = Quaternion.Euler(0f, 0f, 0f); Object.Instantiate<GameObject>(PikeWizard, val12.transform); GameObject val13 = Object.Instantiate<GameObject>(GrimoraMoxDrone, GameObject.Find("GameTable").transform); val13.transform.position = new Vector3(0.5295f, 0.8758f, 22.4786f); ((Object)val13).name = "TrueMoxModule"; val13.AddComponent<GrimoraMoxModule>(); } } [HarmonyPatch(typeof(Part1BossOpponent), "IntroSequence")] public class IntroPatches { [HarmonyPostfix] public static IEnumerator KayceeIntroPatch(IEnumerator enumerator, EncounterData encounter, Part1BossOpponent __instance) { GameObject GrimgorMox = ((Component)GameObject.Find("GameTable").transform.Find("TrueMoxModule")).gameObject; Tween.Position(GrimgorMox.transform, new Vector3(0.5295f, 4.3372f, 22.4786f), 3f, 0f, (AnimationCurve)null, (LoopType)0, (Action)null, (Action)null, true); if (Singleton<TurnManager>.Instance.SpecialSequencer is GrimoraModKayceeBossSequencer && Singleton<TurnManager>.Instance.SpecialSequencer != null) { GameObject GooParent = new GameObject("GooParent"); GooParent.transform.position = new Vector3(4.131f, 3.4737f, 4.7837f); GooParent.transform.localScale = new Vector3(3f, 3f, 3f); GooParent.transform.rotation = Quaternion.Euler(0f, 294.6954f, 1.1182f); Tween.Position(MagParent.transform, new Vector3(3.3819f, -1.2882f, 5.3819f), 1f, 0f, (AnimationCurve)null, (LoopType)0, (Action)null, (Action)null, true); new WaitForSeconds(1f); Object.Instantiate<GameObject>(GooWizard, GooParent.transform); GameObject background2 = Object.Instantiate<GameObject>(MoxBundle.LoadAsset<GameObject>("StarSurrounding")); Object.Instantiate<GameObject>(MoxBundle.LoadAsset<GameObject>("MoxGreen"), background2.transform); Tween.Position(GooParent.transform, new Vector3(3.4982f, 6.54f, 5.6f), 1f, 0f, (AnimationCurve)null, (LoopType)0, (Action)null, (Action)null, true); yield return GooSpeech(); } else if (Singleton<TurnManager>.Instance.SpecialSequencer is GrimoraModSawyerBossSequencer && Singleton<TurnManager>.Instance.SpecialSequencer != null) { GameObject LonelyParent = new GameObject("LonelyParent"); LonelyParent.transform.position = new Vector3(4.131f, 3.4737f, 4.7837f); LonelyParent.transform.localScale = new Vector3(2f, 2f, 2f); LonelyParent.transform.rotation = Quaternion.Euler(0f, 190f, 1.1182f); Tween.Position(MagParent.transform, new Vector3(3.3819f, -1.2882f, 5.3819f), 1f, 0f, (AnimationCurve)null, (LoopType)0, (Action)null, (Action)null, true); new WaitForSeconds(1f); Object.Instantiate<GameObject>(LonelyWizard, LonelyParent.transform); GameObject background3 = Object.Instantiate<GameObject>(MoxBundle.LoadAsset<GameObject>("StarSurrounding")); Object.Instantiate<GameObject>(MoxBundle.LoadAsset<GameObject>("MoxBlue"), background3.transform); Tween.Position(LonelyParent.transform, new Vector3(2.9382f, 6.2418f, 4.5745f), 1f, 0f, (AnimationCurve)null, (LoopType)0, (Action)null, (Action)null, true); yield return LonelySpeech(); } else if (Singleton<TurnManager>.Instance.SpecialSequencer is GrimoraModRoyalBossSequencer && Singleton<TurnManager>.Instance.SpecialSequencer != null) { GameObject PikeParent = new GameObject("PikeParent"); PikeParent.transform.position = new Vector3(4.131f, 1.4737f, 4.7837f); PikeParent.transform.localScale = new Vector3(3f, 3f, 3f); PikeParent.transform.rotation = Quaternion.Euler(0f, 294.6954f, 1.1182f); Tween.Position(MagParent.transform, new Vector3(2.5982f, 3.7855f, 3.1764f), 1f, 0f, (AnimationCurve)null, (LoopType)0, (Action)null, (Action)null, true); new WaitForSeconds(1f); Object.Instantiate<GameObject>(PikeWizard, PikeParent.transform); GameObject background = Object.Instantiate<GameObject>(MoxBundle.LoadAsset<GameObject>("StarSurrounding")); Object.Instantiate<GameObject>(MoxBundle.LoadAsset<GameObject>("MoxRed"), background.transform); Tween.Position(PikeParent.transform, new Vector3(3.0946f, 4.0127f, 2.7982f), 1f, 0f, (AnimationCurve)null, (LoopType)0, (Action)null, (Action)null, true); yield return PikeSpeech(); } yield return enumerator; } public static IEnumerator GooSpeech() { yield return Singleton<TextDisplayer>.Instance.ShowUntilInput(StringExtensions.LimeGreen("Master, I will not disappoint you!") ?? "", -2.5f, 0.5f, (Emotion)3, (LetterAnimation)0, (Speaker)17, (string[])null, true); yield return (object)new WaitForSeconds(2f); } public static IEnumerator LonelySpeech() { yield return Singleton<TextDisplayer>.Instance.ShowUntilInput(StringExtensions.Blue("Amazing! Finally some S T I M U L A T I O N") ?? "", -2.5f, 0.5f, (Emotion)3, (LetterAnimation)0, (Speaker)17, (string[])null, true); yield return (object)new WaitForSeconds(2f); } public static IEnumerator PikeSpeech() { yield return Singleton<TextDisplayer>.Instance.ShowUntilInput(StringExtensions.Orange("Hmph! You wouldn't know how to fight if your life- wait... Uh... ship depended on it!") ?? "", -2.5f, 0.5f, (Emotion)3, (LetterAnimation)0, (Speaker)17, (string[])null, true); yield return (object)new WaitForSeconds(2f); } } [HarmonyPatch(typeof(Part1BossOpponent), "LifeLostSequence")] public class KayceeOutroPatches { [HarmonyPostfix] public static IEnumerator KayceeOutroPatch(IEnumerator enumerator, Part1BossOpponent __instance) { if (((Opponent)__instance).NumLives <= 0) { GameObject GrimgorMox = ((Component)GameObject.Find("GameTable").transform.Find("TrueMoxModule")).gameObject; Tween.Position(GrimgorMox.transform, new Vector3(0.5295f, 0.8758f, 22.4786f), 1.5f, 0f, (AnimationCurve)null, (LoopType)0, (Action)null, (Action)null, true); } if (UnityObjectExtensions.IsNotNull((object)GameObject.Find("GooParent")) && ((Opponent)__instance).NumLives <= 0) { GameObject GooParent = GameObject.Find("GooParent"); GameObject background2 = GameObject.Find("StarSurrounding(Clone)"); yield return Singleton<TextDisplayer>.Instance.ShowUntilInput(StringExtensions.LimeGreen("Master, I have disappointed you! :(") ?? "", -2.5f, 0.5f, (Emotion)3, (LetterAnimation)0, (Speaker)17, (string[])null, true); Tween.Position(GooParent.transform, new Vector3(3.3819f, 1.2882f, 10f), 1f, 0f, (AnimationCurve)null, (LoopType)0, (Action)null, (Action)null, true); new WaitForSeconds(1f); Object.Destroy((Object)(object)background2); Object.Destroy((Object)(object)GooParent); Tween.Position(MagParent.transform, new Vector3(0f, 0f, 0f), 1f, 0f, (AnimationCurve)null, (LoopType)0, (Action)null, (Action)null, true); } else if (UnityObjectExtensions.IsNotNull((object)GameObject.Find("LonelyParent")) && ((Opponent)__instance).NumLives <= 0) { GameObject LonelyParent = GameObject.Find("LonelyParent"); GameObject background3 = GameObject.Find("StarSurrounding(Clone)"); yield return Singleton<TextDisplayer>.Instance.ShowUntilInput(StringExtensions.Blue("Do I Really have to go back to the Dark void???") ?? "", -2.5f, 0.5f, (Emotion)3, (LetterAnimation)0, (Speaker)17, (string[])null, true); Tween.Position(LonelyParent.transform, new Vector3(3.3819f, 1.2882f, 10f), 1f, 0f, (AnimationCurve)null, (LoopType)0, (Action)null, (Action)null, true); new WaitForSeconds(1f); Object.Destroy((Object)(object)background3); Object.Destroy((Object)(object)LonelyParent); Tween.Position(MagParent.transform, new Vector3(0f, 0f, 0f), 1f, 0f, (AnimationCurve)null, (LoopType)0, (Action)null, (Action)null, true); } else if (UnityObjectExtensions.IsNotNull((object)GameObject.Find("PikeParent")) && ((Opponent)__instance).NumLives <= 0) { GameObject PikeParent = GameObject.Find("PikeParent"); GameObject background = GameObject.Find("StarSurrounding(Clone)"); yield return Singleton<TextDisplayer>.Instance.ShowUntilInput(StringExtensions.Orange("Hmph! You have shown that you are stronger than me!") ?? "", -2.5f, 0.5f, (Emotion)3, (LetterAnimation)0, (Speaker)17, (string[])null, true); Tween.Position(PikeParent.transform, new Vector3(3.3819f, 1.2882f, 10f), 1f, 0f, (AnimationCurve)null, (LoopType)0, (Action)null, (Action)null, true); new WaitForSeconds(1f); Object.Destroy((Object)(object)background); Object.Destroy((Object)(object)PikeParent); Tween.Position(MagParent.transform, new Vector3(0f, 0f, 0f), 1f, 0f, (AnimationCurve)null, (LoopType)0, (Action)null, (Action)null, true); } yield return enumerator; } } [HarmonyPatch(typeof(Opponent), "IntroSequence")] public class IntroPatch { [HarmonyPostfix] public static void IntroPatchy(Opponent __instance) { //IL_0035: Unknown result type (might be due to invalid IL or missing references) GameObject gameObject = ((Component)GameObject.Find("GameTable").transform.Find("TrueMoxModule")).gameObject; Tween.Position(gameObject.transform, new Vector3(0.5295f, 4.3372f, 22.4786f), 3f, 0f, (AnimationCurve)null, (LoopType)0, (Action)null, (Action)null, true); } } [HarmonyPatch(typeof(Opponent), "OutroSequence")] public class Outropatch { [HarmonyPostfix] public static void Outropatchy(Opponent __instance) { //IL_0046: Unknown result type (might be due to invalid IL or missing references) if (__instance.NumLives <= 0) { GameObject gameObject = ((Component)GameObject.Find("GameTable").transform.Find("TrueMoxModule")).gameObject; Tween.Position(gameObject.transform, new Vector3(0.5295f, 0.8758f, 22.4786f), 1.5f, 0f, (AnimationCurve)null, (LoopType)0, (Action)null, (Action)null, true); } } } public static GameObject Parent; public static GameObject MagParent; [HarmonyPostfix] [HarmonyPatch(typeof(Opponent), "SpawnOpponent")] public static void AddToEncounter(ref Opponent __result) { //IL_015c: Unknown result type (might be due to invalid IL or missing references) if (GrimoraSaveUtil.IsNotGrimoraModRun) { return; } List<CardInfo> list = new List<CardInfo> { CardLoader.GetCardByName("Grimmificcus_TriangleTemple"), CardLoader.GetCardByName("Grimmificcus_TriangleUnit"), CardLoader.GetCardByName("Grimmificcus_SkeletonGreen"), CardLoader.GetCardByName("Grimmificcus_GreenSkelly"), CardLoader.GetCardByName("Grimmificcus_Druid"), CardLoader.GetCardByName("Grimmificcus_Druid") }; List<CardInfo> list2 = new List<CardInfo> { CardLoader.GetCardByName("Grimmificcus_DiamondTemple"), CardLoader.GetCardByName("Grimmificcus_DiamondUnit"), CardLoader.GetCardByName("Grimmificcus_SkeletonOrange"), CardLoader.GetCardByName("Grimmificcus_OrangeSkelly"), CardLoader.GetCardByName("Grimmificcus_RageMage"), CardLoader.GetCardByName("Grimmificcus_RageMage") }; List<CardInfo> list3 = new List<CardInfo> { CardLoader.GetCardByName("Grimmificcus_CircleTemple"), CardLoader.GetCardByName("Grimmificcus_CircleUnit"), CardLoader.GetCardByName("Grimmificcus_SkeletonBlue"), CardLoader.GetCardByName("Grimmificcus_BlueSkelly"), CardLoader.GetCardByName("Grimmificcus_MorphMage"), CardLoader.GetCardByName("Grimmificcus_MorphMage") }; List<CardInfo> list4 = new List<CardInfo>(); list4 = (from x in CardLoader.GetUnlockedCards(GrimoraPlugin.GrimoraChoiceNode, (CardTemple)1) where ((Object)x).name.Contains("Grimmificcus") select x).ToList(); if (((Object)__result.Blueprint).name.Contains("Kaycee")) { foreach (List<CardInfo> item in __result.TurnPlan) { for (int i = 0; i < item.Count; i++) { if ((Object)(object)item[i] != (Object)null && Random.Range(0, 2) == 0) { item[i] = list[Random.Range(0, list.Count - 1)]; } } } return; } if (((Object)__result.Blueprint).name.Contains("Sawyer")) { foreach (List<CardInfo> item2 in __result.TurnPlan) { for (int j = 0; j < item2.Count; j++) { if ((Object)(object)item2[j] != (Object)null && Random.Range(0, 2) == 0) { item2[j] = list3[Random.Range(0, list3.Count - 1)]; } } } return; } if (((Object)__result.Blueprint).name.Contains("Royal")) { foreach (List<CardInfo> item3 in __result.TurnPlan) { for (int k = 0; k < item3.Count; k++) { if ((Object)(object)item3[k] != (Object)null && Random.Range(0, 2) == 0) { item3[k] = list2[Random.Range(0, list2.Count - 1)]; } } } return; } foreach (List<CardInfo> item4 in __result.TurnPlan) { for (int l = 0; l < item4.Count; l++) { if ((Object)(object)item4[l] != (Object)null && Random.Range(0, 2) == 0) { item4[l] = list4[Random.Range(0, list4.Count - 1)]; } } } } } internal const string PluginGuid = "Cevin_2006.Inscryption.CevinsGrimoraExpansion"; internal const string PluginName = "CevinsGrimoraExpansion"; internal const string PluginVersion = "0.0.2"; public const string modPrefix = "Grimmificcus"; public const string modPrefix2 = "arackulele.inscryption.grimoramod"; public static ManualLogSource log; public static AssetBundle MoxBundle; public static GameObject LonelyWizard; public static GameObject GooWizard; public static GameObject PikeWizard; public static GameObject GrimoraMoxDrone; public static GameObject RessourceManager; public static List<AudioClip> addedSfx = new List<AudioClip>(); public static List<AudioClip> addedLoops = new List<AudioClip>(); internal void _AddCards() { List<string> list = new List<string>(); List<MethodInfo> list2 = typeof(Plugin).GetMethods().ToList().FindAll((MethodInfo method) => method.Name.Contains("Add") && !method.Name.Contains("Ability") && !method.Name.Contains("StatIcon") && !method.Name.Contains("appearences")); foreach (MethodInfo item in list2) { if (!item.Name.Contains("Skeleton1") || !item.Name.Contains("Skeleton2") || !item.Name.Contains("Skeleton3")) { item.Invoke(this, new object[0]); list.Add(item.Name.Replace("Add", "")); } } ((BaseUnityPlugin)this).Logger.LogMessage((object)$"Cevin's Expansion added {list.Count} cards"); ((BaseUnityPlugin)this).Logger.LogMessage((object)(string.Join(" ; ", list) ?? "")); } internal void _AddAbilities() { List<string> list = new List<string>(); List<MethodInfo> list2 = typeof(Plugin).GetMethods().ToList().FindAll((MethodInfo method) => method.Name.Contains("Add") && (method.Name.Contains("Ability") || method.Name.Contains("StatIcon"))); foreach (MethodInfo item in list2) { item.Invoke(this, new object[0]); list.Add(item.Name.Replace("Add", "").Replace("Ability", "")); } ((BaseUnityPlugin)this).Logger.LogMessage((object)$"Cevin's Expansion added {list.Count} abilities"); ((BaseUnityPlugin)this).Logger.LogMessage((object)(string.Join(" ; ", list) ?? "")); } private void Awake() { //IL_00c1: Unknown result type (might be due to invalid IL or missing references) using (Stream stream = Assembly.GetExecutingAssembly().GetManifestResourceStream("CevinsGrimoraExpansion.Ressources.moxbundle")) { MoxBundle = AssetBundle.LoadFromStream(stream); addedLoops = new List<AudioClip> { MoxBundle.LoadAsset<AudioClip>("MagnificusTheme"), MoxBundle.LoadAsset<AudioClip>("MoxBattle") }; LonelyWizard = MoxBundle.LoadAsset<GameObject>("LonelyWizardPrefab"); GooWizard = MoxBundle.LoadAsset<GameObject>("GoobertPrefab"); PikeWizard = MoxBundle.LoadAsset<GameObject>("PikeMagePrefab"); GrimoraMoxDrone = MoxBundle.LoadAsset<GameObject>("TrueMoxModule"); } log = ((BaseUnityPlugin)this).Logger; new Harmony("Cevin_2006.Inscryption.CevinsGrimoraExpansion").PatchAll(); CustomAppearences.Addappearences(); AddSpecialEmptyStatIcon(); _AddAbilities(); _AddCards(); AddStarterDecks(); } private void FixedUpdate() { //IL_0135: Unknown result type (might be due to invalid IL or missing references) //IL_013a: Unknown result type (might be due to invalid IL or missing references) //IL_014b: Unknown result type (might be due to invalid IL or missing references) //IL_0152: Expected O, but got Unknown //IL_0168: Unknown result type (might be due to invalid IL or missing references) //IL_019f: Unknown result type (might be due to invalid IL or missing references) //IL_0215: Unknown result type (might be due to invalid IL or missing references) //IL_021c: Expected O, but got Unknown //IL_0232: Unknown result type (might be due to invalid IL or missing references) //IL_0272: Unknown result type (might be due to invalid IL or missing references) if (ModdedSaveManager.RunState.GetValueAsObject<List<GemType>>("Cevin_2006.Inscryption.CevinsGrimoraExpansion", "GrimoraSideDeck") == null) { List<GemType> list = new List<GemType> { (GemType)2, (GemType)2, (GemType)2, (GemType)1, (GemType)1, (GemType)1, (GemType)0, (GemType)0, (GemType)0, (GemType)0 }; ModdedSaveManager.RunState.SetValueAsObject<List<GemType>>("Cevin_2006.Inscryption.CevinsGrimoraExpansion", "GrimoraSideDeck", list); log.LogInfo((object)list); log.LogInfo((object)ModdedSaveManager.RunState.GetValueAsObject<List<GemType>>("Cevin_2006.Inscryption.CevinsGrimoraExpansion", "GrimoraSideDeck")); log.LogInfo((object)"awesome Sidedeck moment (made by Kopie)"); SaveManager.SaveToFile(false); } if (!SceneLoader.ActiveSceneName.Contains("grimora")) { return; } DeckReviewSequencer val = Object.FindObjectOfType<DeckReviewSequencer>(); if (!(val is SkelMoxDeckReviewSequencer)) { SkelMoxDeckReviewSequencer i = ((Component)val).gameObject.AddComponent<SkelMoxDeckReviewSequencer>(); ((DeckReviewSequencer)i).cardArray = val.cardArray; ((DeckReviewSequencer)i).defaultPosition = val.defaultPosition; Object.DestroyImmediate((Object)(object)val); GameObject val2 = new GameObject("GemSideDeckInteractable"); val2.transform.position = new Vector3(-2f, 5f, 1f); GameObject val3 = Object.Instantiate<GameObject>(Resources.Load<GameObject>("prefabs\\cards\\CardPile_Grimora")); val3.transform.parent = val2.transform; val3.transform.localPosition = Vector3.zero; i.editSideDeck = (MainInputInteractable)(object)val3.GetComponentInChildren<CardPile>(); val3.GetComponentInChildren<CardPile>().CanDrawFromPile = true; ((Collider)val3.GetComponentInChildren<BoxCollider>()).enabled = true; ((InteractableBase)i.editSideDeck).coll = (Collider)(object)val3.GetComponentInChildren<BoxCollider>(); i.editSideDeck.CursorSelectEnded = delegate { ((DeckReviewSequencer)i).OnExitDeckView(); i.sideDeckEnter(); }; GameObject val4 = new GameObject("DeckInteractable"); val4.transform.position = new Vector3(2f, 5f, 1f); GameObject val5 = Object.Instantiate<GameObject>(Resources.Load<GameObject>("prefabs\\cards\\CardPile_Grimora")); CardPile componentInChildren = val5.GetComponentInChildren<CardPile>(); val5.transform.parent = val4.transform; val5.transform.localPosition = Vector3.zero; i.editRegularDeck = (MainInputInteractable)(object)val5.GetComponentInChildren<CardPile>(); val5.GetComponentInChildren<CardPile>().CanDrawFromPile = true; ((Collider)val5.GetComponentInChildren<BoxCollider>()).enabled = true; ((InteractableBase)i.editRegularDeck).coll = (Collider)(object)val5.GetComponentInChildren<BoxCollider>(); i.editRegularDeck.CursorSelectEnded = delegate { ((DeckReviewSequencer)i).OnExitDeckView(); i.baseEnter(); }; } } public void AddSpecialEmptyStatIcon() { //IL_0060: Unknown result type (might be due to invalid IL or missing references) //IL_0065: Unknown result type (might be due to invalid IL or missing references) StatIconInfo val = AbilityExtensions.SetDefaultPart1Ability(AbilityExtensions.SetIcon(StatIconManager.New("Cevin_2006.Inscryption.CevinsGrimoraExpansion", "Empty Spaced", "The value represented with this sigil is equal to the empty Spaces on its side.", typeof(EmptySpaceBehaviour)), Tools.LoadTexture("EmptySpacesStaticon"), (FilterMode?)null)); val.appliesToAttack = true; val.appliesToHealth = false; EmptySpaceBehaviour.ESStatIconID = StatIconManager.Add("Cevin_2006.Inscryption.CevinsGrimoraExpansion", val, typeof(EmptySpaceBehaviour)).Id; } public void AddMeteoriteAbility() { //IL_005b: Unknown result type (might be due to invalid IL or missing references) //IL_0060: Unknown result type (might be due to invalid IL or missing references) AbilityInfo val = AbilityManager.New("Cevin_2006.Inscryption.CevinsGrimoraExpansion", "Meteor Strike", "[creature] causes every other Card on the board to take 2 damage.", typeof(MeteorStrike), (Texture)(object)Tools.LoadTexture("MeteoriteSigil")); val.powerLevel = 3; val.metaCategories = new List<AbilityMetaCategory> { (AbilityMetaCategory)0, (AbilityMetaCategory)1 }; val.canStack = false; val.opponentUsable = true; MeteorStrike.ability = val.ability; } public void AddSideHealerAbility() { //IL_005b: Unknown result type (might be due to invalid IL or missing references) //IL_0060: Unknown result type (might be due to invalid IL or missing references) AbilityInfo val = AbilityManager.New("Cevin_2006.Inscryption.CevinsGrimoraExpansion", "Healer", "[creature] will heal adjacent creatures each turn.", typeof(SideHealing), (Texture)(object)Tools.LoadTexture("SideHealingSigil")); val.powerLevel = 2; val.metaCategories = new List<AbilityMetaCategory> { (AbilityMetaCategory)0, (AbilityMetaCategory)1 }; val.canStack = false; val.opponentUsable = true; SideHealing.ability = val.ability; } public void AddIceStrafeAbility() { //IL_005b: Unknown result type (might be due to invalid IL or missing references) //IL_0060: Unknown result type (might be due to invalid IL or missing references) AbilityInfo val = AbilityManager.New("Cevin_2006.Inscryption.CevinsGrimoraExpansion", "Iee Strafe", " if [creature] strafes, it leaves behind a big hunk o' Ice.", typeof(IceStrafe), (Texture)(object)Tools.LoadTexture("IceStrafeSigil")); val.powerLevel = 1; val.metaCategories = new List<AbilityMetaCategory> { (AbilityMetaCategory)0, (AbilityMetaCategory)1 }; val.canStack = false; val.opponentUsable = true; IceStrafe.ability = val.ability; } public void AddRandomMoxAbility() { //IL_005b: Unknown result type (might be due to invalid IL or missing references) //IL_0060: Unknown result type (might be due to invalid IL or missing references) AbilityInfo val = AbilityManager.New("Cevin_2006.Inscryption.CevinsGrimoraExpansion", "Random Mox", "[creature] will grant a random mox upon getting drawn.", typeof(RandomMoxAbility), (Texture)(object)Tools.LoadTexture("RandomMoxSigil")); val.powerLevel = 3; val.metaCategories = new List<AbilityMetaCategory> { (AbilityMetaCategory)0, (AbilityMetaCategory)1 }; val.canStack = false; val.opponentUsable = true; RandomMoxAbility.ability = val.ability; } public void AddShieldGemDependantAbility() { //IL_005b: Unknown result type (might be due to invalid IL or missing references) //IL_0060: Unknown result type (might be due to invalid IL or missing references) AbilityInfo val = AbilityManager.New("Cevin_2006.Inscryption.CevinsGrimoraExpansion", "Gem Protector", "[creature] will give any creature with Gem Dependant Nano Shield.", typeof(ShieldSkeletons), (Texture)(object)Tools.LoadTexture("ShieldGemDependantSigil")); val.powerLevel = 3; val.metaCategories = new List<AbilityMetaCategory> { (AbilityMetaCategory)0, (AbilityMetaCategory)1 }; val.canStack = false; val.opponentUsable = true; ShieldSkeletons.ability = val.ability; } public void AddBoneStrafeAbility() { //IL_005b: Unknown result type (might be due to invalid IL or missing references) //IL_0060: Unknown result type (might be due to invalid IL or missing references) AbilityInfo val = AbilityManager.New("Cevin_2006.Inscryption.CevinsGrimoraExpansion", "Bone Strafe", "[creature] Strafe until it has gathered enough Bones..", typeof(BoneStrafe), (Texture)(object)Tools.LoadTexture("BoneStrafeSigil")); val.powerLevel = 3; val.metaCategories = new List<AbilityMetaCategory> { (AbilityMetaCategory)0, (AbilityMetaCategory)1 }; val.canStack = false; val.opponentUsable = true; BoneStrafe.ability = val.ability; } public void AddSatanCircleAbility() { //IL_0062: Unknown result type (might be due to invalid IL or missing references) //IL_0067: Unknown result type (might be due to invalid IL or missing references) AbilityInfo val = AbilityManager.New("Cevin_2006.Inscryption.CevinsGrimoraExpansion", "Demon Circle", "[creature] will complete a Conduit.", typeof(SatanCircle), (Texture)(object)Tools.LoadTexture("SatanicSigil")); val.powerLevel = 1; val.metaCategories = new List<AbilityMetaCategory> { (AbilityMetaCategory)0, (AbilityMetaCategory)1 }; val.canStack = false; val.opponentUsable = true; val.conduit = true; SatanCircle.ability = val.ability; } public void AddSatanCircleSpawnerAbility() { //IL_0062: Unknown result type (might be due to invalid IL or missing references) //IL_0067: Unknown result type (might be due to invalid IL or missing references) AbilityInfo val = AbilityManager.New("Cevin_2006.Inscryption.CevinsGrimoraExpansion", "Demon Spawner", "[creature] will spawn undead Creatures once it completes a Conduit.", typeof(SatanCircle), (Texture)(object)Tools.LoadTexture("SatanicSpawnerSigil")); val.powerLevel = 2; val.metaCategories = new List<AbilityMetaCategory> { (AbilityMetaCategory)0, (AbilityMetaCategory)1 }; val.canStack = false; val.opponentUsable = true; val.conduit = true; SatanCircle.ability = val.ability; } public void AddGemNecroAbility() { //IL_005b: Unknown result type (might be due to invalid IL or missing references) //IL_0060: Unknown result type (might be due to invalid IL or missing references) AbilityInfo val = AbilityManager.New("Cevin_2006.Inscryption.CevinsGrimoraExpansion", "Necromancer", "[creature] will Necromance Creatures on recently died spaces and grant them a random Mox themed sigil.", typeof(GemRevive), (Texture)(object)Tools.LoadTexture("GemNecromancerSigil")); val.powerLevel = 2; val.metaCategories = new List<AbilityMetaCategory> { (AbilityMetaCategory)0, (AbilityMetaCategory)1 }; val.canStack = false; val.opponentUsable = true; GemRevive.ability = val.ability; } public void AddEvilHagAbility() { //IL_0062: Unknown result type (might be due to invalid IL or missing references) //IL_0067: Unknown result type (might be due to invalid IL or missing references) AbilityInfo val = AbilityManager.New("Cevin_2006.Inscryption.CevinsGrimoraExpansion", "EvilHag", "upon Activation, [creature] will choose a Slot. If a card in that slot costs less than 3 bones or souls it will die, else it will take 1 damage.", typeof(EvilHag), (Texture)(object)Tools.LoadTexture("EvilHagSigil")); val.powerLevel = 4; val.metaCategories = new List<AbilityMetaCategory> { (AbilityMetaCategory)0, (AbilityMetaCategory)1 }; val.canStack = false; val.activated = true; val.opponentUsable = true; EvilHag.ability = val.ability; } public void AddDrawDeckAndSideAbility() { //IL_005b: Unknown result type (might be due to invalid IL or missing references) //IL_0060: Unknown result type (might be due to invalid IL or missing references) AbilityInfo val = AbilityManager.New("Cevin_2006.Inscryption.CevinsGrimoraExpansion", "Side & Deck Draw", "[creature] will draw a card from your main deck and side deck upon being played", typeof(DrawDeckAndSide), (Texture)(object)Tools.LoadTexture("DrawDeckAndSide")); val.powerLevel = 4; val.metaCategories = new List<AbilityMetaCategory> { (AbilityMetaCategory)0, (AbilityMetaCategory)1 }; val.canStack = false; val.opponentUsable = true; DrawDeckAndSide.ability = val.ability; } public void AddDrawCardOnKillAbility() { //IL_005b: Unknown result type (might be due to invalid IL or missing references) //IL_0060: Unknown result type (might be due to invalid IL or missing references) AbilityInfo val = AbilityManager.New("Cevin_2006.Inscryption.CevinsGrimoraExpansion", "Drawkill", "[creature] will draw from your Main Deck when it kills a card.", typeof(DrawCardOnKill), (Texture)(object)Tools.LoadTexture("DrawDeckOnKill")); val.powerLevel = 2; val.metaCategories = new List<AbilityMetaCategory> { (AbilityMetaCategory)0, (AbilityMetaCategory)1 }; val.canStack = false; val.opponentUsable = true; DrawCardOnKill.ability = val.ability; } public void AddDruidAbility() { //IL_005b: Unknown result type (might be due to invalid IL or missing references) //IL_0060: Unknown result type (might be due to invalid IL or missing references) AbilityInfo val = AbilityManager.New("Cevin_2006.Inscryption.CevinsGrimoraExpansion", "Druid of Death", "When [creature] is played, Dead Trees are created on every empty space. A Dead Tree is defined as 0 power, 1 health.", typeof(DruidAbility), (Texture)(object)Tools.LoadTexture("DruidAbility")); val.powerLevel = 2; val.metaCategories = new List<AbilityMetaCategory> { (AbilityMetaCategory)0, (AbilityMetaCategory)1 }; val.canStack = false; val.opponentUsable = true; DruidAbility.ability = val.ability; } public void AddRageAbility() { //IL_005b: Unknown result type (might be due to invalid IL or missing references) //IL_0060: Unknown result type (might be due to invalid IL or missing references) AbilityInfo val = AbilityManager.New("Cevin_2006.Inscryption.CevinsGrimoraExpansion", "Rage", "[creature] will gain +1/0 uppon getting hit.", typeof(RageAbility), (Texture)(object)Tools.LoadTexture("RageAbility")); val.powerLevel = 2; val.metaCategories = new List<AbilityMetaCategory> { (AbilityMetaCategory)0, (AbilityMetaCategory)1 }; val.canStack = false; val.opponentUsable = true; RageAbility.ability = val.ability; } public void AddHookerAbility() { //IL_005b: Unknown result type (might be due to invalid IL or missing references) //IL_0060: Unknown result type (might be due to invalid IL or missing references) AbilityInfo val = AbilityManager.New("Cevin_2006.Inscryption.CevinsGrimoraExpansion", "Hooker", "When [creature] is played, this card will die and the opposing creature will be pulled into it's space.", typeof(Hooker), (Texture)(object)Tools.LoadTexture("HookerAbility")); val.powerLevel = 4; val.metaCategories = new List<AbilityMetaCategory> { (AbilityMetaCategory)0, (AbilityMetaCategory)1 }; val.canStack = false; val.opponentUsable = true; Hooker.ability = val.ability; } public void AddMoxConstructSigil() { //IL_0062: Unknown result type (might be due to invalid IL or missing references) //IL_0067: Unknown result type (might be due to invalid IL or missing references) AbilityInfo val = AbilityManager.New("Cevin_2006.Inscryption.CevinsGrimoraExpansion", "Constructor", "Upon activation, [creature] willl choose a Card with any Gain Mox Sigil to strengthen itself. If said card has the Blue Gem [creature] will get a sigil. Orange and green raise its attack and heallth respectively.", typeof(MoxConstructor), (Texture)(object)Tools.LoadTexture("MoxConstructSigil")); val.powerLevel = 4; val.metaCategories = new List<AbilityMetaCategory> { (AbilityMetaCategory)0, (AbilityMetaCategory)1 }; val.canStack = false; val.opponentUsable = false; val.activated = true; MoxConstructor.ability = val.ability; } public void AddGlowTail() { //IL_0080: Unknown result type (might be due to invalid IL or missing references) //IL_0086: Expected I4, but got Unknown //IL_0093: Unknown result type (might be due to invalid IL or missing references) CardInfo val = CardExtensions.SetDefaultPart1Card(CardExtensions.AddMetaCategories(CardExtensions.SetEmissivePortrait(CardExtensions.SetPortrait(CardExtensions.AddAbilities(CardExtensions.SetCost(CardManager.New("Grimmificcus", "GlowTail", "Glow Tail", 1, 1, "Its glowing tail weakens the opponent"), (int?)0, (int?)2, (int?)2, (List<GemType>)null), (Ability[])(object)new Ability[1] { (Ability)83 }), Tools.LoadTexture("GlowTailLizard"), (FilterMode?)null), Tools.LoadTexture("GlowTailLizard_e"), (FilterMode?)null), (CardMetaCategory[])(object)new CardMetaCategory[3] { default(CardMetaCategory), (CardMetaCategory)1, (CardMetaCategory)(int)GrimoraPlugin.GrimoraChoiceNode })); val.temple = (CardTemple)1; CardManager.Add("Grimmificcus", val); } public void AddMurderOfCrows() { //IL_0080: Unknown result type (might be due to invalid IL or missing references) //IL_0086: Expected I4, but got Unknown //IL_0093: Unknown result type (might be due to invalid IL or missing references) CardInfo val = CardExtensions.SetDefaultPart1Card(CardExtensions.AddMetaCategories(CardExtensions.SetEmissivePortrait(CardExtensions.SetPortrait(CardExtensions.AddAbilities(CardExtensions.SetCost(CardManager.New("Grimmificcus", "MurderOfCrows", "Murder Of Crows", 1, 1, "a ton of Crows leaving nothing behind."), (int?)0, (int?)4, (int?)0, (List<GemType>)null), (Ability[])(object)new Ability[1] { (Ability)9 }), Tools.LoadTexture("MurderOfCrows"), (FilterMode?)null), Tools.LoadTexture("MurderOfCrows_e"), (FilterMode?)null), (CardMetaCategory[])(object)new CardMetaCategory[3] { default(CardMetaCategory), (CardMetaCategory)1, (CardMetaCategory)(int)GrimoraPlugin.GrimoraChoiceNode })); val.temple = (CardTemple)1; CardManager.Add("Grimmificcus", val); } public void AddMangledSkeleton() { //IL_0070: Unknown result type (might be due to invalid IL or missing references) //IL_0076: Expected I4, but got Unknown //IL_0083: Unknown result type (might be due to invalid IL or missing references) CardInfo val = CardExtensions.SetDefaultPart1Card(CardExtensions.AddMetaCategories(CardExtensions.SetEmissivePortrait(CardExtensions.SetPortrait(CardExtensions.SetCost(CardManager.New("Grimmificcus", "MangledSkeleton", "Mangled Skeleton", 1, 1, "Its twisted and deformed Body is a relentless attacker"), (int?)0, (int?)2, (int?)0, (List<GemType>)null), Tools.LoadTexture("MangledSkeleton"), (FilterMode?)null), Tools.LoadTexture("MangledSkeleton_e"), (FilterMode?)null), (CardMetaCategory[])(object)new CardMetaCategory[3] { default(CardMetaCategory), (CardMetaCategory)1, (CardMetaCategory)(int)GrimoraPlugin.GrimoraChoiceNode })); val.temple = (CardTemple)1; CardManager.Add("Grimmificcus", val); } public void AddFrostSpiritIce() { //IL_008b: Unknown result type (might be due to invalid IL or missing references) CardInfo val = CardExtensions.SetTerrain(CardExtensions.AddAppearances(CardExtensions.SetEmissivePortrait(CardExtensions.SetPortrait(CardExtensions.AddAbilities(CardExtensions.SetCost(CardManager.New("Grimmificcus", "FrostSpiritIce", "Ice", 0, 1, "Frozen Spirit leaving behind a trail of Ice, iam sure Kaycee would enjoy this ones company"), (int?)0, (int?)0, (int?)0, (List<GemType>)null), (Ability[])(object)new Ability[1] { (Ability)83 }), Tools.LoadTexture("FrostSpiritIce"), (FilterMode?)null), Tools.LoadTexture("FrostSpiritIce_e"), (FilterMode?)null), (Appearance[])(object)new Appearance[1] { (Appearance)7 })); val.temple = (CardTemple)1; CardManager.Add("Grimmificcus", val); } public void AddFrostSpirit() { //IL_003c: Unknown result type (might be due to invalid IL or missing references) //IL_0042: Expected I4, but got Unknown //IL_0083: Unknown result type (might be due to invalid IL or missing references) //IL_0089: Expected I4, but got Unknown //IL_00a5: Unknown result type (might be due to invalid IL or missing references) CardInfo val = CardExtensions.SetDefaultPart1Card(CardExtensions.AddAppearances(CardExtensions.AddMetaCategories(CardExtensions.SetEmissivePortrait(CardExtensions.SetPortrait(CardExtensions.AddAbilities(CardExtensions.SetCost(CardManager.New("Grimmificcus", "FrostSpirit", "Frost Spirit", 1, 1, "Frozen Spirit leaving behind a trail of Ice, iam sure Kaycee would enjoy this ones company"), (int?)0, (int?)0, (int?)6, (List<GemType>)null), (Ability[])(object)new Ability[1] { (Ability)(int)IceStrafe.ability }), Tools.LoadTexture("FrostSpirit"), (FilterMode?)null), Tools.LoadTexture("FrostSpirit_e"), (FilterMode?)null), (CardMetaCategory[])(object)new CardMetaCategory[2] { (CardMetaCategory)3, (CardMetaCategory)(int)GrimoraPlugin.GrimoraChoiceNode }), (Appearance[])(object)new Appearance[1] { (Appearance)7 })); val.temple = (CardTemple)1; CardManager.Add("Grimmificcus", val); } public void AddEmptySpaceSkelacle() { //IL_0058: Unknown result type (might be due to invalid IL or missing references) //IL_005e: Expected I4, but got Unknown //IL_0063: Unknown result type (might be due to invalid IL or missing references) //IL_0075: Unknown result type (might be due to invalid IL or missing references) CardInfo val = CardExtensions.SetDefaultPart1Card(CardExtensions.SetStatIcon(CardExtensions.AddMetaCategories(CardExtensions.SetPortrait(CardExtensions.SetCost(CardManager.New("Grimmificcus", "EmptySkelacle", "Transient Skelacle", 0, 1, "Tentacles with no Bones!"), (int?)0, (int?)4, (int?)4, (List<GemType>)null), Tools.LoadTexture("EmptySkelacle"), (FilterMode?)null), (CardMetaCategory[])(object)new CardMetaCategory[3] { (CardMetaCategory)1, default(CardMetaCategory), (CardMetaCategory)(int)GrimoraPlugin.GrimoraChoiceNode }), EmptySpaceBehaviour.ESStatIconID)); val.temple = (CardTemple)1; CardManager.Add("Grimmificcus", val); } public void AddSkeletonWorm() { //IL_0080: Unknown result type (might be due to invalid IL or missing references) //IL_0086: Expected I4, but got Unknown //IL_0093: Unknown result type (might be due to invalid IL or missing references) CardInfo val = CardExtensions.SetDefaultPart1Card(CardExtensions.AddMetaCategories(CardExtensions.AddAbilities(CardExtensions.SetEmissivePortrait(CardExtensions.SetPortrait(CardExtensions.SetCost(CardManager.New("Grimmificcus", "SkeletonWorm", "Skeleton Worm", 2, 2, "How strange, worms dont have Skeletons!"), (int?)0, (int?)4, (int?)0, (List<GemType>)null), Tools.LoadTexture("BoneShark"), (FilterMode?)null), Tools.LoadTexture("BoneShark_e"), (FilterMode?)null), (Ability[])(object)new Ability[1] { (Ability)90 }), (CardMetaCategory[])(object)new CardMetaCategory[3] { (CardMetaCategory)1, default(CardMetaCategory), (CardMetaCategory)(int)GrimoraPlugin.GrimoraChoiceNode })); val.temple = (CardTemple)1; CardManager.Add("Grimmificcus", val); } public void AddMeteorSkull() { //IL_006c: Unknown result type (might be due to invalid IL or missing references) //IL_0072: Expected I4, but got Unknown //IL_0083: Unknown result type (might be due to invalid IL or missing references) //IL_0089: Expected I4, but got Unknown //IL_0096: Unknown result type (might be due to invalid IL or missing references) CardInfo val = CardExtensions.SetDefaultPart1Card(CardExtensions.AddMetaCategories(CardExtensions.AddAbilities(CardExtensions.SetEmissivePortrait(CardExtensions.SetPortrait(CardExtensions.SetCost(CardManager.New("Grimmificcus", "MeteorSkull", "Meteor Skull", 1, 1, "A skull crashing down at incredible Speeds"), (int?)0, (int?)3, (int?)4, (List<GemType>)null), Tools.LoadTexture("MeteoriteSkull"), (FilterMode?)null), Tools.LoadTexture("MeteoriteSkull_e"), (FilterMode?)null), (Ability[])(object)new Ability[1] { (Ability)(int)MeteorStrike.ability }), (CardMetaCategory[])(object)new CardMetaCategory[3] { (CardMetaCategory)1, default(CardMetaCategory), (CardMetaCategory)(int)GrimoraPlugin.GrimoraChoiceNode })); val.temple = (CardTemple)1; CardManager.Add("Grimmificcus", val); } public void AddMoxPupil() { //IL_0098: Unknown result type (might be due to invalid IL or missing references) //IL_009e: Expected I4, but got Unknown //IL_00ab: Unknown result type (might be due to invalid IL or missing references) CardInfo val = CardExtensions.SetDefaultPart1Card(CardExtensions.AddMetaCategories(CardExtensions.AddAbilities(CardExtensions.SetEmissivePortrait(CardExtensions.SetPixelPortrait(CardExtensions.SetPortrait(CardExtensions.SetCost(CardManager.New("Grimmificcus", "MoxPupil", "Pupil", 1, 1, "One of his students. Most don't last long before they end up here."), (int?)0, (int?)0, (int?)0, (List<GemType>)null), Tools.LoadTexture("MoxPupil"), (FilterMode?)null), Tools.LoadTexture("MoxPupilPixel"), (FilterMode?)null), Tools.LoadTexture("MoxPupil_e"), (FilterMode?)null), (Ability[])(object)new Ability[1] { (Ability)43 }), (CardMetaCategory[])(object)new CardMetaCategory[3] { (CardMetaCategory)1, default(CardMetaCategory), (CardMetaCategory)(int)GrimoraPlugin.GrimoraChoiceNode })); val.temple = (CardTemple)1; CardManager.Add("Grimmificcus", val); } public void AddMoxDactyl() { //IL_00a4: Unknown result type (might be due to invalid IL or missing references) //IL_00aa: Expected I4, but got Unknown //IL_00b7: Unknown result type (might be due to invalid IL or missing references) CardInfo val = CardExtensions.SetDefaultPart1Card(CardExtensions.AddMetaCategories(CardExtensions.AddAbilities(CardExtensions.SetEmissivePortrait(CardExtensions.SetPixelPortrait(CardExtensions.SetPortrait(CardExtensions.SetCost(CardManager.New("Grimmificcus", "MoxDactyl", "Moxdactyl", 2, 1, "A once extinct skeleton, brought back to life with the power of orange gems."), (int?)0, (int?)0, (int?)0, new List<GemType> { (GemType)1 }), Tools.LoadTexture("Orange"), (FilterMode?)null), Tools.LoadTexture("MoxDactylPixel"), (FilterMode?)null), Tools.LoadTexture("Orange_e"), (FilterMode?)null), (Ability[])(object)new Ability[1] { (Ability)19 }), (CardMetaCategory[])(object)new CardMetaCategory[3] { (CardMetaCategory)1, default(CardMetaCategory), (CardMetaCategory)(int)GrimoraPlugin.GrimoraChoiceNode })); val.temple = (CardTemple)1; CardManager.Add("Grimmificcus", val); } public void AddCircleTemple() { //IL_0088: Unknown result type (might be due to invalid IL or missing references) //IL_008e: Expected I4, but got Unknown //IL_00b0: Unknown result type (might be due to invalid IL or missing references) CardInfo val = CardExtensions.SetDefaultPart1Card(CardExtensions.AddAbilities(CardExtensions.AddMetaCategories(CardExtensions.SetEmissivePortrait(CardExtensions.SetPixelPortrait(CardExtensions.SetPortrait(CardExtensions.SetCost(CardManager.New("Grimmificcus", "CircleTemple", "Blue Temple", 0, 3, "Temple used to channel the power of Blue Moxes."), (int?)0, (int?)0, (int?)2, (List<GemType>)null), Tools.LoadTexture("CircleTemple"), (FilterMode?)null), Tools.LoadTexture("CircleTemplePixel"), (FilterMode?)null), Tools.LoadTexture("CircleTemple_e"), (FilterMode?)null), (CardMetaCategory[])(object)new CardMetaCategory[3] { default(CardMetaCategory), (CardMetaCategory)1, (CardMetaCategory)(int)GrimoraPlugin.GrimoraChoiceNode }), (Ability[])(object)new Ability[2] { (Ability)52, (Ability)39 })); val.temple = (CardTemple)1; CardManager.Add("Grimmificcus", val); } public void AddDiamondTemple() { //IL_0088: Unknown result type (might be due to invalid IL or missing references) //IL_008e: Expected I4, but got Unknown //IL_00b0: Unknown result type (might be due to invalid IL or missing references) CardInfo val = CardExtensions.SetDefaultPart1Card(CardExtensions.AddAbilities(CardExtensions.AddMetaCategories(CardExtensions.SetEmissivePortrait(CardExtensions.SetPixelPortrait(CardExtensions.SetPortrait(CardExtensions.SetCost(CardManager.New("Grimmificcus", "DiamondTemple", "Orange Temple", 0, 3, "Temple used to channel the power of Orange Moxes."), (int?)0, (int?)3, (int?)4, (List<GemType>)null), Tools.LoadTexture("Diamon