Decompiled source of Veteran Hunter Andrin v1.0.3

BepInEx/plugins/com.shazixnar.VeteranHunterAndrinTraits.dll

Decompiled 6 days ago
using System;
using System.Diagnostics;
using System.Linq;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.Versioning;
using System.Security;
using System.Security.Permissions;
using BepInEx;
using BepInEx.Logging;
using Cards;
using HarmonyLib;
using Microsoft.CodeAnalysis;
using Obeliskial_Essentials;
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.1", FrameworkDisplayName = ".NET Standard 2.1")]
[assembly: AssemblyCompany("com.shazixnar.VeteranHunterAndrinTraits")]
[assembly: AssemblyConfiguration("Debug")]
[assembly: AssemblyDescription("veteran hunter andrin, made by Shazixnar")]
[assembly: AssemblyFileVersion("1.0.3.0")]
[assembly: AssemblyInformationalVersion("1.0.3+080d331950da8eb3471eed36529abffe903372b0")]
[assembly: AssemblyProduct("Veteran Hunter Andrin")]
[assembly: AssemblyTitle("com.shazixnar.VeteranHunterAndrinTraits")]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: AssemblyVersion("1.0.3.0")]
[module: UnverifiableCode]
[module: RefSafetyRules(11)]
namespace Microsoft.CodeAnalysis
{
	[CompilerGenerated]
	[Microsoft.CodeAnalysis.Embedded]
	internal sealed class EmbeddedAttribute : Attribute
	{
	}
}
namespace System.Runtime.CompilerServices
{
	[CompilerGenerated]
	[Microsoft.CodeAnalysis.Embedded]
	[AttributeUsage(AttributeTargets.Module, AllowMultiple = false, Inherited = false)]
	internal sealed class RefSafetyRulesAttribute : Attribute
	{
		public readonly int Version;

		public RefSafetyRulesAttribute(int P_0)
		{
			Version = P_0;
		}
	}
}
namespace TraitMod
{
	[HarmonyPatch]
	internal class Traits
	{
		[HarmonyPatch(typeof(Trait), "DoTrait")]
		public static class Trait_DoTrait_Patch
		{
			[HarmonyPrefix]
			public static bool Prefix(EventActivation __0, string __1, Character __2, Character __3, int __4, string __5, CardData __6, Trait __instance)
			{
				//IL_0014: Unknown result type (might be due to invalid IL or missing references)
				if (myTraitList.Contains(__1))
				{
					myDoTrait(__1, __0, __2, __3, __4, __5, __6);
					return false;
				}
				return true;
			}
		}

		public static string[] myTraitList = new string[3] { "shazixnarmasterofmeleeandranged", "shazixnarmasteroftrack", "shazixnartracker" };

		private static readonly Traits _instance = new Traits();

		public static void myDoTrait(string trait, EventActivation evt, Character character, Character target, int auxInt, string auxString, CardData castedCard)
		{
			//IL_003d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0054: Unknown result type (might be due to invalid IL or missing references)
			//IL_006b: Unknown result type (might be due to invalid IL or missing references)
			if (character != null)
			{
				switch (trait)
				{
				case "shazixnarmasterofmeleeandranged":
					_instance.shazixnarmasterofmeleeandranged(evt, character, target, auxInt, auxString, castedCard, trait);
					break;
				case "shazixnarmasteroftrack":
					_instance.shazixnarmasteroftrack(evt, character, target, auxInt, auxString, castedCard, trait);
					break;
				case "shazixnartracker":
					_instance.shazixnartracker(evt, character, target, auxInt, auxString, castedCard, trait);
					break;
				}
			}
		}

		public void shazixnarmasterofmeleeandranged(EventActivation evt, Character character, Character target, int auxInt, string auxString, CardData castedCard, string trait)
		{
			//IL_0379: Unknown result type (might be due to invalid IL or missing references)
			//IL_037e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0225: Unknown result type (might be due to invalid IL or missing references)
			//IL_022a: Unknown result type (might be due to invalid IL or missing references)
			if (character == null || (Object)(object)castedCard == (Object)null)
			{
				return;
			}
			TraitData traitData = Globals.Instance.GetTraitData(trait);
			int num = (MatchManager.Instance.activatedTraits.ContainsKey(trait) ? MatchManager.Instance.activatedTraits[trait] : 0);
			if (num >= traitData.TimesPerTurn)
			{
				return;
			}
			bool flag = castedCard.GetCardTypes().Contains((CardType)1);
			bool flag2 = castedCard.GetCardTypes().Contains((CardType)2);
			if (!flag && !flag2)
			{
				return;
			}
			MatchManager.Instance.activatedTraits[trait] = num + 1;
			MatchManager.Instance.SetTraitInfoText();
			HeroItem heroItem = character.HeroItem;
			if (heroItem != null)
			{
				((CharacterItem)heroItem).ScrollCombatText(Texts.Instance.GetText("traits_Master of Melle and Ranged", "") + Functions.TextChargesLeft(num + 1, traitData.TimesPerTurn), (CombatScrollEffectType)7);
			}
			NPC[] teamNPC = MatchManager.Instance.GetTeamNPC();
			CardClass cardClass;
			if (flag2)
			{
				character.ModifyEnergy(1, true);
				EffectsManager instance = EffectsManager.Instance;
				HeroItem heroItem2 = character.HeroItem;
				instance.PlayEffectAC("energy", true, (heroItem2 != null) ? ((CharacterItem)heroItem2).CharImageT : null, false, 0f, false);
				NPC[] array = teamNPC;
				foreach (NPC val in array)
				{
					if (val != null && ((Character)val).Alive)
					{
						((Character)val).SetAuraTrait(character, "mark", 2);
					}
				}
				string text = "";
				CardData val2 = null;
				do
				{
					int randomIntRange = MatchManager.Instance.GetRandomIntRange(0, 100, "trait", "");
					int randomIntRange2 = MatchManager.Instance.GetRandomIntRange(0, Globals.Instance.CardListByType[(CardType)1].Count, "trait", "");
					string text2 = Globals.Instance.CardListByType[(CardType)1][randomIntRange2];
					text2 = Functions.GetCardByRarity(randomIntRange, Globals.Instance.GetCardData(text2, false), false);
					text = MatchManager.Instance.CreateCardInDictionary(text2, "", false);
					val2 = MatchManager.Instance.GetCardData(text, true);
					cardClass = val2.CardClass;
				}
				while (((object)(CardClass)(ref cardClass)).ToString() == "Monster");
				val2.Vanish = true;
				val2.EnergyReductionPermanent = 3;
				MatchManager.Instance.GenerateNewCard(1, text, false, (CardPlace)5, (CardData)null, (CardData)null, -1, true, 0, (CopyConfig)null);
				MatchManager.Instance.ItemTraitActivated(true);
				MatchManager.Instance.CreateLogCardModification(val2.InternalId, MatchManager.Instance.GetHero(character.HeroIndex));
			}
			else if (flag)
			{
				MatchManager.Instance.NewCard(1, (CardFrom)0, "");
				character.SetAuraTrait(character, "powerful", 1);
				string text3 = "";
				CardData val3 = null;
				do
				{
					int randomIntRange3 = MatchManager.Instance.GetRandomIntRange(0, 100, "trait", "");
					int randomIntRange4 = MatchManager.Instance.GetRandomIntRange(0, Globals.Instance.CardListByType[(CardType)2].Count, "trait", "");
					string text4 = Globals.Instance.CardListByType[(CardType)2][randomIntRange4];
					text4 = Functions.GetCardByRarity(randomIntRange3, Globals.Instance.GetCardData(text4, false), false);
					text3 = MatchManager.Instance.CreateCardInDictionary(text4, "", false);
					val3 = MatchManager.Instance.GetCardData(text3, true);
					cardClass = val3.CardClass;
				}
				while (((object)(CardClass)(ref cardClass)).ToString() == "Monster");
				val3.Vanish = true;
				val3.EnergyReductionPermanent = 3;
				MatchManager.Instance.GenerateNewCard(1, text3, false, (CardPlace)5, (CardData)null, (CardData)null, -1, true, 0, (CopyConfig)null);
				MatchManager.Instance.ItemTraitActivated(true);
				MatchManager.Instance.CreateLogCardModification(val3.InternalId, MatchManager.Instance.GetHero(character.HeroIndex));
			}
		}

		public void shazixnarmasteroftrack(EventActivation evt, Character character, Character target, int auxInt, string auxString, CardData castedCard, string trait)
		{
			if (character == null || (Object)(object)castedCard == (Object)null)
			{
				return;
			}
			TraitData traitData = Globals.Instance.GetTraitData(trait);
			int num = (MatchManager.Instance.activatedTraits.ContainsKey(trait) ? MatchManager.Instance.activatedTraits[trait] : 0);
			if (num >= traitData.TimesPerTurn || !castedCard.HasCardType((CardType)16) || (Object)(object)character.HeroData == (Object)null)
			{
				return;
			}
			MatchManager.Instance.activatedTraits[trait] = num + 1;
			MatchManager.Instance.SetTraitInfoText();
			HeroItem heroItem = character.HeroItem;
			if (heroItem != null)
			{
				((CharacterItem)heroItem).ScrollCombatText(Texts.Instance.GetText("traits_Master of Track", "") + Functions.TextChargesLeft(num + 1, traitData.TimesPerTurn), (CombatScrollEffectType)7);
			}
			MatchManager.Instance.NewCard(1, (CardFrom)0, "");
			NPC[] teamNPC = MatchManager.Instance.GetTeamNPC();
			NPC[] array = teamNPC;
			foreach (NPC val in array)
			{
				if (val != null && ((Character)val).Alive)
				{
					((Character)val).SetAuraTrait(character, "sight", 2);
				}
			}
		}

		public void shazixnartracker(EventActivation evt, Character character, Character target, int auxInt, string auxString, CardData castedCard, string trait)
		{
			if (character == null || (Object)(object)character.HeroData == (Object)null)
			{
				return;
			}
			NPC[] teamNPC = MatchManager.Instance.GetTeamNPC();
			NPC[] array = teamNPC;
			foreach (NPC val in array)
			{
				if (val != null && ((Character)val).Alive)
				{
					((Character)val).SetAuraTrait(character, "mark", 1);
					if ((Object)(object)((Character)val).NPCItem != (Object)null)
					{
						((CharacterItem)((Character)val).NPCItem).ScrollCombatText(Texts.Instance.GetText("traits_Tracker", ""), (CombatScrollEffectType)7);
					}
				}
			}
		}

		public static string TextChargesLeft(int currentCharges, int chargesTotal)
		{
			int num = currentCharges;
			int num2 = chargesTotal;
			return "<br><color=#FFF>" + num + "/" + num2 + "</color>";
		}

		[HarmonyPostfix]
		[HarmonyPatch(typeof(AtOManager), "GlobalAuraCurseModificationByTraitsAndItems")]
		public static void GlobalAuraCurseModificationByTraitsAndItemsPostfix(ref AtOManager __instance, ref AuraCurseData __result, string _type, string _acId, Character _characterCaster, Character _characterTarget)
		{
			bool flag = false;
			bool flag2 = false;
			if (_characterCaster != null && _characterCaster.IsHero)
			{
				flag = _characterCaster.IsHero;
			}
			if (_characterTarget != null && _characterTarget.IsHero)
			{
				flag2 = true;
			}
			if (_acId == "sight" && _type == "set" && !flag2 && __instance.TeamHaveTrait("shazixnarmasteroftrack"))
			{
				__result.AuraDamageIncreasedPercentPerStack = -0.2f;
				__result.ResistModifiedPercentagePerStack = -0.2f;
				__result.AuraDamageType = (DamageType)10;
				__result.ResistModified = (DamageType)10;
			}
			if (_acId == "mark" && _type == "set" && !flag2 && __instance.TeamHaveTrait("shazixnarmarkofdeath"))
			{
				__result.ResistModifiedPercentagePerStack = -0.2f;
				__result.ResistModified = (DamageType)10;
				__result.MaxMadnessCharges = 75;
			}
		}

		[HarmonyPrefix]
		[HarmonyPatch(typeof(Character), "SetEvent")]
		public static void SetEventPrefix(ref Character __instance, ref EventActivation theEvent, Character target = null)
		{
			//IL_006d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0070: Unknown result type (might be due to invalid IL or missing references)
			if ((int)theEvent == 9 && !__instance.IsHero && target.HaveTrait("shazixnarmercilesshunter") && __instance.HasEffect("mark"))
			{
				float num = 2f;
				num *= 1f + (float)__instance.GetAuraCharges("bleed") * 0.01f;
				DamageType[] array = (DamageType[])(object)new DamageType[2]
				{
					(DamageType)1,
					(DamageType)3
				};
				DamageType val = array[Random.Range(0, array.Length)];
				__instance.IndirectDamage(val, Functions.FuncRoundToInt((float)__instance.GetAuraCharges("mark") * num), (AudioClip)null, "", "", "");
			}
		}
	}
}
namespace VeteranHunterAndrin
{
	[BepInPlugin("com.shazixnar.VeteranHunterAndrinTraits", "Veteran Hunter Andrin", "1.0.3")]
	[BepInDependency(/*Could not decode attribute arguments.*/)]
	[BepInDependency(/*Could not decode attribute arguments.*/)]
	[BepInProcess("AcrossTheObelisk.exe")]
	public class Plugin : BaseUnityPlugin
	{
		internal const int ModDate = 20251211;

		private readonly Harmony harmony = new Harmony("com.shazixnar.VeteranHunterAndrinTraits");

		internal static ManualLogSource Log;

		private void Awake()
		{
			Log = ((BaseUnityPlugin)this).Logger;
			Log.LogInfo((object)"com.shazixnar.VeteranHunterAndrinTraits 1.0.3 has loaded!");
			Essentials.RegisterMod("Veteran Hunter Andrin", "Shazixnar", "Redone Andrin's traits.", "1.0.3", 20251211, "https://across-the-obelisk.thunderstore.io/package/Shazixnar/Veteran_Hunter_Andrin/", (string[])null, "Veteran Hunter Andrin", 100, new string[5] { "content", "hero", "trait", "card", "perk" }, "", true);
			harmony.PatchAll();
		}
	}
	public static class PluginInfo
	{
		public const string PLUGIN_GUID = "com.shazixnar.VeteranHunterAndrinTraits";

		public const string PLUGIN_NAME = "Veteran Hunter Andrin";

		public const string PLUGIN_VERSION = "1.0.3";
	}
}