using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.Versioning;
using System.Security;
using System.Security.Permissions;
using BattleLib;
using BepInEx;
using BepInEx.Configuration;
using BoplFixedMath;
using HarmonyLib;
using Microsoft.CodeAnalysis;
using TMPro;
using UnityEngine;
using UnityEngine.SceneManagement;
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(".NETFramework,Version=v4.6", FrameworkDisplayName = ".NET Framework 4.6")]
[assembly: AssemblyCompany("RandomEvents")]
[assembly: AssemblyConfiguration("Debug")]
[assembly: AssemblyDescription("Makes random events occur, such as objects falling from the sky or changes in gravity")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: AssemblyInformationalVersion("1.0.0")]
[assembly: AssemblyProduct("RandomEvents")]
[assembly: AssemblyTitle("RandomEvents")]
[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 RandomEvents
{
[BepInPlugin("com.PizzaMan730.RandomEvents", "RandomEvents", "1.0.0")]
public class Plugin : BaseUnityPlugin, IUpdatable
{
public class Patches
{
[HarmonyPatch(typeof(PlayerPhysics), "UpdateSim")]
[HarmonyPrefix]
public static void PatchUpdateSim(ref PlayerPhysics __instance)
{
//IL_0003: Unknown result type (might be due to invalid IL or missing references)
//IL_0008: Unknown result type (might be due to invalid IL or missing references)
__instance.gravity_modifier = gravityScale;
}
[HarmonyPatch(typeof(BoplBody), "UpdateSim")]
[HarmonyPrefix]
public static void PatchBoplBodyUpdate(ref BoplBody __instance)
{
//IL_0003: Unknown result type (might be due to invalid IL or missing references)
//IL_0008: Unknown result type (might be due to invalid IL or missing references)
__instance.gravityScale = gravityScale;
}
[HarmonyPatch(typeof(DetPhysics), "UpdateRopeMesh_parallell")]
[HarmonyPrefix]
public static void RopePatch(ref DetPhysics __instance)
{
//IL_0003: Unknown result type (might be due to invalid IL or missing references)
//IL_0008: 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)
//IL_0014: Unknown result type (might be due to invalid IL or missing references)
__instance.playerGravity = gravityScale;
__instance.ropeGravity = gravityScale;
}
}
public class EventText
{
private int eventType;
public int timeAlive;
private GameObject gameObject;
public EventText(int eventType)
{
//IL_003c: Unknown result type (might be due to invalid IL or missing references)
//IL_0046: Expected O, but got Unknown
//IL_007f: 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_01da: Unknown result type (might be due to invalid IL or missing references)
//IL_01df: Unknown result type (might be due to invalid IL or missing references)
//IL_01ef: Unknown result type (might be due to invalid IL or missing references)
//IL_01f4: 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_0228: Unknown result type (might be due to invalid IL or missing references)
this.eventType = eventType;
timeAlive = 0;
gameObject = new GameObject("EventAnnouncement", new Type[2]
{
typeof(RectTransform),
typeof(TextMeshProUGUI)
});
GameObject val = GameObject.Find("AbilitySelectCanvas");
gameObject.transform.SetParent(val.transform);
TextMeshProUGUI component = gameObject.GetComponent<TextMeshProUGUI>();
((TMP_Text)component).font = LocalizedText.localizationTable.GetFont(Settings.Get().Language, false);
((Graphic)component).color = Color.red;
((TMP_Text)component).fontSize = 100f;
((TMP_Text)component).alignment = (TextAlignmentOptions)514;
((TMP_Text)component).richText = false;
switch (eventType)
{
case 0:
((TMP_Text)component).text = "Grenade Rain!";
break;
case 1:
((TMP_Text)component).text = "Arrow Rain!";
break;
case 2:
((TMP_Text)component).text = "Land Mines!";
break;
case 3:
((TMP_Text)component).text = "Smoke Storm!";
break;
case 4:
((TMP_Text)component).text = "Gravity Change!";
break;
case 5:
((TMP_Text)component).text = "Teleporting Players!";
break;
case 6:
((TMP_Text)component).text = "Black Hole Attack!";
break;
case 7:
((TMP_Text)component).text = "Meteor Strike!";
break;
case 8:
((TMP_Text)component).text = "Meteor Shower!";
break;
case 9:
((TMP_Text)component).text = "Cloning Players!";
break;
default:
((TMP_Text)component).text = "Untitled event!";
break;
}
RectTransform component2 = gameObject.GetComponent<RectTransform>();
Rect rect = val.GetComponent<RectTransform>().rect;
float height = ((Rect)(ref rect)).height;
rect = val.GetComponent<RectTransform>().rect;
float width = ((Rect)(ref rect)).width;
component2.sizeDelta = new Vector2(5000f, 100f);
component2.anchoredPosition = new Vector2(0f, height / 2f - 100f);
gameObject.SetActive(true);
}
public void Update()
{
timeAlive++;
if (timeAlive >= 200)
{
Object.Destroy((Object)(object)gameObject);
}
}
}
private ConfigEntry<int> minTime;
private ConfigEntry<int> maxTime;
private List<ConfigEntry<bool>> allowedEvents;
private int timeSinceEvent;
private int timeTillNextEvent;
private ConfigEntry<bool> showAnnouncements;
private List<EventText> eventTexts = new List<EventText>();
public static Fix gravityScale;
private ConfigFile config;
private Boulder boulderPrefab;
private MachoThrow2 throwerPrefab;
private BlackHole blackHolePrefab;
private BoplBody arrowPrefab;
private BoplBody grenadePrefab;
private BoplBody minePrefab;
private BoplBody smokePrefab;
private int hierarchyNumber;
public bool IsDestroyed { get; set; }
public int HierarchyNumber
{
get
{
return hierarchyNumber;
}
set
{
hierarchyNumber = value;
}
}
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_0223: Unknown result type (might be due to invalid IL or missing references)
//IL_0228: Unknown result type (might be due to invalid IL or missing references)
((BaseUnityPlugin)this).Logger.LogInfo((object)"RandomEvents has loaded!");
Harmony val = new Harmony("com.PizzaMan730.RandomEvents");
config = ((BaseUnityPlugin)this).Config;
minTime = config.Bind<int>("Times", "Minimum time", 100, "Minimum time between events");
maxTime = config.Bind<int>("Times", "Maximum time", 1000, "Maximum time between events");
showAnnouncements = config.Bind<bool>("Misc", "Show announcements", true, "Show announcement when event is starting");
allowedEvents = new List<ConfigEntry<bool>>();
allowedEvents.Add(config.Bind<bool>("Events", "Grenade Rain", true, "Allow the Grenade Rain event?"));
allowedEvents.Add(config.Bind<bool>("Events", "Arrow Rain", true, "Allow the Arrow Rain event?"));
allowedEvents.Add(config.Bind<bool>("Events", "Land Mines", true, "Allow the Land Mines event?"));
allowedEvents.Add(config.Bind<bool>("Events", "Smoke Storm", true, "Allow the Smoke Storm event?"));
allowedEvents.Add(config.Bind<bool>("Events", "Gravity Change", true, "Allow the Gravity Change event?"));
allowedEvents.Add(config.Bind<bool>("Events", "Teleport players", true, "Allow the Teleport Players event?"));
allowedEvents.Add(config.Bind<bool>("Events", "Black Hole Attack", true, "Allow the Black Hole Attack event?"));
allowedEvents.Add(config.Bind<bool>("Events", "Meteor Strike", true, "Allow the Meteor Strike event?"));
allowedEvents.Add(config.Bind<bool>("Events", "Meteor Shower", true, "Allow the Meteor Shower event?"));
timeSinceEvent = 0;
timeTillNextEvent = Updater.RandomInt(minTime.Value, maxTime.Value);
gravityScale = Fix.One;
val.PatchAll(typeof(Patches));
SceneManager.sceneLoaded += OnSceneLoaded;
GetPrefabs();
}
public void GetPrefabs()
{
//IL_0001: Unknown result type (might be due to invalid IL or missing references)
//IL_0007: Expected O, but got Unknown
//IL_0007: Unknown result type (might be due to invalid IL or missing references)
//IL_000d: Expected O, but got Unknown
//IL_0089: Unknown result type (might be due to invalid IL or missing references)
//IL_008f: Expected O, but got Unknown
//IL_0067: Unknown result type (might be due to invalid IL or missing references)
//IL_0071: Expected O, but got Unknown
//IL_00e7: Unknown result type (might be due to invalid IL or missing references)
//IL_00ee: Expected O, but got Unknown
//IL_0146: Unknown result type (might be due to invalid IL or missing references)
//IL_014d: Expected O, but got Unknown
//IL_01a5: Unknown result type (might be due to invalid IL or missing references)
//IL_01ac: Expected O, but got Unknown
//IL_0204: Unknown result type (might be due to invalid IL or missing references)
//IL_020b: Expected O, but got Unknown
Boulder val = new Boulder();
MachoThrow2 val2 = new MachoThrow2();
MachoThrow2[] array = Resources.FindObjectsOfTypeAll(typeof(MachoThrow2)) as MachoThrow2[];
MachoThrow2[] array2 = array;
foreach (MachoThrow2 val3 in array2)
{
if (((Object)val3).name == "Throw")
{
boulderPrefab = (Boulder)AccessTools.Field(typeof(MachoThrow2), "boulderPrefab").GetValue(val3);
throwerPrefab = val3;
}
}
BlackHole val4 = new BlackHole();
BlackHole[] array3 = Resources.FindObjectsOfTypeAll(typeof(BlackHole)) as BlackHole[];
BlackHole[] array4 = array3;
foreach (BlackHole val5 in array4)
{
if (((Object)val5).name == "BlackHole2")
{
blackHolePrefab = val5;
}
}
BoplBody val6 = new BoplBody();
BoplBody[] array5 = Resources.FindObjectsOfTypeAll(typeof(BoplBody)) as BoplBody[];
BoplBody[] array6 = array5;
foreach (BoplBody val7 in array6)
{
if (((Object)val7).name == "Arrow")
{
arrowPrefab = val7;
}
}
BoplBody val8 = new BoplBody();
array5 = Resources.FindObjectsOfTypeAll(typeof(BoplBody)) as BoplBody[];
BoplBody[] array7 = array5;
foreach (BoplBody val9 in array7)
{
if (((Object)val9).name == "Grenade")
{
grenadePrefab = val9;
}
}
BoplBody val10 = new BoplBody();
array5 = Resources.FindObjectsOfTypeAll(typeof(BoplBody)) as BoplBody[];
BoplBody[] array8 = array5;
foreach (BoplBody val11 in array8)
{
if (((Object)val11).name == "Mine")
{
minePrefab = val11;
}
}
BoplBody val12 = new BoplBody();
array5 = Resources.FindObjectsOfTypeAll(typeof(BoplBody)) as BoplBody[];
BoplBody[] array9 = array5;
foreach (BoplBody val13 in array9)
{
if (((Object)val13).name == "SmokeCircle")
{
smokePrefab = val13;
}
}
}
public void UpdateSim(Fix SimDeltaTime)
{
int num = 0;
for (int i = 0; i < eventTexts.Count; i++)
{
eventTexts[num].Update();
if (eventTexts[num].timeAlive > 210)
{
eventTexts.RemoveAt(num);
}
else
{
num++;
}
}
if (!GameTime.IsTimeStopped())
{
timeSinceEvent++;
}
if (!BattleUtils.IsGameSessionActive())
{
timeSinceEvent = 0;
ChangeGravity(reset: true);
}
if (timeSinceEvent == timeTillNextEvent)
{
SpawnEvent();
}
}
private void SpawnEvent()
{
timeTillNextEvent = Updater.RandomInt(minTime.Value, maxTime.Value);
timeSinceEvent = 0;
int num = Updater.RandomInt(0, 9);
while (!allowedEvents[num].Value)
{
num = Updater.RandomInt(0, 9);
}
if (showAnnouncements.Value)
{
eventTexts.Add(new EventText(num));
}
switch (num)
{
case 0:
SpawnGrenades();
break;
case 1:
SpawnArrows();
break;
case 2:
SpawnMines();
break;
case 3:
SpawnSmoke();
break;
case 4:
ChangeGravity();
break;
case 5:
TeleportPlayers();
break;
case 6:
SpawnBlackHole();
break;
case 7:
SpawnMeteor();
break;
case 8:
SpawnMeteorShower();
break;
case 9:
ClonePlayers();
break;
}
}
private void ClonePlayers()
{
//IL_0054: Unknown result type (might be due to invalid IL or missing references)
//IL_005b: Expected O, but got Unknown
//IL_0094: Unknown result type (might be due to invalid IL or missing references)
//IL_00ac: Unknown result type (might be due to invalid IL or missing references)
//IL_00b3: Expected O, but got Unknown
//IL_00c3: Unknown result type (might be due to invalid IL or missing references)
SlimeController[] array = Resources.FindObjectsOfTypeAll(typeof(SlimeController)) as SlimeController[];
SlimeController[] array2 = array;
foreach (SlimeController val in array2)
{
if (((Object)val).name.StartsWith("Player("))
{
PlayerCollision val2 = (PlayerCollision)Traverse.Create((object)val).Field("playerCollision").GetValue();
MethodInfo method = typeof(PlayerCollision).GetMethod("SpawnClone", BindingFlags.Instance | BindingFlags.NonPublic);
object[] parameters = new object[3]
{
PlayerHandler.Get().GetPlayer(val2.GetPlayerId()),
val,
val.GetPos()
};
SlimeController val3 = (SlimeController)method.Invoke(val2, parameters);
((Object)val3).name = "Player (Clone)";
FixTransform.InstantiateFixed<SlimeController>(val3, val.GetPos());
typeof(SlimeController).GetMethod("BeforeSpawnInit", BindingFlags.Instance | BindingFlags.NonPublic).Invoke(val3, null);
typeof(SlimeController).GetMethod("Spawn", BindingFlags.Instance | BindingFlags.NonPublic).Invoke(val3, null);
}
}
}
private void TeleportPlayers()
{
//IL_0001: Unknown result type (might be due to invalid IL or missing references)
//IL_0007: Expected O, but got Unknown
//IL_00b2: Unknown result type (might be due to invalid IL or missing references)
//IL_00fe: Unknown result type (might be due to invalid IL or missing references)
//IL_0103: 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_0119: Unknown result type (might be due to invalid IL or missing references)
//IL_011b: Unknown result type (might be due to invalid IL or missing references)
ParticleSystem prefab = new ParticleSystem();
QuantumTunnel[] array = Resources.FindObjectsOfTypeAll(typeof(QuantumTunnel)) as QuantumTunnel[];
QuantumTunnel[] array2 = array;
foreach (QuantumTunnel val in array2)
{
if (((Object)val).name == "QuantumTunnel")
{
prefab = val.onPlayerHitParticlePrefab;
}
}
PlayerBody[] array3 = Resources.FindObjectsOfTypeAll(typeof(PlayerBody)) as PlayerBody[];
List<FixTransform> list = new List<FixTransform>();
PlayerBody[] array4 = array3;
foreach (PlayerBody val2 in array4)
{
if (((Object)val2).name.Contains("(") && ((Component)(FixTransform)Traverse.Create((object)val2).Field("fixTransform").GetValue()).gameObject.active)
{
list.Add(((Component)val2).GetComponent<FixTransform>());
}
}
foreach (FixTransform item in list)
{
Vec2 position = item.position;
TeleportChangePos(item);
Vec2 position2 = item.position;
TeleportSpawnEffect(prefab, position, position2);
}
}
private void TeleportChangePos(FixTransform player)
{
//IL_0373: Unknown result type (might be due to invalid IL or missing references)
//IL_0378: Unknown result type (might be due to invalid IL or missing references)
//IL_038b: Unknown result type (might be due to invalid IL or missing references)
//IL_0399: Unknown result type (might be due to invalid IL or missing references)
//IL_039e: Unknown result type (might be due to invalid IL or missing references)
//IL_03a3: Unknown result type (might be due to invalid IL or missing references)
//IL_03a7: Unknown result type (might be due to invalid IL or missing references)
//IL_03b2: Unknown result type (might be due to invalid IL or missing references)
//IL_0038: Unknown result type (might be due to invalid IL or missing references)
//IL_003d: Unknown result type (might be due to invalid IL or missing references)
//IL_03d2: Unknown result type (might be due to invalid IL or missing references)
//IL_0045: 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_0059: Unknown result type (might be due to invalid IL or missing references)
//IL_005e: Unknown result type (might be due to invalid IL or missing references)
//IL_0077: Unknown result type (might be due to invalid IL or missing references)
//IL_0080: 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_008a: Unknown result type (might be due to invalid IL or missing references)
//IL_008c: Unknown result type (might be due to invalid IL or missing references)
//IL_008e: Unknown result type (might be due to invalid IL or missing references)
//IL_009e: 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_00a7: Unknown result type (might be due to invalid IL or missing references)
//IL_00ac: Unknown result type (might be due to invalid IL or missing references)
//IL_00b1: Unknown result type (might be due to invalid IL or missing references)
//IL_00b3: Unknown result type (might be due to invalid IL or missing references)
//IL_00b8: 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_00bf: Unknown result type (might be due to invalid IL or missing references)
//IL_03f0: Unknown result type (might be due to invalid IL or missing references)
//IL_0509: Unknown result type (might be due to invalid IL or missing references)
//IL_050e: Unknown result type (might be due to invalid IL or missing references)
//IL_0510: Unknown result type (might be due to invalid IL or missing references)
//IL_040e: Unknown result type (might be due to invalid IL or missing references)
//IL_0410: Unknown result type (might be due to invalid IL or missing references)
//IL_0415: Unknown result type (might be due to invalid IL or missing references)
//IL_041a: 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_0440: Unknown result type (might be due to invalid IL or missing references)
//IL_0445: Unknown result type (might be due to invalid IL or missing references)
//IL_0447: Unknown result type (might be due to invalid IL or missing references)
//IL_0449: Unknown result type (might be due to invalid IL or missing references)
//IL_0454: Unknown result type (might be due to invalid IL or missing references)
//IL_0459: Unknown result type (might be due to invalid IL or missing references)
//IL_045e: Unknown result type (might be due to invalid IL or missing references)
//IL_0463: 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_0105: Unknown result type (might be due to invalid IL or missing references)
//IL_0107: Unknown result type (might be due to invalid IL or missing references)
//IL_0109: Unknown result type (might be due to invalid IL or missing references)
//IL_0114: Unknown result type (might be due to invalid IL or missing references)
//IL_0119: 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_01cc: Unknown result type (might be due to invalid IL or missing references)
//IL_01ce: Unknown result type (might be due to invalid IL or missing references)
//IL_0474: Unknown result type (might be due to invalid IL or missing references)
//IL_0478: Unknown result type (might be due to invalid IL or missing references)
//IL_0483: Unknown result type (might be due to invalid IL or missing references)
//IL_0488: Unknown result type (might be due to invalid IL or missing references)
//IL_048d: Unknown result type (might be due to invalid IL or missing references)
//IL_053b: Unknown result type (might be due to invalid IL or missing references)
//IL_0540: Unknown result type (might be due to invalid IL or missing references)
//IL_0545: Unknown result type (might be due to invalid IL or missing references)
//IL_054a: Unknown result type (might be due to invalid IL or missing references)
//IL_054e: Unknown result type (might be due to invalid IL or missing references)
//IL_0550: Unknown result type (might be due to invalid IL or missing references)
//IL_0555: Unknown result type (might be due to invalid IL or missing references)
//IL_055a: Unknown result type (might be due to invalid IL or missing references)
//IL_055c: Unknown result type (might be due to invalid IL or missing references)
//IL_0560: Unknown result type (might be due to invalid IL or missing references)
//IL_0562: Unknown result type (might be due to invalid IL or missing references)
//IL_0568: Unknown result type (might be due to invalid IL or missing references)
//IL_056d: Unknown result type (might be due to invalid IL or missing references)
//IL_0572: Unknown result type (might be due to invalid IL or missing references)
//IL_0577: Unknown result type (might be due to invalid IL or missing references)
//IL_067e: Unknown result type (might be due to invalid IL or missing references)
//IL_0680: Unknown result type (might be due to invalid IL or missing references)
//IL_0685: Unknown result type (might be due to invalid IL or missing references)
//IL_015d: Unknown result type (might be due to invalid IL or missing references)
//IL_0164: Unknown result type (might be due to invalid IL or missing references)
//IL_0169: Unknown result type (might be due to invalid IL or missing references)
//IL_016b: Unknown result type (might be due to invalid IL or missing references)
//IL_016d: Unknown result type (might be due to invalid IL or missing references)
//IL_017d: Unknown result type (might be due to invalid IL or missing references)
//IL_017f: Unknown result type (might be due to invalid IL or missing references)
//IL_0181: Unknown result type (might be due to invalid IL or missing references)
//IL_0186: Unknown result type (might be due to invalid IL or missing references)
//IL_018b: Unknown result type (might be due to invalid IL or missing references)
//IL_0190: Unknown result type (might be due to invalid IL or missing references)
//IL_0192: Unknown result type (might be due to invalid IL or missing references)
//IL_0194: 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_019b: Unknown result type (might be due to invalid IL or missing references)
//IL_01a0: Unknown result type (might be due to invalid IL or missing references)
//IL_01a5: 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_0136: Unknown result type (might be due to invalid IL or missing references)
//IL_0216: 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_021a: Unknown result type (might be due to invalid IL or missing references)
//IL_021f: Unknown result type (might be due to invalid IL or missing references)
//IL_0224: Unknown result type (might be due to invalid IL or missing references)
//IL_0229: Unknown result type (might be due to invalid IL or missing references)
//IL_0235: Unknown result type (might be due to invalid IL or missing references)
//IL_0237: Unknown result type (might be due to invalid IL or missing references)
//IL_0245: Unknown result type (might be due to invalid IL or missing references)
//IL_024a: Unknown result type (might be due to invalid IL or missing references)
//IL_0256: Unknown result type (might be due to invalid IL or missing references)
//IL_025e: Unknown result type (might be due to invalid IL or missing references)
//IL_0260: Unknown result type (might be due to invalid IL or missing references)
//IL_0267: Unknown result type (might be due to invalid IL or missing references)
//IL_0269: Unknown result type (might be due to invalid IL or missing references)
//IL_026e: Unknown result type (might be due to invalid IL or missing references)
//IL_0270: Unknown result type (might be due to invalid IL or missing references)
//IL_0281: Unknown result type (might be due to invalid IL or missing references)
//IL_0286: Unknown result type (might be due to invalid IL or missing references)
//IL_0288: Unknown result type (might be due to invalid IL or missing references)
//IL_028a: Unknown result type (might be due to invalid IL or missing references)
//IL_028f: Unknown result type (might be due to invalid IL or missing references)
//IL_0291: Unknown result type (might be due to invalid IL or missing references)
//IL_01e5: Unknown result type (might be due to invalid IL or missing references)
//IL_01ed: Unknown result type (might be due to invalid IL or missing references)
//IL_01f2: Unknown result type (might be due to invalid IL or missing references)
//IL_01f7: Unknown result type (might be due to invalid IL or missing references)
//IL_01ff: Unknown result type (might be due to invalid IL or missing references)
//IL_0207: Unknown result type (might be due to invalid IL or missing references)
//IL_020c: Unknown result type (might be due to invalid IL or missing references)
//IL_0211: Unknown result type (might be due to invalid IL or missing references)
//IL_0582: Unknown result type (might be due to invalid IL or missing references)
//IL_0584: Unknown result type (might be due to invalid IL or missing references)
//IL_0594: Unknown result type (might be due to invalid IL or missing references)
//IL_0596: Unknown result type (might be due to invalid IL or missing references)
//IL_0598: Unknown result type (might be due to invalid IL or missing references)
//IL_05bf: Unknown result type (might be due to invalid IL or missing references)
//IL_060f: Unknown result type (might be due to invalid IL or missing references)
//IL_0611: Unknown result type (might be due to invalid IL or missing references)
//IL_0616: Unknown result type (might be due to invalid IL or missing references)
//IL_02b1: Unknown result type (might be due to invalid IL or missing references)
//IL_02b3: Unknown result type (might be due to invalid IL or missing references)
//IL_02b8: Unknown result type (might be due to invalid IL or missing references)
//IL_02ba: Unknown result type (might be due to invalid IL or missing references)
//IL_02a4: Unknown result type (might be due to invalid IL or missing references)
//IL_02a6: Unknown result type (might be due to invalid IL or missing references)
//IL_02ab: Unknown result type (might be due to invalid IL or missing references)
//IL_05da: Unknown result type (might be due to invalid IL or missing references)
//IL_061f: Unknown result type (might be due to invalid IL or missing references)
//IL_02cd: Unknown result type (might be due to invalid IL or missing references)
//IL_02cf: Unknown result type (might be due to invalid IL or missing references)
//IL_02d4: Unknown result type (might be due to invalid IL or missing references)
//IL_063a: Unknown result type (might be due to invalid IL or missing references)
//IL_0649: Unknown result type (might be due to invalid IL or missing references)
//IL_064e: Unknown result type (might be due to invalid IL or missing references)
//IL_02e0: Unknown result type (might be due to invalid IL or missing references)
//IL_02e2: Unknown result type (might be due to invalid IL or missing references)
//IL_02e7: Unknown result type (might be due to invalid IL or missing references)
//IL_02e9: Unknown result type (might be due to invalid IL or missing references)
//IL_02ee: Unknown result type (might be due to invalid IL or missing references)
//IL_02f3: Unknown result type (might be due to invalid IL or missing references)
//IL_02f5: Unknown result type (might be due to invalid IL or missing references)
//IL_02f7: Unknown result type (might be due to invalid IL or missing references)
//IL_02fc: Unknown result type (might be due to invalid IL or missing references)
//IL_02fe: Unknown result type (might be due to invalid IL or missing references)
//IL_0303: Unknown result type (might be due to invalid IL or missing references)
//IL_0308: Unknown result type (might be due to invalid IL or missing references)
//IL_030c: Unknown result type (might be due to invalid IL or missing references)
//IL_030e: Unknown result type (might be due to invalid IL or missing references)
//IL_0316: Unknown result type (might be due to invalid IL or missing references)
//IL_0318: Unknown result type (might be due to invalid IL or missing references)
//IL_0342: Unknown result type (might be due to invalid IL or missing references)
//IL_0344: Unknown result type (might be due to invalid IL or missing references)
//IL_0362: Unknown result type (might be due to invalid IL or missing references)
//IL_0367: Unknown result type (might be due to invalid IL or missing references)
PlayerPhysics component = ((Component)player).GetComponent<PlayerPhysics>();
PhysicsBodyList<RoundedRect> roundedRects = DetPhysics.Get().roundedRects;
DetPhysics val = DetPhysics.Get();
if (!((Object)(object)component != (Object)null) || !component.IsGrounded())
{
Vec2 val2 = Vec2.zero;
for (int i = 0; i < roundedRects.Length; i++)
{
val2 += ((RoundedRect)(ref roundedRects.colliders[i])).Pos();
}
val2 /= (Fix)(long)roundedRects.Length;
Tools.Debug_DrawPos(val2, Color.red, 10f);
Fix val3 = val2.y - (Fix)4L;
Fix val4 = SceneBounds.BlastZone_XMin;
Fix val5 = SceneBounds.BlastZone_XMax;
int num = 0;
for (int j = 0; j < val.roundedRects.Length; j++)
{
if (DetPhysics.IsActive(val.roundedRects.physicsParents[j]))
{
Vec2 val6 = ((RoundedRect)(ref val.roundedRects.colliders[j])).Pos();
if (Fix.Abs(val6.x - player.position.x) > SceneBounds.BlastZone_YMax)
{
Tools.Debug_DrawPos(val6, Color.red, 10f);
continue;
}
num++;
AABB val7 = PhysTools.ComputeBoundingBox(val.roundedRects.colliders[j], j);
Tools.Debug_DrawAABB(val7, Color.green, 10f);
val4 = Fix.Max(val4, val7.max.x);
val5 = Fix.Min(val5, val7.min.x);
}
}
if (num == 0 || val4 < val5)
{
val4 = player.position.x + (Fix)30L;
val5 = player.position.x - (Fix)30L;
}
Vec2 val8 = default(Vec2);
((Vec2)(ref val8))..ctor(val5, Fix.Max(val3, SceneBounds.WaterHeight + Fix.One));
Vec2 val9 = default(Vec2);
((Vec2)(ref val9))..ctor(val4, SceneBounds.Camera_YMax - (Fix)1.7);
AABB val10 = default(AABB);
val10.min = val8;
val10.max = val9;
Tools.Debug_DrawAABB(val10, Color.red, 10f);
Vec2 position = player.position;
if (val8.x > val9.x)
{
val8.x = val9.x;
}
if (val8.y > val9.y)
{
val8.y = val9.y;
}
for (int k = 0; k < 10; k++)
{
Fix val11 = Updater.RandomFix(val8.x, val9.x);
Fix val12 = Updater.RandomFix(val8.y, val9.y);
((Vec2)(ref position))..ctor(val11, val12);
if (!RaycastInformation.op_Implicit(val.PointCheckAllRoundedRects(position)))
{
break;
}
}
player.position = position;
PlayerBody component2 = ((Component)player).GetComponent<PlayerBody>();
if ((Object)(object)component2 != (Object)null)
{
component2.selfImposedVelocity = Vec2.zero;
}
return;
}
Vec2 position2 = player.position;
List<int> list = new List<int>(val.roundedRects.Length);
Fix val13 = SceneBounds.WaterHeight + (Fix)0.5;
Vec2 val14 = default(Vec2);
((Vec2)(ref val14))..ctor(Fix.Zero, (Fix)1000L);
for (int l = 0; l < val.roundedRects.Length; l++)
{
if (DetPhysics.IsActive(val.roundedRects.physicsParents[l]) && SceneBounds.IsInSceneBounds(((RoundedRect)(ref val.roundedRects.colliders[l])).Pos()) && ((RoundedRect)(ref val.roundedRects.colliders[l])).GetClosestPoint(val14).y > val13)
{
Vec2 val15 = ((RoundedRect)(ref val.roundedRects.colliders[l])).Pos();
if (Fix.Abs(val15.x - player.position.x) > SceneBounds.BlastZone_YMax)
{
Tools.Debug_DrawLine(val15, new Vec2((Fix)0L, (Fix)1000L), Color.red, 10f);
}
else
{
list.Add(l);
}
}
}
if (list.Count == 0)
{
return;
}
int index = Updater.RandomInt(0, list.Count);
int num2 = list[index];
PhysicsParent val16 = val.roundedRects.physicsParents[num2];
StickyRoundedRectangle component3 = ((Component)val16.fixTrans).GetComponent<StickyRoundedRectangle>();
if ((Object)(object)component3 == (Object)null)
{
return;
}
for (int m = 0; m < 10; m++)
{
Fix val17 = Updater.RandomFix(Fix.Zero, Fix.One);
Vec2 val18 = component3.PositionFromLocalPlayerPos(val17, Fix.Zero);
Vec2 val19 = val18 + component3.currentNormal(val18) * component.radius;
bool flag = false;
for (int n = 0; n < val.roundedRects.Length; n++)
{
Tools.Debug_DrawPos(val18, Color.blue, 2f);
Tools.Debug_DrawLine(val18, val19, Color.black, 2f);
if (val.roundedRects.physicsParents[n].hierarchyNumber != val16.hierarchyNumber && ((RoundedRect)(ref val.roundedRects.colliders[n])).OverlapPoint(val19))
{
flag = true;
break;
}
}
if (val18.y > val13 && SceneBounds.IsInSceneBounds(val18) && !flag)
{
component.AttachToGround(component3, val18);
player.position = component.GetPlayerBody().position;
return;
}
}
player.position = ((RoundedRect)(ref val.roundedRects.colliders[num2])).GetClosestPoint(val14);
}
private void TeleportSpawnEffect(ParticleSystem prefab, Vec2 from, Vec2 to)
{
//IL_0007: Unknown result type (might be due to invalid IL or missing references)
//IL_0008: Unknown result type (might be due to invalid IL or missing references)
//IL_000d: 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_0013: Unknown result type (might be due to invalid IL or missing references)
//IL_0018: Unknown result type (might be due to invalid IL or missing references)
//IL_002c: 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_0032: Unknown result type (might be due to invalid IL or missing references)
//IL_003e: Unknown result type (might be due to invalid IL or missing references)
//IL_0043: Unknown result type (might be due to invalid IL or missing references)
//IL_0049: Unknown result type (might be due to invalid IL or missing references)
//IL_0051: Unknown result type (might be due to invalid IL or missing references)
//IL_005f: Unknown result type (might be due to invalid IL or missing references)
//IL_0074: Unknown result type (might be due to invalid IL or missing references)
//IL_0080: 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_009c: Unknown result type (might be due to invalid IL or missing references)
//IL_00b7: Unknown result type (might be due to invalid IL or missing references)
//IL_00ff: 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_00e7: Unknown result type (might be due to invalid IL or missing references)
float num = 5f;
Vector3 val = (Vector3)to - (Vector3)from;
if (((Vector3)(ref val)).sqrMagnitude > num)
{
ParticleSystem val2 = Object.Instantiate<ParticleSystem>(prefab, (Vector3)from, Quaternion.identity);
VelocityOverLifetimeModule velocityOverLifetime = val2.velocityOverLifetime;
MinMaxCurve val3 = default(MinMaxCurve);
((MinMaxCurve)(ref val3)).constantMin = val.x;
((MinMaxCurve)(ref val3)).constantMax = val.x;
((MinMaxCurve)(ref val3)).mode = (ParticleSystemCurveMode)3;
((VelocityOverLifetimeModule)(ref velocityOverLifetime)).orbitalOffsetX = val3;
val3 = default(MinMaxCurve);
((MinMaxCurve)(ref val3)).constantMin = val.y - 0.5f;
((MinMaxCurve)(ref val3)).constantMax = val.y + 0.5f;
((MinMaxCurve)(ref val3)).mode = (ParticleSystemCurveMode)3;
((VelocityOverLifetimeModule)(ref velocityOverLifetime)).orbitalOffsetY = val3;
float num2 = 0.25f;
float num3 = ((Vector3)(ref val)).magnitude / num2;
if (num3 > 100f)
{
((VelocityOverLifetimeModule)(ref velocityOverLifetime)).radial = MinMaxCurve.op_Implicit(0f - num3);
return;
}
num3 = -100f;
((VelocityOverLifetimeModule)(ref velocityOverLifetime)).radial = MinMaxCurve.op_Implicit(num3);
num2 = (0f - Mathf.Abs(((Vector3)(ref val)).magnitude)) / num3;
MainModule val4 = default(MainModule);
((MainModule)(ref val4))..ctor(val2);
((MainModule)(ref val4)).startLifetime = MinMaxCurve.op_Implicit(num2);
Debug.Log((object)"This part ran!");
}
}
private void SpawnMeteor()
{
//IL_000a: Unknown result type (might be due to invalid IL or missing references)
//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_001f: Unknown result type (might be due to invalid IL or missing references)
//IL_0024: Unknown result type (might be due to invalid IL or missing references)
//IL_0037: 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_006d: Unknown result type (might be due to invalid IL or missing references)
//IL_008e: Unknown result type (might be due to invalid IL or missing references)
Boulder val = FixTransform.InstantiateFixed<Boulder>(boulderPrefab, new Vec2(Updater.RandomFix((Fix)(-70L), (Fix)70L), (Fix)50L));
val.hitbox.Scale = (Fix)3L;
val.hitbox.ManualInit();
val.hitbox.Scale = (Fix)3L;
((Component)val.hitbox).GetComponent<StickyRoundedRectangle>().platformType = (PlatformType)3;
((Component)val.hitbox).GetComponent<SpriteRenderer>().sprite = throwerPrefab.boulders.sprites[3].sprite;
}
private void SpawnMeteorShower()
{
//IL_0012: Unknown result type (might be due to invalid IL or missing references)
//IL_001a: Unknown result type (might be due to invalid IL or missing references)
//IL_001f: Unknown result type (might be due to invalid IL or missing references)
//IL_0027: 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_0034: Unknown result type (might be due to invalid IL or missing references)
//IL_0039: Unknown result type (might be due to invalid IL or missing references)
//IL_0053: 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_0090: Unknown result type (might be due to invalid IL or missing references)
//IL_00b1: Unknown result type (might be due to invalid IL or missing references)
for (int i = 0; i < 10; i++)
{
Boulder val = FixTransform.InstantiateFixed<Boulder>(boulderPrefab, new Vec2(Updater.RandomFix((Fix)(-70L), (Fix)70L), Updater.RandomFix((Fix)40L, (Fix)60L)));
val.hitbox.Scale = (Fix)0.5;
val.hitbox.ManualInit();
val.hitbox.Scale = (Fix)0.5;
((Component)val.hitbox).GetComponent<StickyRoundedRectangle>().platformType = (PlatformType)3;
((Component)val.hitbox).GetComponent<SpriteRenderer>().sprite = throwerPrefab.boulders.sprites[3].sprite;
}
}
private void SpawnBlackHole()
{
//IL_000a: Unknown result type (might be due to invalid IL or missing references)
//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_001e: Unknown result type (might be due to invalid IL or missing references)
//IL_0026: 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)
BlackHole val = FixTransform.InstantiateFixed<BlackHole>(blackHolePrefab, new Vec2(Updater.RandomFix((Fix)(-90L), (Fix)90L), Updater.RandomFix((Fix)0L, (Fix)45L)));
}
private void SpawnArrows()
{
//IL_0014: 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_0024: Unknown result type (might be due to invalid IL or missing references)
//IL_002c: Unknown result type (might be due to invalid IL or missing references)
SpawnObjects(arrowPrefab, Updater.RandomInt(10, 30), (Fix)100L, (Fix)(-100L), (Fix)60L, (Fix)40L);
}
private void SpawnGrenades()
{
//IL_0014: 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_0024: Unknown result type (might be due to invalid IL or missing references)
//IL_002c: Unknown result type (might be due to invalid IL or missing references)
SpawnObjects(grenadePrefab, Updater.RandomInt(10, 30), (Fix)100L, (Fix)(-100L), (Fix)60L, (Fix)40L);
}
private void SpawnMines()
{
//IL_0013: Unknown result type (might be due to invalid IL or missing references)
//IL_001b: Unknown result type (might be due to invalid IL or missing references)
//IL_0023: Unknown result type (might be due to invalid IL or missing references)
//IL_002a: Unknown result type (might be due to invalid IL or missing references)
SpawnObjects(minePrefab, Updater.RandomInt(5, 15), (Fix)90L, (Fix)(-90L), (Fix)45L, (Fix)0L, isMine: true);
}
private void SpawnSmoke()
{
//IL_0014: 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_0024: 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)
SpawnObjects(smokePrefab, Updater.RandomInt(10, 20), (Fix)90L, (Fix)(-90L), (Fix)45L, (Fix)0L);
}
private void SpawnObjects(BoplBody prefab, int amount, Fix xMax, Fix xMin, Fix yMax, Fix yMin, bool isMine = false)
{
//IL_000a: Unknown result type (might be due to invalid IL or missing references)
//IL_000c: Unknown result type (might be due to invalid IL or missing references)
//IL_000d: Unknown result type (might be due to invalid IL or missing references)
//IL_0012: Unknown result type (might be due to invalid IL or missing references)
//IL_0014: Unknown result type (might be due to invalid IL or missing references)
//IL_0016: Unknown result type (might be due to invalid IL or missing references)
//IL_001b: Unknown result type (might be due to invalid IL or missing references)
//IL_0027: Unknown result type (might be due to invalid IL or missing references)
//IL_0033: Unknown result type (might be due to invalid IL or missing references)
//IL_0038: Unknown result type (might be due to invalid IL or missing references)
//IL_003d: Unknown result type (might be due to invalid IL or missing references)
//IL_0042: Unknown result type (might be due to invalid IL or missing references)
//IL_0048: 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_0059: Unknown result type (might be due to invalid IL or missing references)
//IL_0077: Unknown result type (might be due to invalid IL or missing references)
//IL_007c: 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)
for (int i = 0; i < amount; i++)
{
BoplBody val = FixTransform.InstantiateFixed<BoplBody>(prefab, new Vec2(Updater.RandomFix(xMin, xMax), Updater.RandomFix(yMin, yMax)));
val.Scale = Fix.One;
val.StartVelocity = new Vec2(Fix.Zero, Fix.Zero);
val.rotation = Fix.Zero;
val.StartAngularVelocity = Fix.Zero;
if (isMine)
{
Mine component = ((Component)val).GetComponent<Mine>();
component.ScansFor = LayerMask.op_Implicit(LayerMask.NameToLayer("Player"));
component.Light.color = Color.red;
}
}
}
private void ChangeGravity(bool reset = false)
{
//IL_0003: Unknown result type (might be due to invalid IL or missing references)
//IL_0011: Unknown result type (might be due to invalid IL or missing references)
//IL_0016: Unknown result type (might be due to invalid IL or missing references)
//IL_001b: Unknown result type (might be due to invalid IL or missing references)
//IL_0025: Unknown result type (might be due to invalid IL or missing references)
//IL_002a: Unknown result type (might be due to invalid IL or missing references)
gravityScale = Updater.RandomFix((Fix)0L, (Fix)1.5);
if (reset)
{
gravityScale = Fix.One;
}
}
public void OnSceneLoaded(Scene scene, LoadSceneMode mode)
{
if (!BattleUtils.IsGameSessionActive())
{
Updater.RegisterUpdatable((IUpdatable)(object)this);
timeSinceEvent = 0;
}
}
public void Init()
{
}
public bool IsEnabled()
{
return ((Behaviour)this).isActiveAndEnabled;
}
public void LateUpdateSim(Fix SimDeltaTime)
{
}
public void OnDestroyUpdatable()
{
}
}
public static class PluginInfo
{
public const string PLUGIN_GUID = "RandomEvents";
public const string PLUGIN_NAME = "RandomEvents";
public const string PLUGIN_VERSION = "1.0.0";
}
}