using System; using System.Collections; using System.Collections.Generic; using System.Diagnostics; using System.IO; using System.Linq; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using System.Security; using System.Security.Permissions; using Alexandria; using Alexandria.Assetbundle; using Alexandria.CharacterAPI; using Alexandria.ItemAPI; using Alexandria.Misc; using BepInEx; using DimensionHopper; using Dungeonator; using Gungeon; using HarmonyLib; using Pathfinding; using Planetside; using UnityEngine; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] [assembly: AssemblyTitle("Mod")] [assembly: AssemblyDescription("")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("")] [assembly: AssemblyProduct("Mod")] [assembly: AssemblyCopyright("Copyright © 2020")] [assembly: AssemblyTrademark("")] [assembly: ComVisible(false)] [assembly: Guid("d6d7a494-722e-4763-959b-c2d6b6a42b01")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.0.0.0")] [module: UnverifiableCode] namespace Planetside { public class DimensionalAnchor : PlayerItem { [HarmonyPatch(typeof(ModifyProjectileSynergyProcessor), "DejamEnemy")] public class patch_ModifyProjectileSynergyProcessor_DejamEnemy { [HarmonyPrefix] public static bool Postfix(ModifyProjectileSynergyProcessor __instance, Projectile source, SpeculativeRigidbody target, bool kill) { if ((Object)(object)target != (Object)null && Object.op_Implicit((Object)(object)((Component)target).gameObject.GetComponent())) { return false; } return true; } } private class PreventUnJam : MonoBehaviour { } public static GameObject Text; public static AIActor theGuy; public static VFXPool HighPriestClapVFX; public static GenericLootTable lootTable; public static ParticleSystem particleSystemVoid; public static bool isSmoking; private Coroutine coroutine; private MeshRenderer VoidTextInstance; public static void Init() { //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_000e: Expected O, but got Unknown //IL_0064: 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_0104: Unknown result type (might be due to invalid IL or missing references) //IL_010f: Unknown result type (might be due to invalid IL or missing references) //IL_0116: Expected O, but got Unknown //IL_0155: Unknown result type (might be due to invalid IL or missing references) //IL_0391: 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_03a5: Expected O, but got Unknown //IL_0237: Unknown result type (might be due to invalid IL or missing references) //IL_0241: Expected O, but got Unknown //IL_0247: Unknown result type (might be due to invalid IL or missing references) //IL_0259: Unknown result type (might be due to invalid IL or missing references) //IL_0260: Expected O, but got Unknown string text = "Dimensional Anchor"; GameObject val = new GameObject(text); DimensionalAnchor dimensionalAnchor = val.AddComponent(); tk2dSpriteCollectionData item_Collection = StaticCollections.Item_Collection; ItemBuilder.AddSpriteToObjectAssetbundle(text, item_Collection.GetSpriteIdByName("anchor"), item_Collection, val); string text2 = "Weight Of The World"; string text3 = "Anchors you to this dimension.\n\nOpening the anchor, even in short bursts, causes unpredictable results."; ItemBuilder.SetupItem((PickupObject)(object)dimensionalAnchor, text2, text3, "tdh"); ItemBuilder.SetCooldownType((PlayerItem)(object)dimensionalAnchor, (CooldownType)2, 8f); ((PlayerItem)dimensionalAnchor).consumable = false; ((PickupObject)dimensionalAnchor).quality = (ItemQuality)(-50); ((PickupObject)dimensionalAnchor).PreventStartingOwnerFromDropping = true; ItemBuilder.AddPassiveStatModifier((PickupObject)(object)dimensionalAnchor, (StatType)14, -2f, (ModifyMethod)0); ItemBuilder.AddPassiveStatModifier((PickupObject)(object)dimensionalAnchor, (StatType)8, 1f, (ModifyMethod)0); GameObject val2 = FakePrefab.Clone(((Component)((Component)((BraveBehaviour)PickupObjectDatabase.GetById(597)).transform.GetChild(6)).transform).gameObject); val2.gameObject.SetActive(true); particleSystemVoid = val2.GetComponent(); GameManager.Instance.RainbowRunForceExcludedIDs.Add(((PickupObject)dimensionalAnchor).PickupObjectId); GameObjectExtensions.SetLayerRecursively(val2.gameObject, LayerMask.NameToLayer("Unpixelated")); SizeOverLifetimeModule sizeOverLifetime = particleSystemVoid.sizeOverLifetime; ((SizeOverLifetimeModule)(ref sizeOverLifetime)).enabled = true; AnimationCurve val3 = new AnimationCurve(); val3.AddKey(0f, 0.01f); val3.AddKey(0.3f, 1f); val3.AddKey(1f, 0f); ((SizeOverLifetimeModule)(ref sizeOverLifetime)).size = new MinMaxCurve(1.5f, val3); RoomRewardAPI.OnRoomRewardDetermineContents = (Action)Delegate.Combine(RoomRewardAPI.OnRoomRewardDetermineContents, new Action(ORDC)); lootTable = LootUtility.CreateLootTable((List)null, (DungeonPrerequisite[])null); LootUtility.AddItemsToPool(lootTable, new Dictionary { { 127, 1f } }); AIAnimator aiAnimator = ((BraveBehaviour)EnemyDatabase.GetOrLoadByGuid("6c43fddfd401456c916089fdd1c99b1c")).aiAnimator; List otherVFX = aiAnimator.OtherVFX; foreach (NamedVFXPool item in otherVFX) { if (!(item.name == "mergo")) { continue; } VFXComplex[] effects = item.vfxPool.effects; foreach (VFXComplex val4 in effects) { VFXObject[] effects2 = val4.effects; foreach (VFXObject sample in effects2) { VFXObject val5 = Toolbox.CopyFields(sample); HighPriestClapVFX = new VFXPool(); HighPriestClapVFX.type = (VFXPoolType)4; VFXPool highPriestClapVFX = HighPriestClapVFX; VFXComplex[] array = new VFXComplex[1]; VFXComplex val6 = new VFXComplex(); val6.effects = (VFXObject[])(object)new VFXObject[1] { val5 }; array[0] = val6; highPriestClapVFX.effects = (VFXComplex[])(object)array; } } } AIActor orLoadByGuid = EnemyDatabase.GetOrLoadByGuid(EnemyGUIDs.Bullet_Kin_GUID); GameObject val7 = Object.Instantiate(((Component)orLoadByGuid).gameObject); Object.DontDestroyOnLoad((Object)(object)val7); FakePrefab.MarkAsFakePrefab(val7); val7.SetActive(false); AIActor component = val7.GetComponent(); component.procedurallyOutlined = true; component.AssignedCurrencyToDrop = 0; component.AdditionalSafeItemDrops = new List(); component.AdditionalSimpleItemDrops = new List(); float maxHealth = ((BraveBehaviour)component).healthHaver.GetMaxHealth(); ((BraveBehaviour)component).healthHaver.SetHealthMaximum(maxHealth * 50f, (float?)null, false); ((BraveBehaviour)component).healthHaver.AllDamageMultiplier = 0.1f; component.CanTargetEnemies = true; component.CanTargetPlayers = true; component.IsHarmlessEnemy = true; component.IgnoreForRoomClear = true; CompanionController val8 = ((Component)component).gameObject.AddComponent(); val8.companionID = (CompanionIdentifier)9; val8.CanCrossPits = true; CompanionFollowPlayerBehavior val9 = new CompanionFollowPlayerBehavior(); val9.CanRollOverPits = false; val9.DisableInCombat = true; val9.PathInterval = 0.25f; val9.IdealRadius = 4f; val9.CatchUpRadius = 8f; val9.CatchUpAccelTime = 5f; val9.CatchUpSpeed = (component.MovementSpeed *= 1.2f); val9.CatchUpMaxSpeed = (component.MovementSpeed *= 1.3f); val9.TemporarilyDisabled = true; BehaviorSpeculator component2 = ((Component)component).GetComponent(); component2.MovementBehaviors.Add((MovementBehaviorBase)(object)val9); theGuy = component; } public override void Pickup(PlayerController player) { //IL_0042: 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_0074: Unknown result type (might be due to invalid IL or missing references) //IL_0079: Unknown result type (might be due to invalid IL or missing references) //IL_007e: Unknown result type (might be due to invalid IL or missing references) //IL_0093: Unknown result type (might be due to invalid IL or missing references) //IL_009d: Unknown result type (might be due to invalid IL or missing references) //IL_00c5: Unknown result type (might be due to invalid IL or missing references) //IL_00d3: Unknown result type (might be due to invalid IL or missing references) //IL_00f7: Unknown result type (might be due to invalid IL or missing references) //IL_0106: Unknown result type (might be due to invalid IL or missing references) //IL_010b: 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_011b: Unknown result type (might be due to invalid IL or missing references) if (base.m_pickedUpThisRun) { AkSoundEngine.PostEvent("Play_OBJ_dice_bless_01", ((Component)player).gameObject); for (int i = 0; i < 4; i++) { PickupObject byId = PickupObjectDatabase.GetById(538); SpawnManager.SpawnVFX(((SilverBulletsPassiveItem)((byId is SilverBulletsPassiveItem) ? byId : null)).SynergyPowerVFX, Vector2Extensions.ToVector3ZisY(((BraveBehaviour)player).sprite.WorldCenter, 0f) + new Vector3(Random.Range(-0.25f, 0.25f), Random.Range(-0.25f, 0.25f), 100f), Quaternion.identity).GetComponent().PlaceAtPositionByAnchor(Vector2Extensions.ToVector3ZisY(((BraveBehaviour)player).sprite.WorldCenter, 0f), (Anchor)4); } for (int j = 0; j < 8; j++) { ParticleSystem obj = particleSystemVoid; EmitParams val = default(EmitParams); ((EmitParams)(ref val)).position = ((BraveBehaviour)player).transform.position; ((EmitParams)(ref val)).rotation = BraveUtility.RandomAngle(); ((EmitParams)(ref val)).velocity = Vector2.op_Implicit(BraveUtility.RandomVector2(new Vector2(-1f, -1f), new Vector2(1f, 1f))); obj.Emit(val, 1); } } ((PlayerItem)this).Pickup(player); } public override void DoEffect(PlayerController user) { //IL_0018: 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_0051: 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_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_008e: Unknown result type (might be due to invalid IL or missing references) //IL_0099: Unknown result type (might be due to invalid IL or missing references) //IL_09e6: Unknown result type (might be due to invalid IL or missing references) //IL_0145: Unknown result type (might be due to invalid IL or missing references) //IL_0174: Unknown result type (might be due to invalid IL or missing references) //IL_017b: Unknown result type (might be due to invalid IL or missing references) //IL_0180: 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_0311: Unknown result type (might be due to invalid IL or missing references) //IL_0320: Unknown result type (might be due to invalid IL or missing references) //IL_032d: Expected O, but got Unknown //IL_03cd: 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_04df: Unknown result type (might be due to invalid IL or missing references) //IL_04e4: Unknown result type (might be due to invalid IL or missing references) //IL_04e9: Unknown result type (might be due to invalid IL or missing references) //IL_0205: Unknown result type (might be due to invalid IL or missing references) //IL_0375: Unknown result type (might be due to invalid IL or missing references) //IL_037a: Unknown result type (might be due to invalid IL or missing references) //IL_0418: 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_060f: Unknown result type (might be due to invalid IL or missing references) //IL_0616: Expected O, but got Unknown AkSoundEngine.PostEvent("Play_ENV_time_shatter_01", ((Component)user).gameObject); Exploder.DoDistortionWave(((BraveBehaviour)user).sprite.WorldCenter, 2f, 0.25f, 30f, 1f); for (int i = 0; i < 32; i++) { ParticleSystem obj = particleSystemVoid; EmitParams val = default(EmitParams); ((EmitParams)(ref val)).position = ((BraveBehaviour)user).transform.position; ((EmitParams)(ref val)).rotation = BraveUtility.RandomAngle(); ((EmitParams)(ref val)).velocity = Vector2.op_Implicit(BraveUtility.RandomVector2(new Vector2(-1f, -1f), new Vector2(1f, 1f))); obj.Emit(val, 1); } if (Random.value < 0.05f) { base.remainingRoomCooldown -= 4; int num = Random.Range(0, 10); AkSoundEngine.PostEvent("Play_OBJ_dice_bless_01", ((Component)user).gameObject); switch (num) { case 0: { AkSoundEngine.PostEvent("Play_OBJ_prize_won_01", ((Component)user).gameObject); Confetti(((BraveBehaviour)base.LastOwner).sprite.WorldCenter); Toolbox.NotifyCustom("Wait, What?", "A free chest?!?", "guh", StaticCollections.Item_Collection, (NotificationColor)2); IntVector2 bestRewardLocation = ((DungeonPlaceableBehaviour)user).GetAbsoluteParentRoom().GetBestRewardLocation(new IntVector2(2, 1), (RewardLocationStyle)2, true); Chest val5 = user.CurrentRoom.SpawnRoomRewardChest((WeightedGameObjectCollection)null, bestRewardLocation); val5.ForceUnlock(); if ((Object)(object)val5 != (Object)null) { if ((double)Random.value > 0.2) { val5.contents = new List(); val5.contents.Clear(); val5.contents.Add(PickupObjectDatabase.GetById(127)); } val5.RegisterChestOnMinimap(((DungeonPlaceableBehaviour)user).GetAbsoluteParentRoom()); Confetti(((BraveBehaviour)val5).sprite.WorldCenter); } break; } case 1: Toolbox.NotifyCustom("Wait, What?", "It's the mod developer?!?", "guh", StaticCollections.Item_Collection, (NotificationColor)2); ((MonoBehaviour)this).StartCoroutine(DoWackyStuff(user)); break; case 2: Toolbox.NotifyCustom("Wait, What?", "He has arrived!", "guh", StaticCollections.Item_Collection, (NotificationColor)2); ((MonoBehaviour)this).StartCoroutine(SpawnTheSwarm(user)); break; case 3: Toolbox.NotifyCustom("Wait, What?", "Ammo refills?!?", "guh", StaticCollections.Item_Collection, (NotificationColor)2); ((MonoBehaviour)this).StartCoroutine(SpawnTheAmmo(user)); break; case 4: Toolbox.NotifyCustom("Wait, What?", "BEES!!!", "guh", StaticCollections.Item_Collection, (NotificationColor)2); ((MonoBehaviour)this).StartCoroutine(SpawnTheBees(user)); break; case 5: { Toolbox.NotifyCustom("Wait, What?", "Armored Up!", "guh", StaticCollections.Item_Collection, (NotificationColor)2); HealthHaver healthHaver = ((BraveBehaviour)user).healthHaver; healthHaver.Armor += 2f; ((GameActor)user).PlayEffectOnActor((GameObject)ResourceCache.Acquire("Global VFX/VFX_Healing_Sparkles_001"), new Vector3(0f, 0f), true, false, false); AkSoundEngine.PostEvent("Play_OBJ_heart_heal_01", ((Component)user).gameObject); break; } case 6: { Toolbox.NotifyCustom("Wait, What?", "Just 2 Glass Guon Stones?", "guh", StaticCollections.Item_Collection, (NotificationColor)2); for (int k = 0; k < 2; k++) { GameObject val4 = Object.Instantiate(((Component)PickupObjectDatabase.GetById(565)).gameObject, Vector3.zero, Quaternion.identity); PickupObject component2 = val4.GetComponent(); if ((Object)(object)component2 != (Object)null) { component2.CanBeDropped = false; component2.Pickup(user); } } break; } case 7: { Vector3 position = ((BraveBehaviour)user).transform.position; Toolbox.NotifyCustom("Wait, What?", "We have a problem.", "guh", StaticCollections.Item_Collection, (NotificationColor)2); PickupObject byId = PickupObjectDatabase.GetById(645); AIActor orLoadByGuid = EnemyDatabase.GetOrLoadByGuid(((MulticompanionItem)((byId is MulticompanionItem) ? byId : null)).CompanionGuid); for (int l = 0; l < 6; l++) { GameObject val6 = Object.Instantiate(((Component)orLoadByGuid).gameObject, position, Quaternion.identity); CompanionController orAddComponent = GameObjectExtensions.GetOrAddComponent(val6); orAddComponent.Initialize(user); if (Object.op_Implicit((Object)(object)((BraveBehaviour)orAddComponent).specRigidbody)) { PhysicsEngine.Instance.RegisterOverlappingGhostCollisionExceptions(((BraveBehaviour)orAddComponent).specRigidbody, (int?)null, false); } } break; } case 8: Toolbox.NotifyCustom("Wait, What?", "Bomb has been planted.", "guh", StaticCollections.Item_Collection, (NotificationColor)2); ((MonoBehaviour)this).StartCoroutine(SpawnTheBombs(user)); break; case 9: { Toolbox.NotifyCustom("Wait, What?", "This guns gone wrong!", "guh", StaticCollections.Item_Collection, (NotificationColor)2); GameObject gameObject = ((Component)PickupObjectDatabase.GetRandomGun()).gameObject; DebrisObject val2 = LootEngine.SpawnItem(gameObject, Vector2.op_Implicit(((BraveBehaviour)user).sprite.WorldCenter), Vector2.zero, 0f, false, false, false); Gun componentInChildren = ((Component)val2).GetComponentInChildren(); if (!Object.op_Implicit((Object)(object)componentInChildren)) { break; } ((BraveBehaviour)componentInChildren).sprite.usesOverrideMaterial = true; Material material = ((BraveBehaviour)componentInChildren).renderer.material; material.shader = ShaderCache.Acquire("Brave/Internal/Glitch"); material.SetFloat("_GlitchInterval", 0.2f); material.SetFloat("_DispProbability", 0.6f); material.SetFloat("_DispIntensity", 0.05f); material.SetFloat("_ColorProbability", 0.4f); material.SetFloat("_ColorIntensity", 0.2f); MeshRenderer component = ((Component)componentInChildren).GetComponent(); if (!Object.op_Implicit((Object)(object)component)) { break; } Material[] array = ((Renderer)component).sharedMaterials; for (int j = 0; j < array.Length; j++) { if ((Object)(object)array[j].shader == (Object)(object)material) { return; } } Array.Resize(ref array, array.Length + 1); Material val3 = new Material(material); val3.SetTexture("_MainTex", array[0].GetTexture("_MainTex")); array[^1] = val3; ((Renderer)component).sharedMaterials = array; componentInChildren.reloadTime *= (BraveUtility.RandomBool() ? Random.Range(1f, 10f) : Random.Range(0.1f, 1f)); componentInChildren.SetBaseMaxAmmo((int)((float)componentInChildren.maxAmmo * (BraveUtility.RandomBool() ? Random.Range(1f, 10f) : Random.Range(0.1f, 1f)))); float num2 = (BraveUtility.RandomBool() ? Random.Range(1f, 10f) : Random.Range(0.1f, 1f)); float num3 = (BraveUtility.RandomBool() ? Random.Range(1f, 10f) : Random.Range(0.1f, 1f)); float num4 = (BraveUtility.RandomBool() ? Random.Range(1f, 10f) : Random.Range(0.1f, 1f)); float num5 = (BraveUtility.RandomBool() ? Random.Range(1f, 10f) : Random.Range(0.1f, 1f)); float num6 = (BraveUtility.RandomBool() ? Random.Range(1f, 10f) : Random.Range(0.1f, 1f)); float num7 = (BraveUtility.RandomBool() ? Random.Range(1f, 10f) : Random.Range(0.1f, 1f)); if (Object.op_Implicit((Object)(object)componentInChildren.Volley) && componentInChildren.Volley.projectiles != null) { foreach (ProjectileModule projectile in componentInChildren.Volley.projectiles) { projectile.cooldownTime *= num2; projectile.numberOfShotsInClip = (int)((float)projectile.numberOfShotsInClip * num3); projectile.angleVariance *= num5; projectile.burstShotCount = (int)((float)projectile.burstShotCount * num6); projectile.burstCooldownTime *= num7; if (projectile.chargeProjectiles != null && projectile.chargeProjectiles.Count > 0) { foreach (ChargeProjectile chargeProjectile in projectile.chargeProjectiles) { chargeProjectile.ChargeTime *= num4; } } } break; } ProjectileModule defaultModule = componentInChildren.DefaultModule; defaultModule.cooldownTime *= num2; componentInChildren.DefaultModule.numberOfShotsInClip = (int)((float)componentInChildren.DefaultModule.numberOfShotsInClip * num3); ProjectileModule defaultModule2 = componentInChildren.DefaultModule; defaultModule2.angleVariance *= num5; componentInChildren.DefaultModule.burstShotCount = (int)((float)componentInChildren.DefaultModule.burstShotCount * num6); ProjectileModule defaultModule3 = componentInChildren.DefaultModule; defaultModule3.burstCooldownTime *= num7; if (componentInChildren.DefaultModule.chargeProjectiles == null || componentInChildren.DefaultModule.chargeProjectiles.Count <= 0) { break; } { foreach (ChargeProjectile chargeProjectile2 in componentInChildren.DefaultModule.chargeProjectiles) { chargeProjectile2.ChargeTime *= num4; } break; } } } } else { LootEngine.DoDefaultPurplePoof(((BraveBehaviour)user).specRigidbody.UnitBottomCenter, false); AkSoundEngine.PostEvent("Play_ENM_darken_world_01", ((Component)GameManager.Instance.BestActivePlayer).gameObject); ((MonoBehaviour)user).StartCoroutine(DoCurseCloud(user)); ((MonoBehaviour)this).Invoke("Say", 2.5f); } } private IEnumerator SpawnTheBombs(PlayerController user) { RoomHandler room = user.CurrentRoom; PickupObject byId = PickupObjectDatabase.GetById(108); GameObject b = ((SpawnObjectPlayerItem)((byId is SpawnObjectPlayerItem) ? byId : null)).objectToSpawn; for (int i = 0; i < 50; i++) { yield return (object)new WaitForSeconds(0.2f); IntVector2 pos = room.GetRandomAvailableCell((IntVector2?)null, (CellTypes?)null, false, (CellValidator)null).Value; Object.Instantiate(b, Vector2.op_Implicit(((IntVector2)(ref pos)).ToCenterVector2()), Quaternion.identity); pos = default(IntVector2); } } private IEnumerator DoWackyStuff(PlayerController user) { Vector2 pos = ((BraveBehaviour)user).sprite.WorldCenter; HighPriestClapVFX.SpawnAtPosition(Vector2.op_Implicit(pos), 0f, (Transform)null, (Vector2?)null, (Vector2?)null, (float?)null, false, (SpawnMethod)null, (tk2dBaseSprite)null, false); yield return (object)new WaitForSeconds(1f); AIActor enemy = AIActor.Spawn(EnemyDatabase.GetOrLoadByGuid(EnemyGUIDs.Robots_Past_Rabbit_GUID), pos, user.CurrentRoom, false, (AwakenAnimationType)0, true); GameObject gameObject = (GameObject)Object.Instantiate(BraveResources.Load("DamagePopupLabel", ".prefab"), ((BraveBehaviour)GameUIRoot.Instance).transform); Vector3 worldPosition = ((BraveBehaviour)this).transform.position; dfLabel Label = gameObject.GetComponent(); dfLabel targetLabel = Label; ((Component)targetLabel).gameObject.SetActive(true); targetLabel.Text = "Some Bunny"; ((dfControl)targetLabel).Color = Color32.op_Implicit(Color.white); ((dfControl)targetLabel).Opacity = 1f; ((Component)targetLabel).transform.position = Vector3Extensions.WithZ(dfFollowObject.ConvertWorldSpaces(worldPosition, GameManager.Instance.MainCameraController.Camera, GameUIRoot.Instance.Manager.RenderCamera), 0f); ((Component)targetLabel).transform.position = dfVectorExtensions.QuantizeFloor(((Component)targetLabel).transform.position, ((dfControl)targetLabel).PixelsToUnits() / (Pixelator.Instance.ScaleTileScale / Pixelator.Instance.CurrentTileScale)); dfFollowObject component = ((Component)targetLabel).gameObject.AddComponent(); component.attach = ((Component)enemy).gameObject; ((Behaviour)component).enabled = true; component.mainCamera = GameManager.Instance.MainCameraController.Camera; component.anchor = (dfPivotPoint)4; component.offset += new Vector3(-0.5f, 1.5f); } private IEnumerator SpawnTheBees(PlayerController user) { _ = user.CurrentRoom; for (int i = 0; i < 200; i++) { yield return (object)new WaitForSeconds(0.05f); PickupObject byId = PickupObjectDatabase.GetById(14); GameObject spawnedBulletOBJ = SpawnManager.SpawnProjectile(((Component)((Gun)((byId is Gun) ? byId : null)).DefaultModule.projectiles[0]).gameObject, Vector2.op_Implicit(((BraveBehaviour)user).sprite.WorldCenter), Quaternion.Euler(0f, 0f, BraveUtility.RandomAngle()), true); Projectile component = spawnedBulletOBJ.GetComponent(); if ((Object)(object)component != (Object)null) { component.Owner = (GameActor)(object)user; component.Shooter = ((BraveBehaviour)user).specRigidbody; user.DoPostProcessProjectile(component); } } } private IEnumerator SpawnTheAmmo(PlayerController user) { RoomHandler room = user.CurrentRoom; for (int i = 0; i < 25; i++) { yield return (object)new WaitForSeconds(0.2f); IntVector2 pos = room.GetRandomAvailableCell((IntVector2?)null, (CellTypes?)null, false, (CellValidator)null).Value; SpawnCrate(78, user, Vector2.op_Implicit(((IntVector2)(ref pos)).ToVector3())); pos = default(IntVector2); } } private static void SpawnCrate(int item, PlayerController p, Vector2 position) { //IL_0021: Unknown result type (might be due to invalid IL or missing references) //IL_0027: Expected O, but got Unknown //IL_0088: 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_0093: 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) AkSoundEngine.PostEvent("Play_OBJ_supplydrop_activate_01", ((Component)p).gameObject); GameObject val = (GameObject)BraveResources.Load("EmergencyCrate", ".prefab"); GameObject val2 = Object.Instantiate(val); EmergencyCrateController component = val2.GetComponent(); SupplyDropDoer.SimplerCrateBehaviour simplerCrateBehaviour = component.TurnIntoSimplerCrate(); simplerCrateBehaviour.easyLootID = item; simplerCrateBehaviour.OnCrateLandedContext = (Action)Delegate.Combine(simplerCrateBehaviour.OnCrateLandedContext, (Action)delegate(Vector2 obj1, SupplyDropDoer.SimplerCrateBehaviour obj2, DebrisObject obj3) { ((MonoBehaviour)GameManager.Instance).StartCoroutine(HandleManualCoinSpawnLifespan(((BraveBehaviour)obj3).sprite, 5f)); }); simplerCrateBehaviour.Trigger(new Vector3(-5f, -5f, -5f), Vector2Extensions.ToVector3ZUp(position, 0f) + new Vector3(15f, 15f, 15f), p.CurrentRoom); } private static IEnumerator HandleManualCoinSpawnLifespan(tk2dBaseSprite coins, float lifeTime) { float elapsed = 0f; while (elapsed < lifeTime * 0.75f) { if ((Object)(object)coins == (Object)null) { yield break; } elapsed += BraveTime.DeltaTime; yield return null; } float flickerTimer = 0f; while (elapsed < lifeTime) { elapsed += BraveTime.DeltaTime; flickerTimer += BraveTime.DeltaTime; if ((Object)(object)coins != (Object)null && Object.op_Implicit((Object)(object)((BraveBehaviour)coins).renderer)) { bool enabled = flickerTimer % 0.2f > 0.15f; ((BraveBehaviour)coins).renderer.enabled = enabled; } else if ((Object)(object)coins == (Object)null) { yield break; } yield return null; } Object.Destroy((Object)(object)((Component)coins).gameObject); } private IEnumerator SpawnTheSwarm(PlayerController user) { RoomHandler room = user.CurrentRoom; IntVector2 pos = room.GetRandomAvailableCell((IntVector2?)null, (CellTypes?)null, false, (CellValidator)null).Value; HighPriestClapVFX.SpawnAtPosition(Vector2.op_Implicit(((IntVector2)(ref pos)).ToVector2()), 0f, (Transform)null, (Vector2?)null, (Vector2?)null, (float?)null, false, (SpawnMethod)null, (tk2dBaseSprite)null, false); yield return (object)new WaitForSeconds(1f); AIActor aiactor = AIActor.Spawn(theGuy, pos, room, true, (AwakenAnimationType)0, true); CompanionController comp = ((Component)((BraveBehaviour)aiactor).gameActor).GetComponent(); comp.Initialize(user); aiactor.CompanionOwner = user; ((BraveBehaviour)aiactor).specRigidbody.Reinitialize(); } public void Confetti(Vector2 targetCenter) { //IL_003b: Unknown result type (might be due to invalid IL or missing references) //IL_0041: Expected O, but got Unknown //IL_0053: 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_006d: Unknown result type (might be due to invalid IL or missing references) //IL_0072: Unknown result type (might be due to invalid IL or missing references) //IL_007e: Unknown result type (might be due to invalid IL or missing references) //IL_0083: Unknown result type (might be due to invalid IL or missing references) //IL_0087: Unknown result type (might be due to invalid IL or missing references) //IL_009a: Unknown result type (might be due to invalid IL or missing references) //IL_00a1: Unknown result type (might be due to invalid IL or missing references) //IL_00b5: Unknown result type (might be due to invalid IL or missing references) string[] array = new string[3] { "Global VFX/Confetti_Blue_001", "Global VFX/Confetti_Yellow_001", "Global VFX/Confetti_Green_001" }; for (int i = 0; i < 8; i++) { GameObject val = (GameObject)BraveResources.Load(array[Random.Range(0, 3)], ".prefab"); WaftingDebrisObject component = Object.Instantiate(val).GetComponent(); ((BraveBehaviour)component).sprite.PlaceAtPositionByAnchor(Vector2Extensions.ToVector3ZUp(targetCenter, 0f) + new Vector3(0.5f, 0.5f, 0f), (Anchor)4); Vector2 insideUnitCircle = Random.insideUnitCircle; insideUnitCircle.y = 0f - Mathf.Abs(insideUnitCircle.y); ((DebrisObject)component).Trigger(Vector2Extensions.ToVector3ZUp(insideUnitCircle, 1.5f) * Random.Range(0.5f, 2f), 0.5f, 0f); } } public static void ORDC(RoomHandler room, ValidRoomRewardContents validRoomRewardContents, float chance) { if (validRoomRewardContents != null && isSmoking) { validRoomRewardContents.additionalRewardChance -= 1f; } } public void Say() { Toolbox.NotifyCustom("A Cursed Fog", "Clouds the surrounding rooms...", "curseSkull1", StaticCollections.Item_Collection, (NotificationColor)2); } public override bool CanBeUsed(PlayerController user) { return !user.IsInCombat; } public IEnumerator DoCurseCloud(PlayerController playerController) { while (!playerController.IsInCombat) { yield return null; } isSmoking = true; AkSoundEngine.PostEvent("Play_ENM_beholster_teleport_01", ((Component)playerController).gameObject); yield return (object)new WaitForSeconds(0.75f); if (playerController.CurrentRoom != null) { playerController.CurrentRoom.BecomeTerrifyingDarkRoom(3f, 0.99f, 1.3f, ""); } while (playerController.IsInCombat) { if (!GameManager.Instance.IsPaused) { if (playerController.CurrentRoom != null && Random.value < 10f * BraveTime.DeltaTime) { IntVector2? cell = playerController.CurrentRoom.GetRandomAvailableCell((IntVector2?)null, (CellTypes?)null, false, (CellValidator)null); if (cell.HasValue) { ParticleSystem obj = particleSystemVoid; EmitParams val = default(EmitParams); IntVector2 value = cell.Value; ((EmitParams)(ref val)).position = ((IntVector2)(ref value)).ToCenterVector3(1f); ((EmitParams)(ref val)).rotation = BraveUtility.RandomAngle(); ((EmitParams)(ref val)).velocity = Vector2.op_Implicit(BraveUtility.RandomVector2(new Vector2(-1f, -1f), new Vector2(1f, 1f))); obj.Emit(val, 1); } } foreach (AIActor entry in playerController.CurrentRoom.GetActiveEnemies((ActiveEnemyType)0)) { if (!entry.IsBlackPhantom && (int)entry.State == 2) { entry.BecomeBlackPhantom(); ((Component)entry).gameObject.AddComponent(); LootEngine.DoDefaultPurplePoof(((BraveBehaviour)entry).specRigidbody.UnitBottomCenter, false); ? val2 = entry; Object obj2 = ResourceCache.Acquire("Global VFX/VFX_Curse"); ((GameActor)val2).PlayEffectOnActor((GameObject)(object)((obj2 is GameObject) ? obj2 : null), Vector3.zero, true, false, false); yield return (object)new WaitForSeconds(0.15f); break; } } } yield return null; } if ((int)playerController.CurrentRoom.area.PrototypeRoomCategory == 3) { IntVector2 intVector = IntVector2.Zero; intVector = (playerController.CurrentRoom.OverrideBossPedestalLocation.HasValue ? playerController.CurrentRoom.OverrideBossPedestalLocation.Value : ((playerController.CurrentRoom.area.IsProceduralRoom || !(playerController.CurrentRoom.area.runtimePrototypeData.rewardChestSpawnPosition != IntVector2.NegOne)) ? playerController.CurrentRoom.GetCenteredVisibleClearSpot(2, 2) : (playerController.CurrentRoom.area.basePosition + playerController.CurrentRoom.area.runtimePrototypeData.rewardChestSpawnPosition))); for (int i = -1; i < 2; i++) { Vector3 p = ((IntVector2)(ref intVector)).ToCenterVector3(0f) + new Vector3((float)(3 * i), -2.5f); ((MonoBehaviour)this).StartCoroutine(SpawnBossPickup(p)); yield return (object)new WaitForSeconds(0.125f); } intVector = default(IntVector2); } playerController.CurrentRoom.EndTerrifyingDarkRoom(3f, 0.99f, 1.3f, ""); AkSoundEngine.PostEvent("Play_ENM_lighten_world_01", ((Component)GameManager.Instance.BestActivePlayer).gameObject); Toolbox.NotifyCustom("The Fog Fades...", "", "curseSkull2", StaticCollections.Item_Collection, (NotificationColor)2, forceSingleLine: true); base.remainingRoomCooldown = base.roomCooldown; yield return (object)new WaitForSeconds(0.5f); isSmoking = false; } private IEnumerator SpawnBossPickup(Vector3 position) { //IL_000e: 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) HighPriestClapVFX.SpawnAtPosition(position, 0f, (Transform)null, (Vector2?)null, (Vector2?)null, (float?)null, false, (SpawnMethod)null, (tk2dBaseSprite)null, false); yield return (object)new WaitForSeconds(1f); FloorRewardData data = GameManager.Instance.RewardManager.CurrentRewardData; DebrisObject debrisObject = LootEngine.SpawnItem(data.SingleItemRewardTable.SelectByWeight(false), position, Vector2.zero, 0f, true, false, false); PickupObject obj = ((Component)debrisObject).GetComponent(); if ((Object)(object)obj != (Object)null) { obj.RespawnsIfPitfall = true; } Exploder.DoRadialPush(Vector2Extensions.ToVector3ZUp(((BraveBehaviour)debrisObject).sprite.WorldCenter, ((BraveBehaviour)debrisObject).sprite.WorldCenter.y), 8f, 3f); AkSoundEngine.PostEvent("Play_OBJ_item_spawn_01", ((Component)debrisObject).gameObject); } public override void Update() { //IL_0109: Unknown result type (might be due to invalid IL or missing references) //IL_0118: Unknown result type (might be due to invalid IL or missing references) //IL_011d: 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_0068: Unknown result type (might be due to invalid IL or missing references) //IL_0142: Unknown result type (might be due to invalid IL or missing references) //IL_0151: 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_0161: Unknown result type (might be due to invalid IL or missing references) //IL_0170: Unknown result type (might be due to invalid IL or missing references) //IL_0175: 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_0184: Unknown result type (might be due to invalid IL or missing references) ((PlayerItem)this).Update(); if ((Object)(object)base.LastOwner == (Object)null) { if ((Object)(object)VoidTextInstance == (Object)null) { GameObject val = Object.Instantiate(((Component)PickupObjectDatabase.GetById(155)).GetComponent().objectToSpawn.GetComponent().HellSynergyVFX, ((BraveBehaviour)this).transform.position, Quaternion.Euler(0f, 0f, 0f)); GameObjectExtensions.SetLayerRecursively(val.gameObject, LayerMask.NameToLayer("BG_Critical")); MeshRenderer component = val.GetComponent(); ((Renderer)component).material.SetFloat("_UVDistCutoff", 0f); ((Renderer)component).material.SetTexture("_PortalTex", (Texture)(object)StaticCollections.NebulaTexture); VoidTextInstance = component; coroutine = ((MonoBehaviour)GameManager.Instance).StartCoroutine(HoldPortalOpen(component)); AkSoundEngine.PostEvent("Play_ENM_beholster_teleport_01", ((Component)component).gameObject); } else { ((Component)VoidTextInstance).gameObject.transform.position = ((BraveBehaviour)this).transform.position + new Vector3(0.5f, 0f); if (Random.value < 0.3f) { GlobalSparksDoer.DoRandomParticleBurst(1, ((BraveBehaviour)this).transform.position + new Vector3(-0.25f, -1f), ((BraveBehaviour)this).transform.position + new Vector3(2f, 1f), Vector3.up * 1.3f, 12f, 1f, (float?)0.2f, (float?)6f, (Color?)null, (SparksType)6); } } } else if ((Object)(object)VoidTextInstance != (Object)null) { if (coroutine != null) { ((MonoBehaviour)GameManager.Instance).StopCoroutine(coroutine); coroutine = null; } if ((Object)(object)VoidTextInstance != (Object)null) { AkSoundEngine.PostEvent("Play_ENM_blobulord_charge_01", ((Component)VoidTextInstance).gameObject); coroutine = ((MonoBehaviour)GameManager.Instance).StartCoroutine(HoldPortalOpen(VoidTextInstance, Thing: false)); VoidTextInstance = null; } } } public override void OnPreDrop(PlayerController user) { ((PlayerItem)this).OnPreDrop(user); } private IEnumerator HoldPortalOpen(MeshRenderer portal, bool Thing = true) { float elapsed = 0f; while (elapsed < 2f) { elapsed += BraveTime.DeltaTime; float t = (Thing ? EaseOut(elapsed * 0.5f) : (1f - EaseOut(elapsed * 0.5f))); if ((Object)(object)portal == (Object)null || (Object)(object)((Component)portal).gameObject == (Object)null) { break; } ((Renderer)portal).material.SetFloat("_UVDistCutoff", Mathf.Lerp(0f, 0.13f, t)); ((Renderer)portal).material.SetFloat("_HoleEdgeDepth", Mathf.Lerp(0f, 1f, t)); yield return null; } } public static float EaseIn(float t) { return t * t; } public static float EaseInInverse(float t) { return 1f - t * t; } public static float Flip(float t) { return 1f - t; } public static float EaseOut(float t) { return Flip(EaseIn(Flip(t))); } } } namespace DimensionHopper { public static class SupplyDropDoer { public class SimplerCrateBehaviour : BraveBehaviour { public int easyLootID; public float despawnDelay; public bool preventAutoDespawn; public string driftAnimationName; public string landedAnimationName; public string chuteLandedAnimationName; public string crateDisappearAnimationName; public tk2dSpriteAnimator chuteAnimator; public GameObject landingTargetSprite; private bool m_hasBeenTriggered; private Vector3 m_currentPosition; private Vector3 m_currentVelocity; private RoomHandler m_parentRoom; private GameObject m_landingTarget; public Action OnCrateLanded; public Action OnCrateLandedContext; public SimplerCrateBehaviour() { easyLootID = -1; despawnDelay = -1f; preventAutoDespawn = false; } public void Trigger(Vector3 startingVelocity, Vector3 startingPosition, RoomHandler room) { //IL_0009: Unknown result type (might be due to invalid IL or missing references) //IL_000a: Unknown result type (might be due to invalid IL or missing references) //IL_0010: 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_0033: 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_0047: 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_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_005c: 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) m_parentRoom = room; m_currentPosition = startingPosition; m_currentVelocity = startingVelocity; m_hasBeenTriggered = true; GameObjectExtensions.SetLayerRecursively(((Component)this).gameObject, LayerMask.NameToLayer("Unoccluded")); float num = startingPosition.z / (0f - startingVelocity.z); Vector3 val = startingPosition + num * startingVelocity; m_landingTarget = SpawnManager.SpawnVFX(landingTargetSprite, val, Quaternion.identity); ((tk2dBaseSprite)m_landingTarget.GetComponentInChildren()).UpdateZDepth(); } private void Update() { //IL_0011: 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_0021: 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_0069: 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_0095: Unknown result type (might be due to invalid IL or missing references) if (m_hasBeenTriggered) { m_currentPosition += m_currentVelocity * BraveTime.DeltaTime; if (m_currentPosition.z <= 0f) { m_currentPosition.z = 0f; OnLanded(); } ((BraveBehaviour)this).transform.position = BraveUtility.QuantizeVector(Vector3Extensions.WithZ(m_currentPosition, m_currentPosition.y - m_currentPosition.z), (float)PhysicsEngine.Instance.PixelsPerUnit); ((BraveBehaviour)this).sprite.HeightOffGround = m_currentPosition.z; ((BraveBehaviour)this).sprite.UpdateZDepth(); } } private void OnLanded() { //IL_00ca: Unknown result type (might be due to invalid IL or missing references) //IL_0101: Unknown result type (might be due to invalid IL or missing references) //IL_010b: Unknown result type (might be due to invalid IL or missing references) //IL_011f: Unknown result type (might be due to invalid IL or missing references) //IL_0124: Unknown result type (might be due to invalid IL or missing references) //IL_0129: 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) m_hasBeenTriggered = false; ((Component)((BraveBehaviour)this).sprite).gameObject.layer = LayerMask.NameToLayer("FG_Critical"); ((BraveBehaviour)((BraveBehaviour)this).sprite).renderer.sortingLayerName = "Background"; ((BraveBehaviour)this).sprite.IsPerpendicular = false; ((BraveBehaviour)this).sprite.HeightOffGround = -1f; m_currentPosition.z = -1f; ((BraveBehaviour)this).spriteAnimator.Play(landedAnimationName); chuteAnimator.PlayAndDestroyObject(chuteLandedAnimationName, (Action)null); if (Object.op_Implicit((Object)(object)m_landingTarget)) { SpawnManager.Despawn(m_landingTarget); } m_landingTarget = null; if (OnCrateLanded != null) { OnCrateLanded(((BraveBehaviour)this).sprite.WorldCenter, this); } if (easyLootID != -1) { DebrisObject val = LootEngine.SpawnItem(((Component)PickupObjectDatabase.GetById(easyLootID)).gameObject, Vector2Extensions.ToVector3ZUp(((BraveBehaviour)this).sprite.WorldCenter, 0f) + new Vector3(-0.5f, 0.5f, 0f), Vector2.zero, 0f, false, false, false); if (despawnDelay < 0f && !preventAutoDespawn) { ((MonoBehaviour)this).StartCoroutine(DestroyCrateWhenPickedUp(val)); } OnCrateLandedContext?.Invoke(((BraveBehaviour)this).sprite.WorldCenter, this, val); } if (despawnDelay >= 0f && !preventAutoDespawn) { ((MonoBehaviour)this).StartCoroutine(DestroyCrateDelayed()); } } private IEnumerator DestroyCrateDelayed() { yield return (object)new WaitForSeconds(despawnDelay); if (Object.op_Implicit((Object)(object)m_landingTarget)) { SpawnManager.Despawn(m_landingTarget); } RemoveCrate(); } private IEnumerator DestroyCrateWhenPickedUp(DebrisObject spawned) { while (Object.op_Implicit((Object)(object)spawned)) { yield return (object)new WaitForSeconds(0.25f); } RemoveCrate(); } public void RemoveCrate() { if (Object.op_Implicit((Object)(object)m_landingTarget)) { SpawnManager.Despawn(m_landingTarget); } m_landingTarget = null; if ((Object)(object)m_parentRoom.ExtantEmergencyCrate == (Object)(object)((Component)this).gameObject) { m_parentRoom.ExtantEmergencyCrate = null; } ((BraveBehaviour)this).spriteAnimator.Play(crateDisappearAnimationName); } public void ClearLandingTarget() { if (Object.op_Implicit((Object)(object)m_landingTarget)) { SpawnManager.Despawn(m_landingTarget); } m_landingTarget = null; } } private static GameObject simplerCratePrefab; public static SimplerCrateBehaviour SpawnSupplyDrop(Vector2 position, int lootIDToSpawn = -1, float crateDespawnDelay = -1f, bool preventAutoDespawn = false) { //IL_00de: Unknown result type (might be due to invalid IL or missing references) //IL_00e3: Unknown result type (might be due to invalid IL or missing references) //IL_00ef: 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_0111: 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_0029: Expected O, but got Unknown if ((Object)(object)simplerCratePrefab == (Object)null) { GameObject val = (GameObject)BraveResources.Load("EmergencyCrate", ".prefab"); GameObject val2 = FakePrefabExtensions.InstantiateAndFakeprefab(val); EmergencyCrateController component = val2.GetComponent(); SimplerCrateBehaviour simplerCrateBehaviour = val2.AddComponent(); simplerCrateBehaviour.driftAnimationName = component.driftAnimationName; simplerCrateBehaviour.landedAnimationName = component.landedAnimationName; simplerCrateBehaviour.chuteLandedAnimationName = component.chuteLandedAnimationName; simplerCrateBehaviour.crateDisappearAnimationName = component.crateDisappearAnimationName; simplerCrateBehaviour.chuteAnimator = component.chuteAnimator; simplerCrateBehaviour.landingTargetSprite = component.landingTargetSprite; Object.Destroy((Object)(object)component); simplerCratePrefab = val2; } GameObject val3 = Object.Instantiate(simplerCratePrefab); SimplerCrateBehaviour component2 = val3.GetComponent(); component2.easyLootID = lootIDToSpawn; component2.despawnDelay = crateDespawnDelay; component2.preventAutoDespawn = preventAutoDespawn; component2.Trigger(new Vector3(-5f, -5f, -5f), new Vector3(position.x + 15f, position.y + 15f, 15f), Vector3Extensions.GetAbsoluteRoom(position)); Vector3Extensions.GetAbsoluteRoom(position).ExtantEmergencyCrate = val3; return component2; } } public class Goggles : PassiveItem { private float LastCurse; public StatModifier Coolness; public static void Init() { //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_000e: Expected O, but got Unknown //IL_0050: Unknown result type (might be due to invalid IL or missing references) string text = "Goggles"; GameObject val = new GameObject(text); Goggles goggles = val.AddComponent(); tk2dSpriteCollectionData item_Collection = StaticCollections.Item_Collection; ItemBuilder.AddSpriteToObjectAssetbundle(text, item_Collection.GetSpriteIdByName("googles"), item_Collection, val); string text2 = "OSHA Certified"; string text3 = "Curse now also grants some Coolness.\n\nOf great sentimental value.\nAlso acid resistant, but only useful for your eyes."; ItemBuilder.SetupItem((PickupObject)(object)goggles, text2, text3, "tdh"); ((PickupObject)goggles).quality = (ItemQuality)(-50); ((PickupObject)goggles).CanBeDropped = false; ((PickupObject)goggles).PreventStartingOwnerFromDropping = true; ItemBuilder.AddPassiveStatModifier((PickupObject)(object)goggles, (StatType)14, 1f, (ModifyMethod)0); } public override void Update() { //IL_00b0: 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_00c4: Unknown result type (might be due to invalid IL or missing references) //IL_00c9: Unknown result type (might be due to invalid IL or missing references) //IL_00ce: Unknown result type (might be due to invalid IL or missing references) //IL_0120: Unknown result type (might be due to invalid IL or missing references) //IL_012f: 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_01ba: Unknown result type (might be due to invalid IL or missing references) //IL_01c9: 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_01d3: Unknown result type (might be due to invalid IL or missing references) //IL_01d8: Unknown result type (might be due to invalid IL or missing references) //IL_022a: Unknown result type (might be due to invalid IL or missing references) //IL_0239: Unknown result type (might be due to invalid IL or missing references) //IL_023e: Unknown result type (might be due to invalid IL or missing references) //IL_0243: Unknown result type (might be due to invalid IL or missing references) //IL_0248: 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_0296: 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_029d: Unknown result type (might be due to invalid IL or missing references) //IL_02aa: Unknown result type (might be due to invalid IL or missing references) //IL_02ac: Unknown result type (might be due to invalid IL or missing references) //IL_02b6: Expected O, but got Unknown ((PassiveItem)this).Update(); if (!Object.op_Implicit((Object)(object)((PassiveItem)this).Owner)) { return; } float statValue = ((PassiveItem)this).Owner.stats.GetStatValue((StatType)14); if (LastCurse != statValue) { if (statValue > LastCurse) { AkSoundEngine.PostEvent("Play_OBJ_compass_point_01", ((Component)((PassiveItem)this).Owner).gameObject); PickupObject byId = PickupObjectDatabase.GetById(577); SpawnManager.SpawnVFX(((Gun)((byId is Gun) ? byId : null)).DefaultModule.projectiles[0].hitEffects.enemy.effects[0].effects[0].effect, Vector2.op_Implicit(((BraveBehaviour)((PassiveItem)this).Owner).sprite.WorldTopCenter + new Vector2(0.25f, -0.5f)), Quaternion.identity); PickupObject byId2 = PickupObjectDatabase.GetById(577); SpawnManager.SpawnVFX(((Gun)((byId2 is Gun) ? byId2 : null)).DefaultModule.projectiles[0].hitEffects.enemy.effects[0].effects[0].effect, Vector2.op_Implicit(((BraveBehaviour)((PassiveItem)this).Owner).sprite.WorldTopCenter + new Vector2(0.25f, -0.5f)), Quaternion.identity); } if (statValue < LastCurse) { AkSoundEngine.PostEvent("Play_WPN_spirit_impact_01", ((Component)((PassiveItem)this).Owner).gameObject); PickupObject byId3 = PickupObjectDatabase.GetById(334); SpawnManager.SpawnVFX(((Gun)((byId3 is Gun) ? byId3 : null)).DefaultModule.projectiles[0].hitEffects.enemy.effects[0].effects[0].effect, Vector2.op_Implicit(((BraveBehaviour)((PassiveItem)this).Owner).sprite.WorldTopCenter + new Vector2(0.25f, -0.5f)), Quaternion.identity); PickupObject byId4 = PickupObjectDatabase.GetById(334); SpawnManager.SpawnVFX(((Gun)((byId4 is Gun) ? byId4 : null)).DefaultModule.projectiles[0].hitEffects.enemy.effects[0].effects[0].effect, Vector2.op_Implicit(((BraveBehaviour)((PassiveItem)this).Owner).sprite.WorldTopCenter + new Vector2(-0.25f, -0.5f)), Quaternion.identity); } LastCurse = statValue; if (((PassiveItem)this).Owner.ownerlessStatModifiers.Contains(Coolness)) { ((PassiveItem)this).Owner.ownerlessStatModifiers.Remove(Coolness); } Coolness = new StatModifier { statToBoost = (StatType)4, amount = statValue * 1.5f, modifyType = (ModifyMethod)0 }; ((PassiveItem)this).Owner.ownerlessStatModifiers.Add(Coolness); ((PassiveItem)this).Owner.stats.RecalculateStats(((PassiveItem)this).Owner, true, true); } } public override void Pickup(PlayerController player) { ((PassiveItem)this).Pickup(player); } public override DebrisObject Drop(PlayerController player) { DebrisObject result = ((PassiveItem)this).Drop(player); if (((PassiveItem)this).Owner.ownerlessStatModifiers.Contains(Coolness)) { ((PassiveItem)this).Owner.ownerlessStatModifiers.Remove(Coolness); } LastCurse = -1f; return result; } public override void OnDestroy() { if ((Object)(object)((PassiveItem)this).Owner != (Object)null && ((PassiveItem)this).Owner.ownerlessStatModifiers.Contains(Coolness)) { ((PassiveItem)this).Owner.ownerlessStatModifiers.Remove(Coolness); } ((PassiveItem)this).OnDestroy(); } } public class BuffToJammedEnemies : MonoBehaviour { public Projectile Projectile; public void Start() { Projectile projectile = Projectile; projectile.BlackPhantomDamageMultiplier *= 1.5f; } } public class PlasmaPistol : GunBehaviour { public static void Add() { //IL_0111: Unknown result type (might be due to invalid IL or missing references) //IL_011d: 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_01a1: Unknown result type (might be due to invalid IL or missing references) //IL_01c9: 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_0396: 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_03ac: Unknown result type (might be due to invalid IL or missing references) //IL_0403: Unknown result type (might be due to invalid IL or missing references) //IL_042d: Unknown result type (might be due to invalid IL or missing references) //IL_045d: Unknown result type (might be due to invalid IL or missing references) //IL_0464: Expected O, but got Unknown //IL_048a: Unknown result type (might be due to invalid IL or missing references) //IL_04f7: Unknown result type (might be due to invalid IL or missing references) Gun val = Databases.Items.NewGun("Plasma Pistol", "plasmapistol"); Game.Items.Rename("outdated_gun_mods:plasma_pistol", "tdh:plasma_pistol"); ((Component)val).gameObject.AddComponent(); GunExt.SetShortDescription((PickupObject)(object)val, "From Another Place"); GunExt.SetLongDescription((PickupObject)(object)val, "A standard edition weapon, from another dimension!\n\nSoftens the Jammed."); GunInt.SetupSpritePrebaked(val, StaticCollections.Weapon_Collection, "ellerygun2_idle_001", (string)null); ((BraveBehaviour)val).spriteAnimator.Library = StaticCollections.Weapon_Animation; ((BraveBehaviour)val).sprite.SortingOrder = 1; val.reloadAnimation = "plasmapistol2_reload"; val.idleAnimation = "plasmapistol2_idle"; val.shootAnimation = "plasmapistol2_fire"; StaticCollections.Weapon_Animation.GetClipByName("plasmapistol2_reload").frames[10].eventAudio = "Play_BOSS_dragun_throw_01"; StaticCollections.Weapon_Animation.GetClipByName("plasmapistol2_reload").frames[10].triggerEvent = true; PickupObject byId = PickupObjectDatabase.GetById(56); GunExt.AddProjectileModuleFrom(val, (Gun)(object)((byId is Gun) ? byId : null), true, false); ref string gunSwitchGroup = ref val.gunSwitchGroup; PickupObject byId2 = PickupObjectDatabase.GetById(89); gunSwitchGroup = ((Gun)((byId2 is Gun) ? byId2 : null)).gunSwitchGroup; val.DefaultModule.shootStyle = (ShootStyle)4; val.DefaultModule.sequenceStyle = (ProjectileSequenceStyle)0; val.reloadTime = 1.2f; val.DefaultModule.ammoCost = 1; val.DefaultModule.cooldownTime = 0.35f; val.DefaultModule.numberOfShotsInClip = 12; val.SetBaseMaxAmmo(600); val.InfiniteAmmo = true; ((PickupObject)val).quality = (ItemQuality)(-50); val.DefaultModule.angleVariance = 13f; val.DefaultModule.burstShotCount = 2; val.DefaultModule.burstCooldownTime = 0.033f; val.gunClass = (GunClass)55; ((PickupObject)val).PreventStartingOwnerFromDropping = true; PickupObject byId3 = PickupObjectDatabase.GetById(156); Gun val2 = (Gun)(object)((byId3 is Gun) ? byId3 : null); val.DefaultModule.ammoType = val2.DefaultModule.ammoType; val.DefaultModule.customAmmoType = val2.DefaultModule.customAmmoType; Projectile val3 = Object.Instantiate(val.DefaultModule.projectiles[0]); ((Component)val3).gameObject.SetActive(false); FakePrefab.MarkAsFakePrefab(((Component)val3).gameObject); Object.DontDestroyOnLoad((Object)(object)val3); val.DefaultModule.projectiles[0] = val3; val3.baseData.damage = 5.125f; ProjectileData baseData = val3.baseData; baseData.speed *= 1.3f; val3.shouldRotate = true; val3.pierceMinorBreakables = true; ref string objectImpactEventName = ref val3.objectImpactEventName; PickupObject byId4 = PickupObjectDatabase.GetById(577); objectImpactEventName = ((Gun)((byId4 is Gun) ? byId4 : null)).DefaultModule.projectiles[0].objectImpactEventName; ref string enemyImpactEventName = ref val3.enemyImpactEventName; PickupObject byId5 = PickupObjectDatabase.GetById(577); enemyImpactEventName = ((Gun)((byId5 is Gun) ? byId5 : null)).DefaultModule.projectiles[0].enemyImpactEventName; ref ProjectileImpactVFXPool hitEffects = ref val3.hitEffects; PickupObject byId6 = PickupObjectDatabase.GetById(577); hitEffects = ((Gun)((byId6 is Gun) ? byId6 : null)).DefaultModule.projectiles[0].hitEffects; BuffToJammedEnemies buffToJammedEnemies = ((Component)val3).gameObject.AddComponent(); buffToJammedEnemies.Projectile = val3; ((BraveBehaviour)val3).sprite.usesOverrideMaterial = true; ((BraveBehaviour)((BraveBehaviour)val3).sprite).renderer.material.shader = ShaderCache.Acquire("Brave/LitTk2dCustomFalloffTintableTiltedCutoutEmissive"); ((BraveBehaviour)((BraveBehaviour)val3).sprite).renderer.material.EnableKeyword("BRIGHTNESS_CLAMP_ON"); ((BraveBehaviour)((BraveBehaviour)val3).sprite).renderer.material.SetFloat("_EmissivePower", 9f); ((BraveBehaviour)((BraveBehaviour)val3).sprite).renderer.material.SetFloat("_EmissiveColorPower", 0.5f); val.AddGlowShaderToGun(new Color32(byte.MaxValue, (byte)143, (byte)206, byte.MaxValue), 3, 3); val.carryPixelOffset = new IntVector2(5, -2); ProjectileBuilders.SetProjectileCollisionRight(val3, "ellerygun_proj_001", StaticCollections.Projectile_Collection, 9, 4, false, (Anchor)4, (int?)null, (int?)null, true, false, (int?)null, (int?)null, (Projectile)null); val.muzzleOffset = Toolbox.GenerateTransformPoint(((Component)val).gameObject, new Vector2(0.875f, 0.5f), "muzzle_point").transform; val.barrelOffset = Toolbox.GenerateTransformPoint(((Component)val).gameObject, new Vector2(0.875f, 0.5f), "barrel_point").transform; Databases.Items.Add((PickupObject)(object)val, false, "ANY"); GameObject val4 = new GameObject("LightObj"); FakePrefab.MarkAsFakePrefab(val4); val4.transform.parent = ((BraveBehaviour)val).transform; Light val5 = val4.AddComponent(); val5.color = Color.magenta; val5.range = 5f; val5.type = (LightType)3; val5.colorTemperature = 0.1f; val5.intensity = 10f; val.baseLightIntensity = 100f; val.light = val5; ref VFXPool muzzleFlashEffects = ref val.muzzleFlashEffects; PickupObject byId7 = PickupObjectDatabase.GetById(61); muzzleFlashEffects = ((Gun)((byId7 is Gun) ? byId7 : null)).muzzleFlashEffects; val.DefaultModule.ammoType = (AmmoType)14; ref string customAmmoType = ref val.DefaultModule.customAmmoType; PickupObject byId8 = PickupObjectDatabase.GetById(593); customAmmoType = ((Gun)((byId8 is Gun) ? byId8 : null)).DefaultModule.customAmmoType; } } public static class CrateExtensions { public static SupplyDropDoer.SimplerCrateBehaviour TurnIntoSimplerCrate(this EmergencyCrateController self) { GameObject gameObject = ((Component)self).gameObject; if ((Object)(object)gameObject != (Object)null) { SupplyDropDoer.SimplerCrateBehaviour simplerCrateBehaviour = gameObject.AddComponent(); simplerCrateBehaviour.driftAnimationName = self.driftAnimationName; simplerCrateBehaviour.landedAnimationName = self.landedAnimationName; simplerCrateBehaviour.chuteLandedAnimationName = self.chuteLandedAnimationName; simplerCrateBehaviour.crateDisappearAnimationName = self.crateDisappearAnimationName; simplerCrateBehaviour.chuteAnimator = self.chuteAnimator; simplerCrateBehaviour.landingTargetSprite = self.landingTargetSprite; Object.Destroy((Object)(object)self); return simplerCrateBehaviour; } return null; } } public static class Toolbox { public static VFXObject CopyFields(VFXObject sample2) where T : VFXObject { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0007: Expected O, but got Unknown //IL_0009: Unknown result type (might be due to invalid IL or missing references) //IL_000e: Unknown result type (might be due to invalid IL or missing references) VFXObject val = new VFXObject(); val.alignment = sample2.alignment; val.attached = sample2.attached; val.destructible = sample2.destructible; val.effect = sample2.effect; val.orphaned = sample2.orphaned; val.persistsOnDeath = sample2.persistsOnDeath; val.usesZHeight = sample2.usesZHeight; return val; } public static void NotifyCustom(string header, string text, string spriteName, tk2dSpriteCollectionData CollectionData, NotificationColor color = (NotificationColor)0, bool forceSingleLine = false) { //IL_0015: Unknown result type (might be due to invalid IL or missing references) GameUIRoot.Instance.notificationController.DoCustomNotification(header, text, CollectionData, CollectionData.GetSpriteIdByName(spriteName), color, false, forceSingleLine); } public static GameObject GenerateTransformPoint(GameObject attacher, Vector2 attachpoint, string name = "shootPoint") { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0008: Expected O, but got Unknown //IL_0020: Unknown result type (might be due to invalid IL or missing references) //IL_0021: Unknown result type (might be due to invalid IL or missing references) GameObject val = new GameObject(name); val.transform.parent = attacher.transform; val.transform.position = Vector2.op_Implicit(attachpoint); return ((Component)attacher.transform.Find(name)).gameObject; } public static void AddGlowShaderToGun(this Gun self, Color32 glowColor, int glowstrength, int colorGlowStrength = 0) { //IL_001a: Unknown result type (might be due to invalid IL or missing references) //IL_0020: Expected O, but got Unknown //IL_0026: 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_00bf: Unknown result type (might be due to invalid IL or missing references) //IL_00c5: Expected O, but got Unknown Material val = new Material(((BraveBehaviour)((BraveBehaviour)EnemyDatabase.GetOrLoadByName("GunNut")).sprite).renderer.material); val.SetColor("_EmissiveColor", Color32.op_Implicit(glowColor)); val.SetFloat("_EmissiveColorPower", (float)colorGlowStrength); val.SetFloat("_EmissivePower", (float)glowstrength); val.SetFloat("_EmissiveThresholdSensitivity", 0.2f); MeshRenderer component = ((Component)self).GetComponent(); if (!Object.op_Implicit((Object)(object)component)) { return; } Material[] array = ((Renderer)component).sharedMaterials; for (int i = 0; i < array.Length; i++) { if ((Object)(object)array[i].shader == (Object)(object)val) { return; } } Array.Resize(ref array, array.Length + 1); Material val2 = new Material(val); val2.SetTexture("_MainTex", array[0].GetTexture("_MainTex")); array[^1] = val2; ((Renderer)component).sharedMaterials = array; } } [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInPlugin("somebunny.etg.ellerymod", "+ The Dimension Hopper +", "1.0.2")] public class ElleryModModule : BaseUnityPlugin { public const string GUID = "somebunny.etg.ellerymod"; public const string NAME = "+ The Dimension Hopper +"; public const string VERSION = "1.0.2"; public const string TEXT_COLOR = "#d000c8"; public static string FilePathFolder; public static CustomCharacterData characterDataEllery; public static PlayableCharacters Ellery; public void Start() { //IL_0006: Unknown result type (might be due to invalid IL or missing references) new Harmony("somebunny.etg.ellerymod").PatchAll(); ETGModMainBehaviour.WaitForGameManagerStart((Action)GMStart); } public void GMStart(GameManager g) { //IL_0077: Unknown result type (might be due to invalid IL or missing references) //IL_0087: Unknown result type (might be due to invalid IL or missing references) //IL_00a2: 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_00b6: Unknown result type (might be due to invalid IL or missing references) //IL_00c8: Unknown result type (might be due to invalid IL or missing references) //IL_00cd: Unknown result type (might be due to invalid IL or missing references) //IL_00dc: Unknown result type (might be due to invalid IL or missing references) //IL_00fc: Expected O, but got Unknown //IL_00fc: Expected O, but got Unknown //IL_026c: Unknown result type (might be due to invalid IL or missing references) //IL_0271: 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) FilePathFolder = ETGMod.FolderPath((BaseUnityPlugin)(object)this); StaticCollections.InitCollections(); PlasmaPistol.Add(); DimensionalAnchor.Init(); Goggles.Init(); ToolsCharApi.EnableDebugLogging = true; CustomCharacterData data = Loader.BuildCharacterBundle("DimensionHopper/Ellery", StaticCollections.Ellery_Character_Collection, StaticCollections.assetBundle.LoadAsset("EllerySpriteAnimation").GetComponent(), StaticCollections.Ellery_Character_Collection, StaticCollections.assetBundle.LoadAsset("EllerySpriteAnimation").GetComponent(), "somebunny.etg.ellery", new Vector3(32.125f, 27.5f), false, new Vector3(32.625f, 28.5f), false, false, false, true, false, new GlowMatDoer(Color32.op_Implicit(new Color32((byte)121, (byte)234, byte.MaxValue, byte.MaxValue)), 14f, 10f), new GlowMatDoer(Color32.op_Implicit(new Color32((byte)0, byte.MaxValue, (byte)54, byte.MaxValue)), 5f, 3f), 0, false, "", StaticCollections.assetBundle.LoadAsset("ellery_bosscard_001")); characterDataEllery = data; data.pathForSprites = "DimensionHopper/Ellery"; Tuple value = CharacterBuilder.storedCharacters.Where((KeyValuePair> self) => self.Value.First == data).FirstOrDefault().Value; value.First.idleDoer.onSelectedAnimation = "select_choose"; value.First.idleDoer.coreIdleAnimation = "select_idle"; value.First.idleDoer.idleMax = 10000f; value.First.idleDoer.idleMin = 4000f; value.First.idleDoer.EeveeTex = null; value.First.idleDoer.IsEevee = false; value.First.idleDoer.AnimationLibraries = (tk2dSpriteAnimation[])(object)new tk2dSpriteAnimation[0]; value.First.idleDoer.phases = null; PlayerController component = value.Second.GetComponent(); List obj = new List { StaticCollections.assetBundle.LoadAsset("ellery_bosscard_001"), StaticCollections.assetBundle.LoadAsset("ellery_bosscard_002"), StaticCollections.assetBundle.LoadAsset("ellery_bosscard_003"), StaticCollections.assetBundle.LoadAsset("ellery_bosscard_004") }; List list = obj; component.BosscardSprites = obj; List list2 = list; data.animator.defaultClipId = 19; Ellery = ETGModCompatibility.ExtendEnum("somebunny.etg.ellerymod", "Ellery"); GameStatsManager.Instance.SetCharacterSpecificFlag(ETGModCompatibility.ExtendEnum("somebunny.etg.ellerymod", characterDataEllery.nameShort), (CharacterSpecificGungeonFlags)0, true); Log("+ The Dimension Hopper + v1.0.2 started successfully.", "#d000c8"); } public static void Log(string text, string color = "#FFFFFF") { ETGModConsole.Log((object)("" + text + ""), false); } } internal class AssetBundleLoader { public static AssetBundle LoadAssetBundleFromLiterallyAnywhere(string FilePath, string name, bool logs = false) { AssetBundle result = null; string text = name + GetPlatformBundleExtension(); if (File.Exists(FilePath + "/" + text)) { try { result = AssetBundle.LoadFromFile(Path.Combine(FilePath, text)); if (logs) { ETGModConsole.Log((object)"Successfully loaded assetbundle!", false); } } catch (Exception ex) { ETGModConsole.Log((object)"Failed loading asset bundle from file.", false); ETGModConsole.Log((object)ex.ToString(), false); } } else { ETGModConsole.Log((object)"AssetBundle NOT FOUND!", false); } return result; } private static string GetPlatformBundleExtension() { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0008: Invalid comparison between Unknown and I4 //IL_0016: Unknown result type (might be due to invalid IL or missing references) //IL_001c: Invalid comparison between Unknown and I4 if ((int)Application.platform == 13) { return "-linux"; } if ((int)Application.platform == 1) { return "-macos"; } return "-windows"; } } public static class StaticCollections { public static AssetBundle assetBundle; public static tk2dSpriteCollectionData Ellery_Character_Collection; public static tk2dSpriteCollectionData Weapon_Collection; public static tk2dSpriteCollectionData Item_Collection; public static tk2dSpriteCollectionData Projectile_Collection; public static tk2dSpriteAnimation Weapon_Animation; public static Texture2D NebulaTexture; public static void InitCollections() { assetBundle = AssetBundleLoader.LoadAssetBundleFromLiterallyAnywhere(ElleryModModule.FilePathFolder, "thedimensionhopper"); Ellery_Character_Collection = DoFastSetup(assetBundle, "EllerySpriteCollection", "ellery material.mat"); if ((Object)(object)Ellery_Character_Collection == (Object)null) { ETGModConsole.Log((object)"Ellery_Character_Collection is NULL", false); } Weapon_Collection = DoFastSetup(assetBundle, "WeaponCollection", "weapon material.mat"); if ((Object)(object)Weapon_Collection == (Object)null) { ETGModConsole.Log((object)"Weapon_Collection is NULL", false); } Item_Collection = DoFastSetup(assetBundle, "ItemCollection", "item material.mat"); if ((Object)(object)Item_Collection == (Object)null) { ETGModConsole.Log((object)"Item_Collection is NULL", false); } Projectile_Collection = DoFastSetup(assetBundle, "ProjectileCollection", "projectile material.mat"); if ((Object)(object)Projectile_Collection == (Object)null) { ETGModConsole.Log((object)"Projectile_Collection is NULL", false); } Weapon_Animation = assetBundle.LoadAsset("WeaponAnimation").GetComponent(); NebulaTexture = assetBundle.LoadAsset("nebula_reducednoise"); } public static void SetupSpritesFromAssembly(Assembly asmb, string path) { //IL_01b6: Unknown result type (might be due to invalid IL or missing references) //IL_01bf: Unknown result type (might be due to invalid IL or missing references) //IL_01c4: Unknown result type (might be due to invalid IL or missing references) //IL_01e3: Unknown result type (might be due to invalid IL or missing references) if ((object)asmb == null) { return; } path = path.Replace("/", ".").Replace("\\", "."); if (!path.EndsWith(".")) { path += "."; } tk2dSpriteCollectionData weapon_Collection = Weapon_Collection; List list = new List(); string[] manifestResourceNames = asmb.GetManifestResourceNames(); string[] array = manifestResourceNames; foreach (string text in array) { if (!text.StartsWith(path) || text.Length <= path.Length) { continue; } string[] array2 = text.Substring(path.LastIndexOf(".") + 1).Split(new char[1] { '.' }); if (array2.Length == 3) { string text2 = array2[2]; if (text2.ToLowerInvariant() == "json" || text2.ToLowerInvariant() == "jtk2d") { list.Add(text); } } } foreach (string item in list) { string[] array3 = item.Substring(path.LastIndexOf(".") + 1).Split(new char[1] { '.' }); string text3 = array3[0]; string text4 = array3[1]; if ((((Object)(object)weapon_Collection != (Object)null) ? weapon_Collection.spriteDefinitions : null) == null || weapon_Collection.Count <= 0) { continue; } int spriteIdByName = weapon_Collection.GetSpriteIdByName(text4, -1); if (spriteIdByName <= -1) { continue; } using Stream stream = asmb.GetManifestResourceStream(item); AssetSpriteData val = default(AssetSpriteData); try { val = JSONHelper.ReadJSON(stream); } catch { ETGModConsole.Log((object)("Error: invalid json at project path " + item), false); goto end_IL_01b3; } weapon_Collection.SetAttachPoints(spriteIdByName, val.attachPoints); end_IL_01b3:; } } public static tk2dSpriteCollectionData DoFastSetup(AssetBundle bundle, string CollectionName, string MaterialName) { tk2dSpriteCollectionData component = bundle.LoadAsset(CollectionName).GetComponent(); Material val = bundle.LoadAsset(MaterialName); Texture texture = val.GetTexture("_MainTex"); texture.filterMode = (FilterMode)0; val.SetTexture("_MainTex", texture); component.material = val; component.materials = (Material[])(object)new Material[1] { val }; component.materialInsts = (Material[])(object)new Material[1] { val }; tk2dSpriteDefinition[] spriteDefinitions = component.spriteDefinitions; foreach (tk2dSpriteDefinition val2 in spriteDefinitions) { val2.material = component.materials[0]; val2.materialInst = component.materials[0]; val2.materialId = 0; } return component; } } }