Some mods may be broken due to the recent Alloyed Collective update.
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); } }