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 RepurposedCraterBoss v1.0.1
plugins/Risky_Sleeps-RepurposedCraterBoss/RepurposedCraterBoss.dll
Decompiled 3 months agousing System; using System.Collections; using System.Collections.Generic; using System.Diagnostics; using System.IO; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using System.Security; using System.Security.Permissions; using BepInEx; using BepInEx.Configuration; using BepInEx.Logging; using EntityStates; using R2API; using RepurposedCraterBoss.ModdedEntityStates.AlloyCamera; using RepurposedCraterBoss.ModdedEntityStates.BossEncounter; using RoR2; using RoR2.ContentManagement; using RoR2BepInExPack.GameAssetPaths.Version_1_39_0; using UnityEngine; using UnityEngine.AddressableAssets; using UnityEngine.Networking; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)] [assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")] [assembly: AssemblyCompany("RepurposedCraterBoss")] [assembly: AssemblyConfiguration("Release")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0")] [assembly: AssemblyProduct("RepurposedCraterBoss")] [assembly: AssemblyTitle("RepurposedCraterBoss")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.0.0.0")] [module: UnverifiableCode] namespace RepurposedCraterBoss { public class ContentProvider : IContentPackProvider { public static GameObject alloyHunterBossEncounterObject; private readonly ContentPack _contentPack = new ContentPack(); public string identifier => "viliger.RepurposedCraterBossPlugin.ContentPack"; public IEnumerator FinalizeAsync(FinalizeAsyncArgs args) { args.ReportProgress(1f); yield break; } public IEnumerator GenerateContentPackAsync(GetContentPackAsyncArgs args) { ContentPack.Copy(_contentPack, args.output); args.ReportProgress(1f); yield break; } public IEnumerator LoadStaticContentAsync(LoadStaticContentAsyncArgs args) { _contentPack.identifier = identifier; string path = Path.Combine(Path.GetDirectoryName(typeof(ContentProvider).Assembly.Location), "AssetBundles"); AssetBundle assetbundle = null; yield return LoadAssetBundle(Path.Combine(path, "alloyhunterboss"), args.progressReceiver, delegate(AssetBundle resultAssetBundle) { assetbundle = resultAssetBundle; }); alloyHunterBossEncounterObject = CreateAlloyHunterBossEncounter(assetbundle.LoadAsset<GameObject>("Assets/AlloyHunterCamera/AlloyHunterBossEncounter.prefab")); Listening.cameraPrefab = CreateAlloyCamera(assetbundle.LoadAsset<GameObject>("Assets/AlloyHunterCamera/AlloyCamera.prefab")); _contentPack.bodyPrefabs.Add((GameObject[])(object)new GameObject[1] { Listening.cameraPrefab }); _contentPack.networkedObjectPrefabs.Add((GameObject[])(object)new GameObject[1] { alloyHunterBossEncounterObject }); _contentPack.entityStateTypes.Add(new Type[2] { typeof(Listening), typeof(DeathState) }); } private IEnumerator LoadAssetBundle(string assetBundleFullPath, IProgress<float> progress, Action<AssetBundle> onAssetBundleLoaded) { AssetBundleCreateRequest assetBundleCreateRequest = AssetBundle.LoadFromFileAsync(assetBundleFullPath); while (!((AsyncOperation)assetBundleCreateRequest).isDone) { progress.Report(((AsyncOperation)assetBundleCreateRequest).progress); yield return null; } onAssetBundleLoaded(assetBundleCreateRequest.assetBundle); } private GameObject CreateAlloyHunterBossEncounter(GameObject encounterPrefab) { //IL_0021: 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_008f: Unknown result type (might be due to invalid IL or missing references) //IL_0094: 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_00bd: 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_00f4: Unknown result type (might be due to invalid IL or missing references) //IL_00f6: Unknown result type (might be due to invalid IL or missing references) //IL_0131: Unknown result type (might be due to invalid IL or missing references) //IL_0136: Unknown result type (might be due to invalid IL or missing references) //IL_0169: Unknown result type (might be due to invalid IL or missing references) //IL_016e: Unknown result type (might be due to invalid IL or missing references) //IL_017d: Unknown result type (might be due to invalid IL or missing references) //IL_0182: Unknown result type (might be due to invalid IL or missing references) Transform val = encounterPrefab.transform.Find("ExplicitSpawnPosition"); val.position = new Vector3(-101.76f, 22.5f, -44.38f); Transform val2 = encounterPrefab.transform.Find("ExplicitDropPosition"); val2.position = new Vector3(-101.76f, 7.3f, -44.38f); encounterPrefab.GetOrAddComponent<NetworkIdentity>(); encounterPrefab.GetOrAddComponent<CombatSquad>().grantBonusHealthInMultiplayer = true; CharacterSpawnCard spawnCard = (RepurposedCraterBossPlugin.UseAWU.Value ? Addressables.LoadAssetAsync<CharacterSpawnCard>((object)RoR2_Base_RoboBallBoss.cscSuperRoboBallBoss_asset).WaitForCompletion() : Addressables.LoadAssetAsync<CharacterSpawnCard>((object)RoR2_DLC3_VultureHunter.cscVultureHunter_asset).WaitForCompletion()); ScriptedCombatEncounter orAddComponent = encounterPrefab.GetOrAddComponent<ScriptedCombatEncounter>(); orAddComponent.randomizeSeed = false; orAddComponent.seed = 111220251533uL; orAddComponent.teamIndex = (TeamIndex)2; orAddComponent.spawns = (SpawnInfo[])(object)new SpawnInfo[1] { new SpawnInfo { spawnCard = (SpawnCard)(object)spawnCard, explicitSpawnPosition = ((Component)val).transform, cullChance = 0f } }; orAddComponent.spawnOnStart = false; orAddComponent.grantUniqueBonusScaling = true; BossGroup orAddComponent2 = encounterPrefab.GetOrAddComponent<BossGroup>(); orAddComponent2.bossDropChance = 0f; orAddComponent2.dropPosition = ((Component)val2).transform; orAddComponent2.dropTable = (PickupDropTable)(object)Addressables.LoadAssetAsync<BasicPickupDropTable>((object)RoR2_Base_Common.dtTier3Item_asset).WaitForCompletion(); orAddComponent2.scaleRewardsByPlayerCount = true; orAddComponent2.shouldDisplayHealthBarOnHud = true; orAddComponent2.shouldCreateObjectiveEntry = true; EntityStateMachine orAddComponent3 = encounterPrefab.GetOrAddComponent<EntityStateMachine>(); orAddComponent3.initialStateType = new SerializableEntityStateType(typeof(Listening)); orAddComponent3.mainStateType = new SerializableEntityStateType(typeof(Listening)); PrefabAPI.RegisterNetworkPrefab(encounterPrefab); return encounterPrefab; } private GameObject CreateAlloyCamera(GameObject prefab) { //IL_008d: 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_00df: Unknown result type (might be due to invalid IL or missing references) //IL_00e4: Unknown result type (might be due to invalid IL or missing references) //IL_0101: 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_01a7: Unknown result type (might be due to invalid IL or missing references) //IL_01ac: Unknown result type (might be due to invalid IL or missing references) Transform val = prefab.transform.Find("ModelBase/mdlCamera"); Transform modelBaseTransform = prefab.transform.Find("ModelBase"); HurtBox val2 = ((Component)prefab.transform.Find("ModelBase/mdlCamera/Hurtbox")).gameObject.AddComponent<HurtBox>(); val2.isBullseye = true; prefab.AddComponent<NetworkIdentity>(); PseudoCharacterMotor orAddComponent = prefab.GetOrAddComponent<PseudoCharacterMotor>(); orAddComponent.mass = 100f; orAddComponent.needsIncreasedLandingHeight = true; prefab.GetOrAddComponent<SkillLocator>(); prefab.GetOrAddComponent<TeamComponent>().teamIndex = (TeamIndex)0; CharacterBody orAddComponent2 = prefab.GetOrAddComponent<CharacterBody>(); orAddComponent2.baseNameToken = "VILIGER_ALLOY_CAMERA"; orAddComponent2.bodyFlags = (BodyFlags)260; orAddComponent2.baseMaxHealth = 1f; HealthComponent orAddComponent3 = prefab.GetOrAddComponent<HealthComponent>(); orAddComponent3.dontShowHealthbar = true; val2.healthComponent = orAddComponent3; EntityStateMachine orAddComponent4 = prefab.GetOrAddComponent<EntityStateMachine>(); orAddComponent4.initialStateType = new SerializableEntityStateType(typeof(Idle)); orAddComponent4.mainStateType = new SerializableEntityStateType(typeof(Idle)); CharacterDeathBehavior orAddComponent5 = prefab.GetOrAddComponent<CharacterDeathBehavior>(); orAddComponent5.deathStateMachine = orAddComponent4; orAddComponent5.deathState = new SerializableEntityStateType(typeof(DeathState)); prefab.GetOrAddComponent<NetworkStateMachine>().stateMachines = (EntityStateMachine[])(object)new EntityStateMachine[1] { orAddComponent4 }; ModelLocator orAddComponent6 = prefab.GetOrAddComponent<ModelLocator>(); orAddComponent6.modelTransform = val; orAddComponent6.modelBaseTransform = modelBaseTransform; orAddComponent6.dontDetatchFromParent = true; orAddComponent6.noCorpse = true; orAddComponent6.dontReleaseModelOnDeath = true; GameObject gameObject = ((Component)val).gameObject; HurtBoxGroup orAddComponent7 = gameObject.GetOrAddComponent<HurtBoxGroup>(); orAddComponent7.hurtBoxes = (HurtBox[])(object)new HurtBox[1] { val2 }; orAddComponent7.mainHurtBox = val2; val2.hurtBoxGroup = orAddComponent7; gameObject.GetOrAddComponent<CharacterModel>().body = orAddComponent2; ((Renderer)((Component)prefab.transform.Find("ModelBase/mdlCamera/SolusCamera")).gameObject.GetComponent<MeshRenderer>()).material = Addressables.LoadAssetAsync<Material>((object)RoR2_Base_Common_TrimSheets.matTrimSheetAlien1BossEmission_mat).WaitForCompletion(); PrefabAPI.RegisterNetworkPrefab(prefab); return prefab; } } internal static class Log { private static ManualLogSource _logSource; internal static void Init(ManualLogSource logSource) { _logSource = logSource; } internal static void Debug(object data) { _logSource.LogDebug(data); } internal static void Error(object data) { _logSource.LogError(data); } internal static void Fatal(object data) { _logSource.LogFatal(data); } internal static void Info(object data) { _logSource.LogInfo(data); } internal static void Message(object data) { _logSource.LogMessage(data); } internal static void Warning(object data) { _logSource.LogWarning(data); } } [BepInPlugin("viliger.RepurposedCraterBossPlugin", "RepurposedCraterBossPlugin", "1.0.1")] public class RepurposedCraterBossPlugin : BaseUnityPlugin { public const string Author = "viliger"; public const string Name = "RepurposedCraterBossPlugin"; public const string Version = "1.0.1"; public const string GUID = "viliger.RepurposedCraterBossPlugin"; public const string LanguageFolder = "Language"; public static ConfigEntry<int> CamerasToDestroy; public static ConfigEntry<int> CamerasToSpawn; public static ConfigEntry<bool> UseAWU; private void Awake() { //IL_0012: Unknown result type (might be due to invalid IL or missing references) //IL_001c: Expected O, but got Unknown Log.Init(((BaseUnityPlugin)this).Logger); ContentManager.collectContentPackProviders += new CollectContentPackProvidersDelegate(ContentManager_collectContentPackProviders); Language.collectLanguageRootFolders += Language_collectLanguageRootFolders; Stage.onStageStartGlobal += Stage_onStageStartGlobal; CamerasToDestroy = ((BaseUnityPlugin)this).Config.Bind<int>("Repurposed Crater Boss", "Cameras To Destroy", 6, "Number of cameras to destroy to spawn the boss."); CamerasToSpawn = ((BaseUnityPlugin)this).Config.Bind<int>("Repurposed Crater Boss", "Cameras To Spawn", 12, "Number of cameras that will be spawned on the stage."); UseAWU = ((BaseUnityPlugin)this).Config.Bind<bool>("Repurposed Crater Boss", "Spawn AWU", false, "Spawns AWU instead of Alloy Hunter."); } private void Language_collectLanguageRootFolders(List<string> folders) { folders.Add(Path.Combine(Path.GetDirectoryName(((BaseUnityPlugin)this).Info.Location), "Language")); } private void ContentManager_collectContentPackProviders(AddContentPackProviderDelegate addContentPackProvider) { addContentPackProvider.Invoke((IContentPackProvider)(object)new ContentProvider()); } private void Stage_onStageStartGlobal(Stage stage) { if (!(stage.sceneDef.cachedName == "repurposedcrater")) { return; } GameObject val = GameObject.Find("HOLDER: Toggle Groups/GROUP_ GoldChest"); if (!Object.op_Implicit((Object)(object)val)) { Log.Warning("Couldn't find \"HOLDER: Toggle Groups/GROUP_ GoldChest\" on repurposedcrater. Not doing anything..."); return; } for (int i = 0; i < val.transform.childCount; i++) { Transform child = val.transform.GetChild(i); ((Component)child).gameObject.SetActive(true); Transform val2 = ((Component)child).transform.Find("GoldChest"); if (Object.op_Implicit((Object)(object)val2)) { Object.Destroy((Object)(object)((Component)val2).gameObject); } } if (NetworkServer.active) { NetworkServer.Spawn(Object.Instantiate<GameObject>(ContentProvider.alloyHunterBossEncounterObject)); } } } public static class Utils { public static T GetOrAddComponent<T>(this GameObject gameObject) where T : Component { T result = default(T); if (!gameObject.TryGetComponent<T>(ref result)) { return gameObject.AddComponent<T>(); } return result; } } } namespace RepurposedCraterBoss.ModdedEntityStates.BossEncounter { public class Listening : EntityState { public struct PositionAndRotation { public Vector3 position; public Vector3 rotation; } public static float delayBeforeBeginningEncounter = 2f; public static GameObject cameraPrefab; public static PositionAndRotation[] cameraPositions = new PositionAndRotation[45] { new PositionAndRotation { position = new Vector3(-106.46f, 6.25f, -5.44f), rotation = Vector3.zero }, new PositionAndRotation { position = new Vector3(-87.36f, 9.57f, 28.02f), rotation = new Vector3(0f, 185.24216f, 0f) }, new PositionAndRotation { position = new Vector3(-96.49f, 5.8151374f, -82.76f), rotation = new Vector3(0f, 180f, 0f) }, new PositionAndRotation { position = new Vector3(-115.86f, 9.851197f, -115.9504f), rotation = Vector3.zero }, new PositionAndRotation { position = new Vector3(-53.01f, 64.36f, -192f), rotation = new Vector3(0f, 264.00134f, 0f) }, new PositionAndRotation { position = new Vector3(-49.95f, 86.05f, -123.11f), rotation = new Vector3(0f, 137.27098f, 0f) }, new PositionAndRotation { position = new Vector3(-37.82f, 87.25f, 59.89f), rotation = new Vector3(0f, 298.39673f, 0f) }, new PositionAndRotation { position = new Vector3(-182.07f, 95.12f, 60.48f), rotation = new Vector3(0f, 272.16983f, 0f) }, new PositionAndRotation { position = new Vector3(-237.61f, 89.82f, -49.07f), rotation = new Vector3(0f, 114.82716f, 0f) }, new PositionAndRotation { position = new Vector3(-127.91f, 66.54f, -66.94f), rotation = Vector3.zero }, new PositionAndRotation { position = new Vector3(-96.551895f, 67f, 11.643568f), rotation = new Vector3(0f, 170.95744f, 0f) }, new PositionAndRotation { position = new Vector3(-236.27f, 7.48f, -3.804f), rotation = new Vector3(0f, 338.59607f, 0f) }, new PositionAndRotation { position = new Vector3(-125.24f, 39.02f, -183.1f), rotation = new Vector3(0f, 246.22888f, 0f) }, new PositionAndRotation { position = new Vector3(-74.37372f, 52.052517f, 111.492805f), rotation = new Vector3(6.673094f, 36.21268f, 9.284662f) }, new PositionAndRotation { position = new Vector3(-140.23f, 101.30812f, 156.19176f), rotation = new Vector3(0f, 171.87086f, 0f) }, new PositionAndRotation { position = new Vector3(-250.7f, 111.75009f, 45.16f), rotation = Vector3.zero }, new PositionAndRotation { position = new Vector3(-257.36f, 117.85f, 10.92f), rotation = Vector3.zero }, new PositionAndRotation { position = new Vector3(-237.956f, 119.46f, 55.151f), rotation = new Vector3(0f, 175.3847f, 0f) }, new PositionAndRotation { position = new Vector3(-234.352f, 51.577f, -134.994f), rotation = new Vector3(0f, 119.49031f, 0f) }, new PositionAndRotation { position = new Vector3(-192.08f, 12.153609f, 90.15f), rotation = new Vector3(0f, 176.98672f, 0f) }, new PositionAndRotation { position = new Vector3(6.92f, 63.69187f, -38.62f), rotation = new Vector3(0f, 275.84613f, 0f) }, new PositionAndRotation { position = new Vector3(-13.716f, 63.535294f, -83.08f), rotation = Vector3.zero }, new PositionAndRotation { position = new Vector3(3.89f, 59.7472f, 28.1f), rotation = new Vector3(0f, 309.36496f, 0f) }, new PositionAndRotation { position = new Vector3(-92.83f, 65.43f, 108.99f), rotation = new Vector3(0f, 261.87573f, 0f) }, new PositionAndRotation { position = new Vector3(-3.87f, 8.485565f, -172f), rotation = new Vector3(0f, 316.88406f, 0f) }, new PositionAndRotation { position = new Vector3(-87.31f, 70.56766f, -78.63f), rotation = new Vector3(0f, 189.66772f, 0f) }, new PositionAndRotation { position = new Vector3(10.12f, 102.46655f, -90.48f), rotation = Vector3.zero }, new PositionAndRotation { position = new Vector3(-6.23f, 95.072975f, -25.87f), rotation = new Vector3(0f, 268.7272f, 0f) }, new PositionAndRotation { position = new Vector3(-13.34f, 18.412636f, -21.65403f), rotation = new Vector3(7.182824f, 231.34401f, 8.884359f) }, new PositionAndRotation { position = new Vector3(-27.65675f, 13.214622f, 29.467016f), rotation = new Vector3(341.29306f, 20.368748f, 350.32663f) }, new PositionAndRotation { position = new Vector3(-34.1f, 70.69f, 60.19f), rotation = new Vector3(0f, 89.62731f, 0f) }, new PositionAndRotation { position = new Vector3(-234.63f, 21.7f, 69.87f), rotation = new Vector3(0f, 173.97859f, 0f) }, new PositionAndRotation { position = new Vector3(-131.55351f, 51.340866f, -100.06823f), rotation = new Vector3(4.6581645f, 314.04672f, 4.795306f) }, new PositionAndRotation { position = new Vector3(-180.89798f, 54.333588f, -176.28987f), rotation = new Vector3(5.781952f, 231.71936f, 8.65082f) }, new PositionAndRotation { position = new Vector3(-28.333122f, 9.564346f, -83.79394f), rotation = new Vector3(0f, 357.31638f, 0f) }, new PositionAndRotation { position = new Vector3(-89.81f, 8.387001f, -121.62f), rotation = new Vector3(0f, 269.84332f, 0f) }, new PositionAndRotation { position = new Vector3(-100.91f, 13.0732f, 54.88f), rotation = new Vector3(0f, 257.05292f, 0f) }, new PositionAndRotation { position = new Vector3(-30.607563f, 5.882291f, -140.95206f), rotation = new Vector3(0f, 346.7502f, 0f) }, new PositionAndRotation { position = new Vector3(-213.69f, 75.20826f, 87.35f), rotation = new Vector3(0f, 125.6665f, 0f) }, new PositionAndRotation { position = new Vector3(-116.74f, 20.44f, 101.57f), rotation = new Vector3(0f, 290.6012f, 0f) }, new PositionAndRotation { position = new Vector3(-104.58812f, 24.43f, -144.85408f), rotation = new Vector3(0f, 312.26245f, 0f) }, new PositionAndRotation { position = new Vector3(-218.36f, 51.145203f, -105.57f), rotation = new Vector3(0f, 114.34585f, 0f) }, new PositionAndRotation { position = new Vector3(-15.02f, 72.120285f, 152.6f), rotation = new Vector3(0f, 293.23914f, 0f) }, new PositionAndRotation { position = new Vector3(-255.45f, 126.01523f, 143.16f), rotation = new Vector3(0f, 227.52072f, 0f) }, new PositionAndRotation { position = new Vector3(-245.28f, 56.32366f, -149.4f), rotation = new Vector3(0f, 339.61462f, 0f) } }; private List<GameObject> cameraList = new List<GameObject>(); private ScriptedCombatEncounter scriptedCombatEncounter; private bool hasRegisteredCameras; private int camerasToDestroy; private int previousDestroyedCameras; private bool beginEncounterCountdown; private float encounterCountdown; public static int camerasDestroyedToTriggerEncounter => RepurposedCraterBossPlugin.CamerasToDestroy.Value; public static int camerasCountToSpawn => RepurposedCraterBossPlugin.CamerasToSpawn.Value; public override void OnEnter() { //IL_005d: Unknown result type (might be due to invalid IL or missing references) //IL_0063: 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) ((EntityState)this).OnEnter(); scriptedCombatEncounter = ((EntityState)this).GetComponent<ScriptedCombatEncounter>(); camerasToDestroy = Mathf.Min(camerasDestroyedToTriggerEncounter, cameraPositions.Length); if (NetworkServer.active && Object.op_Implicit((Object)(object)cameraPrefab)) { Util.ShuffleArray<PositionAndRotation>(cameraPositions); for (int i = 0; i < Mathf.Min(camerasCountToSpawn, cameraPositions.Length); i++) { PositionAndRotation positionAndRotation = cameraPositions[i]; GameObject val = Object.Instantiate<GameObject>(cameraPrefab, positionAndRotation.position, Quaternion.Euler(positionAndRotation.rotation)); NetworkServer.Spawn(val); cameraList.Add(val); } hasRegisteredCameras = true; } } public override void FixedUpdate() { //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_0077: Expected O, but got Unknown //IL_009a: Unknown result type (might be due to invalid IL or missing references) //IL_009f: Unknown result type (might be due to invalid IL or missing references) //IL_00af: Expected O, but got Unknown //IL_00e8: Unknown result type (might be due to invalid IL or missing references) //IL_00f2: Expected O, but got Unknown ((EntityState)this).FixedUpdate(); if (!NetworkServer.active || !hasRegisteredCameras) { return; } int num = 0; for (int i = 0; i < cameraList.Count; i++) { if ((Object)(object)cameraList[i] == (Object)null) { num++; } } if (previousDestroyedCameras < camerasToDestroy - 1 && num >= camerasToDestroy - 1) { Chat.SendBroadcastChat((ChatMessageBase)new SimpleChatMessage { baseToken = "VILIGER_ALLOY_CAMERA_CLOSE" }); } if (num >= camerasToDestroy && !beginEncounterCountdown) { encounterCountdown = delayBeforeBeginningEncounter; beginEncounterCountdown = true; Chat.SendBroadcastChat((ChatMessageBase)new SimpleChatMessage { baseToken = "VILIGER_ALLOY_CAMERA_BEGIN" }); } if (beginEncounterCountdown) { encounterCountdown -= ((EntityState)this).GetDeltaTime(); if (encounterCountdown <= 0f) { scriptedCombatEncounter.BeginEncounter(); base.outer.SetNextState((EntityState)new Idle()); } } previousDestroyedCameras = num; } } } namespace RepurposedCraterBoss.ModdedEntityStates.AlloyCamera { public class DeathState : BaseState { public static GameObject shockEffectPrefab = Addressables.LoadAssetAsync<GameObject>((object)RoR2_Base_Captain.CaptainTazerSupplyDropNova_prefab).WaitForCompletion(); public static float shockRadius = 10f; public override void OnEnter() { ((BaseState)this).OnEnter(); Shock(); if (Object.op_Implicit((Object)(object)((EntityState)this).modelLocator)) { if (Object.op_Implicit((Object)(object)((EntityState)this).modelLocator.modelBaseTransform)) { EntityState.Destroy((Object)(object)((Component)((EntityState)this).modelLocator.modelBaseTransform).gameObject); } if (Object.op_Implicit((Object)(object)((EntityState)this).modelLocator.modelTransform)) { EntityState.Destroy((Object)(object)((Component)((EntityState)this).modelLocator.modelTransform).gameObject); } } EntityState.Destroy((Object)(object)((EntityState)this).gameObject); } private void Shock() { //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_0010: 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_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_002d: Unknown result type (might be due to invalid IL or missing references) //IL_0032: Unknown result type (might be due to invalid IL or missing references) //IL_0039: Unknown result type (might be due to invalid IL or missing references) //IL_003b: 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) //IL_0047: 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_0068: Unknown result type (might be due to invalid IL or missing references) //IL_006d: Unknown result type (might be due to invalid IL or missing references) //IL_0074: 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_008f: Expected O, but got Unknown new BlastAttack { radius = shockRadius, baseDamage = 0f, damageType = DamageTypeCombo.op_Implicit((DamageType)16779264), falloffModel = (FalloffModel)0, attacker = null, teamIndex = (TeamIndex)1, position = ((EntityState)this).transform.position }.Fire(); if (Object.op_Implicit((Object)(object)shockEffectPrefab)) { EffectManager.SpawnEffect(shockEffectPrefab, new EffectData { origin = ((EntityState)this).transform.position, scale = shockRadius }, false); } } public override InterruptPriority GetMinimumInterruptPriority() { return (InterruptPriority)9; } } }