Decompiled source of Joke Artifacts v1.0.2
DarknessExpansion/DarknessExpansion.dll
Decompiled 5 days ago
The result has been truncated due to the large size, download it to view full contents!
using System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using System.Security; using System.Security.Permissions; using BepInEx; using BepInEx.Logging; using EntityStates.TitanMonster; using Microsoft.CodeAnalysis; using On.RoR2; using On.RoR2.Items; using R2API; using RoR2; using RoR2.Items; using RoR2.Navigation; using RoR2.Projectile; using RoR2.UI; using UnityEngine; using UnityEngine.AddressableAssets; using UnityEngine.Events; using UnityEngine.Networking; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] [assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")] [assembly: AssemblyCompany("DarknessExpansion")] [assembly: AssemblyConfiguration("Debug")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0+0bdda48187651f8e76952178dcb8e13e32ad70d6")] [assembly: AssemblyProduct("DarknessExpansion")] [assembly: AssemblyTitle("DarknessExpansion")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.0.0.0")] [module: UnverifiableCode] [module: RefSafetyRules(11)] namespace Microsoft.CodeAnalysis { [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] internal sealed class EmbeddedAttribute : Attribute { } } namespace System.Runtime.CompilerServices { [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] [AttributeUsage(AttributeTargets.Module, AllowMultiple = false, Inherited = false)] internal sealed class RefSafetyRulesAttribute : Attribute { public readonly int Version; public RefSafetyRulesAttribute(int P_0) { Version = P_0; } } } namespace DarknessExpansion { public class BigArtifact { public static ArtifactDef bigArtifact; public static Sprite iconDisabled = Addressables.LoadAssetAsync<Sprite>((object)"RoR2/Base/EliteOnly/texArtifactEliteOnlyDisabled.png").WaitForCompletion(); public static Sprite iconEnabled = Addressables.LoadAssetAsync<Sprite>((object)"RoR2/Base/EliteOnly/texArtifactEliteOnlyEnabled.png").WaitForCompletion(); public BigArtifact() { bigArtifact = ScriptableObject.CreateInstance<ArtifactDef>(); bigArtifact.nameToken = "Artifact of Size"; bigArtifact.descriptionToken = "Everything is Bigger"; bigArtifact.smallIconDeselectedSprite = iconDisabled; bigArtifact.smallIconSelectedSprite = iconEnabled; ContentAddition.AddArtifactDef(bigArtifact); SpawnCard.onSpawnedServerGlobal += SpawnCardOnonSpawnedServerGlobal; } private void SpawnCardOnonSpawnedServerGlobal(SpawnResult obj) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0028: Unknown result type (might be due to invalid IL or missing references) //IL_0034: Unknown result type (might be due to invalid IL or missing references) //IL_003e: 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_007e: Unknown result type (might be due to invalid IL or missing references) //IL_0088: Unknown result type (might be due to invalid IL or missing references) if (Object.op_Implicit((Object)(object)obj.spawnedInstance) && RunArtifactManager.instance.IsArtifactEnabled(bigArtifact)) { Transform transform = obj.spawnedInstance.transform; transform.localScale *= 3f; CharacterMaster component = obj.spawnedInstance.GetComponent<CharacterMaster>(); if (Object.op_Implicit((Object)(object)component) && Object.op_Implicit((Object)(object)component.GetBody())) { Transform transform2 = component.GetBody().transform; transform2.localScale *= 3f; } } } } [BepInPlugin("com.cybug.Joke_Artifacts", "Joke_Artifacts", "1.0.2")] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] public class DarknessExpansion : BaseUnityPlugin { private void Awake() { Log.Init(((BaseUnityPlugin)this).Logger); new BigArtifact(); new RandomArtifact(); } } public class Darkness { public static EliteDef DarknessElite; public static EquipmentDef DarknessEquipment; public static BuffDef DarknessBuff; public static int DarknessLevel = 0; private static Sprite eliteIcon = Addressables.LoadAssetAsync<Sprite>((object)"RoR2/Base/EliteFire/texBuffAffixRed.tif").WaitForCompletion(); public static event Action<int> onDarknessLevelChange; public Darkness() { //IL_002b: Unknown result type (might be due to invalid IL or missing references) //IL_0030: Unknown result type (might be due to invalid IL or missing references) //IL_0035: 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_00c2: Unknown result type (might be due to invalid IL or missing references) //IL_0112: Unknown result type (might be due to invalid IL or missing references) //IL_01b1: Unknown result type (might be due to invalid IL or missing references) //IL_01bb: Expected O, but got Unknown DarknessElite = ScriptableObject.CreateInstance<EliteDef>(); DarknessElite.color = Color32.op_Implicit(new Color(0f, 0f, 0f, 255f)); EliteRamp.AddRamp(DarknessElite, CreateDarknessTexture()); ((Object)DarknessElite).name = "EliteDarkness"; DarknessElite.modifierToken = "Dark {0}"; DarknessBuff = ScriptableObject.CreateInstance<BuffDef>(); ((Object)DarknessBuff).name = "DarknessBuff"; DarknessBuff.canStack = false; DarknessBuff.isCooldown = false; DarknessBuff.isDebuff = false; DarknessBuff.buffColor = new Color(0f, 0f, 0f, 255f); DarknessBuff.iconSprite = eliteIcon; DarknessEquipment = ScriptableObject.CreateInstance<EquipmentDef>(); DarknessEquipment.appearsInMultiPlayer = true; DarknessEquipment.appearsInSinglePlayer = true; DarknessEquipment.canBeRandomlyTriggered = false; DarknessEquipment.canDrop = false; DarknessEquipment.colorIndex = (ColorIndex)5; DarknessEquipment.cooldown = 0f; DarknessEquipment.isLunar = false; DarknessEquipment.isBoss = false; DarknessEquipment.passiveBuffDef = DarknessBuff; DarknessEquipment.dropOnDeathChance = 0f; DarknessEquipment.enigmaCompatible = false; DarknessElite.eliteEquipmentDef = DarknessEquipment; DarknessBuff.eliteDef = DarknessElite; ContentAddition.AddEliteDef(DarknessElite); ContentAddition.AddBuffDef(DarknessBuff); ContentAddition.AddEquipmentDef(DarknessEquipment); UpdateDarkness(); CombatDirector.Spawn += new hook_Spawn(CombatDirectorOnSpawn); SpawnCard.onSpawnedServerGlobal += SpawnCardOnonSpawnedServerGlobal; Run.onRunStartGlobal += delegate { DarknessLevel = 0; }; } private void SpawnCardOnonSpawnedServerGlobal(SpawnResult obj) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_001a: Unknown result type (might be due to invalid IL or missing references) //IL_0024: Unknown result type (might be due to invalid IL or missing references) Inventory component = obj.spawnedInstance.GetComponent<Inventory>(); if ((Object)(object)component != (Object)null && component.GetEquipmentIndex() == DarknessEquipment.equipmentIndex) { float num = (float)DarknessLevel / 10f; if (Random.value < num) { List<ItemDef> darkItems = DarknessItems.darkItems; component.GiveItem(darkItems[(int)((float)darkItems.Count * Random.value)], 1); Log.Debug("Giving Item"); } } } public static Texture2D CreateDarknessTexture() { //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_000d: Expected O, but got Unknown //IL_003c: Unknown result type (might be due to invalid IL or missing references) //IL_0080: Unknown result type (might be due to invalid IL or missing references) //IL_00c7: 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_0163: Unknown result type (might be due to invalid IL or missing references) Texture2D val = new Texture2D(256, 8); ((Texture)val).wrapMode = (TextureWrapMode)1; for (int i = 0; i < 8; i++) { for (int j = 0; j < 50; j++) { val.SetPixel(j, i, new Color(0f, 0f, (float)j / 255f, 255f)); } for (int k = 0; k < 50; k++) { val.SetPixel(k + 50, i, new Color(0f, 0f, 10f / 51f - (float)k / 255f, 255f)); } for (int l = 0; l < 50; l++) { val.SetPixel(l + 100, i, new Color((float)l / 255f, 0f, (float)l / 255f, 255f)); } for (int m = 0; m < 50; m++) { val.SetPixel(m + 150, i, new Color(10f / 51f - (float)m / 255f, 0f, 10f / 51f - (float)m / 255f, 255f)); } for (int n = 0; n < 56; n++) { val.SetPixel(n + 200, i, new Color(0f, (float)n / 255f, 0f, 255f)); } } val.Apply(); return val; } private bool CombatDirectorOnSpawn(orig_Spawn orig, CombatDirector self, SpawnCard spawncard, EliteDef elitedef, Transform spawntarget, MonsterSpawnDistance spawndistance, bool preventoverhead, float valuemultiplier, PlacementMode placementmode) { //IL_003b: Unknown result type (might be due to invalid IL or missing references) //IL_0041: Unknown result type (might be due to invalid IL or missing references) float num = (float)(DarknessLevel * DarknessLevel) / 100f; if (Random.value < num) { elitedef = DarknessElite; Log.Debug("Changing Elite Type"); } return orig.Invoke(self, spawncard, elitedef, spawntarget, spawndistance, preventoverhead, valuemultiplier, placementmode); } public static void UpdateDarkness() { DarknessElite.healthBoostCoefficient = 1f + Mathf.Sqrt((float)DarknessLevel); DarknessElite.damageBoostCoefficient = 1f + (DarknessElite.healthBoostCoefficient - 1f) / 2f; if (Darkness.onDarknessLevelChange != null) { Darkness.onDarknessLevelChange(DarknessLevel); } } } public class DarknessArtifact { public static ArtifactDef darknessArtifact; public static Sprite iconDisabled = Addressables.LoadAssetAsync<Sprite>((object)"RoR2/Base/EliteOnly/texArtifactEliteOnlyDisabled.png").WaitForCompletion(); public static Sprite iconEnabled = Addressables.LoadAssetAsync<Sprite>((object)"RoR2/Base/EliteOnly/texArtifactEliteOnlyEnabled.png").WaitForCompletion(); public DarknessArtifact() { darknessArtifact = ScriptableObject.CreateInstance<ArtifactDef>(); darknessArtifact.nameToken = "Artifact of Darkness"; darknessArtifact.descriptionToken = "Start with the world partially consumed with darkness."; darknessArtifact.smallIconDeselectedSprite = iconDisabled; darknessArtifact.smallIconSelectedSprite = iconEnabled; ContentAddition.AddArtifactDef(darknessArtifact); Run.onRunStartGlobal += RunOnonRunStartGlobal; } private void RunOnonRunStartGlobal(Run obj) { //IL_0045: Unknown result type (might be due to invalid IL or missing references) //IL_004b: Invalid comparison between Unknown and I4 if (!RunArtifactManager.instance.IsArtifactEnabled(darknessArtifact)) { return; } Darkness.DarknessLevel += 3; Darkness.UpdateDarkness(); foreach (CharacterMaster instances in CharacterMaster.instancesList) { List<ItemDef> darkItems = DarknessItems.darkItems; if ((int)instances._teamIndex == 1) { instances.inventory.GiveItem(darkItems[(int)((float)darkItems.Count * Random.value)], 1); } } } } public class DarknessItems { public class DarkStacksItem { private Sprite darkGolemSprite = Addressables.LoadAssetAsync<Sprite>((object)"RoR2/Base/Knurl/texKnurlIcon.png").WaitForCompletion(); private GameObject darkGolemPickup = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Knurl/PickupKnurl.prefab").WaitForCompletion(); public DarkStacksItem() { //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_000b: Unknown result type (might be due to invalid IL or missing references) //IL_001e: Unknown result type (might be due to invalid IL or missing references) //IL_0023: Unknown result type (might be due to invalid IL or missing references) //IL_00d4: Unknown result type (might be due to invalid IL or missing references) //IL_00da: Expected O, but got Unknown //IL_00ec: Unknown result type (might be due to invalid IL or missing references) //IL_00f6: Expected O, but got Unknown stackingDarkItem = ScriptableObject.CreateInstance<ItemDef>(); ((Object)stackingDarkItem).name = "DARK_STACK_NAME"; stackingDarkItem.descriptionToken = "DARK_STACK_DESCRIPTION"; stackingDarkItem.nameToken = "DARK_STACK_NAME"; stackingDarkItem.loreToken = "DARK_STACK_LORE"; stackingDarkItem.pickupToken = "DARK_STACK_PICKUP"; stackingDarkItem.pickupIconSprite = darkGolemSprite; stackingDarkItem.pickupModelPrefab = darkGolemPickup; stackingDarkItem.canRemove = false; stackingDarkItem.hidden = true; stackingDarkItem._itemTierDef = darkTier; ItemDisplayRuleDict val = new ItemDisplayRuleDict((ItemDisplayRule[])null); stackingDarkItem.itemIndex = (ItemIndex)0; ItemAPI.Add(new CustomItem(stackingDarkItem, val)); } } public class DarkGolemItem { public static ItemDef darkGolemItem; private Sprite darkGolemSprite = Addressables.LoadAssetAsync<Sprite>((object)"RoR2/Base/Knurl/texKnurlIcon.png").WaitForCompletion(); private GameObject darkGolemPickup = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Knurl/PickupKnurl.prefab").WaitForCompletion(); private GameObject fistProjectilePrefab = PrefabAPI.InstantiateClone(Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Titan/TitanPreFistProjectile.prefab").WaitForCompletion(), "Dark Fist"); public DarkGolemItem() { //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_000b: Unknown result type (might be due to invalid IL or missing references) //IL_001e: Unknown result type (might be due to invalid IL or missing references) //IL_0023: Unknown result type (might be due to invalid IL or missing references) //IL_0036: 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_00f6: Unknown result type (might be due to invalid IL or missing references) //IL_00fc: Expected O, but got Unknown //IL_010e: Unknown result type (might be due to invalid IL or missing references) //IL_0118: Expected O, but got Unknown //IL_0120: Unknown result type (might be due to invalid IL or missing references) //IL_012a: Expected O, but got Unknown darkGolemItem = ScriptableObject.CreateInstance<ItemDef>(); ((Object)darkGolemItem).name = "DARK_GOLEM_NAME"; darkGolemItem.descriptionToken = "DARK_GOLEM_DESCRIPTION"; darkGolemItem.nameToken = "DARK_GOLEM_NAME"; darkGolemItem.loreToken = "DARK_GOLEM_LORE"; darkGolemItem.pickupToken = "DARK_GOLEM_PICKUP"; darkGolemItem.pickupIconSprite = darkGolemSprite; darkGolemItem.pickupModelPrefab = darkGolemPickup; darkGolemItem.canRemove = true; darkGolemItem.hidden = false; darkGolemItem._itemTierDef = darkTier; ItemDisplayRuleDict val = new ItemDisplayRuleDict((ItemDisplayRule[])null); darkGolemItem.itemIndex = (ItemIndex)0; ItemAPI.Add(new CustomItem(darkGolemItem, val)); HealthComponent.TakeDamageProcess += new hook_TakeDamageProcess(HealthComponentOnTakeDamageProcess); LanguageAPI.Add("DARK_GOLEM_NAME", "Titanic Boulder"); LanguageAPI.Add("DARK_GOLEM_DESCRIPTION", "Gives 100 (+100 per stack) health and 10 (+10 per stack) regen. Upon taking damage, 20% chance to summon a fist for 200% (+200% per stack) damage + 100% damage (+100% per stack) per 500 health. Gives 5 (+5 per stack) health and 1 (+1 per stack) regen upon killing a dark enemy."); LanguageAPI.Add("DARK_GOLEM_PICKUP", "Increases health and regen. Upon taking damage, chance to summon a fist. Fist damage scales with health. Grows stronger as it absorbs darkness."); darkItems.Add(darkGolemItem); } private void HealthComponentOnTakeDamageProcess(orig_TakeDamageProcess orig, HealthComponent self, DamageInfo damageinfo) { //IL_0098: Unknown result type (might be due to invalid IL or missing references) //IL_009e: Invalid comparison between Unknown and I4 //IL_00d5: Unknown result type (might be due to invalid IL or missing references) //IL_00f5: Unknown result type (might be due to invalid IL or missing references) //IL_00fa: 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_0158: Unknown result type (might be due to invalid IL or missing references) if (Object.op_Implicit((Object)(object)self.body.inventory)) { int itemCount = self.body.inventory.GetItemCount(darkGolemItem); if (itemCount > 0 && Util.CheckRoll(20f, self.body._master)) { bool crit = self.body.RollCrit(); float damage = self.body.damage * (self.body.maxHealth + 1000f) * (float)itemCount / 500f; if ((int)self.body.teamComponent.teamIndex != 1) { damage = self.body.damage * (self.body.maxHealth + 10000f) * (float)itemCount / 5000f; } FireProjectileInfo val = default(FireProjectileInfo); val.projectilePrefab = fistProjectilePrefab; val.position = damageinfo.attacker.transform.position; val.rotation = Quaternion.identity; val.owner = ((Component)self.body).gameObject; val.damage = damage; val.force = FireFist.fistForce; val.crit = crit; val._fuseOverride = FireFist.entryDuration - FireFist.trackingDuration + 2f; ProjectileManager.instance.FireProjectile(val); } } orig.Invoke(self, damageinfo); } } public class DarkPearlItem { public static ItemDef darkPearlItem; private Sprite darkPearlSprite = Addressables.LoadAssetAsync<Sprite>((object)"RoR2/Base/Pearl/texPearlIcon.png").WaitForCompletion(); private GameObject darkPearlPickup = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Pearl/PickupPearl.prefab").WaitForCompletion(); public DarkPearlItem() { //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_000b: Unknown result type (might be due to invalid IL or missing references) //IL_001e: Unknown result type (might be due to invalid IL or missing references) //IL_0023: Unknown result type (might be due to invalid IL or missing references) //IL_00d4: Unknown result type (might be due to invalid IL or missing references) //IL_00da: Expected O, but got Unknown //IL_00ec: Unknown result type (might be due to invalid IL or missing references) //IL_00f6: Expected O, but got Unknown darkPearlItem = ScriptableObject.CreateInstance<ItemDef>(); ((Object)darkPearlItem).name = "DARK_PEARL_NAME"; darkPearlItem.descriptionToken = "DARK_PEARL_DESCRIPTION"; darkPearlItem.nameToken = "DARK_PEARL_NAME"; darkPearlItem.loreToken = "DARK_PEARL_LORE"; darkPearlItem.pickupToken = "DARK_PEARL_PICKUP"; darkPearlItem.pickupIconSprite = darkPearlSprite; darkPearlItem.pickupModelPrefab = darkPearlPickup; darkPearlItem.canRemove = true; darkPearlItem.hidden = false; darkPearlItem._itemTierDef = darkTier; ItemDisplayRuleDict val = new ItemDisplayRuleDict((ItemDisplayRule[])null); darkPearlItem.itemIndex = (ItemIndex)0; ItemAPI.Add(new CustomItem(darkPearlItem, val)); LanguageAPI.Add("DARK_PEARL_NAME", "Dark Pearl"); LanguageAPI.Add("DARK_PEARL_DESCRIPTION", "Increases maximum health by 50% (+50% per stack). Upon killing a dark enemy, increases health by 2% (+2% per stack)."); LanguageAPI.Add("DARK_PEARL_PICKUP", "Increases health. Grows stronger as it absorbs darkness."); darkItems.Add(darkPearlItem); } } public class DarkPearlItem2 { public static ItemDef darkPearlItem; private Sprite darkPearlSprite = Addressables.LoadAssetAsync<Sprite>((object)"RoR2/Base/ShinyPearl/texShinyPearlIcon.png").WaitForCompletion(); private GameObject darkPearlPickup = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/ShinyPearl/PickupShinyPearl.prefab").WaitForCompletion(); public DarkPearlItem2() { //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_000b: Unknown result type (might be due to invalid IL or missing references) //IL_001e: Unknown result type (might be due to invalid IL or missing references) //IL_0023: Unknown result type (might be due to invalid IL or missing references) //IL_00d4: Unknown result type (might be due to invalid IL or missing references) //IL_00da: Expected O, but got Unknown //IL_00ec: Unknown result type (might be due to invalid IL or missing references) //IL_00f6: Expected O, but got Unknown darkPearlItem = ScriptableObject.CreateInstance<ItemDef>(); ((Object)darkPearlItem).name = "DARK_PEARL_NAME2"; darkPearlItem.descriptionToken = "DARK_PEARL_DESCRIPTION2"; darkPearlItem.nameToken = "DARK_PEARL_NAME2"; darkPearlItem.loreToken = "DARK_PEARL_LORE2"; darkPearlItem.pickupToken = "DARK_PEARL_PICKUP2"; darkPearlItem.pickupIconSprite = darkPearlSprite; darkPearlItem.pickupModelPrefab = darkPearlPickup; darkPearlItem.canRemove = true; darkPearlItem.hidden = false; darkPearlItem._itemTierDef = darkTier; ItemDisplayRuleDict val = new ItemDisplayRuleDict((ItemDisplayRule[])null); darkPearlItem.itemIndex = (ItemIndex)0; ItemAPI.Add(new CustomItem(darkPearlItem, val)); LanguageAPI.Add("DARK_PEARL_NAME2", "Dark Irradient Pearl"); LanguageAPI.Add("DARK_PEARL_DESCRIPTION2", "Increases all stats by 50% (+50% per stack). Upon killing a dark enemy, increases all stats by 1% (+1% per stack)."); LanguageAPI.Add("DARK_PEARL_PICKUP2", "Increases all stats. Grows stronger as it absorbs darkness."); darkItems.Add(darkPearlItem); } } public class DarkBleedItem { public static ItemDef darkBleedItem; private Sprite darkBleedSprite = Addressables.LoadAssetAsync<Sprite>((object)"RoR2/Base/BleedOnHitAndExplode/texBleedOnHitAndExplodeIcon.png").WaitForCompletion(); private GameObject darkBleedPickup = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/BleedOnHitAndExplode/DisplayBleedOnHitAndExplode.prefab").WaitForCompletion(); public DarkBleedItem() { //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_000b: Unknown result type (might be due to invalid IL or missing references) //IL_001e: Unknown result type (might be due to invalid IL or missing references) //IL_0023: Unknown result type (might be due to invalid IL or missing references) //IL_00d4: Unknown result type (might be due to invalid IL or missing references) //IL_00da: Expected O, but got Unknown //IL_00ec: Unknown result type (might be due to invalid IL or missing references) //IL_00f6: Expected O, but got Unknown //IL_012e: Unknown result type (might be due to invalid IL or missing references) //IL_0138: Expected O, but got Unknown darkBleedItem = ScriptableObject.CreateInstance<ItemDef>(); ((Object)darkBleedItem).name = "DARK_BLEED_NAME"; darkBleedItem.descriptionToken = "DARK_BLEED_DESCRIPTION"; darkBleedItem.nameToken = "DARK_BLEED_NAME"; darkBleedItem.loreToken = "DARK_BLEED_LORE"; darkBleedItem.pickupToken = "DARK_BLEED_PICKUP"; darkBleedItem.pickupIconSprite = darkBleedSprite; darkBleedItem.pickupModelPrefab = darkBleedPickup; darkBleedItem.canRemove = true; darkBleedItem.hidden = false; darkBleedItem._itemTierDef = darkTier; ItemDisplayRuleDict val = new ItemDisplayRuleDict((ItemDisplayRule[])null); darkBleedItem.itemIndex = (ItemIndex)0; ItemAPI.Add(new CustomItem(darkBleedItem, val)); LanguageAPI.Add("DARK_BLEED_NAME", "Dark Shatterspleen"); LanguageAPI.Add("DARK_BLEED_DESCRIPTION", "Gain 20% critical chance. All strikes apply 1 stack of bleed. Crits apply bonus bleed based on crit damage. Bleeding enemies explode on death for 100% damage (+100% per stack) damage per bleed stack + 15% (+15% per stack) of their max health. Upon killing a dark enemy, gain 3% (+3% per stack) crit damage."); LanguageAPI.Add("DARK_BLEED_PICKUP", "All hits apply bleed, and crits apply extra. Bleeding enemies explode, dealing damage to nearby enemies. Grows stronger as it absorbs darkness."); GlobalEventManager.ProcessHitEnemy += new hook_ProcessHitEnemy(GlobalEventManagerOnProcessHitEnemy); GlobalEventManager.onCharacterDeathGlobal += GlobalEventManagerOnonCharacterDeathGlobal; darkItems.Add(darkBleedItem); } private void GlobalEventManagerOnonCharacterDeathGlobal(DamageReport obj) { //IL_00a9: Unknown result type (might be due to invalid IL or missing references) //IL_00ae: Unknown result type (might be due to invalid IL or missing references) //IL_0100: Unknown result type (might be due to invalid IL or missing references) //IL_0102: Unknown result type (might be due to invalid IL or missing references) //IL_0119: Unknown result type (might be due to invalid IL or missing references) //IL_011b: Unknown result type (might be due to invalid IL or missing references) //IL_0182: Unknown result type (might be due to invalid IL or missing references) //IL_018a: Unknown result type (might be due to invalid IL or missing references) //IL_0197: Unknown result type (might be due to invalid IL or missing references) if (Object.op_Implicit((Object)(object)obj.attacker) && Object.op_Implicit((Object)(object)obj.attackerBody) && Object.op_Implicit((Object)(object)obj.attackerBody.inventory)) { int itemCount = obj.attackerBody.inventory.GetItemCount(darkBleedItem); if ((itemCount > 0 && obj.victimBody.HasBuff(Buffs.Bleeding)) || obj.victimBody.HasBuff(Buffs.SuperBleed)) { Util.PlaySound("Play_bleedOnCritAndExplode_explode", ((Component)obj.victimBody).gameObject); Vector3 position = obj.victimBody.transform.position; float num = 1f * (float)itemCount * (float)(obj.victimBody.GetBuffCount(Buffs.Bleeding) + 3); float num2 = 0.15f * (float)itemCount; float baseDamage = Util.OnKillProcDamage(obj.attackerBody.damage, num) + obj.victimBody.maxHealth * num2; GameObject val = Object.Instantiate<GameObject>(CommonAssets.bleedOnHitAndExplodeBlastEffect, position, Quaternion.identity); DelayBlast component = val.GetComponent<DelayBlast>(); component.position = position; component.baseDamage = baseDamage; component.baseForce = 0f; component.radius = 16f; component.attacker = obj.attacker; component.inflictor = null; component.crit = Util.CheckRoll(obj.attackerBody.crit, obj.attackerMaster); component.maxTimer = 0f; component.damageColorIndex = (DamageColorIndex)3; component.falloffModel = (FalloffModel)2; val.GetComponent<TeamFilter>().teamIndex = obj.attackerTeamIndex; NetworkServer.Spawn(val); } } } private void GlobalEventManagerOnProcessHitEnemy(orig_ProcessHitEnemy orig, GlobalEventManager self, DamageInfo damageinfo, GameObject victim) { //IL_009e: Unknown result type (might be due to invalid IL or missing references) //IL_00a3: Unknown result type (might be due to invalid IL or missing references) orig.Invoke(self, damageinfo, victim); if (!Object.op_Implicit((Object)(object)damageinfo.attacker) || !(damageinfo.procCoefficient > 0f)) { return; } CharacterBody component = damageinfo.attacker.GetComponent<CharacterBody>(); if (!Object.op_Implicit((Object)(object)component)) { return; } CharacterMaster master = component.master; if (!Object.op_Implicit((Object)(object)master) || ((ProcChainMask)(ref damageinfo.procChainMask)).HasProc((ProcType)5)) { return; } Inventory inventory = master.inventory; int itemCount = inventory.GetItemCount(darkBleedItem); if (itemCount > 0) { ProcChainMask procChainMask = damageinfo.procChainMask; ((ProcChainMask)(ref procChainMask)).AddProc((ProcType)5); int num = 1; if (damageinfo.crit) { num *= (int)component.critMultiplier; } for (int i = 0; i < num; i++) { DotController.InflictDot(victim, damageinfo.attacker, (DotIndex)0, 3f * damageinfo.procCoefficient, 1f, (uint?)null); } } } } public class DarkBeetleItem { public class DarkBeetleBodyBehavior : BaseItemBodyBehavior { private CharacterMaster cm; private float guardResummonCooldown; [ItemDefAssociation(useOnServer = true, useOnClient = false)] private static ItemDef GetItemDef() { return darkBeetleItem; } private void Start() { cm = ((BaseItemBodyBehavior)this).body.master; guardResummonCooldown = 0f; } private void FixedUpdate() { //IL_0053: Unknown result type (might be due to invalid IL or missing references) //IL_0058: Unknown result type (might be due to invalid IL or missing references) //IL_005a: Unknown result type (might be due to invalid IL or missing references) //IL_005f: Unknown result type (might be due to invalid IL or missing references) //IL_006a: Unknown result type (might be due to invalid IL or missing references) //IL_0075: Unknown result type (might be due to invalid IL or missing references) //IL_008b: Expected O, but got Unknown //IL_0086: Unknown result type (might be due to invalid IL or missing references) //IL_008c: Expected O, but got Unknown int deployableCount = cm.GetDeployableCount((DeployableSlot)2); if (deployableCount >= base.stack) { return; } guardResummonCooldown -= Time.fixedDeltaTime; if (guardResummonCooldown <= 0f) { DirectorSpawnRequest val = new DirectorSpawnRequest(LegacyResourcesAPI.Load<SpawnCard>("SpawnCards/CharacterSpawnCards/cscBeetleGuardAlly"), new DirectorPlacementRule { placementMode = (PlacementMode)1, minDistance = 3f, maxDistance = 40f, spawnOnTarget = ((Component)this).transform }, RoR2Application.rng); val.summonerBodyObject = ((Component)this).gameObject; val.onSpawnedServer = OnSpawned; DirectorCore.instance.TrySpawnObject(val); if (deployableCount < base.stack) { guardResummonCooldown = 1f; } else { guardResummonCooldown = 30f; } } } private void OnSpawned(SpawnResult obj) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_001b: Unknown result type (might be due to invalid IL or missing references) //IL_0040: Unknown result type (might be due to invalid IL or missing references) //IL_006a: Unknown result type (might be due to invalid IL or missing references) Deployable component = obj.spawnedInstance.GetComponent<Deployable>(); cm.AddDeployable(component, (DeployableSlot)2); CharacterBody body = obj.spawnedInstance.GetComponent<CharacterMaster>().GetBody(); body.baseDamage *= (float)(base.stack * 3); CharacterBody body2 = obj.spawnedInstance.GetComponent<CharacterMaster>().GetBody(); body2.baseMaxHealth *= (float)(base.stack * 3); for (int i = 0; i < base.stack; i++) { obj.spawnedInstance.GetComponent<CharacterMaster>().GetBody().AddBuff(debuffApplier); } } } public static ItemDef darkBeetleItem; private Sprite darkBeetleSprite = Addressables.LoadAssetAsync<Sprite>((object)"RoR2/Base/BeetleGland/texBeetleGlandIcon.png").WaitForCompletion(); private GameObject darkBeetlePickup = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/BeetleGland/PickupBeetleGland.prefab").WaitForCompletion(); private static BuffDef debuffApplier; public DarkBeetleItem() { //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_000b: Unknown result type (might be due to invalid IL or missing references) //IL_001e: Unknown result type (might be due to invalid IL or missing references) //IL_0023: Unknown result type (might be due to invalid IL or missing references) //IL_00d4: Unknown result type (might be due to invalid IL or missing references) //IL_00da: Expected O, but got Unknown //IL_00ec: Unknown result type (might be due to invalid IL or missing references) //IL_00f6: Expected O, but got Unknown //IL_017e: Unknown result type (might be due to invalid IL or missing references) //IL_0188: Expected O, but got Unknown //IL_0190: Unknown result type (might be due to invalid IL or missing references) //IL_019a: Expected O, but got Unknown darkBeetleItem = ScriptableObject.CreateInstance<ItemDef>(); ((Object)darkBeetleItem).name = "DARK_BEETLE_NAME"; darkBeetleItem.descriptionToken = "DARK_BEETLE_DESCRIPTION"; darkBeetleItem.nameToken = "DARK_BEETLE_NAME"; darkBeetleItem.loreToken = "DARK_BEETLE_LORE"; darkBeetleItem.pickupToken = "DARK_BEETLE_PICKUP"; darkBeetleItem.pickupIconSprite = darkBeetleSprite; darkBeetleItem.pickupModelPrefab = darkBeetlePickup; darkBeetleItem.canRemove = true; darkBeetleItem.hidden = false; darkBeetleItem._itemTierDef = darkTier; ItemDisplayRuleDict val = new ItemDisplayRuleDict((ItemDisplayRule[])null); darkBeetleItem.itemIndex = (ItemIndex)0; ItemAPI.Add(new CustomItem(darkBeetleItem, val)); LanguageAPI.Add("DARK_BEETLE_NAME", "King's Gland"); LanguageAPI.Add("DARK_BEETLE_DESCRIPTION", "Every 30 seconds, summon a Beetle Guard with 300% (+300% per stack) damage and 300% (+300% per stack) health. Beetle Guards apply 1 (+1 per stack) debuff on hit. Can have up to 1 (+1 per stack) beetle guard at a time. Give your beetles your attack speed. Upon killing a dark enemy, gain 3% (+3% per stack) attack speed."); LanguageAPI.Add("DARK_BEETLE_PICKUP", "Summon a beetle guard which applies random debuffs on hit. Grows stronger as it absorbs darkness."); darkItems.Add(darkBeetleItem); debuffApplier = ScriptableObject.CreateInstance<BuffDef>(); debuffApplier.isHidden = true; debuffApplier.canStack = true; debuffApplier.isCooldown = false; ContentAddition.AddBuffDef(debuffApplier); testItem = darkBeetleItem; GlobalEventManager.ProcessHitEnemy += new hook_ProcessHitEnemy(GlobalEventManagerOnProcessHitEnemy); CharacterMaster.GetDeployableSameSlotLimit += new hook_GetDeployableSameSlotLimit(CharacterMasterOnGetDeployableSameSlotLimit); MasterSummon.onServerMasterSummonGlobal += MasterSummonOnonServerMasterSummonGlobal; } private void MasterSummonOnonServerMasterSummonGlobal(MasterSummonReport obj) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_001e: Unknown result type (might be due to invalid IL or missing references) //IL_003e: Unknown result type (might be due to invalid IL or missing references) if (obj.leaderMasterInstance.inventory.GetItemCount(darkBeetleItem) > 0) { float attackSpeed = obj.leaderMasterInstance.GetBody().attackSpeed; int num = (int)((attackSpeed - 1f) / 0.15f); obj.summonMasterInstance.inventory.GiveItemString("Syringe", num); } } private int CharacterMasterOnGetDeployableSameSlotLimit(orig_GetDeployableSameSlotLimit orig, CharacterMaster self, DeployableSlot slot) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0003: Invalid comparison between Unknown and I4 //IL_004b: Unknown result type (might be due to invalid IL or missing references) if ((int)slot == 2) { int num = 1; if (RunArtifactManager.instance.IsArtifactEnabled(Artifacts.swarmsArtifactDef)) { num = 2; } return num * (self.inventory.GetItemCount(Items.BeetleGland) + self.inventory.GetItemCount(darkBeetleItem)); } return orig.Invoke(self, slot); } private void GlobalEventManagerOnProcessHitEnemy(orig_ProcessHitEnemy orig, GlobalEventManager self, DamageInfo damageinfo, GameObject victim) { CharacterBody component = damageinfo.attacker.GetComponent<CharacterBody>(); if (component.HasBuff(debuffApplier)) { int buffCount = component.GetBuffCount(debuffApplier); for (int i = 0; i < buffCount; i++) { CharacterBody component2 = victim.GetComponent<CharacterBody>(); BuffDef val = BuffCatalog.buffDefs[(int)((float)BuffCatalog.buffDefs.Length * Random.value)]; while (!val.isDebuff) { val = BuffCatalog.buffDefs[(int)((float)BuffCatalog.buffDefs.Length * Random.value)]; } component2.AddBuff(val); } } orig.Invoke(self, damageinfo, victim); } } public class DarkJellyfishItem { public static ItemDef darkJellyfishItem; private Sprite darkJellyfishSprite = Addressables.LoadAssetAsync<Sprite>((object)"RoR2/Base/NovaOnLowHealth/texJellyGutsIcon.png").WaitForCompletion(); private GameObject darkJellyfishPickup = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/NovaOnLowHealth/PickupJellyGuts.prefab").WaitForCompletion(); public DarkJellyfishItem() { //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_000b: Unknown result type (might be due to invalid IL or missing references) //IL_001e: Unknown result type (might be due to invalid IL or missing references) //IL_0023: Unknown result type (might be due to invalid IL or missing references) //IL_00d4: Unknown result type (might be due to invalid IL or missing references) //IL_00da: Expected O, but got Unknown //IL_00ec: Unknown result type (might be due to invalid IL or missing references) //IL_00f6: Expected O, but got Unknown darkJellyfishItem = ScriptableObject.CreateInstance<ItemDef>(); ((Object)darkJellyfishItem).name = "DARK_JELLYFISH_NAME"; darkJellyfishItem.descriptionToken = "DARK_JELLYFISH_DESCRIPTION"; darkJellyfishItem.nameToken = "DARK_JELLYFISH_NAME"; darkJellyfishItem.loreToken = "DARK_JELLYFISH_LORE"; darkJellyfishItem.pickupToken = "DARK_JELLYFISH_PICKUP"; darkJellyfishItem.pickupIconSprite = darkJellyfishSprite; darkJellyfishItem.pickupModelPrefab = darkJellyfishPickup; darkJellyfishItem.canRemove = true; darkJellyfishItem.hidden = false; darkJellyfishItem._itemTierDef = darkTier; ItemDisplayRuleDict val = new ItemDisplayRuleDict((ItemDisplayRule[])null); darkJellyfishItem.itemIndex = (ItemIndex)0; ItemAPI.Add(new CustomItem(darkJellyfishItem, val)); LanguageAPI.Add("DARK_JELLYFISH_NAME", "Omega Loop"); LanguageAPI.Add("DARK_JELLYFISH_DESCRIPTION", "When below 50% health, every 30 / 2 (+1 per stack) seconds, charge an explosion, dealing 6000% damage (+6000% per stack). Additionally, gain 3 (+3 per stack) charges. Upon using your secondary, release a ball of lightning that deaals 500% base damage (+500% per stack). Upon killing a dark enemy, gain 1% (+1% per stack) cooldown reduction, which affects this item."); LanguageAPI.Add("DARK_JELLYFISH_PICKUP", "Upon reaching low health, explode in an area. Upon using your secondary, release a ball of lightning. Grows stronger as it absorbs darkness."); darkItems.Add(darkJellyfishItem); } } public class DarkWispItem { public static ItemDef darkWispItem; private Sprite darkWispSprite = Addressables.LoadAssetAsync<Sprite>((object)"RoR2/Base/SprintWisp/texBrokenMaskIcon.png").WaitForCompletion(); private GameObject darkWispPickup = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/SprintWisp/PickupBrokenMask.prefab").WaitForCompletion(); public DarkWispItem() { //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_000b: Unknown result type (might be due to invalid IL or missing references) //IL_001e: Unknown result type (might be due to invalid IL or missing references) //IL_0023: Unknown result type (might be due to invalid IL or missing references) //IL_00d4: Unknown result type (might be due to invalid IL or missing references) //IL_00da: Expected O, but got Unknown //IL_00ec: Unknown result type (might be due to invalid IL or missing references) //IL_00f6: Expected O, but got Unknown darkWispItem = ScriptableObject.CreateInstance<ItemDef>(); ((Object)darkWispItem).name = "DARK_WISP_NAME"; darkWispItem.descriptionToken = "DARK_WISP_DESCRIPTION"; darkWispItem.nameToken = "DARK_WISP_NAME"; darkWispItem.loreToken = "DARK_WISP_LORE"; darkWispItem.pickupToken = "DARK_WISP_PICKUP"; darkWispItem.pickupIconSprite = darkWispSprite; darkWispItem.pickupModelPrefab = darkWispPickup; darkWispItem.canRemove = true; darkWispItem.hidden = false; darkWispItem._itemTierDef = darkTier; ItemDisplayRuleDict val = new ItemDisplayRuleDict((ItemDisplayRule[])null); darkWispItem.itemIndex = (ItemIndex)0; ItemAPI.Add(new CustomItem(darkWispItem, val)); LanguageAPI.Add("DARK_WISP_NAME", "Large Disciple"); LanguageAPI.Add("DARK_WISP_DESCRIPTION", "Fire 3 (+3 per stack) tracking wisps for 300% (+300% per stack) base damage. Wisps have 3.0 (+3 per stack) proc coefficient. Fires every 1.6 seconds while sprinting. Fire rate increases with movement speed. Upon killing a dark enemy, gain 3% (+3% per stack) movement speed."); LanguageAPI.Add("DARK_WISP_PICKUP", "Fire 3 tracking wisps while sprinting. Fire rate scales with move speed. Grows stronger as it absorbs darkness."); darkItems.Add(darkWispItem); } } public class DarkClayItem { public static ItemDef darkClayItem; private Sprite darkClaySprite = Addressables.LoadAssetAsync<Sprite>((object)"RoR2/Base/SiphonOnLowHealth/texSiphonOnLowHealthIcon.png").WaitForCompletion(); private GameObject darkClayPickup = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/SiphonOnLowHealth/PickupSiphonOnLowHealth.prefab").WaitForCompletion(); public DarkClayItem() { //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_000b: Unknown result type (might be due to invalid IL or missing references) //IL_001e: Unknown result type (might be due to invalid IL or missing references) //IL_0023: Unknown result type (might be due to invalid IL or missing references) //IL_00d4: Unknown result type (might be due to invalid IL or missing references) //IL_00da: Expected O, but got Unknown //IL_00ec: Unknown result type (might be due to invalid IL or missing references) //IL_00f6: Expected O, but got Unknown darkClayItem = ScriptableObject.CreateInstance<ItemDef>(); ((Object)darkClayItem).name = "DARK_CLAY_NAME"; darkClayItem.descriptionToken = "DARK_CLAY_DESCRIPTION"; darkClayItem.nameToken = "DARK_CLAY_NAME"; darkClayItem.loreToken = "DARK_CLAY_LORE"; darkClayItem.pickupToken = "DARK_CLAY_PICKUP"; darkClayItem.pickupIconSprite = darkClaySprite; darkClayItem.pickupModelPrefab = darkClayPickup; darkClayItem.canRemove = true; darkClayItem.hidden = false; darkClayItem._itemTierDef = darkTier; ItemDisplayRuleDict val = new ItemDisplayRuleDict((ItemDisplayRule[])null); darkClayItem.itemIndex = (ItemIndex)0; ItemAPI.Add(new CustomItem(darkClayItem, val)); LanguageAPI.Add("DARK_CLAY_NAME", "Polished Urn"); LanguageAPI.Add("DARK_CLAY_DESCRIPTION", "The nearest 1 (+1 per stack) enemies to you within 13m (+8m per stack) will be 'tethered' to you, applying tar. Deal 15% (+15% per stack) additional damage to enemies with tar applied, and heal for 5% (+5% per stack) of the damage dealt. Upon killing a dark enemy, gain 3% (+3% per stack) healing multiplier."); LanguageAPI.Add("DARK_CLAY_PICKUP", "Tether yourself to nearby enemies, dealing bonus damage and healing for a portion of the damage dealt. Grows stronger as it absorbs darkness."); darkItems.Add(darkClayItem); } } public class DarkConstructItem { public static ItemDef darkConstructItem; private Sprite darkConstructSprite = Addressables.LoadAssetAsync<Sprite>((object)"RoR2/DLC1/MinorConstructOnKill/texMinorConstructOnKillIcon.png").WaitForCompletion(); private GameObject darkConstructPickup = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/DLC1/MinorConstructOnKill/PickupDefenseNucleus.prefab").WaitForCompletion(); public DarkConstructItem() { //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_000b: Unknown result type (might be due to invalid IL or missing references) //IL_001e: Unknown result type (might be due to invalid IL or missing references) //IL_0023: Unknown result type (might be due to invalid IL or missing references) //IL_00d4: Unknown result type (might be due to invalid IL or missing references) //IL_00da: Expected O, but got Unknown //IL_00ec: Unknown result type (might be due to invalid IL or missing references) //IL_00f6: Expected O, but got Unknown darkConstructItem = ScriptableObject.CreateInstance<ItemDef>(); ((Object)darkConstructItem).name = "DARK_CONSTRUCT_NAME"; darkConstructItem.descriptionToken = "DARK_CONSTRUCT_DESCRIPTION"; darkConstructItem.nameToken = "DARK_CONSTRUCT_NAME"; darkConstructItem.loreToken = "DARK_CONSTRUCT_LORE"; darkConstructItem.pickupToken = "DARK_CONSTRUCT_PICKUP"; darkConstructItem.pickupIconSprite = darkConstructSprite; darkConstructItem.pickupModelPrefab = darkConstructPickup; darkConstructItem.canRemove = true; darkConstructItem.hidden = false; darkConstructItem._itemTierDef = darkTier; ItemDisplayRuleDict val = new ItemDisplayRuleDict((ItemDisplayRule[])null); darkConstructItem.itemIndex = (ItemIndex)0; ItemAPI.Add(new CustomItem(darkConstructItem, val)); LanguageAPI.Add("DARK_CONSTRUCT_NAME", "Defense Cell"); LanguageAPI.Add("DARK_CONSTRUCT_DESCRIPTION", "Killing an elite enemy spawns an Alpha Construct that attaches to you with 1000% (+1000% per stack) health. On hit, all Constructs attached to you have a 5% chance to fire at the enemy hit for 300% (+300% per stack) damage. Limit of 4 (+4 per stack) constructs. Upon killing a dark enemy, gain .03 luck."); LanguageAPI.Add("DARK_CONSTRUCT_PICKUP", "Upon killing an elite, gain an alpha construct that attaches to you and fires at enemies you fire at. Grows stronger as it absorbs darkness."); darkItems.Add(darkConstructItem); } } public class DarkCoreItem { public static ItemDef darkCoreItem; private Sprite darkCoreSprite = Addressables.LoadAssetAsync<Sprite>((object)"RoR2/Base/RoboBallBuddy/texEmpathyChip.png").WaitForCompletion(); private GameObject darkCorePickup = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/RoboBallBuddy/PickupEmpathyChip.prefab").WaitForCompletion(); public DarkCoreItem() { //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_000b: Unknown result type (might be due to invalid IL or missing references) //IL_001e: Unknown result type (might be due to invalid IL or missing references) //IL_0023: Unknown result type (might be due to invalid IL or missing references) //IL_00d4: Unknown result type (might be due to invalid IL or missing references) //IL_00da: Expected O, but got Unknown //IL_00ec: Unknown result type (might be due to invalid IL or missing references) //IL_00f6: Expected O, but got Unknown darkCoreItem = ScriptableObject.CreateInstance<ItemDef>(); ((Object)darkCoreItem).name = "DARK_CORE_NAME"; darkCoreItem.descriptionToken = "DARK_CORE_DESCRIPTION"; darkCoreItem.nameToken = "DARK_CORE_NAME"; darkCoreItem.loreToken = "DARK_CORE_LORE"; darkCoreItem.pickupToken = "DARK_CORE_PICKUP"; darkCoreItem.pickupIconSprite = darkCoreSprite; darkCoreItem.pickupModelPrefab = darkCorePickup; darkCoreItem.canRemove = true; darkCoreItem.hidden = false; darkCoreItem._itemTierDef = darkTier; ItemDisplayRuleDict val = new ItemDisplayRuleDict((ItemDisplayRule[])null); darkCoreItem.itemIndex = (ItemIndex)0; ItemAPI.Add(new CustomItem(darkCoreItem, val)); LanguageAPI.Add("DARK_CORE_NAME", "Sympathy Cores"); LanguageAPI.Add("DARK_CORE_DESCRIPTION", "Every 10 seconds, summon two Solus Probes. All allies gain +100% (+100% per stack) health and damage per ally on your team. Upon killing a dark enemy, increase all of your allies stats by 2% (+2% per stack)."); LanguageAPI.Add("DARK_CORE_PICKUP", "Summon probes. All allies gain stats per ally on your team. Grows stronger as it absorbs darkness."); darkItems.Add(darkCoreItem); } } public class DarkParentItem { public static ItemDef darkParentItem; private Sprite darkParentSprite = Addressables.LoadAssetAsync<Sprite>((object)"RoR2/Base/ParentEgg/texParentEggIcon.png").WaitForCompletion(); private GameObject darkParentPickup = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/ParentEgg/PickupParentEgg.prefab").WaitForCompletion(); public DarkParentItem() { //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_000b: Unknown result type (might be due to invalid IL or missing references) //IL_001e: Unknown result type (might be due to invalid IL or missing references) //IL_0023: Unknown result type (might be due to invalid IL or missing references) //IL_00d4: Unknown result type (might be due to invalid IL or missing references) //IL_00da: Expected O, but got Unknown //IL_00ec: Unknown result type (might be due to invalid IL or missing references) //IL_00f6: Expected O, but got Unknown darkParentItem = ScriptableObject.CreateInstance<ItemDef>(); ((Object)darkParentItem).name = "DARK_PARENT_NAME"; darkParentItem.descriptionToken = "DARK_PARENT_DESCRIPTION"; darkParentItem.nameToken = "DARK_PARENT_NAME"; darkParentItem.loreToken = "DARK_PARENT_LORE"; darkParentItem.pickupToken = "DARK_PARENT_PICKUP"; darkParentItem.pickupIconSprite = darkParentSprite; darkParentItem.pickupModelPrefab = darkParentPickup; darkParentItem.canRemove = true; darkParentItem.hidden = false; darkParentItem._itemTierDef = darkTier; ItemDisplayRuleDict val = new ItemDisplayRuleDict((ItemDisplayRule[])null); darkParentItem.itemIndex = (ItemIndex)0; ItemAPI.Add(new CustomItem(darkParentItem, val)); LanguageAPI.Add("DARK_PARENT_NAME", "Dark Planula"); LanguageAPI.Add("DARK_PARENT_DESCRIPTION", "Heal from incoming damage equal to 100% (+100% per stack) armor. On taking damage, ignite enemies within a 13m (+8m per stack) radius. Upon killing a dark enemy, gain 1.5 (+1.5 per stack) armor."); LanguageAPI.Add("DARK_PARENT_PICKUP", "Heal from incoming damage and ignite nearby enemies. Grows stronger as it absorbs darkness."); darkItems.Add(darkParentItem); } } public class DarkLightningItem { public static ItemDef darkLightningItem; private Sprite darkLightningSprite = Addressables.LoadAssetAsync<Sprite>((object)"RoR2/Base/LightningStrikeOnHit/texLightningStrikeOnHit.png").WaitForCompletion(); private GameObject darkLightningPickup = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/LightningStrikeOnHit/PickupChargedPerforator.prefab").WaitForCompletion(); public DarkLightningItem() { //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_000b: Unknown result type (might be due to invalid IL or missing references) //IL_001e: Unknown result type (might be due to invalid IL or missing references) //IL_0023: Unknown result type (might be due to invalid IL or missing references) //IL_00d4: Unknown result type (might be due to invalid IL or missing references) //IL_00da: Expected O, but got Unknown //IL_00ec: Unknown result type (might be due to invalid IL or missing references) //IL_00f6: Expected O, but got Unknown darkLightningItem = ScriptableObject.CreateInstance<ItemDef>(); ((Object)darkLightningItem).name = "DARK_LIGHTNING_NAME"; darkLightningItem.descriptionToken = "DARK_LIGHTNING_DESCRIPTION"; darkLightningItem.nameToken = "DARK_LIGHTNING_NAME"; darkLightningItem.loreToken = "DARK_LIGHTNING_LORE"; darkLightningItem.pickupToken = "DARK_LIGHTNING_PICKUP"; darkLightningItem.pickupIconSprite = darkLightningSprite; darkLightningItem.pickupModelPrefab = darkLightningPickup; darkLightningItem.canRemove = true; darkLightningItem.hidden = false; darkLightningItem._itemTierDef = darkTier; ItemDisplayRuleDict val = new ItemDisplayRuleDict((ItemDisplayRule[])null); darkLightningItem.itemIndex = (ItemIndex)0; ItemAPI.Add(new CustomItem(darkLightningItem, val)); LanguageAPI.Add("DARK_LIGHTNING_NAME", "Charged Claw"); LanguageAPI.Add("DARK_LIGHTNING_DESCRIPTION", "10% chance on hit to down a lightning strike on the enemy and 2 (+2 per stack) enemies within 15m (+8m per stack), dealing 1000% (+1000% per stack) damage. Killing a dark enemy grants 4% (+4% per stack) damage."); LanguageAPI.Add("DARK_LIGHTNING_PICKUP", "Chance on hit to summon a lightning storm. Grows stronger as it absorbs darkness."); darkItems.Add(darkLightningItem); } } public class DarkFireItem { public static ItemDef darkFireItem; private Sprite darkFireSprite = Addressables.LoadAssetAsync<Sprite>((object)"RoR2/Base/FireballsOnHit/texFireballsOnHitIcon.png").WaitForCompletion(); private GameObject darkFirePickup = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/FireballsOnHit/PickupFireballsOnHit.prefab").WaitForCompletion(); public DarkFireItem() { //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_000b: Unknown result type (might be due to invalid IL or missing references) //IL_001e: Unknown result type (might be due to invalid IL or missing references) //IL_0023: Unknown result type (might be due to invalid IL or missing references) //IL_00d4: Unknown result type (might be due to invalid IL or missing references) //IL_00da: Expected O, but got Unknown //IL_00ec: Unknown result type (might be due to invalid IL or missing references) //IL_00f6: Expected O, but got Unknown darkFireItem = ScriptableObject.CreateInstance<ItemDef>(); ((Object)darkFireItem).name = "DARK_FIRE_NAME"; darkFireItem.descriptionToken = "DARK_FIRE_DESCRIPTION"; darkFireItem.nameToken = "DARK_FIRE_NAME"; darkFireItem.loreToken = "DARK_FIRE_LORE"; darkFireItem.pickupToken = "DARK_FIRE_PICKUP"; darkFireItem.pickupIconSprite = darkFireSprite; darkFireItem.pickupModelPrefab = darkFirePickup; darkFireItem.canRemove = true; darkFireItem.hidden = false; darkFireItem._itemTierDef = darkTier; ItemDisplayRuleDict val = new ItemDisplayRuleDict((ItemDisplayRule[])null); darkFireItem.itemIndex = (ItemIndex)0; ItemAPI.Add(new CustomItem(darkFireItem, val)); LanguageAPI.Add("DARK_FIRE_NAME", "Molten Claw"); LanguageAPI.Add("DARK_FIRE_DESCRIPTION", "10% chance on hit to call forth 3 magma balls from an enemy, dealing (3000% (+3000% per stack) damage)% base damage. Killing a dark enemy grants 0.5 (+0.5 per stack) base damage."); LanguageAPI.Add("DARK_FIRE_PICKUP", "Chance on hit to summon fireballs. Grows stronger as it absorbs darkness."); darkItems.Add(darkFireItem); } } public static ItemTierDef darkTier; public static ItemDef testItem; public static List<ItemDef> darkItems = new List<ItemDef>(); public static Action<CharacterBody> onKillDarknessEnemy; public static ItemDef stackingDarkItem; public DarknessItems() { //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_000d: Unknown result type (might be due to invalid IL or missing references) //IL_0012: Unknown result type (might be due to invalid IL or missing references) //IL_002f: Unknown result type (might be due to invalid IL or missing references) //IL_0030: Unknown result type (might be due to invalid IL or missing references) //IL_003a: 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_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_007c: Unknown result type (might be due to invalid IL or missing references) //IL_0081: Unknown result type (might be due to invalid IL or missing references) //IL_0164: Unknown result type (might be due to invalid IL or missing references) //IL_016e: Expected O, but got Unknown //IL_0176: Unknown result type (might be due to invalid IL or missing references) //IL_0180: Expected O, but got Unknown //IL_0188: Unknown result type (might be due to invalid IL or missing references) //IL_0192: Expected O, but got Unknown //IL_019a: Unknown result type (might be due to invalid IL or missing references) //IL_01a4: Expected O, but got Unknown ColorIndex val = ColorsAPI.RegisterColor(Color.black); darkTier = ScriptableObject.CreateInstance<ItemTierDef>(); darkTier.tier = (ItemTier)10; darkTier.darkColorIndex = val; darkTier.colorIndex = val; darkTier.highlightPrefab = PrefabAPI.InstantiateClone(Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Junk/UI/HighlightMisc.prefab").WaitForCompletion(), "Dark Item Highlight"); CreateDropletPrefab(); darkTier.highlightPrefab.GetComponent<HighlightRect>().highlightColor = Color.black; darkTier.isDroppable = true; darkTier.canScrap = false; darkTier.canRestack = false; ContentAddition.AddItemTierDef(darkTier); GlobalEventManager.onCharacterDeathGlobal += GlobalEventManagerOnonCharacterDeathGlobal; new DarkGolemItem(); new DarkBeetleItem(); new DarkPearlItem(); new DarkPearlItem2(); new DarkJellyfishItem(); new DarkWispItem(); new DarkBleedItem(); new DarkClayItem(); new DarkConstructItem(); new DarkCoreItem(); new DarkParentItem(); new DarkLightningItem(); new DarkFireItem(); new DarkStacksItem(); Inventory.onServerItemGiven += InventoryOnonServerItemGiven; onKillDarknessEnemy = (Action<CharacterBody>)Delegate.Combine(onKillDarknessEnemy, (Action<CharacterBody>)delegate(CharacterBody body) { body.inventory.GiveItem(stackingDarkItem, 1); }); CharacterMaster.OnInventoryChanged += new hook_OnInventoryChanged(CharacterMasterOnOnInventoryChanged); HealthComponent.Heal += new hook_Heal(HealthComponentOnHeal); RecalculateStatsAPI.GetStatCoefficients += new StatHookEventHandler(RecalculateStatsAPIOnGetStatCoefficients); BaseItemBodyBehavior.Init += new hook_Init(BaseItemBodyBehaviorOnInit); } private void BaseItemBodyBehaviorOnInit(orig_Init orig) { //IL_001b: Unknown result type (might be due to invalid IL or missing references) //IL_0039: Unknown result type (might be due to invalid IL or missing references) //IL_003e: Unknown result type (might be due to invalid IL or missing references) //IL_0043: 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_0087: Unknown result type (might be due to invalid IL or missing references) //IL_008c: Unknown result type (might be due to invalid IL or missing references) //IL_0091: Unknown result type (might be due to invalid IL or missing references) orig.Invoke(); List<ItemTypePair> list = BaseItemBodyBehavior.server.itemTypePairs.ToList(); list.Add(new ItemTypePair { behaviorType = typeof(DarkBeetleItem.DarkBeetleBodyBehavior), itemIndex = DarkBeetleItem.darkBeetleItem.itemIndex }); ((NetworkContextSet)(ref BaseItemBodyBehavior.server)).SetItemTypePairs(list); list = BaseItemBodyBehavior.shared.itemTypePairs.ToList(); list.Add(new ItemTypePair { behaviorType = typeof(DarkBeetleItem.DarkBeetleBodyBehavior), itemIndex = DarkBeetleItem.darkBeetleItem.itemIndex }); ((NetworkContextSet)(ref BaseItemBodyBehavior.shared)).SetItemTypePairs(list); list = BaseItemBodyBehavior.client.itemTypePairs.ToList(); ((NetworkContextSet)(ref BaseItemBodyBehavior.client)).SetItemTypePairs(list); } private void CreateDropletPrefab() { //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_000b: Unknown result type (might be due to invalid IL or missing references) //IL_0020: Unknown result type (might be due to invalid IL or missing references) //IL_0026: Expected O, but got Unknown //IL_002f: Unknown result type (might be due to invalid IL or missing references) //IL_0039: Unknown result type (might be due to invalid IL or missing references) //IL_003e: Unknown result type (might be due to invalid IL or missing references) //IL_0045: 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_006c: Unknown result type (might be due to invalid IL or missing references) //IL_0071: Unknown result type (might be due to invalid IL or missing references) //IL_0082: Unknown result type (might be due to invalid IL or missing references) //IL_0087: Unknown result type (might be due to invalid IL or missing references) //IL_0095: 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_00b2: Unknown result type (might be due to invalid IL or missing references) //IL_0114: Unknown result type (might be due to invalid IL or missing references) //IL_0147: Unknown result type (might be due to invalid IL or missing references) //IL_014c: Unknown result type (might be due to invalid IL or missing references) //IL_0150: Unknown result type (might be due to invalid IL or missing references) //IL_0155: Unknown result type (might be due to invalid IL or missing references) //IL_0159: Unknown result type (might be due to invalid IL or missing references) //IL_015b: Unknown result type (might be due to invalid IL or missing references) //IL_0168: Unknown result type (might be due to invalid IL or missing references) //IL_016a: Unknown result type (might be due to invalid IL or missing references) GameObject val = PrefabAPI.InstantiateClone(Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Common/LunarOrb.prefab").WaitForCompletion(), "Darkness Orb", true); Gradient val2 = new Gradient(); val2.SetKeys((GradientColorKey[])(object)new GradientColorKey[2] { new GradientColorKey(Color.black, 0f), new GradientColorKey(Color.black, 1f) }, (GradientAlphaKey[])(object)new GradientAlphaKey[2] { new GradientAlphaKey(1f, 0f), new GradientAlphaKey(0f, 1f) }); Color black = Color.black; ((Component)val.transform.GetChild(0)).gameObject.GetComponent<TrailRenderer>().startColor = Color.black; ((Component)val.transform.GetChild(0)).gameObject.GetComponent<TrailRenderer>().startColor_Injected = ref black; ((Component)val.transform.GetChild(0)).gameObject.GetComponent<TrailRenderer>().SetColorGradient(val2); Light[] componentsInChildren = val.GetComponentsInChildren<Light>(); Light[] array = componentsInChildren; foreach (Light val3 in array) { val3.color = black; } ParticleSystem[] componentsInChildren2 = val.GetComponentsInChildren<ParticleSystem>(); ParticleSystem[] array2 = componentsInChildren2; foreach (ParticleSystem val4 in array2) { MainModule main = val4.main; ColorOverLifetimeModule colorOverLifetime = val4.colorOverLifetime; ((MainModule)(ref main)).startColor = new MinMaxGradient(black); ((ColorOverLifetimeModule)(ref colorOverLifetime)).color = MinMaxGradient.op_Implicit(black); } darkTier.dropletDisplayPrefab = val; } private void CharacterMasterOnOnInventoryChanged(orig_OnInventoryChanged orig, CharacterMaster self) { int itemCount = self.inventory.GetItemCount(stackingDarkItem); int itemCount2 = self.inventory.GetItemCount(DarkConstructItem.darkConstructItem); orig.Invoke(self); self.luck += (float)(itemCount * itemCount2) * 0.03f; } private float HealthComponentOnHeal(orig_Heal orig, HealthComponent self, float amount, ProcChainMask procchainmask, bool nonregen) { //IL_0068: Unknown result type (might be due to invalid IL or missing references) //IL_0058: Unknown result type (might be due to invalid IL or missing references) if (Object.op_Implicit((Object)(object)self.body.inventory)) { int itemCount = self.body.inventory.GetItemCount(DarkClayItem.darkClayItem); int itemCount2 = self.body.inventory.GetItemCount(stackingDarkItem); float num = 1f + (float)(itemCount2 * itemCount) * 0.03f; return orig.Invoke(self, amount * num, procchainmask, nonregen); } return orig.Invoke(self, amount, procchainmask, nonregen); } private void GlobalEventManagerOnonCharacterDeathGlobal(DamageReport obj) { //IL_0046: Unknown result type (might be due to invalid IL or missing references) //IL_0050: Unknown result type (might be due to invalid IL or missing references) if (Object.op_Implicit((Object)(object)obj.attacker) && Object.op_Implicit((Object)(object)obj.attackerBody) && Object.op_Implicit((Object)(object)obj.attackerBody.inventory) && obj.victimBody.inventory.GetEquipmentIndex() == Darkness.DarknessEquipment.equipmentIndex) { onKillDarknessEnemy(obj.attackerBody); } } private void InventoryOnonServerItemGiven(Inventory arg1, ItemIndex arg2, int arg3) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_000c: Unknown result type (might be due to invalid IL or missing references) //IL_0020: Unknown result type (might be due to invalid IL or missing references) if (arg1.currentEquipmentIndex != Darkness.DarknessEquipment.equipmentIndex && darkItems.Contains(ItemCatalog.GetItemDef(arg2))) { Darkness.DarknessLevel += arg3; Darkness.UpdateDarkness(); } } private void RecalculateStatsAPIOnGetStatCoefficients(CharacterBody self, StatHookEventArgs args) { if (Object.op_Implicit((Object)(object)self) && Object.op_Implicit((Object)(object)self.inventory)) { int itemCount = self.inventory.GetItemCount(stackingDarkItem); int itemCount2 = self.inventory.GetItemCount(DarkGolemItem.darkGolemItem); int itemCount3 = self.inventory.GetItemCount(DarkBeetleItem.darkBeetleItem); int itemCount4 = self.inventory.GetItemCount(DarkPearlItem.darkPearlItem); int itemCount5 = self.inventory.GetItemCount(DarkPearlItem2.darkPearlItem); int itemCount6 = self.inventory.GetItemCount(DarkJellyfishItem.darkJellyfishItem); int itemCount7 = self.inventory.GetItemCount(DarkWispItem.darkWispItem); int itemCount8 = self.inventory.GetItemCount(DarkBleedItem.darkBleedItem); int itemCount9 = self.inventory.GetItemCount(DarkCoreItem.darkCoreItem); int itemCount10 = self.inventory.GetItemCount(DarkParentItem.darkParentItem); int itemCount11 = self.inventory.GetItemCount(DarkLightningItem.darkLightningItem); int itemCount12 = self.inventory.GetItemCount(DarkFireItem.darkFireItem); if (itemCount8 > 0) { args.critAdd += 20f; } args.baseDamageAdd += (float)(itemCount12 * itemCount) * 0.5f; args.baseHealthAdd += (float)(itemCount2 * 100 + itemCount2 * 5 * itemCount); args.baseRegenAdd += (float)(itemCount2 * 10 + itemCount2 * itemCount); args.critDamageMultAdd += (float)(itemCount8 * itemCount) * 0.03f; args.armorAdd += (float)(itemCount10 * itemCount) * 1.5f; args.attackSpeedMultAdd += (float)(itemCount3 * itemCount) * 0.03f; args.moveSpeedMultAdd += (float)(itemCount7 * itemCount) * 0.03f; args.healthMultAdd += (1f + (float)itemCount4 * 0.5f) * (1f + (float)(itemCount4 * itemCount) * 0.02f) - 1f; args.damageMultAdd += (float)itemCount * 0.04f * (float)itemCount11; float num = 1f + (float)itemCount5 * 0.5f; num *= 1f + (float)(itemCount5 * itemCount) * 0.01f; num -= 1f; args.healthMultAdd += num; args.regenMultAdd += num; args.moveSpeedMultAdd += num; args.damageMultAdd += num; args.critAdd += num * (self.crit + args.critAdd); args.attackSpeedMultAdd += num; args.armorAdd += num * (self.armor + args.armorAdd); float num2 = Mathf.Pow(1f - 0.01f * (float)itemCount6, (float)itemCount); args.cooldownMultAdd = num2 - 1f; } } } public class DarknessShrine { public class DarknessShrineManager : NetworkBehaviour { public PurchaseInteraction purchaseInteraction; private GameObject shrineUseEffect = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Common/VFX/ShrineUseEffect.prefab").WaitForCompletion(); private GameObject[] terminalGameObjects; public List<ItemIndex> sacrificedItems = new List<ItemIndex>(); private ItemIndex bonusItemToGive; public CombatSquad bossSquad; public bool changedEnemies = false; public void Start() { purchaseInteraction.SetAvailable(false); ((UnityEvent<Interactor>)(object)purchaseInteraction.onPurchase).AddListener((UnityAction<Interactor>)OnPurchase); } public void createPotentials(GameObject shrine2, SpawnCard spawnCard) { //IL_001f: Unknown result type (might be due to invalid IL or missing references) //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_0026: Unknown result type (might be due to invalid IL or missing references) //IL_0037: Unknown result type (might be due to invalid IL or missing references) //IL_0041: Expected O, but got Unknown //IL_0041: Expected O, but got Unknown //IL_003c: Unknown result type (might be due to invalid IL or missing references) //IL_0046: Expected O, but got Unknown terminalGameObjects = (GameObject[])(object)new GameObject[3]; for (int i = 0; i < 3; i++) { terminalGameObjects[i] = DirectorCore.instance.TrySpawnObject(new DirectorSpawnRequest(spawnCard, new DirectorPlacementRule { placementMode = (PlacementMode)4 }, new Xoroshiro128Plus((ulong)(Random.value * 1.8446744E+19f)))); terminalGameObjects[i].GetComponent<DarknessPotentialManager>().parent = this; } } public void OnPurchase(Interactor interactor) { //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_000c: Unknown result type (might be due to invalid IL or missing references) //IL_0018: 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_0024: Unknown result type (might be due to invalid IL or missing references) //IL_0029: Unknown result type (might be due to invalid IL or missing references) //IL_002e: 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_003a: Unknown result type (might be due to invalid IL or missing references) //IL_003f: Unknown result type (might be due to invalid IL or missing references) //IL_0044: Unknown result type (might be due to invalid IL or missing references) //IL_004f: Expected O, but got Unknown //IL_0050: Unknown result type (might be due to invalid IL or missing references) //IL_0055: Unknown result type (might be due to invalid IL or missing references) //IL_0065: Expected O, but got Unknown //IL_00d5: Unknown result type (might be due to invalid IL or missing references) //IL_00fb: Unknown result type (might be due to invalid IL or missing references) //IL_0107: Unknown result type (might be due to invalid IL or missing references) //IL_0479: Unknown result type (might be due to invalid IL or missing references) //IL_047e: Unknown result type (might be due to invalid IL or missing references) //IL_048b: Unknown result type (might be due to invalid IL or missing references) //IL_049c: Expected O, but got Unknown //IL_0115: Unknown result type (might be due to invalid IL or missing references) //IL_0121: Unknown result type (might be due to invalid IL or missing references) //IL_04ab: Unknown result type (might be due to invalid IL or missing references) //IL_04b5: Expected O, but got Unknown //IL_04ca: Unknown result type (might be due to invalid IL or missing references) //IL_0432: Unknown result type (might be due to invalid IL or missing references) //IL_0437: Unknown result type (might be due to invalid IL or missing references) //IL_0445: Unknown result type (might be due to invalid IL or missing references) //IL_0456: Expected O, but got Unknown //IL_013c: Unknown result type (might be due to invalid IL or missing references) //IL_014b: Unknown result type (might be due to invalid IL or missing references) //IL_0173: 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) //IL_0161: Unknown result type (might be due to invalid IL or missing references) //IL_0166: Unknown result type (might be due to invalid IL or missing references) //IL_01aa: Unknown result type (might be due to invalid IL or missing references) //IL_01b9: Unknown result type (might be due to invalid IL or missing references) //IL_0198: Unknown result type (might be due to invalid IL or missing references) //IL_019d: Unknown result type (might be due to invalid IL or missing references) //IL_01e1: Unknown result type (might be due to invalid IL or missing references) //IL_01f0: Unknown result type (might be due to invalid IL or missing references) //IL_01cf: Unknown result type (might be due to invalid IL or missing references) //IL_01d4: Unknown result type (might be due to invalid IL or missing references) //IL_0218: Unknown result type (might be due to invalid IL or missing references) //IL_0227: Unknown result type (might be due to invalid IL or missing references) //IL_0206: Unknown result type (might be due to invalid IL or missing references) //IL_020b: Unknown result type (might be due to invalid IL or missing references) //IL_024f: Unknown result type (might be due to invalid IL or missing references) //IL_025e: Unknown result type (might be due to invalid IL or missing references) //IL_023d: Unknown result type (might be due to invalid IL or missing references) //IL_0242: Unknown result type (might be due to invalid IL or missing references) //IL_0286: Unknown result type (might be due to invalid IL or missing references) //IL_0295: Unknown result type (might be due to invalid IL or missing references) //IL_0274: Unknown result type (might be due to invalid IL or missing references) //IL_0279: Unknown result type (might be due to invalid IL or missing references) //IL_02bd: Unknown result type (might be due to invalid IL or missing references) //IL_02cc: Unknown result type (might be due to invalid IL or missing references) //IL_02ab: Unknown result type (might be due to invalid IL or missing references) //IL_02b0: Unknown result type (might be due to invalid IL or missing references) //IL_02f4: Unknown result type (might be due to invalid IL or missing references) //IL_0303: Unknown result type (might be due to invalid IL or missing references) //IL_02e2: Unknown result type (might be due to invalid IL or missing references) //IL_02e7: Unknown result type (might be due to invalid IL or missing references) //IL_032b: Unknown result type (might be due to invalid IL or missing references) //IL_033a: Unknown result type (might be due to invalid IL or missing references) //IL_0319: Unknown result type (might be due to invalid IL or missing references) //IL_031e: Unknown result type (might be due to invalid IL or missing references) //IL_0363: Unknown result type (might be due to invalid IL or missing references) //IL_0372: Unknown result type (might be due to invalid IL or missing references) //IL_0351: Unknown result type (might be due to invalid IL or missing references) //IL_0356: Unknown result type (might be due to invalid IL or missing references) //IL_039b: Unknown result type (might be due to invalid IL or missing references) //IL_03aa: Unknown result type (might be due to invalid IL or missing references) //IL_0389: Unknown result type (might be due to invalid IL or missing references) //IL_038e: Unknown result type (might be due to invalid IL or missing references) //IL_03d0: Unknown result type (might be due to invalid IL or missing references) //IL_03df: Unknown result type (might be due to invalid IL or missing references) //IL_03be: Unknown result type (might be due to invalid IL or missing references) //IL_03c3: Unknown result type (might be due to invalid IL or missing references) //IL_03f6: Unknown result type (might be due to invalid IL or missing references) //IL_03fb: Unknown result type (might be due to invalid IL or missing references) EffectManager.SpawnEffect(shrineUseEffect, new EffectData { origin = ((Component)this).gameObject.transform.position, rotation = Quaternion.identity, scale = 1f, color = Color32.op_Implicit(Color.black) }, true); Chat.SendBroadcastChat((ChatMessageBase)new SimpleChatMessage { baseToken = "<style=cEvent><color=#000000>The Darkness Increases!</color></style>" }); purchaseInteraction.SetAvailable(false); Darkness.DarknessLevel++; Darkness.UpdateDarkness(); for (int i = 0; i < 3; i++) { if (Object.op_Implicit((Object)(object)terminalGameObjects[i])) { DarknessPotentialManager component = terminalGameObjects[i].GetComponent<DarknessPotentialManager>(); component.shrinking = 0; component.purchaseInteraction.SetAvailable(false); } } bonusItemToGive = (ItemIndex)(-1); int num = -1; if (sacrificedItems.Count == 3 && sacrificedItems[0] == sacrificedItems[1] && sacrificedItems[0] == sacrificedItems[2]) { if (sacrificedItems[0] == ItemCatalog.itemNameToIndex["BeetleGland"]) { num = 0; bonusItemToGive = DarknessItems.DarkBeetleItem.darkBeetleItem.itemIndex; } if (sacrificedItems[0] == ItemCatalog.itemNameToIndex["Knurl"]) { num = 1; bonusItemToGive = DarknessItems.DarkGolemItem.darkGolemItem.itemIndex; } if (sacrificedItems[0] == ItemCatalog.itemNameToIndex["NovaOnLowHealth"]) { num = 2; bonusItemToGive = DarknessItems.DarkJellyfishItem.darkJellyfishItem.itemIndex; } if (sacrificedItems[0] == ItemCatalog.itemNameToIndex["SprintWisp"]) { num = 3; bonusItemToGive = DarknessItems.DarkWispItem.darkWispItem.itemIndex; } if (sacrificedItems[0] == ItemCatalog.itemNameToIndex["BleedOnHitAndExplode"]) { num = 4; bonusItemToGive = DarknessItems.DarkBleedItem.darkBleedItem.itemIndex; } if (sacrificedItems[0] == ItemCatalog.itemNameToIndex["SiphonOnLowHealth"]) { num = 5; bonusItemToGive = DarknessItems.DarkClayItem.darkClayItem.itemIndex; } if (sacrificedItems[0] == ItemCatalog.itemNameToIndex["MinorConstructOnKill"]) { num = 6; bonusItemToGive = DarknessItems.DarkConstructItem.darkConstructItem.itemIndex; } if (sacrificedItems[0] == ItemCatalog.itemNameToIndex["RoboBallBuddy"]) { num = 7; bonusItemToGive = DarknessItems.DarkCoreItem.darkCoreItem.itemIndex; } if (sacrificedItems[0] == ItemCatalog.itemNameToIndex["ParentEgg"]) { num = 8; bonusItemToGive = DarknessItems.DarkParentItem.darkParentItem.itemIndex; } if (sacrificedItems[0] == ItemCatalog.itemNameToIndex["LightningStrikeOnHit"]) { num = 9; bonusItemToGive = DarknessItems.DarkLightningItem.darkLightningItem.itemIndex; } if (sacrificedItems[0] == ItemCatalog.itemNameToIndex["FireballsOnHit"]) { num = 10; bonusItemToGive = DarknessItems.DarkFireItem.darkFireItem.itemIndex; } if (sacrificedItems[0] == ItemCatalog.itemNameToIndex["Pearl"]) { bonusItemToGive = DarknessItems.DarkPearlItem.darkPearlItem.itemIndex; } if (sacrificedItems[0] == ItemCatalog.itemNameToIndex["ShinyPearl"]) { num = 11; bonusItemToGive = DarknessItems.DarkPearlItem2.darkPearlItem.itemIndex; } } CombatDirector component2 = ((Component)this).gameObject.GetComponent<CombatDirector>(); component2.monsterCardsSelection = new WeightedSelection<DirectorCard>(8); if (num == -1) { for (int j = 0; j < bosses.Length; j++) { component2.monsterCardsSelection.AddChoice(new DirectorCard { spawnCard = bosses[j], selectionWeight = 1 }, 1f); } } else { component2.monsterCardsSelection.AddChoice(new DirectorCard { spawnCard = bosses[num], selectionWeight = 1 }, 1f); } component2.rng = new Xoroshiro128Plus((ulong)(Random.value * 1.8446744E+19f)); CombatSquad val = (component2.combatSquad = ((Component)this).gameObject.AddComponent<CombatSquad>()); component2.teamIndex = (TeamIndex)2; component2.currentSpawnTarget = ((Component)this).gameObject; component2.ignoreTeamSizeLimit = true; component2.shouldSpawnOneWave = true; ((Behaviour)component2).enabled = true; component2.monsterCredit += (float)(int)(600f * Mathf.Pow(Run.instance.compensatedDifficultyCoefficient, 0.5f)); component2.SetNextSpawnAsBoss(); bossSquad = val; } private void FixedUpdate() { //IL_0175: Unknown result type (might be due to invalid IL or missing references) //IL_017b: Invalid comparison between Unknown and I4 //IL_018a: 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_0072: Unknown result type (might be due to invalid IL or missing references) //IL_0092: Unknown result type (might be due to invalid IL or missing references) //IL_01ad: Unknown result type (might be due to invalid IL or missing references) //IL_01b2: Unknown result type (might be due to invalid IL or missing references) //IL_01bc: Unknown result type (might be due to invalid IL or missing references) //IL_00ab: Unknown result type (might be due to invalid IL or missing references) //IL_00b0: Unknown result type (might be due to invalid IL or missing references) //IL_00ba: Unknown result type (might be due to invalid IL or missing references) //IL_010c: Unknown result type (might be due to invalid IL or missing references) //IL_0112: Invalid comparison between Unknown and I4 //IL_01f3: Unknown result type (might be due to invalid IL or missing references) //IL_01e1: Unknown result type (might be due to invalid IL or missing references) //IL_01e6: Unknown result type (might be due to invalid IL or missing references) //IL_02f9: Unknown result type (might be due to invalid IL or missing references) //IL_02fe: Unknown result type (might be due to invalid IL or missing references) //IL_0309: Unknown result type (might be due to invalid IL or missing references) //IL_030e: Unknown result type (might be due to invalid IL or missing references) //IL_0318: Unknown result type (might be due to invalid IL or missing references) //IL_031d: Unknown result type (might be due to invalid IL or missing references) //IL_0322: Unknown result type (might be due to invalid IL or missing references) //IL_0329: Unknown result type (might be due to invalid IL or missing references) //IL_00d1: Unknown result type (might be due to invalid IL or missing references) //IL_0121: 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_021b: Unknown result type (might be due to invalid IL or missing references) //IL_0220: Unknown result type (might be due to invalid IL or missing references) //IL_00e5: Unknown result type (might be due to invalid IL or missing references) //IL_0274: Unknown result type (might be due to invalid IL or missing references) //IL_0279: Unknown result type (might be due to invalid IL or missing references) //IL_024f: Unknown result type (might be due to invalid IL or missing references) //IL_0254: Unknown result type (might be due to invalid IL or missing references) //IL_0284: Unknown result type (might be due to invalid IL or missing references) if (!Object.op_Implicit((Object)(object)bossSquad)) { return; } if (!changedEnemies && bossSquad.membersList.Count > 0) { List<CharacterMaster> membersList = bossSquad.membersList; for (int i = 0; i < membersList.Count; i++) { membersList[i].isBoss = true; Transform transform = ((Component)membersList[i]).transform; transform.localScale *= 1.5f; Inventory inventory = membersList[i].inventory; inventory.SetEquipmentIndex(Darkness.DarknessEquipment.equipmentIndex); for (int j = 0; j < sacrificedItems.Count; j++) { ItemIndex val = sacrificedItems[j]; int num = 1; if (ItemCatalog.tier1ItemList.Contains(val)) { num = 5; } if (ItemCatalog.tier2ItemList.Contains(val)) { num = 3; } inventory.GiveItem(val, num); } if ((int)bonusItemToGive != -1) { inventory.GiveItem(bonusItemToGive, 1); } inventory.GiveItemString("ShinyPearl", Darkness.DarknessLevel); } } if (!bossSquad.defeatedServer) { return; } List<ItemIndex> list = new List<ItemIndex>(); if ((int)bonusItemToGive != -1) { list.Add(bonusItemToGive); } else { for (int k = 0; k < sacrificedItems.Count; k++) { ItemIndex item = sacrificedItems[k]; int num2 = 1; ItemIndex item2; if (ItemCatalog.tier1ItemList.Contains(item)) { item2 = ItemCatalog.tier2ItemList[(int)((float)ItemCatalog.tier2ItemList.Count * Random.value)]; } else if (ItemCatalog.tier2ItemList.Contains(item)) { item2 = ItemCatalog.itemNameToIndex[yellowItemNames[(int)((float)yellowItemNames.Length * Random.value)]]; } else if (ItemCatalog.tier3ItemList.Contains(item)) { item2 = ItemCatalog.tier1ItemList[(int)((float)ItemCatalog.tier1ItemList.Count * Random.value)]; num2 = 5; } else { item2 = ItemCatalog.tier3ItemList[(int)((float)ItemCatalog.tier3ItemList.Count * Random.value)]; } for (int l = 0; l < num2; l++) { list.Add(item2); } } } Vector3 val2 = default(Vector3); for (int m = 0; m < list.Count; m++) { float num3 = (float)(m * 2) * MathF.PI / (float)list.Count; ((Vector3)(ref val2))..ctor(Mathf.Sin(num3), 1f, Mathf.Cos(num3)); PickupDropletController.CreatePickupDroplet(PickupCatalog.FindPickupIndex(list[m]), ((Component)this).transform.position + Vector3.up * 5f, val2 * 20f); } bossSquad = null; } } public class DarknessPotentialManager : NetworkBehaviour { public PurchaseInteraction purchaseInteraction; public DarknessShrineManager parent; public NetworkUIPromptController networkUIPromptController; public PickupPickerController ppc; private Interactor interactor; private GameObject UIObject; public int shrinking = -1; public void Start() { //IL_009c: Unknown result type (might be due to invalid IL or missing references) //IL_00a6: Expected O, but got Unknown purchaseInteraction.SetAvailableTrue(); ((UnityEvent<Interactor>)(object)purchaseInteraction.onPurchase).AddListener((UnityAction<Interactor>)OnPurchase); networkUIPromptController = ((Component)this).gameObject.AddComponent<NetworkUIPromptController>(); ppc = ((Component)this).gameObject.AddComponent<PickupPickerController>(); networkUIPromptController.onDisplayBegin += ppc.OnDisplayBegin; networkUIPromptController.onDisplayEnd += ppc.OnDisplayEnd; ppc.panelPrefab = itemSelectionScreen; ppc.onPickupSelected = new PickupIndexUnityEvent(); ((UnityEvent<int>)(object)ppc.onPickupSelected).AddListener((UnityAction<int>)OnPickupSelected); } private void OnPickupSelected(int arg0) { //IL_000d: 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_001c: 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_0053: Unknown result type (might be due to invalid IL or missing references) Object.FindObjectOfType<PickupPickerPanel>().DestroyIt(); ItemIndex itemIndex = PickupCatalog.GetPickupDef(new PickupIndex(arg0)).itemIndex; ((Component)parent).GetComponent<DarknessShrineManager>().sacrificedItems.Add(itemIndex); purchaseInteraction.SetAvailable(false); Inventory inventory = ((Component)interactor).GetComponent<CharacterBody>().inventory; inventory.RemoveItem(itemIndex, 1); shrinking = 0; parent.purchaseInteraction.SetAvailableTrue(); } public void OnPurchase(Interactor interactor) { this.interactor = interactor; ppc.SetOptionsFromInteractor(interactor); networkUIPromptController.SetParticipantMasterFromInteractor(interactor); } private void FixedUpdate() { //IL_0029: 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) if (shrinking > -1) { shrinking++; Transform transform = ((Component)this).gameObject.transform; transform.localScale *= 0.95f; if (shrinking > 30) { Object.Destroy((Object)(object)((Component)this).gameObject); } } } } private GameObject shrine1 = PrefabAPI.InstantiateClone(Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/ShrineBoss/mdlShrineBoss.fbx").WaitForCompletion(), "Darkness Shrine"); private Material darkMaterial = Addressables.LoadAssetAsync<Material>((object)"RoR2/Base/ShrineBlood/matShrineBlood.mat").WaitForCompletion(); private GameObject shrine2 = PrefabAPI.InstantiateClone(Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/ShrineBlood/mdlShrineBlood.fbx").WaitForCompletion(), "Darkness Item"); private static GameObject itemSelectionScreen = PrefabAPI.InstantiateClone(Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Scrapper/ScrapperPickerPanel.prefab").WaitForCompletion(), "Darkness Item Selector"); private InteractableSpawnCard spawnCard; public static string[] bossLocations = new string[12] { "RoR2/Base/Beetle/cscBeetleQueen.asset", "RoR2/Base/Titan/cscTitanGolemPlains.asset", "RoR2/Base/Vagrant/cscVagrant.asset", "RoR2/Base/Gravekeeper/cscGravekeeper.asset", "RoR2/Base/ImpBoss/cscImpBoss.asset", "RoR2/Base/ClayBoss/cscClayBoss.asset", "RoR2/DLC1/MajorAndMinorConstruct/cscMegaConstruct.asset", "RoR2/Base/RoboBallBoss/cscRoboBallBoss.asset", "RoR2/Base/Grandparent/cscGrandparent.asset", "RoR2/Base/ElectricWorm/cscElectricWorm.asset", "RoR2/Base/MagmaWorm/cscMagmaWorm.asset", "RoR2/Base/Scav/cscScavBoss.asset" }; public static string[] yellowItemNames = new string[13] { "BeetleGland", "Knurl", "NovaOnLowHealth", "SprintWisp", "BleedOnHitAndExplode", "SiphonOnLowHealth", "MinorConstructOnKill", "RoboBallBuddy", "ParentEgg", "LightningStrikeOnHit", "FireballsOnHit", "Pearl", "ShinyPearl" }; public static SpawnCard[] bosses; public DarknessShrine() { //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_000b: Unknown result type (might be due to invalid IL or missing references) //IL_0028: 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_0040: Unknown result type (might be due to invalid IL or missing references) //IL_0045: Unknown result type (might be due to invalid IL or missing references) //IL_0081: Unknown result type (might be due to invalid IL or missing references) //IL_008b: Unknown result type (might be due to invalid IL or missing references) //IL_0128: Unknown result type (might be due to invalid IL or missing references) //IL_013d: Expected O, but got Unknown //IL_018b: Unknown result type (might be due to invalid IL or missing references) //IL_0193: Unknown result type (might be due to invalid IL or missing references) //IL_019b: Unknown result type (might be due to invalid IL or missing references) //IL_01a4: Unknown result type (might be due to invalid IL or missing references) //IL_01d2: Unknown result type (might be due to invalid IL or missing references) //IL_01d7: Unknown result type (might be due to invalid IL or missing references) //IL_01e2: Unknown result type (might be due to invalid IL or missing references) //IL_01ec: Expected O, but got Unknown //IL_01ec: Unknown result type (might be due to invalid IL or missing references) //IL_01f1: Unknown result type (might be due to invalid IL or missing references) //IL_01f9: Unknown result type (might be due to invalid IL or missing references) //IL_01fb: Unknown result type (might be due to invalid IL or missing references) //IL_0202: Expected O, but got Unknown //IL_0239: 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_02bd: Unknown result type (might be due to invalid IL or missing references) //IL_02c9: Unknown result type (might be due to invalid IL or missing references) //IL_02d5: Unknown result type (might be due to invalid IL or missing references) //IL_02e2: 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_038f: Expected O, but got Unknown //IL_03d7: Unknown result type (might be due to invalid IL or missing references) //IL_03dc: Unknown result type (might be due to invalid IL or missing references) ((Object)shrine1).name = "Shrine of Darkness"; Transform transform = shrine1.transform; transform.localScale *= 1.5f; shrine1.AddComponent<NetworkIdentity>(); ((Renderer)shrine1.GetComponent<MeshRenderer>()).sharedMaterial = darkMaterial; shrine1.AddComponent<MeshCollider>(); ((Behaviour)shrine1.AddComponent<CombatDirector>()).enabled = false; DarknessShrineManager darknessShrineManager = shrine1.AddComponent<DarknessShrineManager>(); PurchaseInteraction val = shrine1.AddComponent<PurchaseInteraction>(); val.contextToken = "Reckon with the powers of Darkness (E)"; val.NetworkdisplayNameToken = "Shrine of Darkness"; darknessShrineManager.purchaseInteraction = val; shrine1.GetComponent<Highlight>().targetRenderer = (Renderer)(object)shrine1.GetComponent<MeshRenderer>(); GameObject val2 = Object.Instantiate<GameObject>(new GameObject(), shrine1.transform); ((Collider)val2.AddComponent<BoxCollider>()).isTrigger = true; val2.AddComponent<EntityLocator>().entity = shrine1; InteractableSpawnCard val3 = ScriptableObject.CreateInstance<InteractableSpawnCard>(); ((Object)val3).name = "iscDarknessShrine"; ((SpawnCard)val3).prefab = shrine1; ((SpawnCard)val3).sendOverNetwork = true; ((SpawnCard)val3).hullSize = (HullClassification)1; ((SpawnCard)val3).nodeGraphType = (GraphType)0; ((SpawnCard)val3).requiredFlags = (NodeFlags)0; ((SpawnCard)val3).forbiddenFlags = (NodeFlags)16; ((SpawnCard)val3).directorCreditCost = 20; ((SpawnCard)val3).occupyPosition = true; val3.orientToFloor = false; val3.skipSpawnWhenSacrificeArtifactEnabled = false; val3.maxSpawnsPerStage = 1; DirectorCard card = new DirectorCard { selectionWeight = 500, spawnCard = (SpawnCard)(object)val3 }; DirectorCardHolder val4 = new DirectorCardHolder { Card = card, InteractableCategory = (InteractableCategory)4 }; Helpers.AddNewInteractable(val4); SpawnCard.onSpawnedServerGlobal += SpawnCardOnonSpawnedServerGlobal; ((Object)shrine2).name = "Darkness Potential"; Transform transform2 = shrine2.transform; transform2.localScale *= 0.005f; shrine2.AddComponent<NetworkIdentity>(); shrine2.GetComponent<Renderer>().sharedMaterial = darkMaterial; shrine2.AddComponent<MeshCollider>(); spawnCard = ScriptableObject.CreateInstance<InteractableSpawnCard>(); ((Object)spawnCard).name = "iscDarknessPotential"; ((SpawnCard)spawnCard).prefab = shrine2; ((SpawnCard)spawnCard).sendOverNetwork = true; ((SpawnCard)spawnCard).hullSize = (HullClassification)0; ((SpawnCard)spawnCard).nodeGraphType = (GraphType)0; ((SpawnCard)spawnCard).requiredFlags = (NodeFlags)0; ((SpawnCard)spawnCard).forbiddenFlags = (NodeFlags)16; ((SpawnCard)spawnCard).directorCreditCost = 0; ((SpawnCard)spawnCard).occupyPosition = true; spawnCard.orientToFloor = false; spawnCard.skipSpawnWhenSacrificeArtifactEnabled = false; spawnCard.maxSpawnsPerStage = 3; DarknessPotentialManager darknessPotentialManager = shrine2.AddComponent<DarknessPotentialManager>(); PurchaseInteraction val5 = shrine2.AddComponent<PurchaseInteraction>(); val5.contextToken = "Offer a Sacrifice to the Darkness (E)"; val5.NetworkdisplayNameToken = "Darkness Potential"; darknessPotentialManager.purchaseInteraction = val5; shrine2.GetComponent<Highlight>().targetRenderer = shrine2.GetComponent<Renderer>(); GameObject val6 = Object.Instantiate<GameObject>(new GameObject(), shrine2.transform); ((Collider)val6.AddComponent<BoxCollider>()).isTrigger = true; val6.AddComponent<EntityLocator>().entity = shrine2; bosses = (SpawnCard[])(object)new SpawnCard[bossLocations.Length]; for (int i = 0; i < bosses.Length; i++) { bosses[i] = Addressables.LoadAssetAsync<SpawnCard>((object)bossLocations[i]).WaitForCompletion(); } } private void SpawnCardOnonSpawnedServerGlobal(SpawnResult obj) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0060: Unknown result type (might be due to invalid IL or missing references) DarknessShrineManager component = obj.spawnedInstance.GetComponent<DarknessShrineManager>(); if ((Object)(object)component != (Object)null) { Log.Debug("Darkness Shrine Found"); ((Component)component).transform.Rotate(-90f, -90f, -90f); component.purchaseInteraction.SetAvailable(true); component.createPotentials(shrine2, (SpawnCard)(object)spawnCard); } DarknessPotentialManager component2 = obj.spawnedInstance.GetComponent<DarknessPotentialManager>(); if ((Object)(object)component2 != (Object)null) { Log.Debug("Darkness Potential Found"); ((Component)component2).transform.Rotate(-90f, -90f, -90f); component2.purchaseInteraction.SetAvailable(true); } } } 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); } } public class RandomArtifact { public static ArtifactDef randomArtifact; public static Sprite iconDisabled = Addressables.LoadAssetAsync<Sprite>((object)"RoR2/Base/TeamDeath/texArtifactDeathDisabled.png").WaitForCompletion(); public static Sprite iconEnabled = Addressables.LoadAssetAsync<Sprite>((object)"RoR2/Base/TeamDeath/texArtifactDeathEnabled.