Decompiled source of FriendCardsMod v1.0.0

plugins/FriendCardsMod.dll

Decompiled 4 hours ago
using System;
using System.Collections;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using System.Runtime.Versioning;
using BepInEx;
using HarmonyLib;
using UnboundLib.Cards;
using UnboundLib.GameModes;
using UnboundLib.Utils;
using UnityEngine;

[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)]
[assembly: AssemblyTitle("FriendCardsMod")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("FriendCardsMod")]
[assembly: AssemblyCopyright("Copyright ©  2026")]
[assembly: AssemblyTrademark("")]
[assembly: ComVisible(false)]
[assembly: Guid("503b6a2f-e723-4139-b7e0-040352341557")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: TargetFramework(".NETFramework,Version=v4.7.2", FrameworkDisplayName = ".NET Framework 4.7.2")]
[assembly: AssemblyVersion("1.0.0.0")]
[BepInPlugin("friends.mod.friendcards", "Friend Cards", "1.0.0")]
[BepInDependency(/*Could not decode attribute arguments.*/)]
public class FriendCardsMod : BaseUnityPlugin
{
	private void Awake()
	{
		CustomCard.BuildCard<LucaCard>();
		CustomCard.BuildCard<AhmedCard>();
		CustomCard.BuildCard<LolplopCard>();
		CustomCard.BuildCard<JoelCard>();
		CustomCard.BuildCard<EldinCard>();
		((BaseUnityPlugin)this).Logger.LogInfo((object)"Friend Cards geladen!");
	}
}
public class LucaCard : CustomCard
{
	protected override string GetTitle()
	{
		return "Luca";
	}

	protected override string GetDescription()
	{
		return "Gym Bro Mode";
	}

	protected override Rarity GetRarity()
	{
		return (Rarity)2;
	}

	protected override CardThemeColorType GetTheme()
	{
		return (CardThemeColorType)0;
	}

	protected override CardInfoStat[] GetStats()
	{
		return (CardInfoStat[])(object)new CardInfoStat[0];
	}

	protected override GameObject GetCardArt()
	{
		return null;
	}

	public override string GetModName()
	{
		return "FriendCards";
	}

	public override void OnAddCard(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers statModifiers)
	{
		gun.projectileSize += 2f;
		gun.damage *= 3f;
		statModifiers.movementSpeed *= 0.5f;
		data.maxHealth *= 1.5f;
	}
}
public class AhmedCard : CustomCard
{
	protected override string GetTitle()
	{
		return "Ahmed";
	}

	protected override string GetDescription()
	{
		return "Soundboard Chaos";
	}

	protected override Rarity GetRarity()
	{
		return (Rarity)0;
	}

	protected override CardThemeColorType GetTheme()
	{
		return (CardThemeColorType)3;
	}

	protected override CardInfoStat[] GetStats()
	{
		return (CardInfoStat[])(object)new CardInfoStat[0];
	}

	protected override GameObject GetCardArt()
	{
		return null;
	}

	public override string GetModName()
	{
		return "FriendCards";
	}

	public override void OnAddCard(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers statModifiers)
	{
		gun.damage *= 1.25f;
		gun.attackSpeed *= 0.8f;
	}
}
public class LolplopCard : CustomCard
{
	protected override string GetTitle()
	{
		return "Lolplop";
	}

	protected override string GetDescription()
	{
		return "Bass Drop";
	}

	protected override Rarity GetRarity()
	{
		return (Rarity)2;
	}

	protected override CardThemeColorType GetTheme()
	{
		return (CardThemeColorType)1;
	}

	protected override CardInfoStat[] GetStats()
	{
		return (CardInfoStat[])(object)new CardInfoStat[0];
	}

	protected override GameObject GetCardArt()
	{
		return null;
	}

	public override string GetModName()
	{
		return "FriendCards";
	}

	public override void OnAddCard(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers statModifiers)
	{
		gun.knockback += 5f;
		gun.projectileSize += 1f;
		gun.damage *= 1.5f;
	}
}
public class JoelCard : CustomCard
{
	protected override string GetTitle()
	{
		return "Joel";
	}

	protected override string GetDescription()
	{
		return "Strassencruiser";
	}

	protected override Rarity GetRarity()
	{
		return (Rarity)0;
	}

	protected override CardThemeColorType GetTheme()
	{
		return (CardThemeColorType)7;
	}

	protected override CardInfoStat[] GetStats()
	{
		return (CardInfoStat[])(object)new CardInfoStat[0];
	}

	protected override GameObject GetCardArt()
	{
		return null;
	}

	public override string GetModName()
	{
		return "FriendCards";
	}

	public override void OnAddCard(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers statModifiers)
	{
		statModifiers.movementSpeed *= 2f;
		gun.attackSpeed *= 3f;
		gun.damage *= 2f;
	}
}
public class EldinCard : CustomCard
{
	protected override string GetTitle()
	{
		return "Eldin";
	}

	protected override string GetDescription()
	{
		return "Drip Overload";
	}

	protected override Rarity GetRarity()
	{
		return (Rarity)2;
	}

	protected override CardThemeColorType GetTheme()
	{
		return (CardThemeColorType)8;
	}

	protected override CardInfoStat[] GetStats()
	{
		return (CardInfoStat[])(object)new CardInfoStat[0];
	}

	protected override GameObject GetCardArt()
	{
		return null;
	}

	public override string GetModName()
	{
		return "FriendCards";
	}

	public override void OnAddCard(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers statModifiers)
	{
		gun.reflects += 10;
		gun.numberOfProjectiles++;
		statModifiers.movementSpeed *= 1.3f;
	}
}
[BepInPlugin("friends.mod.houserules", "House Rules", "1.0.0")]
[BepInDependency(/*Could not decode attribute arguments.*/)]
public class HouseRulesMod : BaseUnityPlugin
{
	[HarmonyPatch(typeof(CardManager), "GetCardsToSpawn")]
	public class BanReviveCardsPatch
	{
		private static void Postfix(ref List<CardInfo> __result)
		{
			__result = __result.Where((CardInfo card) => !BANNED_CARDS.Any((string banned) => card.cardName.ToLower().Contains(banned.ToLower()))).ToList();
		}
	}

	[HarmonyPatch(typeof(CardManager), "GetCardsToSpawn")]
	public class BoostTableFlipPatch
	{
		private static void Postfix(ref List<CardInfo> __result)
		{
			List<CardInfo> source = (from c in CardManager.cards.Values
				where c.cardInfo.cardName.ToLower().Contains("table")
				select c.cardInfo).ToList();
			foreach (CardInfo item in source.Take(3))
			{
				if (!__result.Contains(item))
				{
					__result.Add(item);
				}
			}
		}
	}

	[HarmonyPatch(typeof(CardChoiceVisuals), "Show")]
	public class MoreCardsPatch
	{
		private static void Prefix(ref int amount)
		{
			amount = 6;
		}
	}

	[CompilerGenerated]
	private sealed class <DoLottoRound>d__7 : IEnumerator<object>, IDisposable, IEnumerator
	{
		private int <>1__state;

		private object <>2__current;

		public HouseRulesMod <>4__this;

		private List<Player> <players>5__1;

		private List<CardInfo> <allCards>5__2;

		private int <i>5__3;

		object IEnumerator<object>.Current
		{
			[DebuggerHidden]
			get
			{
				return <>2__current;
			}
		}

		object IEnumerator.Current
		{
			[DebuggerHidden]
			get
			{
				return <>2__current;
			}
		}

		[DebuggerHidden]
		public <DoLottoRound>d__7(int <>1__state)
		{
			this.<>1__state = <>1__state;
		}

		[DebuggerHidden]
		void IDisposable.Dispose()
		{
			<players>5__1 = null;
			<allCards>5__2 = null;
			<>1__state = -2;
		}

		private bool MoveNext()
		{
			if (<>1__state != 0)
			{
				return false;
			}
			<>1__state = -1;
			<players>5__1 = PlayerManager.instance.players;
			<allCards>5__2 = (from c in CardManager.cards.Values
				where !BANNED_CARDS.Contains(c.cardInfo.cardName)
				select c.cardInfo into _
				orderby Random.value
				select _).ToList();
			<i>5__3 = 0;
			while (<i>5__3 < <players>5__1.Count)
			{
				if (<i>5__3 < <allCards>5__2.Count)
				{
					<players>5__1[<i>5__3].data.currentCards.Add(<allCards>5__2[<i>5__3]);
				}
				<i>5__3++;
			}
			return false;
		}

		bool IEnumerator.MoveNext()
		{
			//ILSpy generated this explicit interface implementation from .override directive in MoveNext
			return this.MoveNext();
		}

		[DebuggerHidden]
		void IEnumerator.Reset()
		{
			throw new NotSupportedException();
		}
	}

	[CompilerGenerated]
	private sealed class <OnPickStart>d__4 : IEnumerator<object>, IDisposable, IEnumerator
	{
		private int <>1__state;

		private object <>2__current;

		public IGameModeHandler gm;

		public HouseRulesMod <>4__this;

		object IEnumerator<object>.Current
		{
			[DebuggerHidden]
			get
			{
				return <>2__current;
			}
		}

		object IEnumerator.Current
		{
			[DebuggerHidden]
			get
			{
				return <>2__current;
			}
		}

		[DebuggerHidden]
		public <OnPickStart>d__4(int <>1__state)
		{
			this.<>1__state = <>1__state;
		}

		[DebuggerHidden]
		void IDisposable.Dispose()
		{
			<>1__state = -2;
		}

		private bool MoveNext()
		{
			if (<>1__state != 0)
			{
				return false;
			}
			<>1__state = -1;
			return false;
		}

		bool IEnumerator.MoveNext()
		{
			//ILSpy generated this explicit interface implementation from .override directive in MoveNext
			return this.MoveNext();
		}

		[DebuggerHidden]
		void IEnumerator.Reset()
		{
			throw new NotSupportedException();
		}
	}

	[CompilerGenerated]
	private sealed class <OnRoundStart>d__6 : IEnumerator<object>, IDisposable, IEnumerator
	{
		private int <>1__state;

		private object <>2__current;

		public IGameModeHandler gm;

		public HouseRulesMod <>4__this;

		object IEnumerator<object>.Current
		{
			[DebuggerHidden]
			get
			{
				return <>2__current;
			}
		}

		object IEnumerator.Current
		{
			[DebuggerHidden]
			get
			{
				return <>2__current;
			}
		}

		[DebuggerHidden]
		public <OnRoundStart>d__6(int <>1__state)
		{
			this.<>1__state = <>1__state;
		}

		[DebuggerHidden]
		void IDisposable.Dispose()
		{
			<>1__state = -2;
		}

		private bool MoveNext()
		{
			switch (<>1__state)
			{
			default:
				return false;
			case 0:
				<>1__state = -1;
				roundCounter++;
				if (roundCounter % 3 == 0)
				{
					<>2__current = <>4__this.DoLottoRound();
					<>1__state = 1;
					return true;
				}
				break;
			case 1:
				<>1__state = -1;
				break;
			}
			return false;
		}

		bool IEnumerator.MoveNext()
		{
			//ILSpy generated this explicit interface implementation from .override directive in MoveNext
			return this.MoveNext();
		}

		[DebuggerHidden]
		void IEnumerator.Reset()
		{
			throw new NotSupportedException();
		}
	}

	public static HouseRulesMod instance;

	private Harmony harmony;

	public static readonly string[] BANNED_CARDS = new string[6] { "Zombie", "Second Wind", "Revive", "Extra Life", "Phoenix", "Cheat Death" };

	private static int roundCounter = 0;

	private void Awake()
	{
		//IL_000d: Unknown result type (might be due to invalid IL or missing references)
		//IL_0017: Expected O, but got Unknown
		instance = this;
		harmony = new Harmony("friends.mod.houserules");
		harmony.PatchAll();
		GameModeManager.AddHook("PickStart", (Func<IGameModeHandler, IEnumerator>)OnPickStart);
		GameModeManager.AddHook("RoundStart", (Func<IGameModeHandler, IEnumerator>)OnRoundStart);
		((BaseUnityPlugin)this).Logger.LogInfo((object)"House Rules geladen!");
	}

	[IteratorStateMachine(typeof(<OnPickStart>d__4))]
	private IEnumerator OnPickStart(IGameModeHandler gm)
	{
		//yield-return decompiler failed: Unexpected instruction in Iterator.Dispose()
		return new <OnPickStart>d__4(0)
		{
			<>4__this = this,
			gm = gm
		};
	}

	[IteratorStateMachine(typeof(<OnRoundStart>d__6))]
	private IEnumerator OnRoundStart(IGameModeHandler gm)
	{
		//yield-return decompiler failed: Unexpected instruction in Iterator.Dispose()
		return new <OnRoundStart>d__6(0)
		{
			<>4__this = this,
			gm = gm
		};
	}

	[IteratorStateMachine(typeof(<DoLottoRound>d__7))]
	private IEnumerator DoLottoRound()
	{
		//yield-return decompiler failed: Unexpected instruction in Iterator.Dispose()
		return new <DoLottoRound>d__7(0)
		{
			<>4__this = this
		};
	}
}