using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.Versioning;
using System.Security;
using System.Security.Permissions;
using ArtifactOfPotential;
using BepInEx;
using BepInEx.Bootstrap;
using BepInEx.Configuration;
using On.RoR2;
using RoR2;
using UnityEngine;
using UnityEngine.AddressableAssets;
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.0", FrameworkDisplayName = ".NET Standard 2.0")]
[assembly: AssemblyCompany("BossesDropItems")]
[assembly: AssemblyConfiguration("Debug")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: AssemblyInformationalVersion("1.0.0+ddf73bc04a4afbe06ab0a58ae4f8e9676a13fb5f")]
[assembly: AssemblyProduct("BossesDropItems")]
[assembly: AssemblyTitle("BossesDropItems")]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: AssemblyVersion("1.0.0.0")]
[module: UnverifiableCode]
namespace BossesDropItems
{
[BepInDependency(/*Could not decode attribute arguments.*/)]
[BepInPlugin("com.Moffein.BossesDropItems", "Bosses Drop Items", "1.3.2")]
public class BossesDropItems : BaseUnityPlugin
{
[Serializable]
[CompilerGenerated]
private sealed class <>c
{
public static readonly <>c <>9 = new <>c();
public static hook_Init <>9__24_0;
public static hook_LoadGameModes <>9__24_1;
public static hook_DropRewards <>9__24_2;
public static hook_TakeDamage <>9__24_3;
internal void <Awake>b__24_0(orig_Init orig)
{
//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_001c: Unknown result type (might be due to invalid IL or missing references)
//IL_0021: Unknown result type (might be due to invalid IL or missing references)
//IL_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_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)
orig.Invoke();
LunarGolemBodyIndex = BodyCatalog.FindBodyIndex("LunarGolemBody");
LunarExploderBodyIndex = BodyCatalog.FindBodyIndex("LunarExploderBody");
LunarWispBodyIndex = BodyCatalog.FindBodyIndex("LunarWispBody");
ElectricWormBodyIndex = BodyCatalog.FindBodyIndex("ElectricWormBody");
}
internal void <Awake>b__24_1(orig_LoadGameModes orig)
{
//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)
orig.Invoke();
SimulacrumIndex = GameModeCatalog.FindGameModeIndex("InfiniteTowerRun");
}
internal void <Awake>b__24_2(orig_DropRewards orig, BossGroup self)
{
if (self.forceTier3Reward)
{
orig.Invoke(self);
}
}
internal void <Awake>b__24_3(orig_TakeDamage orig, HealthComponent self, DamageInfo damageInfo)
{
//IL_0035: 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_0160: 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_00eb: Invalid comparison between Unknown and I4
//IL_0178: Unknown result type (might be due to invalid IL or missing references)
//IL_0180: Unknown result type (might be due to invalid IL or missing references)
//IL_00bc: Unknown result type (might be due to invalid IL or missing references)
//IL_00c1: Unknown result type (might be due to invalid IL or missing references)
//IL_0104: Unknown result type (might be due to invalid IL or missing references)
//IL_0109: Unknown result type (might be due to invalid IL or missing references)
//IL_01c4: Unknown result type (might be due to invalid IL or missing references)
//IL_01c9: Unknown result type (might be due to invalid IL or missing references)
//IL_0116: 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_0128: Unknown result type (might be due to invalid IL or missing references)
//IL_012d: Unknown result type (might be due to invalid IL or missing references)
//IL_0229: Unknown result type (might be due to invalid IL or missing references)
//IL_022e: Unknown result type (might be due to invalid IL or missing references)
//IL_0282: Unknown result type (might be due to invalid IL or missing references)
bool alive = self.alive;
bool flag = Object.op_Implicit((Object)(object)self.body) && self.body.isBoss;
bool flag2 = !sacrificeOnly || RunArtifactManager.instance.IsArtifactEnabled(Artifacts.Sacrifice.artifactIndex);
orig.Invoke(self, damageInfo);
if (!(NetworkServer.active && flag2 && alive) || self.alive || !Object.op_Implicit((Object)(object)((Component)self).gameObject) || !Object.op_Implicit((Object)(object)self.body) || (!self.body.isChampion && (!(!self.body.isChampion && flag) || !hordeDropsItems || Run.instance.gameModeIndex == SimulacrumIndex)) || !Object.op_Implicit((Object)(object)self.body.teamComponent) || (int)self.body.teamComponent.teamIndex != 2 || (flag && !teleBossDropsItems) || (!lunarChimerasDropItems && (self.body.bodyIndex == LunarWispBodyIndex || self.body.bodyIndex == LunarGolemBodyIndex || self.body.bodyIndex == LunarExploderBodyIndex)))
{
return;
}
DeathRewards component = ((Component)self).gameObject.GetComponent<DeathRewards>();
PickupIndex bossPickup = (Object.op_Implicit((Object)(object)component) ? PickupCatalog.FindPickupIndex(component.bossPickup.pickupName) : PickupIndex.none);
DropItem(self.body, bossPickup, guaranteeTeleGreen && flag && self.body.isChampion, 0f);
if ((self.body.isChampion && self.body.isElite) || self.body.bodyIndex == ElectricWormBodyIndex)
{
int num = 0;
if (Object.op_Implicit((Object)(object)self.body.master))
{
num += Mathf.RoundToInt((float)self.body.master.inventory.GetItemCount(Items.BoostHp) / 10f);
}
if (self.body.bodyIndex == ElectricWormBodyIndex)
{
num += overloadingWormBonus;
}
if (self.body.isElite)
{
num = Math.Max(num, minEliteBossDrops);
}
num = Math.Min(maxExtraDrops, num);
for (int i = 0; i < num; i++)
{
DropItem(self.body, bossPickup, guaranteeTeleGreen && flag && self.body.isChampion, 15f);
}
}
}
}
public static float blankChance = 0f;
public static float whiteChance = 60f;
public static float greenChance = 30f;
public static float redChance = 3f;
public static float yellowChance = 7f;
public static int minEliteBossDrops = 3;
public static int maxExtraDrops = 7;
public static bool guaranteeTeleGreen = true;
public static bool teleBossDropsItems = true;
public static bool hordeDropsItems = true;
public static bool lunarChimerasDropItems = false;
public static bool enableTeleDrops = true;
public static bool sacrificeOnly = false;
public static int overloadingWormBonus = 4;
public static bool artifactPotentialLoaded = false;
private static BodyIndex LunarGolemBodyIndex;
private static BodyIndex LunarWispBodyIndex;
private static BodyIndex LunarExploderBodyIndex;
private static BodyIndex ElectricWormBodyIndex;
private static GameModeIndex SimulacrumIndex;
public static PickupDropTable tier1Drops = Addressables.LoadAssetAsync<PickupDropTable>((object)"RoR2/Base/Common/dtTier1Item.asset").WaitForCompletion();
public static PickupDropTable tier2Drops = Addressables.LoadAssetAsync<PickupDropTable>((object)"RoR2/Base/Common/dtTier2Item.asset").WaitForCompletion();
public static PickupDropTable tier3Drops = Addressables.LoadAssetAsync<PickupDropTable>((object)"RoR2/Base/Common/dtTier3Item.asset").WaitForCompletion();
public static GameObject potentialPrefab = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/DLC1/OptionPickup/OptionPickup.prefab").WaitForCompletion();
public void Awake()
{
//IL_0025: 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_0040: Expected O, but got Unknown
//IL_0040: Expected O, but got Unknown
//IL_005a: Unknown result type (might be due to invalid IL or missing references)
//IL_006b: Unknown result type (might be due to invalid IL or missing references)
//IL_0075: Expected O, but got Unknown
//IL_0075: Expected O, but got Unknown
//IL_008f: Unknown result type (might be due to invalid IL or missing references)
//IL_00a0: Unknown result type (might be due to invalid IL or missing references)
//IL_00aa: Expected O, but got Unknown
//IL_00aa: Expected O, but got Unknown
//IL_00c4: Unknown result type (might be due to invalid IL or missing references)
//IL_00d5: Unknown result type (might be due to invalid IL or missing references)
//IL_00df: Expected O, but got Unknown
//IL_00df: Expected O, but got Unknown
//IL_00f9: Unknown result type (might be due to invalid IL or missing references)
//IL_010a: Unknown result type (might be due to invalid IL or missing references)
//IL_0114: Expected O, but got Unknown
//IL_0114: Expected O, but got Unknown
//IL_012e: Unknown result type (might be due to invalid IL or missing references)
//IL_013f: Unknown result type (might be due to invalid IL or missing references)
//IL_0149: Expected O, but got Unknown
//IL_0149: Expected O, but got Unknown
//IL_0163: Unknown result type (might be due to invalid IL or missing references)
//IL_0174: Unknown result type (might be due to invalid IL or missing references)
//IL_017e: Expected O, but got Unknown
//IL_017e: Expected O, but got Unknown
//IL_0198: Unknown result type (might be due to invalid IL or missing references)
//IL_01a9: Unknown result type (might be due to invalid IL or missing references)
//IL_01b3: Expected O, but got Unknown
//IL_01b3: Expected O, but got Unknown
//IL_01cd: Unknown result type (might be due to invalid IL or missing references)
//IL_01de: Unknown result type (might be due to invalid IL or missing references)
//IL_01e8: Expected O, but got Unknown
//IL_01e8: Expected O, but got Unknown
//IL_0202: Unknown result type (might be due to invalid IL or missing references)
//IL_0217: Unknown result type (might be due to invalid IL or missing references)
//IL_0221: Expected O, but got Unknown
//IL_0221: Expected O, but got Unknown
//IL_023b: Unknown result type (might be due to invalid IL or missing references)
//IL_0250: Unknown result type (might be due to invalid IL or missing references)
//IL_025a: Expected O, but got Unknown
//IL_025a: Expected O, but got Unknown
//IL_0274: Unknown result type (might be due to invalid IL or missing references)
//IL_0289: Unknown result type (might be due to invalid IL or missing references)
//IL_0293: Expected O, but got Unknown
//IL_0293: Expected O, but got Unknown
//IL_02ad: Unknown result type (might be due to invalid IL or missing references)
//IL_02c2: Unknown result type (might be due to invalid IL or missing references)
//IL_02cc: Expected O, but got Unknown
//IL_02cc: Expected O, but got Unknown
//IL_02e6: Unknown result type (might be due to invalid IL or missing references)
//IL_02fb: Unknown result type (might be due to invalid IL or missing references)
//IL_0305: Expected O, but got Unknown
//IL_0305: Expected O, but got Unknown
//IL_0323: Unknown result type (might be due to invalid IL or missing references)
//IL_0328: Unknown result type (might be due to invalid IL or missing references)
//IL_032e: Expected O, but got Unknown
//IL_0348: Unknown result type (might be due to invalid IL or missing references)
//IL_034d: Unknown result type (might be due to invalid IL or missing references)
//IL_0353: Expected O, but got Unknown
//IL_03a0: Unknown result type (might be due to invalid IL or missing references)
//IL_03a5: Unknown result type (might be due to invalid IL or missing references)
//IL_03ab: Expected O, but got Unknown
//IL_037a: Unknown result type (might be due to invalid IL or missing references)
//IL_037f: Unknown result type (might be due to invalid IL or missing references)
//IL_0385: Expected O, but got Unknown
artifactPotentialLoaded = Chainloader.PluginInfos.ContainsKey("zombieseatflesh7.ArtifactOfPotential");
sacrificeOnly = ((BaseUnityPlugin)this).Config.Bind<bool>(new ConfigDefinition("Drop Settings", "Sacrifice Only"), false, new ConfigDescription("Only drop items if the Artifact of Sacrifice is enabled.", (AcceptableValueBase)null, Array.Empty<object>())).Value;
enableTeleDrops = ((BaseUnityPlugin)this).Config.Bind<bool>(new ConfigDefinition("Drop Settings", "Enable Teleporter Drops"), true, new ConfigDescription("Teleporters drop items for all players when all bosses are killed.", (AcceptableValueBase)null, Array.Empty<object>())).Value;
teleBossDropsItems = ((BaseUnityPlugin)this).Config.Bind<bool>(new ConfigDefinition("Drop Settings", "Teleporter Bosses Drop Items"), false, new ConfigDescription("Allows Teleporter Bosses to drop items when killed.", (AcceptableValueBase)null, Array.Empty<object>())).Value;
hordeDropsItems = ((BaseUnityPlugin)this).Config.Bind<bool>(new ConfigDefinition("Drop Settings", "Horde of Many Drops Items"), false, new ConfigDescription("Allows Horde of Many Bosses to drop items when killed.", (AcceptableValueBase)null, Array.Empty<object>())).Value;
guaranteeTeleGreen = ((BaseUnityPlugin)this).Config.Bind<bool>(new ConfigDefinition("Drop Settings", "Guaranteed Green from Tele Bosses"), false, new ConfigDescription("Guarantees that Teleporter Bosses will drop only Green-tier items or better. Does not apply to Horde of Many.", (AcceptableValueBase)null, Array.Empty<object>())).Value;
maxExtraDrops = ((BaseUnityPlugin)this).Config.Bind<int>(new ConfigDefinition("Drop Settings", "Max Extra Drops"), 0, new ConfigDescription("Maximum amount of extra items Elite Bosses can drop. Regular Elite Bosses will attempt to drop 3 extra items, while Tier 2 Elite Bosses will attempt to drop 17.", (AcceptableValueBase)null, Array.Empty<object>())).Value;
minEliteBossDrops = ((BaseUnityPlugin)this).Config.Bind<int>(new ConfigDefinition("Drop Settings", "Min Extra Elite Boss Drops"), 0, new ConfigDescription("Minimum amount of extra items Elite Bosses can drop.", (AcceptableValueBase)null, Array.Empty<object>())).Value;
overloadingWormBonus = ((BaseUnityPlugin)this).Config.Bind<int>(new ConfigDefinition("Drop Settings", "Overloading Worm Extra Boss Drops"), 0, new ConfigDescription("Extra item drops from Overloading Worms.", (AcceptableValueBase)null, Array.Empty<object>())).Value;
lunarChimerasDropItems = ((BaseUnityPlugin)this).Config.Bind<bool>(new ConfigDefinition("Drop Settings", "Lunar Chimeras Drop Items"), false, new ConfigDescription("Makes Lunar Chimeras able to drop items when they show up as bosses during Mitchell Phase 2.", (AcceptableValueBase)null, Array.Empty<object>())).Value;
blankChance = ((BaseUnityPlugin)this).Config.Bind<float>(new ConfigDefinition("Item Tier Settings", "Blank Chance"), 0f, new ConfigDescription("Chance for bosses to drop no items.", (AcceptableValueBase)null, Array.Empty<object>())).Value;
whiteChance = ((BaseUnityPlugin)this).Config.Bind<float>(new ConfigDefinition("Item Tier Settings", "White Chance"), 60f, new ConfigDescription("Chance for bosses to drop a white item.", (AcceptableValueBase)null, Array.Empty<object>())).Value;
greenChance = ((BaseUnityPlugin)this).Config.Bind<float>(new ConfigDefinition("Item Tier Settings", "Green Chance"), 30f, new ConfigDescription("Chance for bosses to drop a green item.", (AcceptableValueBase)null, Array.Empty<object>())).Value;
redChance = ((BaseUnityPlugin)this).Config.Bind<float>(new ConfigDefinition("Item Tier Settings", "Red Chance"), 3f, new ConfigDescription("Chance for bosses to drop a red item.", (AcceptableValueBase)null, Array.Empty<object>())).Value;
yellowChance = ((BaseUnityPlugin)this).Config.Bind<float>(new ConfigDefinition("Item Tier Settings", "Yellow Chance"), 7f, new ConfigDescription("Chance for bosses to drop their corresponding boss item if they have one.", (AcceptableValueBase)null, Array.Empty<object>())).Value;
object obj = <>c.<>9__24_0;
if (obj == null)
{
hook_Init val = delegate(orig_Init orig)
{
//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_001c: Unknown result type (might be due to invalid IL or missing references)
//IL_0021: Unknown result type (might be due to invalid IL or missing references)
//IL_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_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)
orig.Invoke();
LunarGolemBodyIndex = BodyCatalog.FindBodyIndex("LunarGolemBody");
LunarExploderBodyIndex = BodyCatalog.FindBodyIndex("LunarExploderBody");
LunarWispBodyIndex = BodyCatalog.FindBodyIndex("LunarWispBody");
ElectricWormBodyIndex = BodyCatalog.FindBodyIndex("ElectricWormBody");
};
<>c.<>9__24_0 = val;
obj = (object)val;
}
BodyCatalog.Init += (hook_Init)obj;
object obj2 = <>c.<>9__24_1;
if (obj2 == null)
{
hook_LoadGameModes val2 = delegate(orig_LoadGameModes orig)
{
//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)
orig.Invoke();
SimulacrumIndex = GameModeCatalog.FindGameModeIndex("InfiniteTowerRun");
};
<>c.<>9__24_1 = val2;
obj2 = (object)val2;
}
GameModeCatalog.LoadGameModes += (hook_LoadGameModes)obj2;
if (!enableTeleDrops)
{
object obj3 = <>c.<>9__24_2;
if (obj3 == null)
{
hook_DropRewards val3 = delegate(orig_DropRewards orig, BossGroup self)
{
if (self.forceTier3Reward)
{
orig.Invoke(self);
}
};
<>c.<>9__24_2 = val3;
obj3 = (object)val3;
}
BossGroup.DropRewards += (hook_DropRewards)obj3;
}
object obj4 = <>c.<>9__24_3;
if (obj4 == null)
{
hook_TakeDamage val4 = delegate(orig_TakeDamage orig, HealthComponent self, DamageInfo damageInfo)
{
//IL_0035: 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_0160: 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_00eb: Invalid comparison between Unknown and I4
//IL_0178: Unknown result type (might be due to invalid IL or missing references)
//IL_0180: Unknown result type (might be due to invalid IL or missing references)
//IL_00bc: Unknown result type (might be due to invalid IL or missing references)
//IL_00c1: Unknown result type (might be due to invalid IL or missing references)
//IL_0104: Unknown result type (might be due to invalid IL or missing references)
//IL_0109: Unknown result type (might be due to invalid IL or missing references)
//IL_01c4: Unknown result type (might be due to invalid IL or missing references)
//IL_01c9: Unknown result type (might be due to invalid IL or missing references)
//IL_0116: 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_0128: Unknown result type (might be due to invalid IL or missing references)
//IL_012d: Unknown result type (might be due to invalid IL or missing references)
//IL_0229: Unknown result type (might be due to invalid IL or missing references)
//IL_022e: Unknown result type (might be due to invalid IL or missing references)
//IL_0282: Unknown result type (might be due to invalid IL or missing references)
bool alive = self.alive;
bool flag = Object.op_Implicit((Object)(object)self.body) && self.body.isBoss;
bool flag2 = !sacrificeOnly || RunArtifactManager.instance.IsArtifactEnabled(Artifacts.Sacrifice.artifactIndex);
orig.Invoke(self, damageInfo);
if (NetworkServer.active && flag2 && alive && !self.alive && Object.op_Implicit((Object)(object)((Component)self).gameObject) && Object.op_Implicit((Object)(object)self.body) && (self.body.isChampion || (!self.body.isChampion && flag && hordeDropsItems && Run.instance.gameModeIndex != SimulacrumIndex)) && Object.op_Implicit((Object)(object)self.body.teamComponent) && (int)self.body.teamComponent.teamIndex == 2 && (!flag || teleBossDropsItems) && (lunarChimerasDropItems || (self.body.bodyIndex != LunarWispBodyIndex && self.body.bodyIndex != LunarGolemBodyIndex && self.body.bodyIndex != LunarExploderBodyIndex)))
{
DeathRewards component = ((Component)self).gameObject.GetComponent<DeathRewards>();
PickupIndex bossPickup = (Object.op_Implicit((Object)(object)component) ? PickupCatalog.FindPickupIndex(component.bossPickup.pickupName) : PickupIndex.none);
DropItem(self.body, bossPickup, guaranteeTeleGreen && flag && self.body.isChampion, 0f);
if ((self.body.isChampion && self.body.isElite) || self.body.bodyIndex == ElectricWormBodyIndex)
{
int num = 0;
if (Object.op_Implicit((Object)(object)self.body.master))
{
num += Mathf.RoundToInt((float)self.body.master.inventory.GetItemCount(Items.BoostHp) / 10f);
}
if (self.body.bodyIndex == ElectricWormBodyIndex)
{
num += overloadingWormBonus;
}
if (self.body.isElite)
{
num = Math.Max(num, minEliteBossDrops);
}
num = Math.Min(maxExtraDrops, num);
for (int i = 0; i < num; i++)
{
DropItem(self.body, bossPickup, guaranteeTeleGreen && flag && self.body.isChampion, 15f);
}
}
}
};
<>c.<>9__24_3 = val4;
obj4 = (object)val4;
}
HealthComponent.TakeDamage += (hook_TakeDamage)obj4;
}
private static void DropItem(CharacterBody victimBody, PickupIndex bossPickup, bool greenMinimum, float randomOffset)
{
//IL_0004: 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_00c2: Unknown result type (might be due to invalid IL or missing references)
//IL_0151: Unknown result type (might be due to invalid IL or missing references)
//IL_0156: Unknown result type (might be due to invalid IL or missing references)
//IL_00ff: 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_00fa: Unknown result type (might be due to invalid IL or missing references)
//IL_0131: Unknown result type (might be due to invalid IL or missing references)
//IL_0117: Unknown result type (might be due to invalid IL or missing references)
//IL_01a7: Unknown result type (might be due to invalid IL or missing references)
//IL_01a8: 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_01ac: Unknown result type (might be due to invalid IL or missing references)
//IL_01ae: Unknown result type (might be due to invalid IL or missing references)
//IL_01b1: Invalid comparison between Unknown and I4
//IL_016d: Unknown result type (might be due to invalid IL or missing references)
//IL_0175: Unknown result type (might be due to invalid IL or missing references)
//IL_0195: Unknown result type (might be due to invalid IL or missing references)
//IL_01b5: Unknown result type (might be due to invalid IL or missing references)
//IL_01b8: Invalid comparison between Unknown and I4
//IL_02cc: Unknown result type (might be due to invalid IL or missing references)
//IL_02d4: Unknown result type (might be due to invalid IL or missing references)
//IL_02f4: Unknown result type (might be due to invalid IL or missing references)
//IL_020c: Unknown result type (might be due to invalid IL or missing references)
//IL_0211: Unknown result type (might be due to invalid IL or missing references)
//IL_0214: Unknown result type (might be due to invalid IL or missing references)
//IL_0216: Unknown result type (might be due to invalid IL or missing references)
//IL_021b: Unknown result type (might be due to invalid IL or missing references)
//IL_0259: Unknown result type (might be due to invalid IL or missing references)
//IL_027c: Unknown result type (might be due to invalid IL or missing references)
//IL_0281: Unknown result type (might be due to invalid IL or missing references)
//IL_0288: Unknown result type (might be due to invalid IL or missing references)
//IL_028d: Unknown result type (might be due to invalid IL or missing references)
//IL_0294: 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_02a0: 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_0250: Unknown result type (might be due to invalid IL or missing references)
//IL_0252: Unknown result type (might be due to invalid IL or missing references)
bool flag = false;
ItemTier val = (ItemTier)5;
float num = whiteChance + greenChance + redChance + yellowChance + blankChance;
if (!greenMinimum && Util.CheckRoll(100f * blankChance / num, 0f, (CharacterMaster)null))
{
return;
}
num -= blankChance;
List<PickupIndex> list;
if (!greenMinimum && Util.CheckRoll(100f * whiteChance / num, 0f, (CharacterMaster)null))
{
list = Run.instance.availableTier1DropList;
val = (ItemTier)0;
}
else
{
num -= whiteChance;
if (Util.CheckRoll(100f * greenChance / num, 0f, (CharacterMaster)null))
{
list = Run.instance.availableTier2DropList;
val = (ItemTier)1;
}
else
{
num -= greenChance;
if (Util.CheckRoll(100f * redChance / num, 0f, (CharacterMaster)null))
{
list = Run.instance.availableTier3DropList;
val = (ItemTier)2;
}
else if (bossPickup != PickupIndex.none)
{
list = new List<PickupIndex> { bossPickup };
flag = true;
}
else
{
list = Run.instance.availableTier2DropList;
val = (ItemTier)1;
}
}
}
int index = Run.instance.treasureRng.RangeInt(0, list.Count);
PickupIndex val2 = list[index];
if (flag || !IsPotentialArtifactActive())
{
PickupDropletController.CreatePickupDroplet(val2, victimBody.transform.position, new Vector3(Random.Range(0f, randomOffset), 20f, Random.Range(0f, randomOffset)));
return;
}
ItemTier val3 = val;
ItemTier val4 = val3;
PickupDropTable val5 = (((int)val4 == 1) ? tier2Drops : (((int)val4 != 2) ? tier1Drops : tier3Drops));
Option[] array = PickupPickerController.GenerateOptionsFromDropTable(3, val5, Run.instance.treasureRng);
if (array.Length != 0)
{
bool flag2 = false;
Option[] array2 = array;
foreach (Option val6 in array2)
{
if (val6.pickupIndex == val2)
{
flag2 = true;
break;
}
}
if (!flag2)
{
array[0].pickupIndex = val2;
}
CreatePickupInfo val7 = default(CreatePickupInfo);
val7.pickerOptions = array;
val7.prefabOverride = potentialPrefab;
val7.position = victimBody.transform.position;
val7.rotation = Quaternion.identity;
((CreatePickupInfo)(ref val7)).pickupIndex = PickupCatalog.FindPickupIndex(val);
PickupDropletController.CreatePickupDroplet(val7, new Vector3(Random.Range(0f, randomOffset), 20f, Random.Range(0f, randomOffset)));
}
else
{
PickupDropletController.CreatePickupDroplet(val2, victimBody.transform.position, new Vector3(Random.Range(0f, randomOffset), 20f, Random.Range(0f, randomOffset)));
}
}
public static bool IsPotentialArtifactActive()
{
bool result = false;
if (artifactPotentialLoaded)
{
result = IsPotentialArtifactActiveInternal();
}
return result;
}
[MethodImpl(MethodImplOptions.NoInlining | MethodImplOptions.NoOptimization)]
private static bool IsPotentialArtifactActiveInternal()
{
return Object.op_Implicit((Object)(object)RunArtifactManager.instance) && RunArtifactManager.instance.IsArtifactEnabled(PotentialArtifact.Potential);
}
}
}
namespace R2API.Utils
{
[AttributeUsage(AttributeTargets.Assembly)]
public class ManualNetworkRegistrationAttribute : Attribute
{
}
}