using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.Versioning;
using System.Security;
using System.Security.Permissions;
using BepInEx;
using BepInEx.Logging;
using HarmonyLib;
using Microsoft.CodeAnalysis;
using Obeliskial_Content;
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.2.0")]
[assembly: AssemblyInformationalVersion("1.0.2+19b1287fef2e55a6cdb1fda2e2ef838f73ec020f")]
[assembly: AssemblyProduct("Veteran Hunter Andrin")]
[assembly: AssemblyTitle("com.shazixnar.VeteranHunterAndrinTraits")]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: AssemblyVersion("1.0.2.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
{
public static string[] myTraitList = new string[3] { "shazixnarmasterofmeleeandranged", "shazixnarmasteroftrack", "shazixnartracker" };
public static void myDoTrait(string _trait, ref Trait __instance)
{
//IL_0012: Unknown result type (might be due to invalid IL or missing references)
//IL_0017: Unknown result type (might be due to invalid IL or missing references)
//IL_00ce: Unknown result type (might be due to invalid IL or missing references)
//IL_05b3: Unknown result type (might be due to invalid IL or missing references)
//IL_05b8: Unknown result type (might be due to invalid IL or missing references)
//IL_044c: Unknown result type (might be due to invalid IL or missing references)
//IL_0451: Unknown result type (might be due to invalid IL or missing references)
EventActivation value = Traverse.Create((object)__instance).Field("theEvent").GetValue<EventActivation>();
Character value2 = Traverse.Create((object)__instance).Field("character").GetValue<Character>();
Character value3 = Traverse.Create((object)__instance).Field("target").GetValue<Character>();
int value4 = Traverse.Create((object)__instance).Field("auxInt").GetValue<int>();
string value5 = Traverse.Create((object)__instance).Field("auxString").GetValue<string>();
CardData value6 = Traverse.Create((object)__instance).Field("castedCard").GetValue<CardData>();
Traverse.Create((object)__instance).Field("character").SetValue((object)value2);
Traverse.Create((object)__instance).Field("target").SetValue((object)value3);
Traverse.Create((object)__instance).Field("theEvent").SetValue((object)value);
Traverse.Create((object)__instance).Field("auxInt").SetValue((object)value4);
Traverse.Create((object)__instance).Field("auxString").SetValue((object)value5);
Traverse.Create((object)__instance).Field("castedCard").SetValue((object)value6);
TraitData traitData = Globals.Instance.GetTraitData(_trait);
List<CardData> list = new List<CardData>();
List<string> heroHand = MatchManager.Instance.GetHeroHand(value2.HeroIndex);
Hero[] teamHero = MatchManager.Instance.GetTeamHero();
NPC[] teamNPC = MatchManager.Instance.GetTeamNPC();
switch (_trait)
{
case "shazixnarmasterofmeleeandranged":
{
if (!((Object)(object)MatchManager.Instance != (Object)null) || !((Object)(object)value6 != (Object)null))
{
break;
}
traitData = Globals.Instance.GetTraitData("shazixnarmasterofmeleeandranged");
if ((MatchManager.Instance.activatedTraits != null && MatchManager.Instance.activatedTraits.ContainsKey("shazixnarmasterofmeleeandranged") && MatchManager.Instance.activatedTraits["shazixnarmasterofmeleeandranged"] > traitData.TimesPerTurn - 1) || (!value6.GetCardTypes().Contains((CardType)1) && !value6.GetCardTypes().Contains((CardType)2)) || !((Object)(object)value2.HeroData != (Object)null))
{
break;
}
if (!MatchManager.Instance.activatedTraits.ContainsKey("shazixnarmasterofmeleeandranged"))
{
MatchManager.Instance.activatedTraits.Add("shazixnarmasterofmeleeandranged", 1);
}
else
{
MatchManager.Instance.activatedTraits["shazixnarmasterofmeleeandranged"]++;
}
MatchManager.Instance.SetTraitInfoText();
CardClass cardClass;
if (value6.GetCardTypes().Contains((CardType)2))
{
value2.ModifyEnergy(1, true);
if ((Object)(object)value2.HeroItem != (Object)null)
{
((CharacterItem)value2.HeroItem).ScrollCombatText(Texts.Instance.GetText("traits_Master of Melle and Ranged", "") + TextChargesLeft(MatchManager.Instance.activatedTraits["shazixnarmasterofmeleeandranged"], traitData.TimesPerTurn), (CombatScrollEffectType)7);
EffectsManager.Instance.PlayEffectAC("energy", true, ((CharacterItem)value2.HeroItem).CharImageT, false, 0f);
}
for (int k = 0; k < teamNPC.Length; k++)
{
if (teamNPC[k] != null && ((Character)teamNPC[k]).Alive)
{
((Character)teamNPC[k]).SetAuraTrait(value2, "mark", 2);
}
}
string text = MatchManager.Instance.CreateCardInDictionary("", "", false);
CardData cardData = MatchManager.Instance.GetCardData(text, true);
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);
cardData = MatchManager.Instance.GetCardData(text, true);
cardClass = cardData.CardClass;
}
while (!(((object)(CardClass)(ref cardClass)).ToString() != "Monster"));
cardData.Vanish = true;
cardData.EnergyReductionPermanent = 3;
MatchManager.Instance.GenerateNewCard(1, text, false, (CardPlace)5, (CardData)null, (CardData)null, -1, true, 0);
MatchManager.Instance.ItemTraitActivated(true);
MatchManager.Instance.CreateLogCardModification(cardData.InternalId, MatchManager.Instance.GetHero(value2.HeroIndex));
}
else if (value6.GetCardTypes().Contains((CardType)1))
{
string text3 = MatchManager.Instance.CreateCardInDictionary("", "", false);
CardData cardData2 = MatchManager.Instance.GetCardData(text3, true);
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);
cardData2 = MatchManager.Instance.GetCardData(text3, true);
cardClass = cardData2.CardClass;
}
while (!(((object)(CardClass)(ref cardClass)).ToString() != "Monster"));
cardData2.Vanish = true;
cardData2.EnergyReductionPermanent = 3;
MatchManager.Instance.GenerateNewCard(1, text3, false, (CardPlace)5, (CardData)null, (CardData)null, -1, true, 0);
MatchManager.Instance.ItemTraitActivated(true);
MatchManager.Instance.CreateLogCardModification(cardData2.InternalId, MatchManager.Instance.GetHero(value2.HeroIndex));
}
break;
}
case "shazixnarmasteroftrack":
{
if (!((Object)(object)MatchManager.Instance != (Object)null) || !((Object)(object)value6 != (Object)null))
{
break;
}
traitData = Globals.Instance.GetTraitData("shazixnarmasteroftrack");
if ((MatchManager.Instance.activatedTraits != null && MatchManager.Instance.activatedTraits.ContainsKey("shazixnarmasteroftrack") && MatchManager.Instance.activatedTraits["shazixnarmasteroftrack"] > traitData.TimesPerTurn - 1) || !value6.GetCardTypes().Contains((CardType)16) || !((Object)(object)value2.HeroData != (Object)null))
{
break;
}
if (!MatchManager.Instance.activatedTraits.ContainsKey("shazixnarmasteroftrack"))
{
MatchManager.Instance.activatedTraits.Add("shazixnarmasteroftrack", 1);
}
else
{
MatchManager.Instance.activatedTraits["shazixnarmasteroftrack"]++;
}
MatchManager.Instance.SetTraitInfoText();
MatchManager.Instance.NewCard(1, (CardFrom)0, "");
NPC[] teamNPC3 = MatchManager.Instance.GetTeamNPC();
for (int j = 0; j < teamNPC3.Length; j++)
{
if (teamNPC3[j] != null && ((Character)teamNPC3[j]).Alive)
{
((Character)teamNPC3[j]).SetAuraTrait(value2, "sight", 2);
}
}
break;
}
case "shazixnartracker":
{
if (!((Object)(object)value2.HeroData != (Object)null))
{
break;
}
NPC[] teamNPC2 = MatchManager.Instance.GetTeamNPC();
for (int i = 0; i < teamNPC2.Length; i++)
{
if (teamNPC2[i] != null && ((Character)teamNPC2[i]).Alive)
{
((Character)teamNPC2[i]).SetAuraTrait(value2, "mark", 1);
if ((Object)(object)((Character)teamNPC2[i]).NPCItem != (Object)null)
{
((CharacterItem)((Character)teamNPC2[i]).NPCItem).ScrollCombatText(Texts.Instance.GetText("traits_Tracker", ""), (CombatScrollEffectType)7);
}
}
}
break;
}
}
}
[HarmonyPrefix]
[HarmonyPatch(typeof(Trait), "DoTrait")]
public static bool DoTrait(EventActivation _theEvent, string _trait, Character _character, Character _target, int _auxInt, string _auxString, CardData _castedCard, ref Trait __instance)
{
//IL_005b: Unknown result type (might be due to invalid IL or missing references)
if ((Object)(object)MatchManager.Instance == (Object)null)
{
return false;
}
Traverse.Create((object)__instance).Field("character").SetValue((object)_character);
Traverse.Create((object)__instance).Field("target").SetValue((object)_target);
Traverse.Create((object)__instance).Field("theEvent").SetValue((object)_theEvent);
Traverse.Create((object)__instance).Field("auxInt").SetValue((object)_auxInt);
Traverse.Create((object)__instance).Field("auxString").SetValue((object)_auxString);
Traverse.Create((object)__instance).Field("castedCard").SetValue((object)_castedCard);
if (Content.medsCustomTraitsSource.Contains(_trait) && myTraitList.Contains(_trait))
{
myDoTrait(_trait, ref __instance);
return false;
}
return true;
}
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.2")]
[BepInDependency(/*Could not decode attribute arguments.*/)]
[BepInDependency(/*Could not decode attribute arguments.*/)]
[BepInProcess("AcrossTheObelisk.exe")]
public class Plugin : BaseUnityPlugin
{
internal const int ModDate = 20250801;
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.2 has loaded!");
Essentials.RegisterMod("Veteran Hunter Andrin", "Shazixnar", "Redone Andrin's traits.", "1.0.2", 20250801, "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.2";
}
}