using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.Versioning;
using BepInEx;
using Microsoft.CodeAnalysis;
using Sonigon;
using SoundImplementation;
using UnboundLib;
using UnboundLib.Cards;
using UnityEngine;
using UnityEngine.UI;
[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("MADGEIOSCustomCards")]
[assembly: AssemblyConfiguration("Debug")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: AssemblyInformationalVersion("1.0.0")]
[assembly: AssemblyProduct("MADGEIOSCustomCards")]
[assembly: AssemblyTitle("MADGEIOSCustomCards")]
[assembly: AssemblyVersion("1.0.0.0")]
namespace Microsoft.CodeAnalysis
{
[CompilerGenerated]
[Embedded]
internal sealed class EmbeddedAttribute : Attribute
{
}
}
namespace System.Runtime.CompilerServices
{
[CompilerGenerated]
[Embedded]
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Event | AttributeTargets.Parameter | AttributeTargets.ReturnValue | AttributeTargets.GenericParameter, AllowMultiple = false, Inherited = false)]
internal sealed class NullableAttribute : Attribute
{
public readonly byte[] NullableFlags;
public NullableAttribute(byte P_0)
{
NullableFlags = new byte[1] { P_0 };
}
public NullableAttribute(byte[] P_0)
{
NullableFlags = P_0;
}
}
[CompilerGenerated]
[Embedded]
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Method | AttributeTargets.Interface | AttributeTargets.Delegate, AllowMultiple = false, Inherited = false)]
internal sealed class NullableContextAttribute : Attribute
{
public readonly byte Flag;
public NullableContextAttribute(byte P_0)
{
Flag = P_0;
}
}
}
namespace MadgeiosDemonicCardsPack
{
[BepInDependency(/*Could not decode attribute arguments.*/)]
[BepInPlugin("com.madgeios.customcards", "MADGEIOS Custom Cards", "1.2.4")]
[BepInProcess("Rounds.exe")]
public class MyMod : BaseUnityPlugin
{
private const string ModId = "com.madgeios.customcards";
private const string ModName = "MADGEIOS Custom Cards";
private const string Version = "1.2.4";
private void Awake()
{
}
private void Start()
{
CustomCard.BuildCard<PlummetCard>();
CustomCard.BuildCard<SacrificeCard>();
CustomCard.BuildCard<RecoveryCard>();
CustomCard.BuildCard<ArcAmmoCard>();
CustomCard.BuildCard<AfterburnCard>();
CustomCard.BuildCard<BuoyantCard>();
CustomCard.BuildCard<ColossalCard>();
CustomCard.BuildCard<SlugsCard>();
}
}
public static class CardArtLoader
{
private static readonly Dictionary<string, GameObject> loadedArts = new Dictionary<string, GameObject>();
public static GameObject Load(string cardName)
{
//IL_00c3: Unknown result type (might be due to invalid IL or missing references)
//IL_00ca: Expected O, but got Unknown
//IL_011b: Unknown result type (might be due to invalid IL or missing references)
//IL_012a: Unknown result type (might be due to invalid IL or missing references)
//IL_0141: Unknown result type (might be due to invalid IL or missing references)
//IL_0148: Expected O, but got Unknown
//IL_016f: Unknown result type (might be due to invalid IL or missing references)
//IL_017c: Unknown result type (might be due to invalid IL or missing references)
//IL_0189: Unknown result type (might be due to invalid IL or missing references)
//IL_0196: Unknown result type (might be due to invalid IL or missing references)
//IL_01a3: Unknown result type (might be due to invalid IL or missing references)
//IL_01b0: Unknown result type (might be due to invalid IL or missing references)
//IL_01bd: Unknown result type (might be due to invalid IL or missing references)
if (loadedArts.TryGetValue(cardName, out GameObject value))
{
if ((Object)(object)value != (Object)null)
{
return value;
}
loadedArts.Remove(cardName);
}
string directoryName = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
string text = Path.Combine(directoryName, "Assets", cardName + ".png");
string text2 = Path.Combine(directoryName, cardName + ".png");
string text3 = null;
if (File.Exists(text))
{
text3 = text;
}
else if (File.Exists(text2))
{
text3 = text2;
}
if (text3 == null)
{
Debug.LogError("[MADGEIOS] Card art not found: " + cardName);
return null;
}
byte[] array = File.ReadAllBytes(text3);
Texture2D val = new Texture2D(2, 2);
if (!ImageConversion.LoadImage(val, array))
{
Debug.LogError("[MADGEIOS] Failed to load card art: " + text3);
Object.Destroy((Object)(object)val);
return null;
}
Sprite sprite = Sprite.Create(val, new Rect(0f, 0f, (float)((Texture)val).width, (float)((Texture)val).height), new Vector2(0.5f, 0.5f));
GameObject val2 = new GameObject(cardName + "CardArt");
Image val3 = val2.AddComponent<Image>();
val3.sprite = sprite;
val3.preserveAspect = false;
RectTransform component = val2.GetComponent<RectTransform>();
component.anchorMin = Vector2.zero;
component.anchorMax = Vector2.one;
component.offsetMin = Vector2.zero;
component.offsetMax = Vector2.zero;
component.anchoredPosition = Vector2.zero;
((Transform)component).localRotation = Quaternion.identity;
((Transform)component).localScale = Vector3.one;
Object.DontDestroyOnLoad((Object)(object)val2);
loadedArts[cardName] = val2;
return val2;
}
}
public class PlummetCard : CustomCard
{
public override void SetupCard(CardInfo cardInfo, Gun gun, ApplyCardStats cardStats, CharacterStatModifiers statModifiers, Block block)
{
block.cdAdd = 0.25f;
gun.damage = 1.25f;
}
public override void OnAddCard(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats)
{
PlummetBlockModifier orAddComponent = ExtensionMethods.GetOrAddComponent<PlummetBlockModifier>(((Component)player).gameObject, false);
orAddComponent.player = player;
orAddComponent.block = block;
}
public override void OnRemoveCard(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats)
{
PlummetBlockModifier component = ((Component)player).gameObject.GetComponent<PlummetBlockModifier>();
if ((Object)(object)component != (Object)null)
{
Object.Destroy((Object)(object)component);
}
}
protected override string GetTitle()
{
return "Plummet";
}
protected override string GetDescription()
{
return "Blocking forces all bullets downwards.";
}
protected override Rarity GetRarity()
{
return (Rarity)1;
}
protected override CardThemeColorType GetTheme()
{
return (CardThemeColorType)0;
}
protected override CardInfoStat[] GetStats()
{
//IL_0009: Unknown result type (might be due to invalid IL or missing references)
//IL_000e: Unknown result type (might be due to invalid IL or missing references)
//IL_0015: Unknown result type (might be due to invalid IL or missing references)
//IL_0020: Unknown result type (might be due to invalid IL or missing references)
//IL_002b: 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)
//IL_0033: Expected O, but got Unknown
//IL_0035: Unknown result type (might be due to invalid IL or missing references)
//IL_003a: Unknown result type (might be due to invalid IL or missing references)
//IL_0041: 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_0057: Unknown result type (might be due to invalid IL or missing references)
//IL_0059: Unknown result type (might be due to invalid IL or missing references)
//IL_005f: Expected O, but got Unknown
return (CardInfoStat[])(object)new CardInfoStat[2]
{
new CardInfoStat
{
positive = true,
stat = "DMG",
amount = "+25%",
simepleAmount = (SimpleAmount)0
},
new CardInfoStat
{
positive = false,
stat = "Block cooldown",
amount = "+0.5s",
simepleAmount = (SimpleAmount)0
}
};
}
public override void Callback()
{
}
protected override GameObject GetCardArt()
{
return CardArtLoader.Load("Plummet");
}
}
public class PlummetBlockModifier : MonoBehaviour
{
public Player player;
public Block block;
private void Start()
{
if ((Object)(object)block != (Object)null)
{
Block obj = block;
obj.BlockAction = (Action<BlockTriggerType>)Delegate.Combine(obj.BlockAction, new Action<BlockTriggerType>(OnBlock));
}
}
private void OnBlock(BlockTriggerType trigger)
{
//IL_0071: Unknown result type (might be due to invalid IL or missing references)
//IL_00c1: Unknown result type (might be due to invalid IL or missing references)
//IL_00f9: Unknown result type (might be due to invalid IL or missing references)
//IL_0106: Unknown result type (might be due to invalid IL or missing references)
//IL_0122: Unknown result type (might be due to invalid IL or missing references)
//IL_0133: Unknown result type (might be due to invalid IL or missing references)
//IL_0138: Unknown result type (might be due to invalid IL or missing references)
//IL_013d: Unknown result type (might be due to invalid IL or missing references)
if ((Object)(object)SoundPlayerStatic.Instance != (Object)null)
{
SoundPlayerStatic.Instance.PlayPlayerBallAppear();
}
GameObject[] array = GameObject.FindGameObjectsWithTag("Bullet");
GameObject[] array2 = array;
foreach (GameObject val in array2)
{
MoveTransform component = val.GetComponent<MoveTransform>();
if ((Object)(object)component == (Object)null)
{
continue;
}
SpriteRenderer[] componentsInChildren = val.GetComponentsInChildren<SpriteRenderer>();
SpriteRenderer[] array3 = componentsInChildren;
foreach (SpriteRenderer val2 in array3)
{
val2.color = Color.red;
}
Renderer[] componentsInChildren2 = val.GetComponentsInChildren<Renderer>();
Renderer[] array4 = componentsInChildren2;
foreach (Renderer val3 in array4)
{
if ((Object)(object)val3.material != (Object)null)
{
val3.material.color = Color.red;
}
}
TrailRenderer[] componentsInChildren3 = val.GetComponentsInChildren<TrailRenderer>();
TrailRenderer[] array5 = componentsInChildren3;
foreach (TrailRenderer val4 in array5)
{
val4.startColor = Color.red;
val4.endColor = Color.red;
}
component.velocity = Vector2.op_Implicit(Vector2.down * ((Vector3)(ref component.velocity)).magnitude);
}
}
private void OnDestroy()
{
if ((Object)(object)block != (Object)null)
{
Block obj = block;
obj.BlockAction = (Action<BlockTriggerType>)Delegate.Remove(obj.BlockAction, new Action<BlockTriggerType>(OnBlock));
}
}
}
public class SacrificeCard : CustomCard
{
public override void SetupCard(CardInfo cardInfo, Gun gun, ApplyCardStats cardStats, CharacterStatModifiers statModifiers)
{
statModifiers.health = 0.85f;
statModifiers.movementSpeed = 1.3f;
}
public override void OnAddCard(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats)
{
}
public override void OnRemoveCard(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats)
{
}
protected override string GetTitle()
{
return "Sacrifice";
}
protected override string GetDescription()
{
return "Blood for speed.";
}
protected override Rarity GetRarity()
{
return (Rarity)0;
}
protected override CardThemeColorType GetTheme()
{
return (CardThemeColorType)4;
}
protected override CardInfoStat[] GetStats()
{
//IL_0009: Unknown result type (might be due to invalid IL or missing references)
//IL_000e: Unknown result type (might be due to invalid IL or missing references)
//IL_0015: Unknown result type (might be due to invalid IL or missing references)
//IL_0020: Unknown result type (might be due to invalid IL or missing references)
//IL_002b: 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)
//IL_0033: Expected O, but got Unknown
//IL_0035: Unknown result type (might be due to invalid IL or missing references)
//IL_003a: Unknown result type (might be due to invalid IL or missing references)
//IL_0041: 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_0057: Unknown result type (might be due to invalid IL or missing references)
//IL_0059: Unknown result type (might be due to invalid IL or missing references)
//IL_005f: Expected O, but got Unknown
return (CardInfoStat[])(object)new CardInfoStat[2]
{
new CardInfoStat
{
positive = false,
stat = "HP",
amount = "-15%",
simepleAmount = (SimpleAmount)0
},
new CardInfoStat
{
positive = true,
stat = "Movement speed",
amount = "+30%",
simepleAmount = (SimpleAmount)0
}
};
}
public override void Callback()
{
}
protected override GameObject GetCardArt()
{
return CardArtLoader.Load("Sacrifice");
}
}
public class RecoveryCard : CustomCard
{
public override void SetupCard(CardInfo cardInfo, Gun gun, ApplyCardStats cardStats, CharacterStatModifiers statModifiers)
{
statModifiers.movementSpeed = 0.7f;
}
public override void OnAddCard(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats)
{
((Component)player).gameObject.AddComponent<RecoveryModifier>();
}
public override void OnRemoveCard(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats)
{
RecoveryModifier[] components = ((Component)player).gameObject.GetComponents<RecoveryModifier>();
if (components.Length != 0)
{
RecoveryModifier recoveryModifier = components[^1];
if ((Object)(object)recoveryModifier != (Object)null)
{
Object.Destroy((Object)(object)recoveryModifier);
}
}
}
protected override string GetTitle()
{
return "Recovery";
}
protected override string GetDescription()
{
return "Slowly regain health whilst under 75% max HP.";
}
protected override Rarity GetRarity()
{
return (Rarity)1;
}
protected override CardThemeColorType GetTheme()
{
return (CardThemeColorType)6;
}
protected override CardInfoStat[] GetStats()
{
//IL_0009: Unknown result type (might be due to invalid IL or missing references)
//IL_000e: Unknown result type (might be due to invalid IL or missing references)
//IL_0015: Unknown result type (might be due to invalid IL or missing references)
//IL_0020: Unknown result type (might be due to invalid IL or missing references)
//IL_002b: 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)
//IL_0033: Expected O, but got Unknown
//IL_0035: Unknown result type (might be due to invalid IL or missing references)
//IL_003a: Unknown result type (might be due to invalid IL or missing references)
//IL_0041: 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_0057: Unknown result type (might be due to invalid IL or missing references)
//IL_0059: Unknown result type (might be due to invalid IL or missing references)
//IL_005f: Expected O, but got Unknown
return (CardInfoStat[])(object)new CardInfoStat[2]
{
new CardInfoStat
{
positive = false,
stat = "Movement speed",
amount = "-30%",
simepleAmount = (SimpleAmount)0
},
new CardInfoStat
{
positive = true,
stat = "Regeneration",
amount = "4% of Max HP/s",
simepleAmount = (SimpleAmount)0
}
};
}
public override void Callback()
{
}
protected override GameObject GetCardArt()
{
return CardArtLoader.Load("Recovery");
}
}
public class RecoveryModifier : MonoBehaviour
{
private HealthHandler health;
private CharacterData data;
private void Start()
{
health = ((Component)this).GetComponent<HealthHandler>();
data = ((Component)this).GetComponent<CharacterData>();
}
private void Update()
{
if (!((Object)(object)health == (Object)null) && !((Object)(object)data == (Object)null) && !(data.health / data.maxHealth >= 0.75f))
{
health.Heal(data.maxHealth * 0.04f * TimeHandler.deltaTime);
}
}
}
public class ArcAmmoCard : CustomCard
{
public override void SetupCard(CardInfo cardInfo, Gun gun, ApplyCardStats cardStats, CharacterStatModifiers statModifiers)
{
gun.attackSpeed = 1.2f;
}
public override void OnAddCard(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats)
{
ArcAmmoModifier orAddComponent = ExtensionMethods.GetOrAddComponent<ArcAmmoModifier>(((Component)player).gameObject, false);
orAddComponent.owner = player;
}
public override void OnRemoveCard(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats)
{
ArcAmmoModifier component = ((Component)player).gameObject.GetComponent<ArcAmmoModifier>();
if ((Object)(object)component != (Object)null)
{
Object.Destroy((Object)(object)component);
}
}
protected override string GetTitle()
{
return "Arc Ammo";
}
protected override string GetDescription()
{
return "Your bullets connect with electric arcs that deal minor damage and slow enemies.";
}
protected override Rarity GetRarity()
{
return (Rarity)2;
}
protected override CardThemeColorType GetTheme()
{
return (CardThemeColorType)3;
}
protected override CardInfoStat[] GetStats()
{
//IL_0009: Unknown result type (might be due to invalid IL or missing references)
//IL_000e: Unknown result type (might be due to invalid IL or missing references)
//IL_0015: Unknown result type (might be due to invalid IL or missing references)
//IL_0020: Unknown result type (might be due to invalid IL or missing references)
//IL_002b: 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)
//IL_0033: Expected O, but got Unknown
return (CardInfoStat[])(object)new CardInfoStat[1]
{
new CardInfoStat
{
positive = false,
stat = "ATKSPD",
amount = "-20%",
simepleAmount = (SimpleAmount)0
}
};
}
public override void Callback()
{
}
protected override GameObject GetCardArt()
{
return CardArtLoader.Load("ArcAmmo");
}
}
public class ArcAmmoModifier : MonoBehaviour
{
public Player owner;
private float maxArcDistance = 15f;
private float arcDamage = 5f;
private float slowAmount = 0.5f;
private List<ArcConnection> connections = new List<ArcConnection>();
private SoundEvent GetEmpowerSound()
{
Empower[] array = Resources.FindObjectsOfTypeAll<Empower>();
if (array.Length != 0)
{
return array[0].soundEmpowerSpawn;
}
return null;
}
private void Update()
{
UpdateBullets();
UpdateConnections();
}
private void UpdateBullets()
{
//IL_008c: Unknown result type (might be due to invalid IL or missing references)
//IL_0091: Unknown result type (might be due to invalid IL or missing references)
//IL_009d: Unknown result type (might be due to invalid IL or missing references)
//IL_00a2: Unknown result type (might be due to invalid IL or missing references)
GameObject[] array = GameObject.FindGameObjectsWithTag("Bullet");
List<GameObject> list = new List<GameObject>();
GameObject[] array2 = array;
foreach (GameObject val in array2)
{
ProjectileHit component = val.GetComponent<ProjectileHit>();
if (!((Object)(object)component == (Object)null) && (Object)(object)component.ownPlayer == (Object)(object)owner)
{
list.Add(val);
}
}
for (int j = 0; j < list.Count - 1; j++)
{
GameObject val2 = list[j];
GameObject val3 = list[j + 1];
float num = Vector2.Distance(Vector2.op_Implicit(val2.transform.position), Vector2.op_Implicit(val3.transform.position));
if (num <= maxArcDistance && FindConnection(val2, val3) == null)
{
SoundEvent empowerSound = GetEmpowerSound();
if ((Object)(object)empowerSound != (Object)null)
{
SoundManager.Instance.PlayAtPosition(empowerSound, SoundManager.Instance.GetTransform(), ((Component)owner).transform);
}
connections.Add(new ArcConnection(val2, val3, arcDamage, slowAmount, owner));
}
}
}
private void UpdateConnections()
{
List<ArcConnection> list = new List<ArcConnection>();
foreach (ArcConnection connection in connections)
{
if (!connection.Update())
{
list.Add(connection);
}
}
foreach (ArcConnection item in list)
{
item.Destroy();
connections.Remove(item);
}
}
private ArcConnection FindConnection(GameObject a, GameObject b)
{
foreach (ArcConnection connection in connections)
{
if (connection.Matches(a, b))
{
return connection;
}
}
return null;
}
private void OnDestroy()
{
foreach (ArcConnection connection in connections)
{
connection.Destroy();
}
}
}
public class ArcConnection
{
private GameObject bullet1;
private GameObject bullet2;
private LineRenderer line;
private LineRenderer glow;
private float damage;
private float slowAmount;
private Player owner;
private HashSet<HealthHandler> hitPlayers = new HashSet<HealthHandler>();
public ArcConnection(GameObject a, GameObject b, float damageAmount, float slow, Player playerOwner)
{
//IL_003d: Unknown result type (might be due to invalid IL or missing references)
//IL_0043: Expected O, but got Unknown
//IL_007d: Unknown result type (might be due to invalid IL or missing references)
//IL_0087: Expected O, but got Unknown
//IL_00a2: Unknown result type (might be due to invalid IL or missing references)
//IL_00c7: Unknown result type (might be due to invalid IL or missing references)
//IL_00d7: Unknown result type (might be due to invalid IL or missing references)
//IL_00dd: Expected O, but got Unknown
//IL_0117: Unknown result type (might be due to invalid IL or missing references)
//IL_0121: Expected O, but got Unknown
//IL_013c: Unknown result type (might be due to invalid IL or missing references)
//IL_0161: Unknown result type (might be due to invalid IL or missing references)
bullet1 = a;
bullet2 = b;
damage = damageAmount;
slowAmount = slow;
owner = playerOwner;
GameObject val = new GameObject("Arc Ammo Lightning");
line = val.AddComponent<LineRenderer>();
line.positionCount = 2;
line.widthMultiplier = 0.05f;
((Renderer)line).material = new Material(Shader.Find("Sprites/Default"));
line.startColor = new Color(0.1f, 0.9f, 1f, 1f);
line.endColor = new Color(0.1f, 0.9f, 1f, 1f);
GameObject val2 = new GameObject("Arc Ammo Glow");
glow = val2.AddComponent<LineRenderer>();
glow.positionCount = 2;
glow.widthMultiplier = 0.12f;
((Renderer)glow).material = new Material(Shader.Find("Sprites/Default"));
glow.startColor = new Color(0.1f, 0.9f, 1f, 0.25f);
glow.endColor = new Color(0.1f, 0.9f, 1f, 0.25f);
}
public bool Update()
{
//IL_0038: Unknown result type (might be due to invalid IL or missing references)
//IL_0055: Unknown result type (might be due to invalid IL or missing references)
//IL_0072: Unknown result type (might be due to invalid IL or missing references)
//IL_008f: Unknown result type (might be due to invalid IL or missing references)
if ((Object)(object)bullet1 == (Object)null || (Object)(object)bullet2 == (Object)null)
{
return false;
}
line.SetPosition(0, bullet1.transform.position);
line.SetPosition(1, bullet2.transform.position);
glow.SetPosition(0, bullet1.transform.position);
glow.SetPosition(1, bullet2.transform.position);
CheckDamage();
return true;
}
private void CheckDamage()
{
//IL_000c: Unknown result type (might be due to invalid IL or missing references)
//IL_001c: Unknown result type (might be due to invalid IL or missing references)
//IL_0021: Unknown result type (might be due to invalid IL or missing references)
//IL_002b: Unknown result type (might be due to invalid IL or missing references)
//IL_0030: Unknown result type (might be due to invalid IL or missing references)
//IL_0035: Unknown result type (might be due to invalid IL or missing references)
//IL_0041: Unknown result type (might be due to invalid IL or missing references)
//IL_0046: 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_005b: Unknown result type (might be due to invalid IL or missing references)
//IL_0066: 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_0100: Unknown result type (might be due to invalid IL or missing references)
//IL_0110: 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_011a: Unknown result type (might be due to invalid IL or missing references)
//IL_011e: Unknown result type (might be due to invalid IL or missing references)
//IL_0123: Unknown result type (might be due to invalid IL or missing references)
//IL_0128: Unknown result type (might be due to invalid IL or missing references)
//IL_012c: Unknown result type (might be due to invalid IL or missing references)
//IL_0134: Unknown result type (might be due to invalid IL or missing references)
//IL_0140: Unknown result type (might be due to invalid IL or missing references)
//IL_0145: Unknown result type (might be due to invalid IL or missing references)
Vector2 val = Vector2.op_Implicit((bullet1.transform.position + bullet2.transform.position) / 2f);
float num = Vector2.Distance(Vector2.op_Implicit(bullet1.transform.position), Vector2.op_Implicit(bullet2.transform.position));
Collider2D[] array = Physics2D.OverlapCapsuleAll(val, new Vector2(num, 0.3f), (CapsuleDirection2D)1, 0f);
Collider2D[] array2 = array;
foreach (Collider2D val2 in array2)
{
if ((Object)(object)((Component)val2).GetComponentInParent<ProjectileHit>() != (Object)null)
{
continue;
}
HealthHandler componentInParent = ((Component)val2).GetComponentInParent<HealthHandler>();
if (!((Object)(object)componentInParent == (Object)null) && !((Object)(object)componentInParent == (Object)(object)((Component)owner).GetComponent<HealthHandler>()) && !hitPlayers.Contains(componentInParent))
{
Vector3 val3 = ((Component)componentInParent).transform.position - ((Component)owner).transform.position;
Vector2 val4 = Vector2.op_Implicit(((Vector3)(ref val3)).normalized);
((Damagable)componentInParent).CallTakeDamage(val4 * damage, Vector2.op_Implicit(((Component)componentInParent).transform.position), ((Component)owner).gameObject, owner, true);
CharacterStatModifiers component = ((Component)componentInParent).GetComponent<CharacterStatModifiers>();
if ((Object)(object)component != (Object)null)
{
component.RPCA_AddSlow(slowAmount, false);
}
hitPlayers.Add(componentInParent);
}
}
}
public bool Matches(GameObject a, GameObject b)
{
return ((Object)(object)bullet1 == (Object)(object)a && (Object)(object)bullet2 == (Object)(object)b) || ((Object)(object)bullet1 == (Object)(object)b && (Object)(object)bullet2 == (Object)(object)a);
}
public void Destroy()
{
if ((Object)(object)line != (Object)null)
{
Object.Destroy((Object)(object)((Component)line).gameObject);
}
if ((Object)(object)glow != (Object)null)
{
Object.Destroy((Object)(object)((Component)glow).gameObject);
}
}
}
public class AfterburnCard : CustomCard
{
public override void SetupCard(CardInfo cardInfo, Gun gun, ApplyCardStats cardStats, CharacterStatModifiers statModifiers)
{
gun.projectileSpeed = 1.4f;
gun.ammo = -1;
}
public override void OnAddCard(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats)
{
AfterburnModifier orAddComponent = ExtensionMethods.GetOrAddComponent<AfterburnModifier>(((Component)player).gameObject, false);
orAddComponent.owner = player;
}
public override void OnRemoveCard(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats)
{
AfterburnModifier component = ((Component)player).gameObject.GetComponent<AfterburnModifier>();
if ((Object)(object)component != (Object)null)
{
Object.Destroy((Object)(object)component);
}
}
protected override string GetTitle()
{
return "Afterburn";
}
protected override string GetDescription()
{
return "Bullets leaving burning trails that do 30% of your bullets damage.";
}
protected override Rarity GetRarity()
{
return (Rarity)1;
}
protected override CardThemeColorType GetTheme()
{
return (CardThemeColorType)1;
}
protected override CardInfoStat[] GetStats()
{
//IL_0009: Unknown result type (might be due to invalid IL or missing references)
//IL_000e: Unknown result type (might be due to invalid IL or missing references)
//IL_0015: Unknown result type (might be due to invalid IL or missing references)
//IL_0020: Unknown result type (might be due to invalid IL or missing references)
//IL_002b: 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)
//IL_0033: Expected O, but got Unknown
//IL_0035: Unknown result type (might be due to invalid IL or missing references)
//IL_003a: Unknown result type (might be due to invalid IL or missing references)
//IL_0041: 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_0057: Unknown result type (might be due to invalid IL or missing references)
//IL_0059: Unknown result type (might be due to invalid IL or missing references)
//IL_005f: Expected O, but got Unknown
return (CardInfoStat[])(object)new CardInfoStat[2]
{
new CardInfoStat
{
positive = true,
stat = "Bullet speed",
amount = "+40%",
simepleAmount = (SimpleAmount)0
},
new CardInfoStat
{
positive = false,
stat = "AMMO",
amount = "-1",
simepleAmount = (SimpleAmount)0
}
};
}
public override void Callback()
{
}
protected override GameObject GetCardArt()
{
return CardArtLoader.Load("Afterburn");
}
}
public class AfterburnModifier : MonoBehaviour
{
public Player owner;
private List<AfterburnTrail> trails = new List<AfterburnTrail>();
private void Update()
{
UpdateBullets();
UpdateTrails();
}
private void UpdateBullets()
{
GameObject[] array = GameObject.FindGameObjectsWithTag("Bullet");
GameObject[] array2 = array;
foreach (GameObject val in array2)
{
ProjectileHit component = val.GetComponent<ProjectileHit>();
if (!((Object)(object)component == (Object)null) && !((Object)(object)component.ownPlayer != (Object)(object)owner))
{
AfterburnTrail component2 = val.GetComponent<AfterburnTrail>();
if ((Object)(object)component2 == (Object)null)
{
component2 = val.AddComponent<AfterburnTrail>();
component2.Setup(owner, component.damage);
trails.Add(component2);
}
}
}
}
private void UpdateTrails()
{
List<AfterburnTrail> list = new List<AfterburnTrail>();
foreach (AfterburnTrail trail in trails)
{
if (!trail.UpdateTrail())
{
list.Add(trail);
}
}
foreach (AfterburnTrail item in list)
{
trails.Remove(item);
}
}
private void OnDestroy()
{
foreach (AfterburnTrail trail in trails)
{
trail.Destroy();
}
}
}
public class AfterburnTrail : MonoBehaviour
{
private LineRenderer line;
private List<Vector3> points = new List<Vector3>();
private float lifeTime = 1.2f;
private float age = 0f;
private GameObject trailObject;
private bool bulletAlive = true;
private Player owner;
private float damage;
private HashSet<HealthHandler> hitPlayers = new HashSet<HealthHandler>();
public void Setup(Player playerOwner, float bulletDamage)
{
//IL_001b: Unknown result type (might be due to invalid IL or missing references)
//IL_0025: Expected O, but got Unknown
//IL_0064: Unknown result type (might be due to invalid IL or missing references)
//IL_006e: Expected O, but got Unknown
//IL_0089: Unknown result type (might be due to invalid IL or missing references)
//IL_00ae: Unknown result type (might be due to invalid IL or missing references)
owner = playerOwner;
damage = bulletDamage * 0.3f;
trailObject = new GameObject("Afterburn Trail");
line = trailObject.AddComponent<LineRenderer>();
line.positionCount = 0;
line.widthMultiplier = 0.08f;
((Renderer)line).material = new Material(Shader.Find("Sprites/Default"));
line.startColor = new Color(1f, 0.3f, 0.05f, 1f);
line.endColor = new Color(1f, 0.8f, 0.1f, 1f);
}
public bool UpdateTrail()
{
//IL_0031: Unknown result type (might be due to invalid IL or missing references)
//IL_00a0: Unknown result type (might be due to invalid IL or missing references)
//IL_00f6: Unknown result type (might be due to invalid IL or missing references)
//IL_0117: Unknown result type (might be due to invalid IL or missing references)
age += Time.deltaTime;
CheckDamage();
if (bulletAlive)
{
points.Add(((Component)this).transform.position);
if (points.Count > 50)
{
points.RemoveAt(0);
}
}
if ((Object)(object)line != (Object)null)
{
line.positionCount = points.Count;
for (int i = 0; i < points.Count; i++)
{
line.SetPosition(i, points[i]);
}
float num = Mathf.Clamp01(1f - age / lifeTime);
line.startColor = new Color(1f, 0.3f, 0.05f, num);
line.endColor = new Color(1f, 0.8f, 0.1f, num);
}
if (age >= lifeTime)
{
Destroy();
return false;
}
return true;
}
private void CheckDamage()
{
//IL_002a: 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)
//IL_0031: Unknown result type (might be due to invalid IL or missing references)
//IL_0032: 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)
//IL_00bb: Unknown result type (might be due to invalid IL or missing references)
//IL_00c0: Unknown result type (might be due to invalid IL or missing references)
//IL_00c5: Unknown result type (might be due to invalid IL or missing references)
//IL_00c9: 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_00d3: Unknown result type (might be due to invalid IL or missing references)
//IL_00d7: Unknown result type (might be due to invalid IL or missing references)
//IL_00df: Unknown result type (might be due to invalid IL or missing references)
//IL_00eb: Unknown result type (might be due to invalid IL or missing references)
//IL_00f0: Unknown result type (might be due to invalid IL or missing references)
if ((Object)(object)owner == (Object)null)
{
return;
}
foreach (Vector3 point in points)
{
Collider2D[] array = Physics2D.OverlapCircleAll(Vector2.op_Implicit(point), 0.15f);
Collider2D[] array2 = array;
foreach (Collider2D val in array2)
{
HealthHandler componentInParent = ((Component)val).GetComponentInParent<HealthHandler>();
if (!((Object)(object)componentInParent == (Object)null) && !((Object)(object)componentInParent == (Object)(object)((Component)owner).GetComponent<HealthHandler>()) && !hitPlayers.Contains(componentInParent))
{
Vector3 val2 = ((Component)componentInParent).transform.position - ((Component)owner).transform.position;
Vector2 val3 = Vector2.op_Implicit(((Vector3)(ref val2)).normalized);
((Damagable)componentInParent).CallTakeDamage(val3 * damage, Vector2.op_Implicit(((Component)componentInParent).transform.position), ((Component)owner).gameObject, owner, true);
hitPlayers.Add(componentInParent);
}
}
}
}
public void Destroy()
{
if ((Object)(object)trailObject != (Object)null)
{
Object.Destroy((Object)(object)trailObject);
}
}
private void OnDestroy()
{
bulletAlive = false;
}
}
public class BuoyantCard : CustomCard
{
public override void SetupCard(CardInfo cardInfo, Gun gun, ApplyCardStats cardStats, CharacterStatModifiers statModifiers)
{
statModifiers.gravity = 0.4f;
statModifiers.jump = 1.2f;
}
public override void OnAddCard(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats)
{
}
public override void OnRemoveCard(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats)
{
}
protected override string GetTitle()
{
return "Buoyant";
}
protected override string GetDescription()
{
return "You become lighter and less affected by gravity.";
}
protected override Rarity GetRarity()
{
return (Rarity)1;
}
protected override CardThemeColorType GetTheme()
{
return (CardThemeColorType)2;
}
protected override CardInfoStat[] GetStats()
{
//IL_0009: Unknown result type (might be due to invalid IL or missing references)
//IL_000e: Unknown result type (might be due to invalid IL or missing references)
//IL_0015: Unknown result type (might be due to invalid IL or missing references)
//IL_0020: Unknown result type (might be due to invalid IL or missing references)
//IL_002b: 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)
//IL_0033: Expected O, but got Unknown
return (CardInfoStat[])(object)new CardInfoStat[1]
{
new CardInfoStat
{
positive = true,
stat = "Jump height",
amount = "+20%",
simepleAmount = (SimpleAmount)0
}
};
}
public override void Callback()
{
}
protected override GameObject GetCardArt()
{
return CardArtLoader.Load("Buoyant");
}
}
public class ColossalCard : CustomCard
{
public override void SetupCard(CardInfo cardInfo, Gun gun, ApplyCardStats cardStats, CharacterStatModifiers statModifiers)
{
statModifiers.health = 2.5f;
gun.attackSpeed = 1.5f;
gun.reloadTimeAdd = 0.5f;
}
public override void OnAddCard(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats)
{
}
public override void OnRemoveCard(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats)
{
}
protected override string GetTitle()
{
return "Colossal";
}
protected override string GetDescription()
{
return "";
}
protected override Rarity GetRarity()
{
return (Rarity)1;
}
protected override CardThemeColorType GetTheme()
{
return (CardThemeColorType)2;
}
protected override CardInfoStat[] GetStats()
{
//IL_0009: Unknown result type (might be due to invalid IL or missing references)
//IL_000e: Unknown result type (might be due to invalid IL or missing references)
//IL_0015: Unknown result type (might be due to invalid IL or missing references)
//IL_0020: Unknown result type (might be due to invalid IL or missing references)
//IL_002b: 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)
//IL_0033: Expected O, but got Unknown
//IL_0035: Unknown result type (might be due to invalid IL or missing references)
//IL_003a: Unknown result type (might be due to invalid IL or missing references)
//IL_0041: 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_0057: Unknown result type (might be due to invalid IL or missing references)
//IL_0059: Unknown result type (might be due to invalid IL or missing references)
//IL_005f: Expected O, but got Unknown
//IL_0061: Unknown result type (might be due to invalid IL or missing references)
//IL_0066: 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_0078: 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_0085: Unknown result type (might be due to invalid IL or missing references)
//IL_008b: Expected O, but got Unknown
return (CardInfoStat[])(object)new CardInfoStat[3]
{
new CardInfoStat
{
positive = true,
stat = "HP",
amount = "+150%",
simepleAmount = (SimpleAmount)0
},
new CardInfoStat
{
positive = false,
stat = "ATKSPD",
amount = "+50%",
simepleAmount = (SimpleAmount)0
},
new CardInfoStat
{
positive = false,
stat = "Reload time",
amount = "+0.5s",
simepleAmount = (SimpleAmount)0
}
};
}
public override void Callback()
{
}
protected override GameObject GetCardArt()
{
return CardArtLoader.Load("Colossal");
}
}
public class SlugsCard : CustomCard
{
public override void SetupCard(CardInfo cardInfo, Gun gun, ApplyCardStats cardStats, CharacterStatModifiers statModifiers)
{
gun.damage = 1.6f;
gun.projectileSpeed = 0.6f;
}
public override void OnAddCard(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats)
{
}
public override void OnRemoveCard(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats)
{
}
protected override string GetTitle()
{
return "Slugs";
}
protected override string GetDescription()
{
return "Shoot stronger but heavier bullets.";
}
protected override Rarity GetRarity()
{
return (Rarity)1;
}
protected override CardThemeColorType GetTheme()
{
return (CardThemeColorType)1;
}
protected override CardInfoStat[] GetStats()
{
//IL_0009: Unknown result type (might be due to invalid IL or missing references)
//IL_000e: Unknown result type (might be due to invalid IL or missing references)
//IL_0015: Unknown result type (might be due to invalid IL or missing references)
//IL_0020: Unknown result type (might be due to invalid IL or missing references)
//IL_002b: 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)
//IL_0033: Expected O, but got Unknown
//IL_0035: Unknown result type (might be due to invalid IL or missing references)
//IL_003a: Unknown result type (might be due to invalid IL or missing references)
//IL_0041: 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_0057: Unknown result type (might be due to invalid IL or missing references)
//IL_0059: Unknown result type (might be due to invalid IL or missing references)
//IL_005f: Expected O, but got Unknown
return (CardInfoStat[])(object)new CardInfoStat[2]
{
new CardInfoStat
{
positive = true,
stat = "DMG",
amount = "+60%",
simepleAmount = (SimpleAmount)0
},
new CardInfoStat
{
positive = false,
stat = "Bullet speed",
amount = "-40%",
simepleAmount = (SimpleAmount)0
}
};
}
public override void Callback()
{
}
protected override GameObject GetCardArt()
{
return CardArtLoader.Load("Slugs");
}
}
}