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 JoshsItems v1.0.0
JoshsItems/JoshsItems.dll
Decompiled 11 months agousing 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 Microsoft.CodeAnalysis; using On.RoR2; using R2API; using RoR2; using RoR2.ExpansionManagement; using UnityEngine; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)] [assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")] [assembly: AssemblyCompany("JoshsItems")] [assembly: AssemblyConfiguration("Release")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0+bb62809721ca8ba1d04869556b22a00aaf5040ac")] [assembly: AssemblyProduct("JoshsItems")] [assembly: AssemblyTitle("JoshsItems")] [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 JoshsItems { internal static class JoshsEquipment { [Serializable] [CompilerGenerated] private sealed class <>c { public static readonly <>c <>9 = new <>c(); public static Func<ExpansionDef, bool> <>9__3_0; public static hook_PerformEquipmentAction <>9__5_0; internal bool <GenerateEquipment>b__3_0(ExpansionDef def) { return def.nameToken == "DLC1_NAME"; } internal bool <Hooks>b__5_0(orig_PerformEquipmentAction orig, EquipmentSlot self, EquipmentDef equipmentDef) { if ((Object)(object)equipmentDef == (Object)(object)joshsWatchRepairKit) { return ActivateEquipment(self); } return orig.Invoke(self, equipmentDef); } } private static EquipmentDef joshsWatchRepairKit; private static int timesUsed; public static void Init() { GenerateEquipment(); } private static void GenerateEquipment() { //IL_00b0: 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_010f: Expected O, but got Unknown //IL_0115: Unknown result type (might be due to invalid IL or missing references) //IL_011f: Expected O, but got Unknown joshsWatchRepairKit = ScriptableObject.CreateInstance<EquipmentDef>(); ((Object)joshsWatchRepairKit).name = "JoshsWatchRepairKit"; joshsWatchRepairKit.nameToken = "EQUIPMENT_JOSHSWATCHREPAIRKIT_NAME"; joshsWatchRepairKit.pickupToken = "EQUIPMENT_JOSHSWATCHREPAIRKIT_PICKUP"; joshsWatchRepairKit.descriptionToken = "EQUIPMENT_JOSHSWATCHREPAIRKIT_DESC"; joshsWatchRepairKit.loreToken = "EQUIPMENT_JOSHSWATCHREPAIRKIT_LORE"; AssetBundle val = AssetBundle.LoadFromFile(Assembly.GetExecutingAssembly().Location.Replace("JoshsItems.dll", "joshsitems")); GameObject pickupModelPrefab = val.LoadAsset<GameObject>("watch repair kit2.prefab"); joshsWatchRepairKit.pickupIconSprite = val.LoadAsset<Sprite>("watch repair kit icon2.png"); joshsWatchRepairKit.pickupModelPrefab = pickupModelPrefab; joshsWatchRepairKit.equipmentIndex = (EquipmentIndex)(-1); joshsWatchRepairKit.requiredExpansion = ((IEnumerable<ExpansionDef>)(object)ExpansionCatalog.expansionDefs).FirstOrDefault((Func<ExpansionDef, bool>)((ExpansionDef def) => def.nameToken == "DLC1_NAME")); joshsWatchRepairKit.unlockableDef = null; joshsWatchRepairKit.canDrop = true; joshsWatchRepairKit.cooldown = 100f; ItemDisplayRuleDict val2 = new ItemDisplayRuleDict((ItemDisplayRule[])null); ItemAPI.Add(new CustomEquipment(joshsWatchRepairKit, val2)); LanguageAPI.Add(joshsWatchRepairKit.nameToken, "Josh's Watch Repair Kit"); LanguageAPI.Add(joshsWatchRepairKit.pickupToken, "<style=cIsHealing>Restores</style> 1 broken <style=cIsUtility>Delicate Watch</style> on use. Cooldown <style=cIsDamage>increases</style> after 6 uses."); LanguageAPI.Add(joshsWatchRepairKit.descriptionToken, "<style=cIsHealing>Restores</style> 1 broken <style=cIsUtility>Delicate Watch</style> on use. After 6 uses, the equipment cooldown <style=cIsDamage>increases</style> by <style=cStack>30%</style>."); LanguageAPI.Add(joshsWatchRepairKit.loreToken, "<style=cMono>Friday-1500. Titanic Plains.</style>\r\n\r\nJ - Is that- a watch printer?\r\n\r\nM - Doooon't dude you're throwing the run just like last time!\r\n\r\nJ - Oh yeahhhh we're goin' all in.\r\n\r\n\r\n<style=cMono>Friday-1600. Siren's Call.</style>\r\n\r\n<style=cIsDamage>*CRACK*</style>.\r\n\r\nM - You just haaaaaad to get them didn't you.\r\n\r\nJ - Bad game bad game bad game bad game bad game bad game......."); Hooks(); SetEquipmentVariables(); } private static void SetEquipmentVariables() { timesUsed = 0; } private static void Hooks() { //IL_0014: Unknown result type (might be due to invalid IL or missing references) //IL_0019: Unknown result type (might be due to invalid IL or missing references) //IL_001f: Expected O, but got Unknown object obj = <>c.<>9__5_0; if (obj == null) { hook_PerformEquipmentAction val = (orig_PerformEquipmentAction orig, EquipmentSlot self, EquipmentDef equipmentDef) => ((Object)(object)equipmentDef == (Object)(object)joshsWatchRepairKit) ? ActivateEquipment(self) : orig.Invoke(self, equipmentDef); <>c.<>9__5_0 = val; obj = (object)val; } EquipmentSlot.PerformEquipmentAction += (hook_PerformEquipmentAction)obj; } private static bool ActivateEquipment(EquipmentSlot self) { //IL_0022: Unknown result type (might be due to invalid IL or missing references) //IL_0027: Unknown result type (might be due to invalid IL or missing references) //IL_002d: Unknown result type (might be due to invalid IL or missing references) //IL_0032: Unknown result type (might be due to invalid IL or missing references) //IL_0033: 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_0039: Unknown result type (might be due to invalid IL or missing references) //IL_003b: Unknown result type (might be due to invalid IL or missing references) //IL_0051: Unknown result type (might be due to invalid IL or missing references) //IL_0059: Unknown result type (might be due to invalid IL or missing references) //IL_0070: Unknown result type (might be due to invalid IL or missing references) CharacterBody characterBody = self.characterBody; Inventory val = ((characterBody != null) ? characterBody.inventory : null); if (!Object.op_Implicit((Object)(object)val)) { return false; } ItemIndex itemIndex = Items.FragileDamageBonus._itemIndex; ItemIndex itemIndex2 = Items.FragileDamageBonusConsumed._itemIndex; PickupIndex val2 = PickupCatalog.FindPickupIndex(itemIndex); if (val.GetItemCount(itemIndex2) > 0) { timesUsed++; val.RemoveItem(itemIndex2, 1); val.GiveItem(itemIndex, 1); GenericPickupController.SendPickupMessage(PlayerCharacterMasterController.instances[0].master, val2); if (timesUsed % 5 == 0) { float num = 1.3f; EquipmentDef obj = joshsWatchRepairKit; obj.cooldown *= num; } return true; } return false; } public static void Debug(string option) { //IL_002e: Unknown result type (might be due to invalid IL or missing references) //IL_0047: Unknown result type (might be due to invalid IL or missing references) //IL_004c: Unknown result type (might be due to invalid IL or missing references) //IL_0052: 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_0062: 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_0083: 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) //IL_00fa: 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_0105: Unknown result type (might be due to invalid IL or missing references) //IL_010b: Unknown result type (might be due to invalid IL or missing references) //IL_0115: Unknown result type (might be due to invalid IL or missing references) //IL_0124: Unknown result type (might be due to invalid IL or missing references) //IL_0129: Unknown result type (might be due to invalid IL or missing references) //IL_012f: Unknown result type (might be due to invalid IL or missing references) //IL_0135: 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_014e: Unknown result type (might be due to invalid IL or missing references) //IL_0153: 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_015f: Unknown result type (might be due to invalid IL or missing references) //IL_0169: Unknown result type (might be due to invalid IL or missing references) if (option == "F2") { Transform transform = PlayerCharacterMasterController.instances[0].master.GetBodyObject().transform; Log.Info($"Player pressed F2. Spawning our custom item at coordinates {transform.position}"); PickupDropletController.CreatePickupDroplet(PickupCatalog.FindPickupIndex(joshsWatchRepairKit.equipmentIndex), transform.position, transform.forward * 20f); } if (option == "F3") { ItemIndex itemIndex = Items.FragileDamageBonusConsumed._itemIndex; Log.Info("Player pressed F3. Adding a Delicate Watch to the players inventory."); PlayerCharacterMasterController.instances[0].master.inventory.GiveItem(itemIndex, 1); } if (option == "F4") { Transform transform2 = PlayerCharacterMasterController.instances[0].master.GetBodyObject().transform; Log.Info("Player pressed F4."); _ = PlayerCharacterMasterController.instances[0].master.inventory; PickupDropletController.CreatePickupDroplet(PickupCatalog.FindPickupIndex(Equipment.Blackhole._equipmentIndex), transform2.position, transform2.forward * 20f); PickupDropletController.CreatePickupDroplet(PickupCatalog.FindPickupIndex(Equipment.Cleanse._equipmentIndex), transform2.position, transform2.forward * 20f); PickupDropletController.CreatePickupDroplet(PickupCatalog.FindPickupIndex(Equipment.DroneBackup._equipmentIndex), transform2.position, transform2.forward * 20f); } } } [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInPlugin("romdotzip.JoshsItems", "JoshsItems", "1.0.0")] public class JoshsItems : BaseUnityPlugin { public const string PluginGUID = "romdotzip.JoshsItems"; public const string PluginAuthor = "romdotzip"; public const string PluginName = "JoshsItems"; public const string PluginVersion = "1.0.0"; public void Awake() { Log.Init(((BaseUnityPlugin)this).Logger); JoshsEquipment.Init(); ((BaseUnityPlugin)this).Logger.LogMessage((object)"All items initialized"); } } 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); } } }