using System;
using System.Diagnostics;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.Versioning;
using System.Security;
using System.Security.Permissions;
using BepInEx;
using BoplFixedMath;
using HarmonyLib;
using Microsoft.CodeAnalysis;
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(".NETFramework,Version=v4.6", FrameworkDisplayName = ".NET Framework 4.6")]
[assembly: AssemblyCompany("NoSpikeDisappear")]
[assembly: AssemblyConfiguration("Debug")]
[assembly: AssemblyDescription("My first plugin")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: AssemblyInformationalVersion("1.0.0")]
[assembly: AssemblyProduct("NoSpikeDisappear")]
[assembly: AssemblyTitle("NoSpikeDisappear")]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: AssemblyVersion("1.0.0.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 BoplBattleTemplate
{
public static class PluginInfo
{
public const string PLUGIN_GUID = "NoSpikeDisappear";
public const string PLUGIN_NAME = "NoSpikeDisappear";
public const string PLUGIN_VERSION = "1.0.0";
}
}
namespace MoreThanOneSpike
{
[BepInPlugin("com.ra4ina.MoreThanOneSpike", "MoreThanOneSpike", "1.0.0")]
public class Plugin : BaseUnityPlugin
{
private void Awake()
{
//IL_0017: Unknown result type (might be due to invalid IL or missing references)
//IL_001d: Expected O, but got Unknown
//IL_004e: Unknown result type (might be due to invalid IL or missing references)
//IL_005c: Expected O, but got Unknown
((BaseUnityPlugin)this).Logger.LogInfo((object)"Plugin MoreThanOneSpike is loaded!");
Harmony val = new Harmony("com.ra4ina.MoreThanOneSpike");
MethodInfo methodInfo = AccessTools.Method(typeof(Spike), "CastSpike", (Type[])null, (Type[])null);
MethodInfo methodInfo2 = AccessTools.Method(typeof(MyPatch), "CastSpike_Spike_modif", (Type[])null, (Type[])null);
val.Patch((MethodBase)methodInfo, new HarmonyMethod(methodInfo2), (HarmonyMethod)null, (HarmonyMethod)null, (HarmonyMethod)null, (HarmonyMethod)null);
}
}
public class MyPatch
{
public static bool CastSpike_Spike_modif(Spike __instance, ref PlayerPhysics ___playerPhysics, ref DPhysicsRoundedRect ___groundRect, ref PlayerBody ___body, ref ParticleSystem ___dustParticle, ref ParticleSystem ___dustParticleFar, ref ShakableCamera ___shakeCam, ref SpikeAttack ___currentSpike, ref SpikeAttack ___spikePrefab, ref Fix ___surfaceOffset, ref Fix ___castForce, ref AnimationData ___animData, ref SpriteAnimator ___animator)
{
//IL_0068: 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_0072: Unknown result type (might be due to invalid IL or missing references)
//IL_0073: 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_0079: Unknown result type (might be due to invalid IL or missing references)
//IL_007e: Unknown result type (might be due to invalid IL or missing references)
//IL_0082: Unknown result type (might be due to invalid IL or missing references)
//IL_0087: Unknown result type (might be due to invalid IL or missing references)
//IL_0088: 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)
//IL_0047: Unknown result type (might be due to invalid IL or missing references)
//IL_004d: Unknown result type (might be due to invalid IL or missing references)
//IL_00d2: 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_00d8: Unknown result type (might be due to invalid IL or missing references)
//IL_00da: 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_00e4: Unknown result type (might be due to invalid IL or missing references)
//IL_010e: Unknown result type (might be due to invalid IL or missing references)
//IL_0131: Unknown result type (might be due to invalid IL or missing references)
//IL_0152: Unknown result type (might be due to invalid IL or missing references)
//IL_0154: Unknown result type (might be due to invalid IL or missing references)
//IL_0177: Unknown result type (might be due to invalid IL or missing references)
//IL_0199: Unknown result type (might be due to invalid IL or missing references)
//IL_019b: Unknown result type (might be due to invalid IL or missing references)
//IL_01a2: Unknown result type (might be due to invalid IL or missing references)
//IL_01b6: Unknown result type (might be due to invalid IL or missing references)
//IL_01e4: Unknown result type (might be due to invalid IL or missing references)
//IL_01fa: Unknown result type (might be due to invalid IL or missing references)
//IL_020a: Unknown result type (might be due to invalid IL or missing references)
//IL_0218: Unknown result type (might be due to invalid IL or missing references)
//IL_021c: Unknown result type (might be due to invalid IL or missing references)
//IL_026c: Unknown result type (might be due to invalid IL or missing references)
//IL_027d: Unknown result type (might be due to invalid IL or missing references)
//IL_0280: Unknown result type (might be due to invalid IL or missing references)
//IL_0285: Unknown result type (might be due to invalid IL or missing references)
//IL_028c: Unknown result type (might be due to invalid IL or missing references)
//IL_00ba: 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)
StickyRoundedRectangle attachedGround = ___playerPhysics.getAttachedGround();
if ((Object)(object)attachedGround == (Object)null || ((MonoUpdatable)attachedGround).IsDestroyed || !attachedGround.ThisGameObject().activeInHierarchy)
{
__instance.ExitAbility(default(AbilityExitInfo));
return false;
}
___groundRect = ((Component)attachedGround).GetComponent<DPhysicsRoundedRect>();
Vec2 val = attachedGround.currentNormal(___body.position);
Fix zero = Fix.Zero;
Fix zero2 = Fix.Zero;
if (!Raycast.RayCastRoundedRect(___body.position, -val, ___groundRect.GetRoundedRect(), ref zero, ref zero2))
{
MonoBehaviour.print((object)"Spike raycast inexplicibly missed");
__instance.ExitAbility(default(AbilityExitInfo));
return false;
}
Vec2 val2 = ___body.position - val * zero2;
AudioManager.Get().Play("spikeRock");
((Component)___dustParticle).transform.parent.position = ((Component)__instance).transform.position;
((Component)___dustParticle).transform.parent.up = ((Component)__instance).transform.up;
___dustParticle.Play();
((Component)___dustParticleFar).transform.parent.position = (Vector3)val2;
((Component)___dustParticleFar).transform.parent.up = ((Component)__instance).transform.up;
___dustParticleFar.Play();
___shakeCam.AddTrauma(0.3f);
Vec2 val3 = val2;
___currentSpike = FixTransform.InstantiateFixed<SpikeAttack>(___spikePrefab, val3);
FixTransform component = ((Component)___currentSpike).GetComponent<FixTransform>();
component.up = val;
((Component)component).transform.SetParent(((Component)___groundRect).transform);
((Component)___currentSpike).transform.localScale = new Vector3(1f / ((Component)attachedGround).transform.localScale.x, 1f / ((Component)attachedGround).transform.localScale.x, 1f);
___currentSpike.Initialize(val2, ___surfaceOffset, attachedGround);
DetPhysics.Get().AddBoxToRR(((Object)((Component)___currentSpike).gameObject).GetInstanceID(), ((Object)((Component)attachedGround).gameObject).GetInstanceID());
___currentSpike.UpdateRelativeOrientation();
___currentSpike.UpdatePosition();
___currentSpike.GetHitbox().Scale = ___body.fixtrans.Scale;
attachedGround.GetGroundBody().AddForceAtPosition(val * ___castForce, ___body.position, (ForceMode2D)0);
___animator.beginAnimThenDoAction(___animData.GetAnimation("recover"), (Action)delegate
{
//IL_0009: Unknown result type (might be due to invalid IL or missing references)
//IL_000f: Unknown result type (might be due to invalid IL or missing references)
__instance.ExitAbility(default(AbilityExitInfo));
});
return false;
}
}
}