Decompiled source of NeedMoreWater v1.0.12

plugins/NeedMoreWater/NeedMoreWater.Compat.dll

Decompiled 6 hours ago
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.Versioning;
using BepInEx;
using DiskCardGame;
using InscryptionAPI.Ascension;
using InscryptionAPI.Card;
using InscryptionAPI.Guid;
using InscryptionAPI.Localizing;
using Microsoft.CodeAnalysis;
using UnityEngine;

[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)]
[assembly: TargetFramework(".NETStandard,Version=v2.0", FrameworkDisplayName = ".NET Standard 2.0")]
[assembly: AssemblyCompany("NeedMoreWater.Compat")]
[assembly: AssemblyConfiguration("Release")]
[assembly: AssemblyFileVersion("1.0.11.0")]
[assembly: AssemblyInformationalVersion("1.0.11")]
[assembly: AssemblyProduct("NeedMoreWater.Compat")]
[assembly: AssemblyTitle("NeedMoreWater.Compat")]
[assembly: AssemblyVersion("1.0.11.0")]
[module: RefSafetyRules(11)]
namespace Microsoft.CodeAnalysis
{
	[CompilerGenerated]
	[Embedded]
	internal sealed class EmbeddedAttribute : Attribute
	{
	}
}
namespace System.Runtime.CompilerServices
{
	[CompilerGenerated]
	[Embedded]
	[AttributeUsage(AttributeTargets.Module, AllowMultiple = false, Inherited = false)]
	internal sealed class RefSafetyRulesAttribute : Attribute
	{
		public readonly int Version;

		public RefSafetyRulesAttribute(int P_0)
		{
			Version = P_0;
		}
	}
}
namespace NeedMoreWater.Compat
{
	[BepInPlugin("Rivera.NeedMoreWater.Compat", "NeedMoreWater Compat", "1.0.11")]
	[BepInDependency(/*Could not decode attribute arguments.*/)]
	[BepInDependency(/*Could not decode attribute arguments.*/)]
	public sealed class Plugin : BaseUnityPlugin
	{
		public const string PluginGuid = "Rivera.NeedMoreWater.Compat";

		public const string PluginName = "NeedMoreWater Compat";

		public const string PluginVersion = "1.0.11";

		public const string ApiGuid = "cyantist.inscryption.api";

		public const string BundleOfTotemsGuid = "Lily.BOT";

		private static readonly Tribe Aquatic = GuidManager.GetEnumValue<Tribe>("Lily.BOT", "aquatic");

		private void Awake()
		{
			AbilityManager.ModifyAbilityList += ModifyAbilities;
			CardManager.ModifyCardList += ModifyCards;
			RegisterSpanishTranslations();
			((BaseUnityPlugin)this).Logger.LogInfo((object)"NeedMoreWater compatibility/localisation layer loaded.");
		}

		private void Start()
		{
			CardManager.SyncCardList();
			ReplaceWaterborneBaseDeck();
			StarterDeckManager.SyncDeckList();
			FullStarterDeck val = ((IEnumerable<FullStarterDeck>)StarterDeckManager.AllDecks).FirstOrDefault((Func<FullStarterDeck, bool>)((FullStarterDeck d) => d.CardNames != null && d.CardNames.Contains("NMW_Catfish") && d.CardNames.Contains("NMW_Betafish")));
			if (val != null)
			{
				((BaseUnityPlugin)this).Logger.LogInfo((object)("Waterborne starter replacement active: " + string.Join(", ", val.CardNames)));
			}
			else
			{
				((BaseUnityPlugin)this).Logger.LogWarning((object)"Waterborne starter replacement was not found in StarterDeckManager.AllDecks.");
			}
		}

		private void ReplaceWaterborneBaseDeck()
		{
			FullStarterDeck val = ((IEnumerable<FullStarterDeck>)StarterDeckManager.BaseGameDecks).FirstOrDefault((Func<FullStarterDeck, bool>)((FullStarterDeck d) => d.CardNames != null && d.CardNames.Count((string n) => n == "Kingfisher") == 2));
			if (val == null)
			{
				((BaseUnityPlugin)this).Logger.LogWarning((object)"Could not locate the vanilla Waterborne starter deck (two Kingfishers).");
				return;
			}
			((BaseUnityPlugin)this).Logger.LogInfo((object)("Found vanilla Waterborne starter: " + string.Join(", ", val.CardNames)));
			string text = val.CardNames.FirstOrDefault((string n) => n != "Kingfisher");
			if (string.IsNullOrEmpty(text))
			{
				((BaseUnityPlugin)this).Logger.LogWarning((object)"Waterborne starter had no non-Kingfisher third card; replacement aborted.");
				return;
			}
			val.CardNames = new List<string> { "NMW_Catfish", "NMW_Betafish", text };
			((BaseUnityPlugin)this).Logger.LogInfo((object)("Waterborne base deck changed to: " + string.Join(", ", val.CardNames)));
		}

		private static List<FullAbility> ModifyAbilities(List<FullAbility> abilities)
		{
			FullAbility val = ((IEnumerable<FullAbility>)abilities).FirstOrDefault((Func<FullAbility, bool>)((FullAbility a) => (int)a.Info.ability == 53));
			if (val != null && !val.Info.metaCategories.Contains((AbilityMetaCategory)0))
			{
				AbilityExtensions.AddMetaCategories(val.Info, (AbilityMetaCategory[])(object)new AbilityMetaCategory[1]);
			}
			return abilities;
		}

		private static List<CardInfo> ModifyCards(List<CardInfo> cards)
		{
			//IL_006f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0081: Unknown result type (might be due to invalid IL or missing references)
			string[] array = new string[4] { "GreatKraken", "SquidBell", "SquidCards", "SquidMirror" };
			foreach (string cardName in array)
			{
				CardInfo val = ((IEnumerable<CardInfo>)cards).FirstOrDefault((Func<CardInfo, bool>)((CardInfo c) => ((Object)c).name == cardName));
				if (!((Object)(object)val == (Object)null))
				{
					if (val.tribes == null)
					{
						val.tribes = new List<Tribe>();
					}
					if (!val.tribes.Contains(Aquatic))
					{
						val.tribes.Add(Aquatic);
					}
				}
			}
			return cards;
		}

		private static void RegisterSpanishTranslations()
		{
			T("ats_fishhook_name", "Fish Hook", "Anzuelo");
			T("ats_fishhook_desc", "When [creature], a targeted card is moved to the owner's side of the board.", "Cuando se juega [creature], una carta seleccionada se mueve al lado del tablero de quien controla [creature].");
			T("ats_instant_name", "Instant", "Instantáneo");
			T("ats_instant_desc", "[creature] will perish immediately after its played.", "[creature] perece inmediatamente después de ser jugada.");
			T("ats_entomophage_name", "Entomophage", "Entomófago");
			T("ats_entomophage_desc", "[creature] will deal 2 additional damage to cards of the insect tribe.", "[creature] inflige 2 puntos de daño adicionales a las cartas de la tribu Insecto.");
			T("ats_tribehealth_name", "Tribe Health", "Salud tribal");
			T("ats_tribehealth_desc", "While [creature] is on the board, all other cards on your side of the board of the same tribe will gain +1 health.", "Mientras [creature] esté en el tablero, las demás cartas de su mismo lado y tribu obtienen +1 de vida.");
			T("ats_tribaltutor_name", "Tribal Tutor", "Tutor tribal");
			T("ats_tribaltutor_desc", "When [creature] is played, you may search your deck for a card of the same tribe and take it into your hand. No tribe counts as a tribe of tribeless.", "Cuando se juega [creature], puedes buscar en tu mazo una carta de la misma tribu y añadirla a tu mano. Las cartas sin tribu cuentan como pertenecientes a una misma tribu.");
			T("ats_lure_name", "Lure", "Señuelo");
			T("ats_lure_desc", "[creature] will cause facedown cards to become face up when attacking.", "Cuando [creature] ataca, hace que las cartas boca abajo se pongan boca arriba.");
			T("ats_submergedambush_name", "Submerged Ambush", "Emboscada sumergida");
			T("ats_submergedambush_desc", "[creature] will deal 1 damage to cards that attacked over it while it was face-down. Does not affect cards that are Airborne.", "[creature] inflige 1 de daño a las cartas que ataquen por encima de ella mientras está boca abajo. No afecta a las cartas que vuelan.");
			T("ats_toxinvigor_name", "Toxin (Vigor)", "Toxina (Vigor)");
			T("ats_toxinvigor_desc", "When [creature] damages another creature, that creature looses 1 health.", "Cuando [creature] daña a otra criatura, esa criatura pierde 1 de vida.");
			T("ats_toxin_name", "Toxin", "Toxina");
			T("ats_toxin_desc", "When [creature] damages another creature, that creature looses 1 power and 1 health.", "Cuando [creature] daña a otra criatura, esa criatura pierde 1 de ataque y 1 de vida.");
			T("ats_schooling_name", "Schooling", "Nado en banco");
			T("ats_schooling_desc", "[creature] will grant creatures with the waterborn 1 power.", "[creature] otorga +1 de ataque a las criaturas con Sumergirse.");
			T("ats_hourglass_name", "Hourglass", "Reloj de arena");
			T("ats_hourglass_desc", "[creature] will cause the opponant to skip their turn when played.", "Cuando se juega [creature], el oponente pierde su turno.");
			T("ats_deadlywaters_name", "Deadly Waters", "Aguas mortales");
			T("ats_deadlywaters_desc", "[creature] will kill cards that attacked over it while it was face-down. Does not affect cards that have Airborne or Made of Stone.", "[creature] mata a las cartas que ataquen por encima de ella mientras está boca abajo. No afecta a las cartas que vuelan ni a las hechas de piedra.");
			T("ats_electric_name", "Electric", "Eléctrico");
			T("ats_electric_desc", "When [creature] decalres an attack, they will deal half the damage to cards adjacent to the target.", "Cuando [creature] declara un ataque, inflige la mitad del daño a las cartas adyacentes al objetivo.");
			T("ats_shielded_name", "Shielded", "Blindado");
			T("ats_shielded_desc", "When [creature] is dealt damage, the damage dealt is halved, rounded down.", "Cuando [creature] recibe daño, el daño recibido se reduce a la mitad, redondeando hacia abajo.");
		}

		private static void T(string id, string original, string translation)
		{
			LocalizationManager.Translate("Rivera.NeedMoreWater.Compat", "NMW_" + id, original, translation, (Language)4);
		}
	}
}