Please disclose if any significant portion of your mod was created using AI tools by adding the 'AI Generated' category. Failing to do so may result in the mod being removed from Thunderstore.
Decompiled source of Ragnarok v0.0.1
plugins\Ragnarok.dll
Decompiled a year agousing System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Reflection; using System.Reflection.Emit; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using System.Runtime.Versioning; using System.Security.Permissions; using BepInEx; using BepInEx.Configuration; using Explosives; using FireSpreads; using HarmonyLib; using Jotunn; using Jotunn.Entities; using Jotunn.Managers; using Jotunn.Utils; using Ragnarok.Commands; using Ragnarok.Mono; using Ragnarok.States; using SoftReferenceableAssets; using UnityEngine; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)] [assembly: AssemblyTitle("Ragnarok")] [assembly: AssemblyDescription("")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("")] [assembly: AssemblyProduct("Ragnarok")] [assembly: AssemblyCopyright("Copyright © 2021")] [assembly: AssemblyTrademark("")] [assembly: ComVisible(false)] [assembly: Guid("e3243d22-4307-4008-ba36-9f326008cde5")] [assembly: AssemblyFileVersion("0.0.1.0")] [assembly: TargetFramework(".NETFramework,Version=v4.6.2", FrameworkDisplayName = ".NET Framework 4.6.2")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("0.0.1.0")] namespace FireSpreads { public class IgniteDestroy : MonoBehaviour { public float m_fireresists = 1f; public bool m_eternalfire = true; public float m_time; public WearNTear m_wear; public void Awake() { m_wear = ((Component)this).GetComponent<WearNTear>(); if ((Object)(object)m_wear != (Object)null && (Object)(object)m_wear.m_nview != (Object)null) { m_wear.m_nview.ClaimOwnership(); } } public void Update() { m_time -= Time.deltaTime; if (!(m_time > 0f) && !((Object)(object)m_wear == (Object)null) && !((Object)(object)m_wear.m_nview == (Object)null) && m_wear.m_nview.IsOwner()) { if (m_eternalfire) { FireController.Instance.SetFire<WearNTear>(m_wear, m_wear.m_nview, 1f, m_eternalfire); } else { FireController.Instance.SetFireResist(m_wear.m_nview, m_fireresists, true); } m_wear.Destroy((HitData)null, false); } } } } namespace Ragnarok { public struct HeightmapKey : IEquatable<HeightmapKey> { public Heightmap m_heightmap; public float m_x; public float m_y; public HeightmapKey(Heightmap heightmap, float x, float y) { m_heightmap = heightmap; m_x = x; m_y = y; } public override bool Equals(object obj) { if (obj is HeightmapKey other) { return Equals(other); } return false; } public bool Equals(HeightmapKey other) { if (EqualityComparer<Heightmap>.Default.Equals(m_heightmap, other.m_heightmap) && m_x == other.m_x) { return m_y == other.m_y; } return false; } public override int GetHashCode() { return ((17 * 31 + (((Object)(object)m_heightmap != (Object)null) ? ((object)m_heightmap).GetHashCode() : 0)) * 31 + m_x.GetHashCode()) * 31 + m_y.GetHashCode(); } public override string ToString() { return $"HeightmapKey {{ Heightmap = {m_heightmap}, X = {m_x}, Y = {m_y} }}"; } } public class RagnarokCrack : MonoBehaviour { public int m_seed; public ZNetView m_view; public bool m_paintupdated; public int m_crackWidth = 7; public int m_crackDepth = -4; public List<Vector2Int> m_crackPath = new List<Vector2Int>(); public static Random m_seededRandom; private void Awake() { //IL_0013: 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) m_view = ((Component)this).GetComponent<ZNetView>(); m_seed = (int)(((Component)this).transform.position.x + ((Component)this).transform.position.y); m_crackPath = CreateCrackPath(m_seed); } public void Update() { //IL_005b: Unknown result type (might be due to invalid IL or missing references) if ((Object)(object)m_view == (Object)null || !m_view.IsValid()) { return; } if (!m_view.GetZDO().GetBool("ragnarok_cracked", false) && m_view.IsOwner()) { ApplyCrack(); } if (m_paintupdated) { return; } List<Heightmap> list = new List<Heightmap>(); Heightmap.FindHeightmap(((Component)this).transform.position, 1f, list); foreach (Heightmap item in list) { TerrainComp andCreateTerrainCompiler = item.GetAndCreateTerrainCompiler(); UpdateHeightmapPaint(item, ref andCreateTerrainCompiler.m_levelDelta, andCreateTerrainCompiler.m_paintMask); item.Poke(false); } m_paintupdated = true; } public void UpdateHeightmapPaint(Heightmap hmap, ref float[] heights, Color[] paint) { //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_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_00c2: Unknown result type (might be due to invalid IL or missing references) //IL_00d0: 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_00fc: 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) int num = 64; foreach (Vector2Int item in m_crackPath) { Vector2Int current = item; for (int i = -m_crackWidth / 2; i <= m_crackWidth / 2; i++) { int num2 = ((Vector2Int)(ref current)).x + i; if (num2 <= 0 || num2 >= num - 1) { continue; } int num3 = ((Vector2Int)(ref current)).y * (num + 1) + num2; if (num3 < 0 || num3 >= heights.Length) { continue; } Color32 biomeColor = Heightmap.GetBiomeColor(hmap.m_cornerBiomes[0]); float x = DUtils.SmoothStep(0f, 1f, (float)((double)num2 / (double)num)); float y = DUtils.SmoothStep(0f, 1f, (float)((double)((Vector2Int)(ref current)).y / (double)num)); HeightmapKey key = new HeightmapKey(hmap, x, y); Ragnarok.s_biomeColors[key] = Color32.op_Implicit(Color32.Lerp(biomeColor, new Color32(byte.MaxValue, (byte)0, (byte)0, byte.MaxValue), 1f)); for (int j = -1; j <= 1; j++) { for (int k = -1; k <= 1; k++) { if (j != 0 || k != 0) { Ragnarok.UpdateBiomeColorAndPaint(hmap, Color32.op_Implicit(biomeColor), j, k, num, paint); } } } } } m_paintupdated = true; } public void ApplyCrack() { //IL_0022: Unknown result type (might be due to invalid IL or missing references) //IL_00ea: Unknown result type (might be due to invalid IL or missing references) m_view.GetZDO().Set("ragnarok_cracked", true); List<Heightmap> list = new List<Heightmap>(); Heightmap.FindHeightmap(((Component)this).transform.position, 1f, list); foreach (Heightmap item in list) { TerrainComp andCreateTerrainCompiler = item.GetAndCreateTerrainCompiler(); CreateCrack(m_seed, andCreateTerrainCompiler.m_hmap, ref andCreateTerrainCompiler.m_levelDelta, ref andCreateTerrainCompiler.m_modifiedHeight, ref andCreateTerrainCompiler.m_paintMask, ref andCreateTerrainCompiler.m_modifiedPaint, 7, -4f); if (!((Object)(object)m_view == (Object)null) && m_view.IsOwner()) { andCreateTerrainCompiler.Save(); andCreateTerrainCompiler.m_hmap.Poke(false); andCreateTerrainCompiler.m_nview.GetZDO().IncreaseDataRevision(); } } ClutterSystem instance = ClutterSystem.instance; if (instance != null) { instance.ResetGrass(((Component)Player.m_localPlayer).transform.position, 1000f); } } public static List<Vector2Int> CreateCrackPath(int seed) { //IL_00b8: Unknown result type (might be due to invalid IL or missing references) //IL_0150: Unknown result type (might be due to invalid IL or missing references) int num = 64; m_seededRandom = new Random(seed); int num2 = m_seededRandom.Next(0, 4); int num3 = 0; int num4 = 0; switch (num2) { case 0: num3 = m_seededRandom.Next(1, num - 1); num4 = 1; break; case 1: num3 = m_seededRandom.Next(1, num - 1); num4 = num - 1; break; case 2: num3 = 1; num4 = m_seededRandom.Next(1, num - 1); break; case 3: num3 = num - 1; num4 = m_seededRandom.Next(1, num - 1); break; } float num5 = (float)num / 2f; float num6 = Mathf.Atan2((float)num / 2f - (float)num4, num5 - (float)num3); List<Vector2Int> list = new List<Vector2Int>(); Vector2Int item = default(Vector2Int); ((Vector2Int)(ref item))..ctor(num3, num4); list.Add(item); while (((Vector2Int)(ref item)).x >= 1 && ((Vector2Int)(ref item)).x <= num - 1 && ((Vector2Int)(ref item)).y >= 1 && ((Vector2Int)(ref item)).y <= num - 1) { if (m_seededRandom.NextDouble() < 0.10000000149011612) { num6 += (float)(m_seededRandom.NextDouble() * 3.1415927410125732 - 1.5707963705062866); } int num7 = ((Vector2Int)(ref item)).x + Mathf.RoundToInt(Mathf.Cos(num6)); int num8 = ((Vector2Int)(ref item)).y + Mathf.RoundToInt(Mathf.Sin(num6)); num7 = Mathf.Clamp(num7, 1, num - 1); num8 = Mathf.Clamp(num8, 1, num - 1); ((Vector2Int)(ref item))..ctor(num7, num8); list.Add(item); if (num7 == 1 || num7 == num - 1 || num8 == 1 || num8 == num - 1) { break; } } return list; } public void CreateCrack(int seed, Heightmap hmap, ref float[] heights, ref bool[] modifiedHeights, ref Color[] paint, ref bool[] modifiedPaint, int crackWidth = 5, float crackDepth = -20f, float crackNoise = 0.5f) { //IL_00ae: Unknown result type (might be due to invalid IL or missing references) //IL_019c: Unknown result type (might be due to invalid IL or missing references) //IL_01a1: Unknown result type (might be due to invalid IL or missing references) //IL_013e: Unknown result type (might be due to invalid IL or missing references) //IL_024c: Unknown result type (might be due to invalid IL or missing references) //IL_0251: Unknown result type (might be due to invalid IL or missing references) //IL_029b: Unknown result type (might be due to invalid IL or missing references) //IL_02a9: 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_02d5: Unknown result type (might be due to invalid IL or missing references) //IL_02d7: Unknown result type (might be due to invalid IL or missing references) m_paintupdated = true; int num = 64; Random random = new Random(seed); int num2 = random.Next(0, 4); int num3 = 0; int num4 = 0; switch (num2) { case 0: num3 = random.Next(1, num - 1); num4 = 1; break; case 1: num3 = random.Next(1, num - 1); num4 = num - 1; break; case 2: num3 = 1; num4 = random.Next(1, num - 1); break; case 3: num3 = num - 1; num4 = random.Next(1, num - 1); break; } float num5 = (float)num / 2f; float num6 = Mathf.Atan2((float)num / 2f - (float)num4, num5 - (float)num3); List<Vector2Int> list = new List<Vector2Int>(); Vector2Int item = default(Vector2Int); ((Vector2Int)(ref item))..ctor(num3, num4); list.Add(item); while (((Vector2Int)(ref item)).x >= 1 && ((Vector2Int)(ref item)).x <= num - 1 && ((Vector2Int)(ref item)).y >= 1 && ((Vector2Int)(ref item)).y <= num - 1) { if (random.NextDouble() < 0.10000000149011612) { num6 += (float)(random.NextDouble() * 3.1415927410125732 - 1.5707963705062866); } int num7 = ((Vector2Int)(ref item)).x + Mathf.RoundToInt(Mathf.Cos(num6)); int num8 = ((Vector2Int)(ref item)).y + Mathf.RoundToInt(Mathf.Sin(num6)); num7 = Mathf.Clamp(num7, 1, num - 1); num8 = Mathf.Clamp(num8, 1, num - 1); ((Vector2Int)(ref item))..ctor(num7, num8); list.Add(item); if (num7 == 1 || num7 == num - 1 || num8 == 1 || num8 == num - 1) { break; } } foreach (Vector2Int item2 in list) { Vector2Int current = item2; for (int i = -crackWidth / 2; i <= crackWidth / 2; i++) { int num9 = ((Vector2Int)(ref current)).x + i; if (num9 <= 0 || num9 >= num - 1) { continue; } int num10 = ((Vector2Int)(ref current)).y * (num + 1) + num9; if (num10 < 0 || num10 >= heights.Length) { continue; } float num11 = (float)(random.NextDouble() * 2.0 - 1.0) * crackNoise; heights[num10] += crackDepth + num11; modifiedHeights[num10] = true; paint[num10].a = 1f; modifiedPaint[num10] = true; Color32 biomeColor = Heightmap.GetBiomeColor(hmap.m_cornerBiomes[0]); float x = DUtils.SmoothStep(0f, 1f, (float)((double)num9 / (double)num)); float y = DUtils.SmoothStep(0f, 1f, (float)((double)((Vector2Int)(ref current)).y / (double)num)); HeightmapKey key = new HeightmapKey(hmap, x, y); Ragnarok.s_biomeColors[key] = Color32.op_Implicit(Color32.Lerp(biomeColor, new Color32(byte.MaxValue, (byte)0, (byte)0, byte.MaxValue), 1f)); for (int j = -1; j <= 1; j++) { for (int k = -1; k <= 1; k++) { if (j != 0 || k != 0) { Ragnarok.UpdateBiomeColorAndPaint(hmap, Color32.op_Implicit(biomeColor), j, k, num, paint); } } } } } } } public class RigifyMe : MonoBehaviour { private ZNetView m_nview; private bool m_rigified; public void Awake() { m_nview = ((Component)this).GetComponent<ZNetView>(); if ((Object)(object)m_nview == (Object)null) { m_nview = ((Component)this).GetComponentInChildren<ZNetView>(); } if ((Object)(object)m_nview != (Object)null) { try { m_nview.Register("Rigify", (Action<long>)Rigify); } catch { } } } public void Rigify(long sender) { DoIt(); } public void RigifyNetwork() { if (!m_rigified && (Object)(object)m_nview != (Object)null) { m_nview.InvokeRPC(ZNetView.Everybody, "Rigify", Array.Empty<object>()); } } public void DoIt() { //IL_0160: 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_0172: 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) if (m_rigified) { return; } m_rigified = true; MeshCollider[] componentsInChildren = ((Component)this).gameObject.GetComponentsInChildren<MeshCollider>(); for (int i = 0; i < componentsInChildren.Length; i++) { componentsInChildren[i].convex = true; } Collider[] componentsInChildren2 = ((Component)this).gameObject.GetComponentsInChildren<Collider>(); foreach (Collider val in componentsInChildren2) { if (((Component)val).gameObject.layer == 16 || ((Component)val).gameObject.layer == 12 || ((Component)val).gameObject.layer == 23 || ((Component)val).gameObject.layer == 20) { ((Component)val).gameObject.layer = 0; } } GameObject gameObject = ((Component)this).gameObject; TerrainComp component = ((Component)this).gameObject.GetComponent<TerrainComp>(); if (Object.op_Implicit((Object)(object)component?.m_hmap)) { gameObject = ((Component)component.m_hmap).gameObject; } Ragnarok.AddRigidbody(gameObject); Ragnarok.ActivateRigidBody(gameObject); ImpactEffect obj = gameObject.AddComponent<ImpactEffect>(); obj.m_minVelocity = 1f; obj.m_maxVelocity = 5f; obj.m_damagePlayers = true; obj.m_damageToSelf = false; obj.m_damageFish = true; obj.m_damages.m_blunt = 100f; obj.m_damages.m_chop = 100f; obj.m_damages.m_pickaxe = 100f; obj.m_interval = 0.25f; obj.m_toolTier = 0; obj.m_hitType = (HitType)20; obj.m_triggerMask = default(LayerMask); obj.m_triggerMask = LayerMask.op_Implicit(-1); WearNTear component2 = gameObject.GetComponent<WearNTear>(); if ((Object)(object)component2 != (Object)null) { component2.m_noSupportWear = false; } if (!((Object)(object)component != (Object)null)) { return; } gameObject.AddComponent<TerrainAnimation>(); gameObject.AddComponent<TriggerEventCaller>(); MeshCollider component3 = gameObject.GetComponent<MeshCollider>(); if ((Object)(object)component3 == (Object)null) { Debug.LogError((object)("No MeshCollider found on " + ((Object)this).name)); return; } MeshCollider obj2 = gameObject.AddComponent<MeshCollider>(); obj2.sharedMesh = component3.sharedMesh; obj2.convex = true; ((Collider)obj2).isTrigger = true; ZSyncTransform obj3 = ((Component)this).gameObject.AddComponent<ZSyncTransform>(); if ((Object)(object)obj3 == (Object)null) { ((Component)this).gameObject.AddComponent<ZSyncTransform>(); } obj3.m_syncRotation = true; } } public class RagnarokController : MonoBehaviour { public int m_state; public static Vector3 s_initialGravity = new Vector3(0f, -20f, 0f); public Vector3 m_gravity = s_initialGravity; public ZNetView m_view; public float m_updateTimer; public bool m_owner; public float m_elapsedTime; public static Quaternion s_rotationToTargetTop = Quaternion.identity; public FallStateMachine m_fallStateMachine; public HashSet<GameObject> m_roofs = new HashSet<GameObject>(); public Dictionary<GameObject, Container> m_containers = new Dictionary<GameObject, Container>(); public static RagnarokController s_instance; public bool m_noGrass; public bool m_isDead; public void Awake() { s_instance = this; } public void Update() { if (m_state > 0) { m_elapsedTime += Time.deltaTime; m_updateTimer -= Time.deltaTime; if (m_owner && m_updateTimer < 0f) { m_updateTimer = 5f; ZRoutedRpc.instance.InvokeRoutedRPC(ZRoutedRpc.Everybody, "UpdateRagnarok", new object[2] { m_state, m_elapsedTime }); } } } public bool IsGod() { if (m_fallStateMachine != null && m_fallStateMachine.m_currentState != null) { return m_fallStateMachine.m_currentState.IsGod(); } return false; } public bool CheckUnderword() { if (m_fallStateMachine != null && m_fallStateMachine.m_currentState != null) { return m_fallStateMachine.m_currentState.CheckUnderword(); } return false; } public void PrepareQueuedEnvironment(EnvSetup env) { if (m_fallStateMachine != null && m_fallStateMachine.m_currentState != null) { m_fallStateMachine.m_currentState.PrepareQueuedEnvironment(env); } } public void FixedUpdate() { if (m_state != 0) { m_fallStateMachine.Update(); } } public void DestroyInstance(GameObject go) { m_roofs.Remove(go); m_containers.Remove(go); } public List<Container> GetExplosiveContainers() { List<Container> list = new List<Container>(); foreach (KeyValuePair<GameObject, Container> container in m_containers) { if (!container.Value.m_nview.IsOwner()) { continue; } foreach (ItemData item in container.Value.m_inventory.m_inventory) { if (Explosives.s_explosives.Contains(((Object)item.m_dropPrefab).name)) { list.Add(container.Value); break; } } } return list; } } [BepInPlugin("org.bepinex.plugins.bid.Ragnarok", "Ragnarok", "0.0.1")] [BepInDependency(/*Could not decode attribute arguments.*/)] [NetworkCompatibility(/*Could not decode attribute arguments.*/)] public class Ragnarok : BaseUnityPlugin { public const string PluginGUID = "org.bepinex.plugins.bid.Ragnarok"; public const string PluginName = "Ragnarok"; public const string PluginVersion = "0.0.1"; private readonly Harmony harmony = new Harmony("org.bepinex.plugins.bid.Ragnarok"); public static bool s_init = false; public static readonly int s_StateHash = StringExtensionMethods.GetStableHashCode("RagnarokState"); public static ConfigEntry<float> FallSpeedConfig; public static ConfigEntry<float> NoCutStateDurationConfig; public static ConfigEntry<float> CutStateDurationConfig; public static ConfigEntry<Vector3> CutStateGravityConfig; public static ConfigEntry<float> InitialFallStateDurationConfig; public static ConfigEntry<Vector3> InitialFallStateGravityConfig; public static ConfigEntry<float> HitStateDurationConfig; public static ConfigEntry<Vector3> HitStateGavityConfig; public static ConfigEntry<float> RotationStateDurationConfig; public static ConfigEntry<float> CrackStateDurationConfig; public static ConfigEntry<float> PurificationStateDurationConfig; public static ConfigEntry<float> DesintegratorRadiusConfig; public static ConfigEntry<float> RandomSpawnTimerConfig; public static ConfigEntry<float> CrackTimerConfig; public static ConfigEntry<float> EndStateDurationConfig; public static GameObject s_sfxTreeHit = null; public static GameObject s_vfxTreeHit = null; public static GameObject s_sfxTreeFall = null; public static SimulateFlyingAway s_flyaway = null; public static readonly Dictionary<HeightmapKey, Color> s_biomeColors = new Dictionary<HeightmapKey, Color>(); public static BiomeEnvSetup s_miomeSetupMeadows = null; public static EnvSetup s_envClear = null; public static EnvSetup s_envAsh = null; public static EnvSetup s_envStorm = null; public static AudioClip s_ambientFallCalm = null; public static AudioClip s_ambientFallIntsense = null; public static Dictionary<GameObject, Vector3> s_randomSpawns = new Dictionary<GameObject, Vector3>(); public static GameObject s_psysDebris; private void Awake() { Logger.LogInfo((object)"Ragnarok has landed"); CreateConfigValues(); CommandManager.Instance.AddConsoleCommand((ConsoleCommand)(object)new RagnarokCommand()); PrefabManager.OnVanillaPrefabsAvailable += AddClonedItems; harmony.PatchAll(); } private void CreateConfigValues() { //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_003c: Expected O, but got Unknown //IL_003c: Unknown result type (might be due to invalid IL or missing references) //IL_0046: Expected O, but got Unknown //IL_006e: 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_007b: Expected O, but got Unknown //IL_007b: Unknown result type (might be due to invalid IL or missing references) //IL_0085: Expected O, but got Unknown //IL_00ad: Unknown result type (might be due to invalid IL or missing references) //IL_00b2: Unknown result type (might be due to invalid IL or missing references) //IL_00ba: Expected O, but got Unknown //IL_00ba: Unknown result type (might be due to invalid IL or missing references) //IL_00c4: Expected O, but got Unknown //IL_00ec: Unknown result type (might be due to invalid IL or missing references) //IL_00f1: Unknown result type (might be due to invalid IL or missing references) //IL_00f9: Expected O, but got Unknown //IL_00f9: Unknown result type (might be due to invalid IL or missing references) //IL_0103: Expected O, but got Unknown //IL_012b: Unknown result type (might be due to invalid IL or missing references) //IL_0130: Unknown result type (might be due to invalid IL or missing references) //IL_0138: Expected O, but got Unknown //IL_0138: Unknown result type (might be due to invalid IL or missing references) //IL_0142: Expected O, but got Unknown //IL_0166: Unknown result type (might be due to invalid IL or missing references) //IL_0179: Unknown result type (might be due to invalid IL or missing references) //IL_017e: Unknown result type (might be due to invalid IL or missing references) //IL_0186: Expected O, but got Unknown //IL_0186: Unknown result type (might be due to invalid IL or missing references) //IL_0190: Expected O, but got Unknown //IL_01b8: 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) //IL_01c5: Expected O, but got Unknown //IL_01c5: Unknown result type (might be due to invalid IL or missing references) //IL_01cf: Expected O, but got Unknown //IL_01f3: Unknown result type (might be due to invalid IL or missing references) //IL_0206: Unknown result type (might be due to invalid IL or missing references) //IL_020b: Unknown result type (might be due to invalid IL or missing references) //IL_0213: Expected O, but got Unknown //IL_0213: Unknown result type (might be due to invalid IL or missing references) //IL_021d: Expected O, but got Unknown //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_0252: Expected O, but got Unknown //IL_0252: Unknown result type (might be due to invalid IL or missing references) //IL_025c: Expected O, but got Unknown //IL_0280: Unknown result type (might be due to invalid IL or missing references) //IL_0293: Unknown result type (might be due to invalid IL or missing references) //IL_0298: Unknown result type (might be due to invalid IL or missing references) //IL_02a0: Expected O, but got Unknown //IL_02a0: Unknown result type (might be due to invalid IL or missing references) //IL_02aa: Expected O, but got Unknown //IL_02d2: Unknown result type (might be due to invalid IL or missing references) //IL_02d7: Unknown result type (might be due to invalid IL or missing references) //IL_02df: Expected O, but got Unknown //IL_02df: Unknown result type (might be due to invalid IL or missing references) //IL_02e9: Expected O, but got Unknown //IL_0311: 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_031e: Expected O, but got Unknown //IL_031e: Unknown result type (might be due to invalid IL or missing references) //IL_0328: Expected O, but got Unknown //IL_0350: Unknown result type (might be due to invalid IL or missing references) //IL_0355: Unknown result type (might be due to invalid IL or missing references) //IL_035d: Expected O, but got Unknown //IL_035d: Unknown result type (might be due to invalid IL or missing references) //IL_0367: Expected O, but got Unknown //IL_038f: Unknown result type (might be due to invalid IL or missing references) //IL_0394: Unknown result type (might be due to invalid IL or missing references) //IL_039c: Expected O, but got Unknown //IL_039c: Unknown result type (might be due to invalid IL or missing references) //IL_03a6: Expected O, but got Unknown //IL_03ce: Unknown result type (might be due to invalid IL or missing references) //IL_03d3: Unknown result type (might be due to invalid IL or missing references) //IL_03db: Expected O, but got Unknown //IL_03db: Unknown result type (might be due to invalid IL or missing references) //IL_03e5: Expected O, but got Unknown ((BaseUnityPlugin)this).Config.SaveOnConfigSet = true; FallSpeedConfig = ((BaseUnityPlugin)this).Config.Bind<float>("1 - General", "FallSpeed", -9.81f, new ConfigDescription("rate to rigify in purification state", (AcceptableValueBase)null, new object[1] { (object)new ConfigurationManagerAttributes { IsAdminOnly = true } })); DesintegratorRadiusConfig = ((BaseUnityPlugin)this).Config.Bind<float>("1 - General", "DesintegratorBallRadius", 0.5f, new ConfigDescription("radius of the desintegration ball - internal instrument to drive destruction", (AcceptableValueBase)null, new object[1] { (object)new ConfigurationManagerAttributes { IsAdminOnly = true } })); RandomSpawnTimerConfig = ((BaseUnityPlugin)this).Config.Bind<float>("1 - General", "RandomSpawnTimer", 15f, new ConfigDescription("random spawns (meteor/lightning) all x seconds", (AcceptableValueBase)null, new object[1] { (object)new ConfigurationManagerAttributes { IsAdminOnly = true } })); NoCutStateDurationConfig = ((BaseUnityPlugin)this).Config.Bind<float>("2 - NoCutState", "NoCutStateDuration", 20f, new ConfigDescription("NoCutState length in seconds", (AcceptableValueBase)null, new object[1] { (object)new ConfigurationManagerAttributes { IsAdminOnly = true } })); CutStateDurationConfig = ((BaseUnityPlugin)this).Config.Bind<float>("3 - CutState", "CutStateDuration", 0.35f, new ConfigDescription("NoCutState length in seconds", (AcceptableValueBase)null, new object[1] { (object)new ConfigurationManagerAttributes { IsAdminOnly = true } })); CutStateGravityConfig = ((BaseUnityPlugin)this).Config.Bind<Vector3>("3 - CutState", "CutStateGravity", new Vector3(0f, 100f, 0f), new ConfigDescription("CutStore gravity", (AcceptableValueBase)null, new object[1] { (object)new ConfigurationManagerAttributes { IsAdminOnly = true } })); InitialFallStateDurationConfig = ((BaseUnityPlugin)this).Config.Bind<float>("4 - InitialFallState", "InitialFallStateDuration", 120f, new ConfigDescription("InitialFallState length in seconds", (AcceptableValueBase)null, new object[1] { (object)new ConfigurationManagerAttributes { IsAdminOnly = true } })); InitialFallStateGravityConfig = ((BaseUnityPlugin)this).Config.Bind<Vector3>("4 - InitialFallState", "InitialFallStateGravity", new Vector3(0.7f, -5f, 0f), new ConfigDescription("InitialFallState gravity", (AcceptableValueBase)null, new object[1] { (object)new ConfigurationManagerAttributes { IsAdminOnly = true } })); HitStateDurationConfig = ((BaseUnityPlugin)this).Config.Bind<float>("5 - HitState", "HitStateDuration", 0.5f, new ConfigDescription("HitState length in seconds", (AcceptableValueBase)null, new object[1] { (object)new ConfigurationManagerAttributes { IsAdminOnly = true } })); HitStateGavityConfig = ((BaseUnityPlugin)this).Config.Bind<Vector3>("5 - HitState", "HitStateGravity", new Vector3(50f, 50f, 0f), new ConfigDescription("HitState gravity", (AcceptableValueBase)null, new object[1] { (object)new ConfigurationManagerAttributes { IsAdminOnly = true } })); RotationStateDurationConfig = ((BaseUnityPlugin)this).Config.Bind<float>("6 - RotationState", "RotationStateDuration", 300f, new ConfigDescription("RotationState length in seconds", (AcceptableValueBase)null, new object[1] { (object)new ConfigurationManagerAttributes { IsAdminOnly = true } })); CrackStateDurationConfig = ((BaseUnityPlugin)this).Config.Bind<float>("7 - CrackState", "CrackStateDuration", 150f, new ConfigDescription("CrackState length in seconds", (AcceptableValueBase)null, new object[1] { (object)new ConfigurationManagerAttributes { IsAdminOnly = true } })); CrackTimerConfig = ((BaseUnityPlugin)this).Config.Bind<float>("7 - CrackState", "CrackTimer", 12f, new ConfigDescription("create cracks all x seconds", (AcceptableValueBase)null, new object[1] { (object)new ConfigurationManagerAttributes { IsAdminOnly = true } })); PurificationStateDurationConfig = ((BaseUnityPlugin)this).Config.Bind<float>("8 - PurificationState", "PurificationStateDuration", 150f, new ConfigDescription("PurificationState length in seconds", (AcceptableValueBase)null, new object[1] { (object)new ConfigurationManagerAttributes { IsAdminOnly = true } })); EndStateDurationConfig = ((BaseUnityPlugin)this).Config.Bind<float>("9 - EndState", "EndStateDuration", 100f, new ConfigDescription("EndState length in seconds", (AcceptableValueBase)null, new object[1] { (object)new ConfigurationManagerAttributes { IsAdminOnly = true } })); SynchronizationManager.OnConfigurationSynchronized += delegate { }; } public static void Init() { //IL_004a: 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_00a4: Unknown result type (might be due to invalid IL or missing references) if (!s_init) { s_init = true; AddRigidbody2Prefabs(); PrepareEnvironments(); AddRigidbody2Dungeons(); CrackState.s_ashed = 0f; s_randomSpawns.Add(PrefabManager.Instance.GetPrefab("ragnarok_meteor"), new Vector3(0f, 20f, 0f)); s_randomSpawns.Add(PrefabManager.Instance.GetPrefab("ragnarok_meteor2"), new Vector3(0f, 20f, 0f)); s_randomSpawns.Add(PrefabManager.Instance.GetPrefab("ragnarok_lightning"), new Vector3(0f, 0f, 0f)); } } public static void PreparePrefab(GameObject prefab) { prefab.AddComponent<RigifyMe>(); } public static Bounds CalculateCombinedBounds(Transform transform) { //IL_000a: 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_0075: 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_0039: 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_0064: 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_0051: Unknown result type (might be due to invalid IL or missing references) //IL_005d: 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) Renderer[] componentsInChildren = (Renderer[])(object)((Component)transform).GetComponentsInChildren<MeshRenderer>(); Renderer[] array = componentsInChildren; Bounds result = default(Bounds); ((Bounds)(ref result))..ctor(Vector3.zero, Vector3.zero); componentsInChildren = array; foreach (Renderer val in componentsInChildren) { if (((Component)val).gameObject.activeSelf) { Bounds bounds = val.bounds; if (((Bounds)(ref result)).center == Vector3.zero && ((Bounds)(ref result)).size == Vector3.zero) { result = bounds; } else { ((Bounds)(ref result)).Encapsulate(bounds); } } } return result; } public static void AddRigidbody(GameObject prefab) { //IL_0039: 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_0041: 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_005a: Unknown result type (might be due to invalid IL or missing references) if (!((Object)(object)prefab.GetComponent<Rigidbody>() != (Object)null) && !((Object)(object)prefab.GetComponent<Location>() != (Object)null) && !((Object)(object)prefab.GetComponent<LocationProxy>() != (Object)null)) { float num = 50f; Bounds val = CalculateCombinedBounds(prefab.transform); float num2 = ((Bounds)(ref val)).size.x * ((Bounds)(ref val)).size.y * ((Bounds)(ref val)).size.z * num; if (num2 >= 0f) { num2 = 10f; } Rigidbody val2 = prefab.AddComponent<Rigidbody>(); val2.isKinematic = true; if ((Object)(object)prefab.GetComponent<DungeonGenerator>() != (Object)null) { num2 = 100000f; val2.drag = 25f; } val2.mass = num2; } } public static void AddRigidbody2Prefabs() { foreach (string prefabName in ZNetScene.instance.GetPrefabNames()) { if (!prefabName.StartsWith("vfx") && !prefabName.StartsWith("sfx") && !prefabName.Equals("Valkyrie")) { GameObject prefab = PrefabManager.Instance.GetPrefab(prefabName); if (!((Object)(object)prefab.GetComponent<Rigidbody>() != (Object)null)) { PreparePrefab(prefab); } } } GameObject prefab2 = PrefabManager.Instance.GetPrefab("YggdrasilBranch"); PreparePrefab(prefab2); s_flyaway = prefab2.AddComponent<SimulateFlyingAway>(); s_flyaway.m_minScale = 0.005f; s_flyaway.m_maxScale = 1f; s_flyaway.m_scalingSpeed = 0f; s_flyaway.m_rotationSpeed = 0f; s_sfxTreeHit = PrefabManager.Instance.GetPrefab("sfx_tree_hit"); s_sfxTreeFall = PrefabManager.Instance.CreateClonedPrefab("sfx_worldfall_tree_fall", "sfx_tree_fall"); ZSFX component = s_sfxTreeFall.GetComponent<ZSFX>(); AudioClip val = component.m_audioClips[3]; component.m_audioClips = (AudioClip[])(object)new AudioClip[1] { val }; s_vfxTreeHit = PrefabManager.Instance.GetPrefab("vfx_yggashoot_cut"); } public static void AddRigidbody2Location(ZoneLocation location) { //IL_0001: 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_004a: Unknown result type (might be due to invalid IL or missing references) //IL_004f: Unknown result type (might be due to invalid IL or missing references) //IL_0060: Unknown result type (might be due to invalid IL or missing references) _ = location.m_prefab; if (location.m_prefab.IsValid) { location.m_prefab.Load(); location.m_prefab.HoldReference(); ZNetView[] componentsInChildren = location.m_prefab.Asset.GetComponentsInChildren<ZNetView>(); foreach (ZNetView obj in componentsInChildren) { Vector3 localPosition = ((Component)obj).transform.localPosition; PreparePrefab(((Component)obj).gameObject); ((Component)obj).transform.localPosition = localPosition; } } } public static void AddRigidbody2Dungeons() { //IL_001f: Unknown result type (might be due to invalid IL or missing references) foreach (RoomData room in DungeonDB.instance.m_rooms) { room.m_prefab.Load(); room.m_prefab.HoldReference(); MeshRenderer[] componentsInChildren = room.m_prefab.Asset.GetComponentsInChildren<MeshRenderer>(); foreach (MeshRenderer val in componentsInChildren) { if (!IsDungeonPiece(((Component)val).transform)) { PreparePrefab(((Component)val).gameObject); } } } } public static bool IsDungeonPiece(Transform transform) { if (((Object)transform).name.StartsWith("props") || ((Object)transform).name.StartsWith("Props")) { return false; } if ((Object)(object)transform.parent != (Object)null) { return IsDungeonPiece(transform.parent); } return true; } public static Transform GetTopmostTransform(Transform obj) { Transform val = obj; while ((Object)(object)val.parent != (Object)null) { val = val.parent; } return val; } public static void ActivateRigidBody(GameObject prefab) { StaticPhysics[] componentsInChildren = prefab.GetComponentsInChildren<StaticPhysics>(); for (int i = 0; i < componentsInChildren.Length; i++) { Object.Destroy((Object)(object)componentsInChildren[i]); } Rigidbody component = prefab.GetComponent<Rigidbody>(); if ((Object)(object)component != (Object)null) { if ((Object)(object)prefab.GetComponent<Heightmap>() != (Object)null) { component.isKinematic = true; } else { component.isKinematic = false; } } ZNetView component2 = prefab.GetComponent<ZNetView>(); ZSyncTransform val = null; if ((Object)(object)component2 != (Object)null) { val = prefab.GetComponent<ZSyncTransform>(); if ((Object)(object)val == (Object)null) { val = prefab.AddComponent<ZSyncTransform>(); } } if ((Object)(object)val != (Object)null) { val.m_syncPosition = true; val.m_syncRotation = true; val.m_syncBodyVelocity = true; } } public static void UpdateRagnarok(long sender, int state, float time) { //IL_0039: 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_0075: Unknown result type (might be due to invalid IL or missing references) RagnarokController s_instance = RagnarokController.s_instance; if (s_instance.m_state == 0 && state == 1) { s_instance.m_fallStateMachine = new FallStateMachine(); NoCutState noCutState = new NoCutState(NoCutStateDurationConfig.Value); noCutState.AddNextState(new CutState(CutStateGravityConfig.Value, CutStateDurationConfig.Value)).AddNextState(new InitialFallState(InitialFallStateGravityConfig.Value, InitialFallStateDurationConfig.Value)).AddNextState(new HitState(HitStateGavityConfig.Value, HitStateDurationConfig.Value)) .AddNextState(new RotationState(RotationStateDurationConfig.Value)) .AddNextState(new CrackState(CrackStateDurationConfig.Value)) .AddNextState(new PurificationState(PurificationStateDurationConfig.Value)) .AddNextState(new EndState(EndStateDurationConfig.Value)); s_instance.m_fallStateMachine.ChangeState(noCutState); } s_instance.m_state = state; float num = time - s_instance.m_elapsedTime; if (num > 0f) { s_instance.m_elapsedTime += Mathf.Min(num, Time.deltaTime * 5f); MonoBehaviour.print((object)$"Compensating elapsed time by {Mathf.Min(num, Time.deltaTime * 5f)} (behind by {num})"); } } public static void PrepareEnvironments() { //IL_0136: Unknown result type (might be due to invalid IL or missing references) //IL_0159: 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_017c: Unknown result type (might be due to invalid IL or missing references) //IL_02ce: Unknown result type (might be due to invalid IL or missing references) s_miomeSetupMeadows = EnvMan.instance.GetBiomeEnvSetup((Biome)1); foreach (EnvEntry environment in s_miomeSetupMeadows.m_environments) { if (environment.m_env.m_name.Equals("Clear")) { s_envClear = GetEnvSetupClone(environment.m_env, "worldfall_cut"); s_envClear.m_musicDay = "boss_fader"; s_envClear.m_musicEvening = "boss_fader"; s_envClear.m_musicMorning = "boss_fader"; s_envClear.m_musicNight = "boss_fader"; s_envClear.m_name = "worldfall_cut"; } } foreach (EnvEntry environment2 in EnvMan.instance.GetBiomeEnvSetup((Biome)32).m_environments) { if (environment2.m_env.m_name.Equals("Ashlands_ashrain")) { s_ambientFallCalm = environment2.m_env.m_ambientLoop; s_psysDebris = environment2.m_env.m_psystems[0]; s_psysDebris.transform.localRotation = Quaternion.Euler(180f, 0f, 0f); s_psysDebris.transform.localPosition = new Vector3(0f, 9f, 0f); ParticleSystem[] componentsInChildren = s_psysDebris.GetComponentsInChildren<ParticleSystem>(); for (int i = 0; i < componentsInChildren.Length; i++) { MainModule main = componentsInChildren[i].main; ((MainModule)(ref main)).startSpeedMultiplier = 2f; } s_envAsh = GetEnvSetupClone(environment2.m_env, "worldfall_fall"); s_envAsh.m_name = "worldfall_fall"; s_envAsh.m_musicDay = "boss_fader"; s_envAsh.m_musicEvening = "boss_fader"; s_envAsh.m_musicMorning = "boss_fader"; s_envAsh.m_musicNight = "boss_fader"; } else if (environment2.m_env.m_name.Equals("Ashlands_storm")) { s_ambientFallIntsense = environment2.m_env.m_ambientLoop; s_envStorm = GetEnvSetupClone(environment2.m_env, "worldfall_storm"); s_envStorm.m_name = "worldfall_storm"; s_envStorm.m_musicDay = "boss_fader"; s_envStorm.m_musicEvening = "boss_fader"; s_envStorm.m_musicMorning = "boss_fader"; s_envStorm.m_musicNight = "boss_fader"; s_envStorm.m_lightIntensityDay = 0.5f; s_envStorm.m_lightIntensityNight = 0.5f; GameObject[] psystems = s_envStorm.m_psystems; for (int i = 0; i < psystems.Length; i++) { psystems[i].transform.localRotation = Quaternion.Euler(180f, 0f, 0f); } } } EnvMan.instance.AppendEnvironment(s_envClear); EnvMan.instance.AppendEnvironment(s_envAsh); EnvMan.instance.AppendEnvironment(s_envStorm); } public static EnvSetup GetEnvSetupClone(EnvSetup envSetup, string name) { //IL_0000: Unknown result type (might be due to invalid IL or missing references) //IL_0005: 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_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_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_0024: 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_0032: 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_003c: 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_0048: Unknown result type (might be due to invalid IL or missing references) //IL_004a: Unknown result type (might be due to invalid IL or missing references) //IL_004f: 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_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_0060: Unknown result type (might be due to invalid IL or missing references) //IL_0062: Unknown result type (might be due to invalid IL or missing references) //IL_0067: Unknown result type (might be due to invalid IL or missing references) //IL_006c: Unknown result type (might be due to invalid IL or missing references) //IL_006e: 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_007a: Unknown result type (might be due to invalid IL or missing references) //IL_007f: Unknown result type (might be due to invalid IL or missing references) //IL_0084: Unknown result type (might be due to invalid IL or missing references) //IL_0086: Unknown result type (might be due to invalid IL or missing references) //IL_008b: 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_009c: Unknown result type (might be due to invalid IL or missing references) //IL_00a9: Expected O, but got Unknown return new EnvSetup { m_name = name, m_ambColorDay = envSetup.m_ambColorDay, m_ambColorNight = envSetup.m_ambColorNight, m_envObject = envSetup.m_envObject, m_fogColorDay = envSetup.m_fogColorDay, m_fogColorEvening = envSetup.m_fogColorEvening, m_fogColorMorning = envSetup.m_fogColorMorning, m_fogColorNight = envSetup.m_fogColorNight, m_fogColorSunDay = envSetup.m_fogColorSunDay, m_fogColorSunEvening = envSetup.m_fogColorSunEvening, m_fogColorSunMorning = envSetup.m_fogColorSunMorning, m_fogColorSunNight = envSetup.m_fogColorSunNight, m_fogDensityDay = envSetup.m_fogDensityDay, m_psystems = envSetup.m_psystems }; } private void AddClonedItems() { //IL_0000: Unknown result type (might be due to invalid IL or missing references) //IL_0006: Expected O, but got Unknown //IL_00fd: Unknown result type (might be due to invalid IL or missing references) //IL_0103: Expected O, but got Unknown //IL_014d: 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_00bf: Expected O, but got Unknown GameObject val = new GameObject(); SphereCollider obj = val.AddComponent<SphereCollider>(); ((Collider)obj).isTrigger = false; obj.radius = DesintegratorRadiusConfig.Value; ((Object)val).name = "desintegratorBall"; SphereCollider obj2 = val.AddComponent<SphereCollider>(); ((Collider)obj2).isTrigger = true; obj2.radius = DesintegratorRadiusConfig.Value; val.AddComponent<Rigidbody>().isKinematic = false; val.AddComponent<TriggerEventCaller>(); val.AddComponent<TimedRespawn>().m_prefab = val; PrefabManager.Instance.AddPrefab(val); GameObject val2 = PrefabManager.Instance.CreateClonedPrefab("desintegratorBallBumpy", val); TimedRespawn component = val2.GetComponent<TimedRespawn>(); component.m_prefab = val2; component.m_hightoffset = 5f; SphereCollider[] components = val2.GetComponents<SphereCollider>(); foreach (SphereCollider val3 in components) { if (!((Collider)val3).isTrigger) { PhysicMaterial val4 = new PhysicMaterial(); val4.bounciness = 0.9f; val4.frictionCombine = (PhysicMaterialCombine)2; val4.bounceCombine = (PhysicMaterialCombine)3; ((Collider)val3).material = val4; } } PrefabManager.Instance.AddPrefab(val2); GameObject val5 = new GameObject(); ((Object)val5).name = "RagnarokCrack"; PrefabManager.Instance.AddPrefab(val5); val5.AddComponent<ZNetView>().m_persistent = true; val5.AddComponent<RagnarokCrack>(); GameObject val6 = PrefabManager.Instance.CreateClonedPrefab("ragnarok_dig", "digg_UnstableLavaRock"); val6.GetComponent<TerrainOp>().m_settings.m_paintType = (PaintType)1; PrefabManager.Instance.AddPrefab(val6); GameObject val7 = PrefabManager.Instance.CreateClonedPrefab("ragnarok_meteor", "projectile_ashlandmeteor"); val7.GetComponent<Projectile>().m_spawnOnHit = val6; PrefabManager.Instance.AddPrefab(val7); val7 = PrefabManager.Instance.CreateClonedPrefab("ragnarok_meteor2", "projectile_ashlandmeteor2"); val7.GetComponent<Projectile>().m_spawnOnHit = val6; PrefabManager.Instance.AddPrefab(val7); val7 = PrefabManager.Instance.CreateClonedPrefab("ragnarok_lightning", "fire_lightning"); ((Component)GetChildrenByName(val7.transform, "AOE_ROD").First()).gameObject.GetComponent<Aoe>().m_spawnOnHitTerrain = val6; PrefabManager.Instance.AddPrefab(val7); PrefabManager.OnVanillaPrefabsAvailable -= AddClonedItems; } private void OnDestroy() { harmony.UnpatchSelf(); } private List<Transform> GetChildrenByName(Transform parent, string name) { //IL_0015: Unknown result type (might be due to invalid IL or missing references) //IL_001b: Expected O, but got Unknown List<Transform> list = new List<Transform>(); foreach (Transform item in parent) { Transform val = item; if (((Object)val).name == name) { list.Add(val); } list.AddRange(GetChildrenByName(val, name)); } return list; } public static void UpdateBiomeColorAndPaint(Heightmap hmap, Color color, int x, int y, int width, Color[] paint) { //IL_0049: Unknown result type (might be due to invalid IL or missing references) //IL_004a: 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_0065: Unknown result type (might be due to invalid IL or missing references) //IL_006a: Unknown result type (might be due to invalid IL or missing references) float x2 = DUtils.SmoothStep(0f, 1f, (float)x / (float)width); float y2 = DUtils.SmoothStep(0f, 1f, (float)y / (float)width); HeightmapKey key = new HeightmapKey(hmap, x2, y2); if (!s_biomeColors.ContainsKey(key)) { s_biomeColors[key] = Color32.op_Implicit(Color32.Lerp(Color32.op_Implicit(color), new Color32(byte.MaxValue, (byte)0, (byte)0, byte.MaxValue), 0.75f)); int num = y * (width + 1) + x; if (num >= 0 && num < paint.Length) { paint[num].a = 0.75f; } } } } public class TerrainAnimation : MonoBehaviour { public float rotationSpeed = 2f; private Vector3 rotationAxis; private void Awake() { //IL_0006: 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_008a: 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_0092: Unknown result type (might be due to invalid IL or missing references) //IL_0097: Unknown result type (might be due to invalid IL or missing references) Random random = new Random((int)(((Component)this).transform.position.x * 1000f + ((Component)this).transform.position.z * 1000f)); float num = (float)(random.NextDouble() * 2.0 - 1.0); float num2 = (float)(random.NextDouble() * 2.0 - 1.0); float num3 = (float)(random.NextDouble() * 2.0 - 1.0); Vector3 val = new Vector3(num, num2, num3); rotationAxis = ((Vector3)(ref val)).normalized; } private void Update() { //IL_0014: 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) float num = rotationSpeed * Time.deltaTime; ((Component)this).transform.Rotate(rotationAxis * num, (Space)0); } } public class TimedRespawn : MonoBehaviour { public float m_time = 15f; public float m_hightoffset; public GameObject m_prefab; public void Awake() { m_time = 15f; } public void Update() { //IL_002c: 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_00ae: Unknown result type (might be due to invalid IL or missing references) //IL_00af: Unknown result type (might be due to invalid IL or missing references) m_time -= Time.deltaTime; if (m_time < 0f) { Vector3 position = ((Component)Player.m_localPlayer).transform.position; float num = 5f; float num2 = Random.Range(0f, 360f) * ((float)Math.PI / 180f); float num3 = Random.Range(2.5f, num); position.x += Mathf.Cos(num2) * num3; position.z += Mathf.Sin(num2) * num3; position.y += Random.Range(0f + m_hightoffset, 5f + m_hightoffset); Object.Instantiate<GameObject>(m_prefab, position, Quaternion.identity); Object.Destroy((Object)(object)((Component)this).gameObject); } } } public class TriggerEventCaller : MonoBehaviour { public float m_triggerRadius; public float m_last_rigidify; private SphereCollider m_triggerCollider; public float m_awakeTime; public bool m_active; private void Awake() { m_awakeTime = Time.realtimeSinceStartup; m_triggerCollider = ((Component)this).gameObject.AddComponent<SphereCollider>(); ((Collider)m_triggerCollider).isTrigger = true; m_triggerCollider.radius = m_triggerRadius; } private void Update() { if (!m_active && Time.realtimeSinceStartup - m_awakeTime > 1f) { m_triggerCollider.radius = 1f; m_active = true; } } private void OnTriggerEnter(Collider other) { Transform topmostTransform = Ragnarok.GetTopmostTransform(((Component)other).transform); RigifyMe component = ((Component)topmostTransform).GetComponent<RigifyMe>(); if ((Object)(object)component != (Object)null && (Object)(object)((Component)topmostTransform).GetComponent<TerrainComp>() == (Object)null) { component.RigifyNetwork(); } } } } namespace Ragnarok.States { public abstract class AbstractFallState { protected FallStateMachine m_stateMachine; public AbstractFallState m_nextState; protected List<GameObject> m_sounds = new List<GameObject>(); private float m_nextSound; protected float m_soundIntervalMin = 0.4f; protected float m_soundIntervalMax = 5f; private float m_randomSpawnTimer = Ragnarok.RandomSpawnTimerConfig.Value; public float m_duration; public float m_starttime; public AbstractFallState(float duration) { m_nextSound = Time.realtimeSinceStartup + Random.Range(m_soundIntervalMin, m_soundIntervalMax); m_duration = duration; } public float GetRemainingTime() { float num = m_starttime + m_duration - m_stateMachine.m_elapsedTime; if (num < 0f) { return 60f; } return num; } public AbstractFallState AddNextState(AbstractFallState nextState) { m_nextState = nextState; return nextState; } public void SetStateMachine(FallStateMachine stateMachine) { m_stateMachine = stateMachine; } public virtual void Enter() { m_starttime = m_stateMachine.m_elapsedTime; MonoBehaviour.print((object)$"enter {this} with starttime {m_starttime}"); } public virtual void Update() { //IL_0087: 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_0096: Unknown result type (might be due to invalid IL or missing references) if (!((Object)(object)Player.m_localPlayer == (Object)null)) { m_randomSpawnTimer -= Time.deltaTime; if (m_randomSpawnTimer < 0f) { m_randomSpawnTimer = Ragnarok.RandomSpawnTimerConfig.Value; SpawnRandom(); } if (Time.realtimeSinceStartup >= m_nextSound && m_sounds.Count > 0) { Object.Instantiate<GameObject>(m_sounds[Random.Range(0, m_sounds.Count - 1)], GetRandomPointAround(((Component)Player.m_localPlayer).transform.position, 7f), Quaternion.identity); m_nextSound = Time.realtimeSinceStartup + Random.Range(m_soundIntervalMin, m_soundIntervalMax); } } } public virtual void SpawnRandom() { //IL_003f: 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_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) int num = Random.Range(0, Ragnarok.s_randomSpawns.Keys.Count); foreach (GameObject key in Ragnarok.s_randomSpawns.Keys) { if (num == 0) { Object.Instantiate<GameObject>(key, GetRandomPointAround(((Component)Player.m_localPlayer).transform.position, 20f) + Ragnarok.s_randomSpawns[key], Quaternion.identity); break; } num--; } } public abstract void Exit(); public virtual bool IsGod() { return true; } public virtual bool CheckUnderword() { return true; } public void AddHitSounds() { foreach (Character s_character in Character.s_characters) { EffectData[] effectPrefabs = s_character.m_hitEffects.m_effectPrefabs; foreach (EffectData val in effectPrefabs) { if (((Object)val.m_prefab).name.ToUpper().StartsWith("SFX")) { m_sounds.Add(val.m_prefab); } } } } public void AddDeathSounds() { foreach (Character s_character in Character.s_characters) { EffectData[] effectPrefabs = s_character.m_deathEffects.m_effectPrefabs; foreach (EffectData val in effectPrefabs) { if (((Object)val.m_prefab).name.ToUpper().StartsWith("SFX")) { m_sounds.Add(val.m_prefab); } } } } private Vector3 GetRandomPointAround(Vector3 center, float radius) { //IL_0022: 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) //IL_0030: 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) float num = Random.Range(0f, (float)Math.PI * 2f); float num2 = Mathf.Cos(num) * radius; float num3 = Mathf.Sin(num) * radius; return new Vector3(center.x + num2, center.y, center.z + num3); } public void RemoveDrops() { ItemDrop[] array = Object.FindObjectsOfType<ItemDrop>(); for (int i = 0; i < array.Length; i++) { ZNetView component = ((Component)array[i]).GetComponent<ZNetView>(); if (Object.op_Implicit((Object)(object)component) && component.IsValid() && component.IsOwner()) { component.Destroy(); } } } public virtual void PrepareQueuedEnvironment(EnvSetup env) { int num = env.m_psystems.Length; GameObject[] array = (GameObject[])(object)new GameObject[num + 1]; for (int i = 0; i < num; i++) { array[i] = env.m_psystems[i]; } array[num] = Ragnarok.s_psysDebris; env.m_psystems = array; } } public class NoCutState : FallState { public NoCutState(float duration) : base(duration) { } public override void Enter() { base.Enter(); } public override void SpawnRandom() { } public override bool IsGod() { return false; } } public class PurificationState : CrackState { private float m_collidertimer; private float m_waittime; private List<WearNTear> m_wnts; public PurificationState(float duration) : base(duration) { } public override void Enter() { base.Enter(); Reset(); } public void Reset() { m_wnts = WearNTear.s_allInstances.ToList(); m_wnts.Sort((WearNTear a, WearNTear b) => ((Component)b).transform.position.y.CompareTo(((Component)a).transform.position.y)); m_waittime = GetRemainingTime() / (float)m_wnts.Count; } public override void Update() { base.Update(); m_collidertimer -= Time.deltaTime; if (!(m_collidertimer <= 0f)) { return; } m_collidertimer = m_waittime; if (m_wnts.Count < 0) { Reset(); } if (m_wnts.Count > 0) { WearNTear val = m_wnts.First(); m_wnts.Remove(val); if ((Object)(object)val != (Object)null && val.m_nview.IsValid() && val.m_nview.IsOwner()) { ((Component)val).GetComponent<RigifyMe>()?.RigifyNetwork(); } } } } public class CrackState : RotationState { public float m_cracktimer; public static float s_ashed; public CrackState(float duration) : base(duration) { } public override void Enter() { //IL_0024: Unknown result type (might be due to invalid IL or missing references) base.Enter(); EnvMan.instance.m_debugEnv = "worldfall_storm"; GameCamera.instance.AddShake(((Component)Player.m_localPlayer).transform.position, 100f, 2f, false); } public override void Update() { //IL_0084: Unknown result type (might be due to invalid IL or missing references) //IL_0089: Unknown result type (might be due to invalid IL or missing references) //IL_00a3: Unknown result type (might be due to invalid IL or missing references) base.Update(); m_cracktimer -= Time.deltaTime; if (m_cracktimer <= 0f) { m_cracktimer = Ragnarok.CrackTimerConfig.Value; s_ashed += 0.05f; if (s_ashed > 0.9f) { s_ashed = 0.9f; } if ((Object)(object)Player.m_localPlayer != (Object)null) { Object.Instantiate<GameObject>(PrefabManager.Instance.GetPrefab("RagnarokCrack"), ((Component)Player.m_localPlayer).transform.position, Quaternion.identity); GameCamera.instance.AddShake(((Component)Player.m_localPlayer).transform.position, 100f, 2f, false); } } } } public class CutState : FallState { public CutState(Vector3 gravity, float duration) : base(gravity, duration) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) m_soundIntervalMin = 0.1f; m_soundIntervalMax = 0.1f; } public override void Enter() { //IL_0052: 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_006d: Unknown result type (might be due to invalid IL or missing references) //IL_006e: 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_008f: Unknown result type (might be due to invalid IL or missing references) //IL_00af: Unknown result type (might be due to invalid IL or missing references) //IL_00b0: Unknown result type (might be due to invalid IL or missing references) //IL_00d0: Unknown result type (might be due to invalid IL or missing references) //IL_00d1: Unknown result type (might be due to invalid IL or missing references) //IL_00f1: Unknown result type (might be due to invalid IL or missing references) //IL_00f2: Unknown result type (might be due to invalid IL or missing references) base.Enter(); foreach (GameObject roof in RagnarokController.s_instance.m_roofs) { roof.GetComponent<RigifyMe>()?.DoIt(); } Vector3 position = ((Component)Player.m_localPlayer).transform.position; position.y += 5f; Object.Instantiate<GameObject>(Ragnarok.s_sfxTreeHit, position, Quaternion.identity); position.x += 30f; Object.Instantiate<GameObject>(Ragnarok.s_vfxTreeHit, position, Quaternion.identity); position.x -= 60f; Object.Instantiate<GameObject>(Ragnarok.s_vfxTreeHit, position, Quaternion.identity); position.z += 30f; Object.Instantiate<GameObject>(Ragnarok.s_vfxTreeHit, position, Quaternion.identity); position.z -= 60f; Object.Instantiate<GameObject>(Ragnarok.s_vfxTreeHit, position, Quaternion.identity); EnvMan.instance.QueueEnvironment(EnvMan.instance.m_currentEnv); AddHitSounds(); } public override void Update() { base.Update(); } } public class EndState : FallState { private float m_waterHeight; public EndState(float duration) : base(duration) { m_soundIntervalMin = 0.1f; m_soundIntervalMax = 2f; } public override void Enter() { //IL_002c: Unknown result type (might be due to invalid IL or missing references) base.Enter(); EnvMan.instance.m_debugTimeOfDay = true; EnvMan.instance.m_debugTime = 0.5f; m_waterHeight = GetWaterHeight(((Component)Player.m_localPlayer).transform.position); RagnarokController.s_instance.m_noGrass = true; ClutterSystem.instance.ClearAll(); m_sounds.Clear(); m_sounds.Add(PrefabManager.Instance.GetPrefab("sfx_eikthyr_death")); m_sounds.Add(PrefabManager.Instance.GetPrefab("sfx_gdking_death")); m_sounds.Add(PrefabManager.Instance.GetPrefab("sfx_Bonemass_death")); m_sounds.Add(PrefabManager.Instance.GetPrefab("sfx_dragon_death")); m_sounds.Add(PrefabManager.Instance.GetPrefab("sfx_fader_taunt")); m_sounds.Add(PrefabManager.Instance.GetPrefab("sfx_seeker_brute_taunt")); m_sounds.Add(PrefabManager.Instance.GetPrefab("sfx_goblinking_taunt")); RagnarokController.s_instance.m_noGrass = true; ClutterSystem.instance.ClearAll(); } public override bool IsGod() { return true; } public override bool CheckUnderword() { return false; } public override void Update() { //IL_0031: 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_0109: Unknown result type (might be due to invalid IL or missing references) base.Update(); EnvSetup currentEnv = EnvMan.instance.m_currentEnv; currentEnv.m_lightIntensityDay -= 0.001f; List<Heightmap> list = new List<Heightmap>(); Heightmap.FindHeightmap(((Component)Player.m_localPlayer).transform.position, 1f, list); foreach (Heightmap item in list) { ((Component)item.GetAndCreateTerrainCompiler()).GetComponent<RigifyMe>()?.RigifyNetwork(); } foreach (MonoBehaviour item2 in new List<MonoBehaviour>((IEnumerable<MonoBehaviour>)WaterVolume.Instances)) { if ((Object)(object)item2 != (Object)null) { Object.Destroy((Object)(object)((Component)item2).gameObject); } } WaterVolume.Instances.Clear(); if (((Component)Player.m_localPlayer).transform.position.y <= m_waterHeight - 200f || GetRemainingTime() <= 0f || ((Component)Player.m_localPlayer).transform.position.y > 3000f) { RagnarokController.s_instance.m_isDead = true; ((Character)Player.m_localPlayer).SetHealth(0f); } } public float GetWaterHeight(Vector3 position) { //IL_0014: Unknown result type (might be due to invalid IL or missing references) //IL_0040: Unknown result type (might be due to invalid IL or missing references) int mask = LayerMask.GetMask(new string[1] { "WaterVolume" }); Collider[] array = Physics.OverlapSphere(position, 100f, mask); float result = 0f; Collider[] array2 = array; for (int i = 0; i < array2.Length; i++) { WaterVolume component = ((Component)array2[i]).GetComponent<WaterVolume>(); if ((Object)(object)component != (Object)null) { result = component.GetWaterSurface(position, 1f); break; } } return result; } } public class FallState : AbstractFallState { protected Vector3 m_gravity = new Vector3(0f, -20f, 0f); public FallState(float duration) : base(duration) { }//IL_0010: 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) public FallState(Vector3 gravity, float duration) : base(duration) { //IL_0010: 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_0029: 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) m_duration = duration; m_gravity = gravity; } public override void Enter() { //IL_0007: Unknown result type (might be due to invalid IL or missing references) base.Enter(); Physics.gravity = m_gravity; if ((Object)(object)Player.m_localPlayer != (Object)null) { Transform obj = ((Component)Player.m_localPlayer).transform.Find("rigid"); if (obj != null) { ((Component)obj).gameObject.SetActive(true); } } if ((Object)(object)Ragnarok.s_flyaway != (Object)null) { Ragnarok.s_flyaway.m_scalingSpeed = 0.33f; Ragnarok.s_flyaway.m_rotationSpeed = 100f; } } public override void Update() { base.Update(); } public override void Exit() { } } public class FallStateMachine { public AbstractFallState m_currentState; public float m_elapsedTime; public void ChangeState(AbstractFallState newState) { if (m_currentState != null) { m_currentState.Exit(); } m_currentState = newState; if (m_currentState != null) { m_currentState.SetStateMachine(this); m_currentState.Enter(); } } public void Update() { if (m_currentState != null) { m_elapsedTime += Time.deltaTime; if (m_currentState.m_nextState != null && m_elapsedTime > m_currentState.m_starttime + m_currentState.m_duration) { ChangeState(m_currentState.m_nextState); } m_currentState.Update(); } } } public class HitState : FallState { public HitState(Vector3 gravity, float duration) : base(gravity, duration) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) m_soundIntervalMin = 0.1f; m_soundIntervalMax = 0.2f; } public override void Enter() { base.Enter(); AddDeathSounds(); } public override void Update() { base.Update(); } public override void Exit() { base.Exit(); } } public class InitialFallState : FallState { public InitialFallState(Vector3 gravity, float duration) : base(gravity, duration) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) m_soundIntervalMin = 0.1f; m_soundIntervalMax = 2f; } public override void Enter() { //IL_0010: 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_008c: Unknown result type (might be due to invalid IL or missing references) //IL_008d: 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_00a8: Unknown result type (might be due to invalid IL or missing references) base.Enter(); Vector3 position = ((Component)Player.m_localPlayer).transform.position; position.y += 5f; AddHitSounds(); foreach (Container explosiveContainer in RagnarokController.s_instance.GetExplosiveContainers()) { ((Component)explosiveContainer).gameObject.AddComponent<IgniteDestroy>().m_time = Random.Range(0f, m_duration); } Object.Instantiate<GameObject>(PrefabManager.Instance.GetPrefab("desintegratorBall"), position, Quaternion.identity); Object.Instantiate<GameObject>(PrefabManager.Instance.GetPrefab("desintegratorBallBumpy"), position, Quaternion.identity); } public override void Update() { base.Update(); } } public class RotationState : AbstractFallState { public float m_tiltIntensity = 10f; public float m_tiltIntensityY = 1f; public float m_tiltFrequency = 0.5f; public float m_tiltFrequencyY = 0.1f; public float m_shakeIntensity = 0.2f; public float m_shakeFrequency = 1f; private float m_clear; public RotationState(float duration) : base(duration) { m_duration = duration; m_soundIntervalMin = 0.1f; m_soundIntervalMax = 2f; } public override void Enter() { base.Enter(); AddDeathSounds(); RemoveDrops(); } public override void Update() { //IL_0107: 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) //IL_0134: Unknown result type (might be due to invalid IL or missing references) //IL_0139: Unknown result type (might be due to invalid IL or missing references) //IL_013e: 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_014f: 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_0156: Unknown result type (might be due to invalid IL or missing references) //IL_0160: Unknown result type (might be due to invalid IL or missing references) //IL_0165: Unknown result type (might be due to invalid IL or missing references) //IL_017a: 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_018e: Unknown result type (might be due to invalid IL or missing references) //IL_019f: Unknown result type (might be due to invalid IL or missing references) base.Update(); m_clear += Time.deltaTime; if (m_clear > 10f) { m_clear = 0f; RemoveDrops(); } Vector3 val = default(Vector3); ((Vector3)(ref val))..ctor(0f, Ragnarok.FallSpeedConfig.Value, 0f); float num = Mathf.Sin(m_stateMachine.m_elapsedTime * m_tiltFrequency) * m_tiltIntensity; float num2 = Mathf.Cos(m_stateMachine.m_elapsedTime * m_tiltFrequency) * m_tiltIntensity; float num3 = Mathf.Sin(m_stateMachine.m_elapsedTime * m_tiltFrequencyY) * m_tiltIntensityY; float num4 = (Mathf.PerlinNoise(Time.time * m_shakeFrequency, 0f) * 2f - 1f) * m_shakeIntensity; float num5 = (Mathf.PerlinNoise(0f, Time.time * m_shakeFrequency) * 2f - 1f) * m_shakeIntensity; Vector3 gravity = default(Vector3); ((Vector3)(ref gravity))..ctor(num, val.y + num3 + num5, num2 + num4); Physics.gravity = gravity; if ((Object)(object)Player.m_localPlayer != (Object)null) { Vector3 val2 = -((Vector3)(ref gravity)).normalized; RagnarokController.s_rotationToTargetTop = Quaternion.Lerp(Quaternion.identity, Quaternion.FromToRotation(((Component)Player.m_localPlayer).transform.up, val2), 0.5f); ((Component)Player.m_localPlayer).transform.GetChild(0).rotation = RagnarokController.s_rotationToTargetTop * ((Component)Player.m_localPlayer).transform.rotation; EnvMan.instance.m_debugTime = ((Vector3)(ref gravity)).normalized.x * 0.3f + 0.5f; } } public override void Exit() { //IL_0000: Unknown result type (might be due to invalid IL or missing references) //IL_0005: Unknown result type (might be due to invalid IL or missing references) RagnarokController.s_rotationToTargetTop = Quaternion.identity; RemoveDrops(); } } } namespace Ragnarok.Patches { [HarmonyPatch(typeof(Character), "UnderWorldCheck")] internal class Character_UnderWorldCheck_patch { private static bool Prefix(ref Character __instance) { if (RagnarokController.s_instance.m_fallStateMachine == null || RagnarokController.s_instance.m_fallStateMachine.m_currentState == null) { return true; } return RagnarokController.s_instance.m_fallStateMachine.m_currentState.CheckUnderword(); } } [HarmonyPatch(typeof(ClutterSystem), "UpdateGrass")] internal class ClutterSystem_UpdateGrass_patch { private static bool Prefix() { if ((Object)(object)RagnarokController.s_instance != (Object)null && RagnarokController.s_instance.m_noGrass) { return false; } return true; } } [HarmonyPatch(typeof(Container), "Awake")] internal class Container_Awake_patch { private static void Postfix(ref Container __instance) { RagnarokController.s_instance.m_containers[((Component)__instance).gameObject] = __instance; } } [HarmonyPatch(typeof(DungeonDB), "Start")] internal class DungeonDB_Start_patch { private static void Postfix() { Ragnarok.Init(); } } [HarmonyPatch(typeof(EnvMan), "QueueEnvironment", new Type[] { typeof(EnvSetup) })] internal class EnvMan_QueueEnvironment_patch { private static void Prefix(ref EnvSetup env) { RagnarokController.s_instance?.PrepareQueuedEnvironment(env); } } [HarmonyPatch(typeof(Heightmap), "GetBiomeColor", new Type[] { typeof(float), typeof(float) })] internal class Heightmap_GetBiomeColor_patch { private static bool Prefix(float ix, float iy, ref Color __result, ref Heightmap __instance) { //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) HeightmapKey key = new HeightmapKey(__instance, ix, iy); if (Ragnarok.s_biomeColors.ContainsKey(key)) { __result = Ragnarok.s_biomeColors[key]; return false; } return true; } private static void Postfix(float ix, float iy, ref Color __result, ref Heightmap __instance) { //IL_0002: 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_0022: 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) __result = Color.Lerp(__result, Color32.op_Implicit(new Color32(byte.MaxValue, (byte)0, (byte)0, byte.MaxValue)), CrackState.s_ashed); } } [HarmonyPatch(typeof(ImpactEffect), "OnCollisionEnter")] internal class ImpactEffect_OnCollisionEntern_patch { private static bool Prefix(ref ImpactEffect __instance) { if ((Object)(object)__instance.m_nview == (Object)null) { return false; } return true; } } [HarmonyPatch(typeof(ZoneSystem), "SpawnLocation")] internal static class ZoneSystem_SpawnLocation_Patch { [HarmonyTranspiler] private static IEnumerable<CodeInstruction> OnCreateLocationTranspiler(IEnumerable<CodeInstruction> instructions) { //IL_0002: 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_0037: Expected O, but got Unknown //IL_005a: Unknown result type (might be due to invalid IL or missing references) //IL_0060: Expected O, but got Unknown return new CodeMatcher(instructions, (ILGenerator)null).MatchForward(true, (CodeMatch[])(object)new CodeMatch[1] { new CodeMatch((OpCode?)OpCodes.Call, (object)AccessTools.Method(typeof(SoftReference<GameObject>), "Load", (Type[])null, (Type[])null), (string)null) }).ThrowIfInvalid("Could not patch ZoneSystem.SpawnLocation: SoftReference.Load not found! ").Advance(2) .InsertAndAdvance((CodeInstruction[])(object)new CodeInstruction[2] { new CodeInstruction(OpCodes.Ldarg_1, (object)null), Transpilers.EmitDelegate<Action<ZoneLocation>>((Action<ZoneLocation>)OnInstantiateDelegate) }) .InstructionEnumeration(); } private static void OnInstantiateDelegate(ZoneLocation location) { Ragnarok.AddRigidbody2Location(location); } } [HarmonyPatch(typeof(ZSyncTransform), "Awake")] internal class ZSyncTransorm_Awake_patch { private static void Postfix(ref ZSyncTransform __instance) { TerrainComp component = ((Component)__instance).GetComponent<TerrainComp>(); if ((Object)(object)component != (Object)null) { __instance.m_body = ((Component)component.m_hmap).GetComponent<Rigidbody>(); } } } [HarmonyPatch(typeof(Player), "InGodMode")] internal class Player_InGodMode_patch { private static bool Prefix(ref Player __instance, ref bool __result) { if ((Object)(object)__instance != (Object)(object)Player.m_localPlayer) { return true; } if ((RagnarokController.s_instance?.IsGod()).Value) { __result = true; return false; } return true; } } [HarmonyPatch(typeof(WearNTear), "Awake")] internal class WearNTear_Awake_patch { public static void Postfix(ref WearNTear __instance) { Collider[] componentsInChildren = ((Component)__instance).GetComponentsInChildren<Collider>(); for (int i = 0; i < componentsInChildren.Length; i++) { _ = componentsInChildren[i]; if (((Object)((Component)Ragnarok.GetTopmostTransform(((Component)__instance).transform)).gameObject).name.ToLower().Contains("roof")) { RagnarokController.s_instance.m_roofs.Add(((Component)__instance).gameObject); } } } } [HarmonyPatch(typeof(ZNetView), "OnDestroy")] public static class ZNetView_OnDestroy_Patch { private static void Prefix(ZNetView __instance) { RagnarokController.s_instance?.DestroyInstance(((Component)__instance).gameObject); } } [HarmonyPatch(typeof(GameCamera), "UpdateCamera")] internal class GameCamera_UpdateCamera_patch { private static void Postfix(ref GameCamera __instance) { //IL_0007: 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) ((Component)__instance).transform.rotation = RagnarokController.s_rotationToTargetTop * ((Component)__instance).transform.rotation; } } [HarmonyPatch(typeof(Game), "Start")] public static class Game_Start_Patch { private static void Prefix() { ZRoutedRpc.instance.Register<int, float>("UpdateRagnarok", (Action<long, int, float>)Ragnarok.UpdateRagnarok); } } [HarmonyPatch(typeof(Game), "RequestRespawn")] internal class Game_RequestRespawn_patch { private static bool Prefix() { if (Object.op_Implicit((Object)(object)RagnarokController.s_instance) && RagnarokController.s_instance.m_isDead) { return false; } return true; } } [HarmonyPatch(typeof(ZNetScene), "Awake")] public static class ZNetScene_Awake_AddWearNTearFireController { private static void Postfix(ZNetScene __instance) { ((Behaviour)((Component)((Component)__instance).transform.parent).gameObject.AddComponent<RagnarokController>()).enabled = true; } } } namespace Ragnarok.Mono { public class SimulateFlyingAway : MonoBehaviour { public float m_scalingSpeed = 0.01f; public float m_maxScale = 1f; public float m_minScale = 0.01f; public float m_rotationSpeed = 10f; private void Update() { //IL_0014: Unknown result type (might be due to invalid IL or missing references) //IL_0052: Unknown result type (might be due to invalid IL or missing references) //IL_0068: Unknown result type (might be due to invalid IL or missing references) //IL_0081: Unknown result type (might be due to invalid IL or missing references) //IL_008b: Unknown result type (might be due to invalid IL or missing references) //IL_009b: Unknown result type (might be due to invalid IL or missing references) if (!((Object)(object)Player.m_localPlayer == (Object)null)) { float num = Mathf.Lerp(((Component)this).transform.localScale.x, m_minScale, 1f - Mathf.Exp((0f - m_scalingSpeed) * Time.deltaTime)); Vector3 localScale = default(Vector3); ((Vector3)(ref localScale))..ctor(num, num, num); ((Component)this).transform.localScale = localScale; ((Component)this).transform.position = new Vector3(((Component)Player.m_localPlayer).transform.position.x, 2000f, ((Component)Player.m_localPlayer).transform.position.z); ((Component)this).transform.Rotate(Vector3.up, m_rotationSpeed * Time.deltaTime); } } } } namespace Ragnarok.Commands { public class RagnarokCommand : ConsoleCommand { private string[] commands = new string[3] { "start", "set", "end" }; public override string Name => "ragnarok"; public override string Help => "Ragnarok"; public override void Run(string[] args) { if (args.Length < 1 || !commands.Any((string x) => x.Equals(args[0]))) { Console.instance.Print("Usage: " + ((ConsoleCommand)this).Name + " [" + string.Join("|", commands) + "]"); } else if (args[0] == "start") { RagnarokController.s_instance.m_owner = true; ZRoutedRpc.instance.InvokeRoutedRPC(ZRoutedRpc.Everybody, "UpdateRagnarok", new object[2] { 1, 0 }); } else { Console.instance.Print("unknown command"); } } } }