Please disclose if any significant portion of your mod was created using AI tools by adding the 'AI Generated' category. Failing to do so may result in the mod being removed from Thunderstore.
Decompiled source of PlayWithEliteItem v1.0.1
plugins/AlchemyFlames-GiveEliteItem 1.0.1/GiveEliteItem.dll
Decompiled 2 years agousing System; using System.Collections; using System.Collections.Generic; using System.Diagnostics; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using System.Security.Permissions; using BepInEx; using BepInEx.Bootstrap; using BepInEx.Configuration; using BepInEx.Logging; using HG.Reflection; using InLobbyConfig; using InLobbyConfig.Fields; using On.RoR2; using R2API.Utils; using RoR2; using UnityEngine; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] [assembly: OptIn] [assembly: TargetFramework(".NETStandard,Version=v2.0", FrameworkDisplayName = ".NET Standard 2.0")] [assembly: AssemblyCompany("GiveEliteItem")] [assembly: AssemblyConfiguration("Debug")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0")] [assembly: AssemblyProduct("GiveEliteItem")] [assembly: AssemblyTitle("GiveEliteItem")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.0.0.0")] namespace GiveEliteItem; public class BepConfig { public static ConfigEntry<int> StartingCash; public static ConfigEntry<EnumCollection.ItemWhiteEnum> StartingItemWhite; public static ConfigEntry<int> StartingItemWhiteCount; public static ConfigEntry<EnumCollection.ItemGreenEnum> StartingItemGreen; public static ConfigEntry<int> StartingItemGreenCount; public static ConfigEntry<EnumCollection.ItemRedEnum> StartingItemRed; public static ConfigEntry<int> StartingItemRedCount; public static ConfigEntry<EnumCollection.ItemBossEnum> StartingItemBoss; public static ConfigEntry<int> StartingItemBossCount; public static ConfigEntry<EnumCollection.ItemLunarEnum> StartingItemLunar; public static ConfigEntry<int> StartingItemLunarCount; public static ConfigEntry<EnumCollection.ItemVoidEnum> StartingItemVoid; public static ConfigEntry<int> StartingItemVoidCount; public static ConfigEntry<EnumCollection.ItemEquipEnum> StartingItemEquip; public static void Init() { //IL_0028: Unknown result type (might be due to invalid IL or missing references) //IL_0032: Expected O, but got Unknown //IL_004e: Unknown result type (might be due to invalid IL or missing references) //IL_0058: Expected O, but got Unknown //IL_0074: Unknown result type (might be due to invalid IL or missing references) //IL_007e: Expected O, but got Unknown //IL_009a: Unknown result type (might be due to invalid IL or missing references) //IL_00a4: Expected O, but got Unknown //IL_00c0: Unknown result type (might be due to invalid IL or missing references) //IL_00ca: Expected O, but got Unknown //IL_00e6: Unknown result type (might be due to invalid IL or missing references) //IL_00f0: Expected O, but got Unknown //IL_010c: Unknown result type (might be due to invalid IL or missing references) //IL_0116: Expected O, but got Unknown //IL_0132: Unknown result type (might be due to invalid IL or missing references) //IL_013c: Expected O, but got Unknown //IL_0158: Unknown result type (might be due to invalid IL or missing references) //IL_0162: 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_01a4: Unknown result type (might be due to invalid IL or missing references) //IL_01ae: Expected O, but got Unknown //IL_01ca: Unknown result type (might be due to invalid IL or missing references) //IL_01d4: Expected O, but got Unknown //IL_01f0: Unknown result type (might be due to invalid IL or missing references) //IL_01fa: Expected O, but got Unknown //IL_0216: Unknown result type (might be due to invalid IL or missing references) //IL_0220: Expected O, but got Unknown ConfigFile config = ((BaseUnityPlugin)GiveEliteItem.instance).Config; StartingCash = config.Bind<int>("Start Bonus", "Cash", 500, new ConfigDescription("How much starting cash each player receives.", (AcceptableValueBase)null, Array.Empty<object>())); StartingItemWhite = config.Bind<EnumCollection.ItemWhiteEnum>("Start Bonus", "White Item", EnumCollection.ItemWhiteEnum.None, new ConfigDescription("Which white item each player shall receive at the start.", (AcceptableValueBase)null, Array.Empty<object>())); StartingItemWhiteCount = config.Bind<int>("Start Bonus", "White Item Count", 1, new ConfigDescription("How many of the white item each player shall receive.", (AcceptableValueBase)null, Array.Empty<object>())); StartingItemGreen = config.Bind<EnumCollection.ItemGreenEnum>("Start Bonus", "Green Item", EnumCollection.ItemGreenEnum.None, new ConfigDescription("Which green item each player shall receive at the start.", (AcceptableValueBase)null, Array.Empty<object>())); StartingItemGreenCount = config.Bind<int>("Start Bonus", "Green Item Count", 1, new ConfigDescription("How many of the green item each player shall receive.", (AcceptableValueBase)null, Array.Empty<object>())); StartingItemRed = config.Bind<EnumCollection.ItemRedEnum>("Start Bonus", "Red Item", EnumCollection.ItemRedEnum.None, new ConfigDescription("Which red item each player shall receive at the start.", (AcceptableValueBase)null, Array.Empty<object>())); StartingItemRedCount = config.Bind<int>("Start Bonus", "Red Item Count", 1, new ConfigDescription("How many of the red item each player shall receive.", (AcceptableValueBase)null, Array.Empty<object>())); StartingItemBoss = config.Bind<EnumCollection.ItemBossEnum>("Start Bonus", "Boss Item", EnumCollection.ItemBossEnum.None, new ConfigDescription("Which boss item each player shall receive at the start.", (AcceptableValueBase)null, Array.Empty<object>())); StartingItemBossCount = config.Bind<int>("Start Bonus", "Boss Item Count", 1, new ConfigDescription("How many of the boss item each player shall receive.", (AcceptableValueBase)null, Array.Empty<object>())); StartingItemLunar = config.Bind<EnumCollection.ItemLunarEnum>("Start Bonus", "Lunar Item", EnumCollection.ItemLunarEnum.None, new ConfigDescription("Which lunar item each player shall receive at the start.", (AcceptableValueBase)null, Array.Empty<object>())); StartingItemLunarCount = config.Bind<int>("Start Bonus", "Lunar Item Count", 1, new ConfigDescription("How many of the lunar item each player shall receive.", (AcceptableValueBase)null, Array.Empty<object>())); StartingItemVoid = config.Bind<EnumCollection.ItemVoidEnum>("Start Bonus", "Void Item", EnumCollection.ItemVoidEnum.None, new ConfigDescription("Which void item each player shall receive at the start.", (AcceptableValueBase)null, Array.Empty<object>())); StartingItemVoidCount = config.Bind<int>("Start Bonus", "Void Item Count", 1, new ConfigDescription("How many of the void item each player shall receive.", (AcceptableValueBase)null, Array.Empty<object>())); StartingItemEquip = config.Bind<EnumCollection.ItemEquipEnum>("Start Bonus", "Equipment", EnumCollection.ItemEquipEnum.None, new ConfigDescription("Which equipment each player shall receive at the start.", (AcceptableValueBase)null, Array.Empty<object>())); if (ModCompatibilityInLobbyConfig.enabled) { ModCompatibilityInLobbyConfig.CreateFromBepInExConfigFile(config, "Start Bonus"); } } } public class EnumCollection { public enum ItemWhiteEnum { None, ArmorPiercingRounds, BackupMagazine, BisonSteak, BundleOfFireworks, BustlingFungus, CautiousSlug, Crowbar, DelicateWatch, EnergyDrink, FocusCrystal, Gasoline, ItemScrapWhite, LensMakersGlasses, Medkit, Mocha, MonsterTooth, OddlyshapedOpal, PaulsGoatHoof, PersonalShieldGenerator, PowerElixir, RepulsionArmorPlate, RollOfPennies, RustedKey, SoldiersSyringe, StickyBomb, StunGrenade, TopazBrooch, TougherTimes, TriTipDagger, Warbanner } public enum ItemGreenEnum { None, AtGMissileMk1, Bandolier, BerzerkersPauldron, Chronobauble, DeathMark, FuelCell, GhorsTome, HarvestersScythe, HopooFeather, HuntersHarpoon, IgnitionTank, Infusion, ItemScrapGreen, KjarosBand, LeechingSeed, LeptonDaisy, OldGuillotine, OldWarStealthkit, PredatoryInstincts, Razorwire, RedWhip, RegeneratingScrap, RoseBuckler, RunaldsBand, ShippingRequestForm, Shuriken, SquidPolyp, Ukulele, WarHorn, WaxQuail, WillOTheWisp } public enum ItemRedEnum { None, _57LeafClover, Aegis, AlienHead, BensRaincoat, BottledChaos, Brainstalks, BrilliantBehemoth, CeremonialDagger, DefensiveMicrobots, DiosBestFriend, FrostRelic, H3AD5Tv2, HappiestMask, HardlightAfterburner, InterstellarDeskPlant, ItemScrapRed, LaserScope, NkuhanasOpinion, PocketICBM, RejuvenationRack, ResonanceDisc, SentientMeatHook, ShatteringJustice, SoulboundCatalyst, SpareDroneParts, SymbioticScorpion, UnstableTeslaCoil, WakeOfVultures } public enum ItemBossEnum { None, ChargedPerforator, DefenseNucleus, EmpathyCores, GenesisLoop, HalcyonSeed, IrradiantPearl, ItemScrapYellow, LittleDisciple, MiredUrn, MoltenPerforator, Pearl, Planula, QueensGland, Shatterspleen, TitanicKnurl } public enum ItemVoidEnum { None, BenthicBloom, EncrustedKey, LostSeersLenses, LysateCell, Needletick, NewlyHatchedZoea, PlasmaShrimp, PluripotentLarva, Polylute, SaferSpaces, SingularityBand, Tentabauble, VoidsentFlame, WeepingFungus } public enum ItemLunarEnum { None, BeadsOfFealty, BrittleCrown, Corpsebloom, DefiantGouge, Egocentrism, EssenceOfHeresy, EulogyZero, FocusedConvergence, GestureOfTheDrowned, HooksOfHeresy, LightFluxPauldron, MercurialRachis, Purity, ShapedGlass, StoneFluxPauldron, StridesOfHeresy, Transcendence, VisionsOfHeresy } public enum ItemEquipEnum { None, BeyondTheLimits, BlastShower, CovenOfGold, DisposableMissileLauncher, EccentricVase, EffigyOfGrief, ElegyOfExtinction, ExecutiveCard, ForeignFruit, ForgiveMePlease, FuelArray, GlowingMeteorite, GnarledWoodsprite, GooboJr, GoragsOpus, HelfireTincture, HerBitingEmbrace, HisReassurance, IfritsDistinction, JadeElephant, JarOfSouls, MilkyChrysalis, Molotov, NkuhanasRetort, OcularHUD, OverloadingExcavator, PreonAccumulator, PrimordialCube, RadarScanner, ReapersRemorse, Recycler, RemoteCaffeinator, RoyalCapacitor, Sawmerang, SharedDesign, SilenceBetweenTwoStrikes, SpectralCirclet, SpinelTonic, SuperMassiveLeech, TheBackup, TheCrowdfunder, TrophyHuntersTricorn, VolcanicEgg } private static ItemDef ToItemDef(string itemName) { //IL_000e: Unknown result type (might be due to invalid IL or missing references) //IL_0013: Unknown result type (might be due to invalid IL or missing references) //IL_0014: Unknown result type (might be due to invalid IL or missing references) //IL_0016: Invalid comparison between Unknown and I4 //IL_0020: Unknown result type (might be due to invalid IL or missing references) if (itemName == null) { return null; } ItemIndex val = ItemCatalog.FindItemIndex(itemName); if ((int)val == -1) { return null; } return ItemCatalog.GetItemDef(val); } public static ItemDef ToItemDef(ItemWhiteEnum value) { return ToItemDef(getItemName(value)); } public static ItemDef ToItemDef(ItemGreenEnum value) { return ToItemDef(getItemName(value)); } public static ItemDef ToItemDef(ItemRedEnum value) { return ToItemDef(getItemName(value)); } public static ItemDef ToItemDef(ItemBossEnum value) { return ToItemDef(getItemName(value)); } public static ItemDef ToItemDef(ItemVoidEnum value) { return ToItemDef(getItemName(value)); } public static ItemDef ToItemDef(ItemLunarEnum value) { return ToItemDef(getItemName(value)); } public static EquipmentIndex ToEquipIndex(ItemEquipEnum value) { //IL_0015: 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_0011: Unknown result type (might be due to invalid IL or missing references) //IL_001d: Unknown result type (might be due to invalid IL or missing references) string itemName = getItemName(value); if (itemName == null) { return (EquipmentIndex)(-1); } return EquipmentCatalog.FindEquipmentIndex(itemName); } private static string getItemName(ItemWhiteEnum item) { return item switch { ItemWhiteEnum.ArmorPiercingRounds => "BossDamageBonus", ItemWhiteEnum.BackupMagazine => "SecondarySkillMagazine", ItemWhiteEnum.BisonSteak => "FlatHealth", ItemWhiteEnum.BundleOfFireworks => "Firework", ItemWhiteEnum.BustlingFungus => "Mushroom", ItemWhiteEnum.CautiousSlug => "HealWhileSafe", ItemWhiteEnum.Crowbar => "Crowbar", ItemWhiteEnum.DelicateWatch => "FragileDamageBonus", ItemWhiteEnum.EnergyDrink => "SprintBonus", ItemWhiteEnum.FocusCrystal => "NearbyDamageBonus", ItemWhiteEnum.Gasoline => "IgniteOnKill", ItemWhiteEnum.ItemScrapWhite => "ScrapWhite", ItemWhiteEnum.LensMakersGlasses => "CritGlasses", ItemWhiteEnum.Medkit => "Medkit", ItemWhiteEnum.Mocha => "AttackSpeedAndMoveSpeed", ItemWhiteEnum.MonsterTooth => "Tooth", ItemWhiteEnum.OddlyshapedOpal => "OutOfCombatArmor", ItemWhiteEnum.PaulsGoatHoof => "Hoof", ItemWhiteEnum.PersonalShieldGenerator => "PersonalShield", ItemWhiteEnum.PowerElixir => "HealingPotion", ItemWhiteEnum.RepulsionArmorPlate => "ArmorPlate", ItemWhiteEnum.RollOfPennies => "GoldOnHurt", ItemWhiteEnum.RustedKey => "TreasureCache", ItemWhiteEnum.SoldiersSyringe => "Syringe", ItemWhiteEnum.StickyBomb => "StickyBomb", ItemWhiteEnum.StunGrenade => "StunChanceOnHit", ItemWhiteEnum.TopazBrooch => "BarrierOnKill", ItemWhiteEnum.TougherTimes => "Bear", ItemWhiteEnum.TriTipDagger => "BleedOnHit", ItemWhiteEnum.Warbanner => "WardOnLevel", _ => null, }; } private static string getItemName(ItemGreenEnum item) { return item switch { ItemGreenEnum.AtGMissileMk1 => "Missile", ItemGreenEnum.Bandolier => "Bandolier", ItemGreenEnum.BerzerkersPauldron => "WarCryOnMultiKill", ItemGreenEnum.Chronobauble => "SlowOnHit", ItemGreenEnum.DeathMark => "DeathMark", ItemGreenEnum.FuelCell => "EquipmentMagazine", ItemGreenEnum.GhorsTome => "BonusGoldPackOnKill", ItemGreenEnum.HarvestersScythe => "HealOnCrit", ItemGreenEnum.HopooFeather => "Feather", ItemGreenEnum.HuntersHarpoon => "MoveSpeedOnKill", ItemGreenEnum.IgnitionTank => "StrengthenBurn", ItemGreenEnum.Infusion => "Infusion", ItemGreenEnum.ItemScrapGreen => "ScrapGreen", ItemGreenEnum.KjarosBand => "FireRing", ItemGreenEnum.LeechingSeed => "Seed", ItemGreenEnum.LeptonDaisy => "TPHealingNova", ItemGreenEnum.OldGuillotine => "ExecuteLowHealthElite", ItemGreenEnum.OldWarStealthkit => "Phasing", ItemGreenEnum.PredatoryInstincts => "AttackSpeedOnCrit", ItemGreenEnum.Razorwire => "Thorns", ItemGreenEnum.RedWhip => "SprintOutOfCombat", ItemGreenEnum.RegeneratingScrap => "RegeneratingScrap", ItemGreenEnum.RoseBuckler => "SprintArmor", ItemGreenEnum.RunaldsBand => "IceRing", ItemGreenEnum.ShippingRequestForm => "FreeChest", ItemGreenEnum.Shuriken => "PrimarySkillShuriken", ItemGreenEnum.SquidPolyp => "Squid", ItemGreenEnum.Ukulele => "ChainLightning", ItemGreenEnum.WarHorn => "EnergizedOnEquipmentUse", ItemGreenEnum.WaxQuail => "JumpBoost", ItemGreenEnum.WillOTheWisp => "ExplodeOnDeath", _ => null, }; } private static string getItemName(ItemRedEnum item) { return item switch { ItemRedEnum._57LeafClover => "Clover", ItemRedEnum.Aegis => "BarrierOnOverHeal", ItemRedEnum.AlienHead => "AlienHead", ItemRedEnum.BensRaincoat => "ImmuneToDebuff", ItemRedEnum.BottledChaos => "RandomEquipmentTrigger", ItemRedEnum.Brainstalks => "KillEliteFrenzy", ItemRedEnum.BrilliantBehemoth => "Behemoth", ItemRedEnum.CeremonialDagger => "Dagger", ItemRedEnum.DefensiveMicrobots => "CaptainDefenseMatrix", ItemRedEnum.DiosBestFriend => "ExtraLife", ItemRedEnum.FrostRelic => "Icicle", ItemRedEnum.H3AD5Tv2 => "FallBoots", ItemRedEnum.HappiestMask => "GhostOnKill", ItemRedEnum.HardlightAfterburner => "UtilitySkillMagazine", ItemRedEnum.InterstellarDeskPlant => "Plant", ItemRedEnum.ItemScrapRed => "ScrapRed", ItemRedEnum.LaserScope => "CritDamage", ItemRedEnum.NkuhanasOpinion => "NovaOnHeal", ItemRedEnum.PocketICBM => "MoreMissile", ItemRedEnum.RejuvenationRack => "IncreaseHealing", ItemRedEnum.ResonanceDisc => "LaserTurbine", ItemRedEnum.SentientMeatHook => "BounceNearby", ItemRedEnum.ShatteringJustice => "ArmorReductionOnHit", ItemRedEnum.SoulboundCatalyst => "Talisman", ItemRedEnum.SpareDroneParts => "DroneWeapons", ItemRedEnum.SymbioticScorpion => "PermanentDebuffOnHit", ItemRedEnum.UnstableTeslaCoil => "ShockNearby", ItemRedEnum.WakeOfVultures => "HeadHunter", _ => null, }; } private static string getItemName(ItemBossEnum item) { return item switch { ItemBossEnum.ChargedPerforator => "LightningStrikeOnHit", ItemBossEnum.DefenseNucleus => "MinorConstructOnKill", ItemBossEnum.EmpathyCores => "RoboBallBuddy", ItemBossEnum.GenesisLoop => "NovaOnLowHealth", ItemBossEnum.HalcyonSeed => "TitanGoldDuringTP", ItemBossEnum.IrradiantPearl => "ShinyPearl", ItemBossEnum.ItemScrapYellow => "ScrapYellow", ItemBossEnum.LittleDisciple => "SprintWisp", ItemBossEnum.MiredUrn => "SiphonOnLowHealth", ItemBossEnum.MoltenPerforator => "FireballsOnHit", ItemBossEnum.Pearl => "Pearl", ItemBossEnum.Planula => "ParentEgg", ItemBossEnum.QueensGland => "BeetleGland", ItemBossEnum.Shatterspleen => "BleedOnHitAndExplode", ItemBossEnum.TitanicKnurl => "Knurl", _ => null, }; } private static string getItemName(ItemVoidEnum item) { return item switch { ItemVoidEnum.BenthicBloom => "CloverVoid", ItemVoidEnum.EncrustedKey => "TreasureCacheVoid", ItemVoidEnum.LostSeersLenses => "CritGlassesVoid", ItemVoidEnum.LysateCell => "EquipmentMagazineVoid", ItemVoidEnum.Needletick => "BleedOnHitVoid", ItemVoidEnum.NewlyHatchedZoea => "VoidMegaCrabItem", ItemVoidEnum.PlasmaShrimp => "MissileVoid", ItemVoidEnum.PluripotentLarva => "ExtraLifeVoid", ItemVoidEnum.Polylute => "ChainLightningVoid", ItemVoidEnum.SaferSpaces => "BearVoid", ItemVoidEnum.SingularityBand => "ElementalRingVoid", ItemVoidEnum.Tentabauble => "SlowOnHitVoid", ItemVoidEnum.VoidsentFlame => "ExplodeOnDeathVoid", ItemVoidEnum.WeepingFungus => "MushroomVoid", _ => null, }; } private static string getItemName(ItemLunarEnum item) { return item switch { ItemLunarEnum.BeadsOfFealty => "LunarTrinket", ItemLunarEnum.BrittleCrown => "GoldOnHit", ItemLunarEnum.Corpsebloom => "RepeatHeal", ItemLunarEnum.DefiantGouge => "MonstersOnShrineUse", ItemLunarEnum.Egocentrism => "LunarSun", ItemLunarEnum.EssenceOfHeresy => "LunarSpecialReplacement", ItemLunarEnum.EulogyZero => "RandomlyLunar", ItemLunarEnum.FocusedConvergence => "FocusConvergence", ItemLunarEnum.GestureOfTheDrowned => "AutoCastEquipment", ItemLunarEnum.HooksOfHeresy => "LunarSecondaryReplacement", ItemLunarEnum.LightFluxPauldron => "HalfAttackSpeedHalfCooldowns", ItemLunarEnum.MercurialRachis => "RandomDamageZone", ItemLunarEnum.Purity => "LunarBadLuck", ItemLunarEnum.ShapedGlass => "LunarDagger", ItemLunarEnum.StoneFluxPauldron => "HalfSpeedDoubleHealth", ItemLunarEnum.StridesOfHeresy => "LunarUtilityReplacement", ItemLunarEnum.Transcendence => "ShieldOnly", ItemLunarEnum.VisionsOfHeresy => "LunarPrimaryReplacement", _ => null, }; } private static string getItemName(ItemEquipEnum item) { return item switch { ItemEquipEnum.BeyondTheLimits => "EliteSecretSpeedEquipment", ItemEquipEnum.BlastShower => "Cleanse", ItemEquipEnum.CovenOfGold => "EliteGoldEquipment", ItemEquipEnum.DisposableMissileLauncher => "CommandMissile", ItemEquipEnum.EccentricVase => "Gateway", ItemEquipEnum.EffigyOfGrief => "CrippleWard", ItemEquipEnum.ElegyOfExtinction => "LunarPortalOnUse", ItemEquipEnum.ExecutiveCard => "MultiShopCard", ItemEquipEnum.ForeignFruit => "Fruit", ItemEquipEnum.ForgiveMePlease => "DeathProjectile", ItemEquipEnum.FuelArray => "QuestVolatileBattery", ItemEquipEnum.GlowingMeteorite => "Meteor", ItemEquipEnum.GnarledWoodsprite => "PassiveHealing", ItemEquipEnum.GooboJr => "GummyClone", ItemEquipEnum.GoragsOpus => "TeamWarCry", ItemEquipEnum.HelfireTincture => "BurnNearby", ItemEquipEnum.HerBitingEmbrace => "EliteIceEquipment", ItemEquipEnum.HisReassurance => "EliteEarthEquipment", ItemEquipEnum.IfritsDistinction => "EliteFireEquipment", ItemEquipEnum.JadeElephant => "GainArmor", ItemEquipEnum.JarOfSouls => "SoulJar", ItemEquipEnum.MilkyChrysalis => "Jetpack", ItemEquipEnum.Molotov => "Molotov", ItemEquipEnum.NkuhanasRetort => "ElitePoisonEquipment", ItemEquipEnum.OcularHUD => "CritOnUse", ItemEquipEnum.OverloadingExcavator => "IrradiatingLaser", ItemEquipEnum.PreonAccumulator => "BFG", ItemEquipEnum.PrimordialCube => "Blackhole", ItemEquipEnum.RadarScanner => "Scanner", ItemEquipEnum.ReapersRemorse => "GhostGun", ItemEquipEnum.Recycler => "Recycle", ItemEquipEnum.RemoteCaffeinator => "VendingMachine", ItemEquipEnum.RoyalCapacitor => "Lightning", ItemEquipEnum.Sawmerang => "Saw", ItemEquipEnum.SharedDesign => "EliteLunarEquipment", ItemEquipEnum.SilenceBetweenTwoStrikes => "EliteLightningEquipment", ItemEquipEnum.SpectralCirclet => "EliteHauntedEquipment", ItemEquipEnum.SpinelTonic => "Tonic", ItemEquipEnum.SuperMassiveLeech => "LifestealOnHit", ItemEquipEnum.TheBackup => "DroneBackup", ItemEquipEnum.TheCrowdfunder => "GoldGat", ItemEquipEnum.TrophyHuntersTricorn => "BossHunter", ItemEquipEnum.VolcanicEgg => "FireBallDash", _ => null, }; } } [NetworkCompatibility(/*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.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInPlugin("AlchemyFlame.PlayWithEliteItem", "PlayWithEliteItem", "1.0.1")] public class GiveEliteItem : BaseUnityPlugin { public class PlayerStorage { public NetworkUser user = null; public CharacterMaster master = null; public EquipmentIndex previousEquipment = (EquipmentIndex)(-1); public string chosenEquipment = null; public uint chosenEquipmentSlot = 1u; } public static GiveEliteItem instance; private bool canUseEquipment = true; public const string PluginGUID = "AlchemyFlame.PlayWithEliteItem"; public const string PluginAuthor = "AlchemyFlame"; public const string PluginName = "PlayWithEliteItem"; public const string PluginVersion = "1.0.1"; public List<PlayerStorage> playerStorage = new List<PlayerStorage>(); public float respawnTime; private string[] equipmentOptions = new string[7] { "EliteEarthEquipment", "EliteFireEquipment", "EliteHauntedEquipment", "EliteIceEquipment", "EliteLightningEquipment", "EliteLunarEquipment", "ElitePoisonEquipment" }; public static PluginInfo PInfo { get; private set; } public void Awake() { PInfo = ((BaseUnityPlugin)this).Info; instance = this; BepConfig.Init(); Debug.Log((object)"Carregando Mod2!"); SetupHooks(); AnalyzeEquip(); } private void AnalyzeEquip() { //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_0012: Expected O, but got Unknown EquipmentSlot.PerformEquipmentAction += (hook_PerformEquipmentAction)delegate(orig_PerformEquipmentAction orig, EquipmentSlot self, EquipmentDef equipmentIndex) { CharacterBody characterBody = self.characterBody; if (Object.op_Implicit((Object)(object)characterBody)) { foreach (PlayerCharacterMasterController instance in PlayerCharacterMasterController.instances) { if (Object.op_Implicit((Object)(object)instance) && Object.op_Implicit((Object)(object)instance.master) && (Object)(object)instance.master.GetBody() == (Object)(object)characterBody) { NetworkUser networkUser = instance.networkUser; if ((Object)(object)networkUser != (Object)null) { string userName = networkUser.userName; PlayerStorage playerStorage = FindPlayerStorageForUser(networkUser); if (playerStorage != null) { ((MonoBehaviour)GiveEliteItem.instance).StartCoroutine(DelayedEquipmentSwitch(instance, playerStorage)); } } } } } return orig.Invoke(self, equipmentIndex); }; } private IEnumerator DelayedEquipmentSwitch(PlayerCharacterMasterController playerCharacterMaster, PlayerStorage playerStorage) { canUseEquipment = false; yield return (object)new WaitForSeconds(0.3f); uint slot = 0u; EquipmentIndex user1 = playerCharacterMaster.master.inventory.GetEquipment(slot).equipmentIndex; uint slot2 = 1u; EquipmentIndex user2 = playerCharacterMaster.master.inventory.GetEquipment(slot2).equipmentIndex; Debug.Log((object)"Adicionando ao jogadores..."); Debug.Log((object)playerCharacterMaster.master.inventory.GetEquipment(slot).equipmentIndex); Debug.Log((object)playerCharacterMaster.master.inventory.GetEquipment(slot2).equipmentIndex); if (playerStorage.chosenEquipmentSlot == 1) { if ((int)user1 == 3) { playerCharacterMaster.master.inventory.SetEquipmentIndexForSlot(user2, 0u); playerCharacterMaster.master.inventory.SetEquipmentIndexForSlot((EquipmentIndex)(-1), 1u); canUseEquipment = true; yield break; } playerCharacterMaster.master.inventory.SetEquipmentIndexForSlot(user2, 0u); playerCharacterMaster.master.inventory.SetEquipmentIndexForSlot(user1, 1u); playerStorage.chosenEquipmentSlot = 0u; } else { playerCharacterMaster.master.inventory.SetEquipmentIndexForSlot(user2, 0u); playerCharacterMaster.master.inventory.SetEquipmentIndexForSlot(user1, 1u); playerStorage.chosenEquipmentSlot = 1u; } canUseEquipment = true; } private PlayerStorage FindPlayerStorageForUser(NetworkUser user) { foreach (PlayerStorage item in playerStorage) { if ((Object)(object)item.user == (Object)(object)user) { return item; } } return null; } private void SetupHooks() { //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_0012: Expected O, but got Unknown //IL_001a: Unknown result type (might be due to invalid IL or missing references) //IL_0024: Expected O, but got Unknown //IL_002c: Unknown result type (might be due to invalid IL or missing references) //IL_0036: Expected O, but got Unknown Run.Start += new hook_Start(Run_Start); Run.OnUserAdded += new hook_OnUserAdded(Run_OnUserAdded); Run.OnUserRemoved += new hook_OnUserRemoved(Run_OnUserRemoved); } private void Run_Start(orig_Start orig, Run self) { orig.Invoke(self); SetupPlayers(); } private void SetupPlayers(bool StageUpdate = true) { //IL_01c8: Unknown result type (might be due to invalid IL or missing references) Debug.Log((object)"Configurando jogadores..."); if (StageUpdate) { this.playerStorage.Clear(); } List<int> list = new List<int>(); foreach (PlayerCharacterMasterController instance in PlayerCharacterMasterController.instances) { if (this.playerStorage != null && (Object)(object)instance.networkUser == (Object)null) { Debug.Log((object)"Um jogador desconectou! Ignorando o que resta deles..."); continue; } if (!StageUpdate && this.playerStorage != null) { bool flag = false; foreach (PlayerStorage item in this.playerStorage) { if ((Object)(object)item.master == (Object)(object)instance.master) { flag = true; break; } } if (flag) { continue; } } PlayerStorage playerStorage = new PlayerStorage(); if (Object.op_Implicit((Object)(object)instance.networkUser)) { playerStorage.user = instance.networkUser; } if (Object.op_Implicit((Object)(object)instance.master)) { playerStorage.master = instance.master; } Random random = new Random(); int num; do { num = random.Next(0, equipmentOptions.Length); } while (list.Contains(num)); list.Add(num); string chosenEquipment = equipmentOptions[num]; playerStorage.chosenEquipment = chosenEquipment; playerStorage.chosenEquipmentSlot = 1u; this.playerStorage.Add(playerStorage); Debug.Log((object)(playerStorage.user.userName + " adicionado ao PlayerStorage!")); if (Object.op_Implicit((Object)(object)instance.master.inventory)) { instance.master.inventory.SetEquipmentIndexForSlot(EquipmentCatalog.FindEquipmentIndex(playerStorage.chosenEquipment), 1u); } Debug.Log((object)(playerStorage.chosenEquipment + " adicionado ao Jogador!")); } Debug.Log((object)"A configuração dos jogadores foi concluída."); } private void Run_OnUserAdded(orig_OnUserAdded orig, Run self, NetworkUser user) { orig.Invoke(self, user); if (Run.instance.time > 1f) { SetupPlayers(StageUpdate: false); } } private void Run_OnUserRemoved(orig_OnUserRemoved orig, Run self, NetworkUser user) { orig.Invoke(self, user); if (!(Run.instance.time > 1f)) { return; } PlayerStorage item = null; foreach (PlayerStorage item2 in playerStorage) { if (item2.user.userName == user.userName) { item = item2; ((BaseUnityPlugin)this).Logger.LogInfo((object)(user.userName + " left. Removing them from PlayerStorage.")); break; } } playerStorage.Remove(item); } } internal static class Log { internal static ManualLogSource _logSource; internal static void Init(ManualLogSource logSource) { _logSource = logSource; } internal static void LogDebug(object data) { _logSource.LogDebug(data); } internal static void LogError(object data) { _logSource.LogError(data); } internal static void LogFatal(object data) { _logSource.LogFatal(data); } internal static void LogInfo(object data) { _logSource.LogInfo(data); } internal static void LogMessage(object data) { _logSource.LogMessage(data); } internal static void LogWarning(object data) { _logSource.LogWarning(data); } } public static class ModCompatibilityInLobbyConfig { private static bool? _enabled; public static bool enabled { get { if (!_enabled.HasValue) { _enabled = Chainloader.PluginInfos.ContainsKey("com.KingEnderBrine.InLobbyConfig"); } return _enabled.Value; } } public static void CreateFromBepInExConfigFile(ConfigFile config, string displayName) { ModConfigEntry val = ConfigFieldUtilities.CreateFromBepInExConfigFile(config, displayName); ModConfigCatalog.Add(val); } }