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 Artifact of Eternity v1.0.1
plugins/ArtifactOfEternity.dll
Decompiled 8 months agousing System; using System.Collections; using System.Collections.Generic; using System.Diagnostics; using System.IO; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using System.Security; using System.Security.Permissions; using BepInEx; using HG.Reflection; using Microsoft.CodeAnalysis; using ReviveAPI; using RoR2; using RoR2.ContentManagement; 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.1", FrameworkDisplayName = ".NET Standard 2.1")] [assembly: AssemblyCompany("ArtifactOfEternity")] [assembly: AssemblyConfiguration("Debug")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0")] [assembly: AssemblyProduct("ArtifactOfEternity")] [assembly: AssemblyTitle("ArtifactOfEternity")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.0.0.0")] [module: RefSafetyRules(11)] [module: UnverifiableCode] 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 ArtifactOfEternity { [Serializable] [BepInPlugin("com.brynzananas.artifactofeternity", "Artifact Of Eternity", "1.0.0")] public class ArtifactOfEternity : BaseUnityPlugin { [CompilerGenerated] private static class <>O { public static CanReviveDelegate <0>__EternityCondition; public static OnReviveDelegate <1>__OnEternityRevive; } public const string ModGuid = "com.brynzananas.artifactofeternity"; public const string ModName = "Artifact Of Eternity"; public const string ModVer = "1.0.0"; public static AssetBundle assetBundle; public static ArtifactDef artifactDef; public static int eternityCount; public static bool messageDisplayed; public static bool takeItem; public void Awake() { //IL_0011: Unknown result type (might be due to invalid IL or missing references) //IL_0016: Unknown result type (might be due to invalid IL or missing references) //IL_001c: Expected O, but got Unknown //IL_0096: Unknown result type (might be due to invalid IL or missing references) //IL_00a0: Expected O, but got Unknown //IL_002c: Unknown result type (might be due to invalid IL or missing references) //IL_0031: Unknown result type (might be due to invalid IL or missing references) //IL_0037: Expected O, but got Unknown object obj = <>O.<0>__EternityCondition; if (obj == null) { CanReviveDelegate val = EternityCondition; <>O.<0>__EternityCondition = val; obj = (object)val; } object obj2 = <>O.<1>__OnEternityRevive; if (obj2 == null) { OnReviveDelegate val2 = OnEternityRevive; <>O.<1>__OnEternityRevive = val2; obj2 = (object)val2; } ReviveAPI.AddCustomRevive((CanReviveDelegate)obj, (OnReviveDelegate)obj2); assetBundle = AssetBundle.LoadFromFileAsync(Path.Combine(Path.GetDirectoryName(((BaseUnityPlugin)this).Info.Location), "assetbundles", "artifactofeternityassets")).assetBundle; artifactDef = assetBundle.LoadAsset<ArtifactDef>("Assets/CaeliImperium/Artifacts/ArtifactOfEternity.asset"); ContentPacks.artifacts.Add(artifactDef); ContentManager.collectContentPackProviders += new CollectContentPackProvidersDelegate(ContentManager_collectContentPackProviders); RoR2Application.onLoadFinished = (Action)Delegate.Combine(RoR2Application.onLoadFinished, new Action(AddLanguageTokens)); } private void AddLanguageTokens() { AddLanguageToken(artifactDef.nameToken, "Artifact of Eternity"); AddLanguageToken(artifactDef.descriptionToken, "Players revive infinitely."); AddLanguageToken(artifactDef.nameToken, "Артифакт вечности", "ru"); AddLanguageToken(artifactDef.descriptionToken, "Игроки возрождаются бесконечно.", "ru"); AddLanguageToken("CI_ARTIFACT_ETERNITY_MESSAGE", "It's eternity in here..."); AddLanguageToken("CI_ARTIFACT_ETERNITY_MESSAGE", "Здесь целая вечность...", "ru"); } private void ContentManager_collectContentPackProviders(AddContentPackProviderDelegate addContentPackProvider) { addContentPackProvider.Invoke((IContentPackProvider)(object)new ContentPacks()); } private static bool EternityCondition(CharacterMaster characterMaster) { return RunArtifactManager.instance.IsArtifactEnabled(artifactDef) && Object.op_Implicit((Object)(object)characterMaster.playerCharacterMasterController); } private static void OnEternityRevive(CharacterMaster characterMaster) { if (!messageDisplayed) { eternityCount++; if (eternityCount > 100) { messageDisplayed = true; Chat.AddMessage(Language.GetString("CI_ARTIFACT_ETERNITY_MESSAGE")); } } if (!takeItem) { return; } Inventory inventory = characterMaster.inventory; if ((Object)(object)inventory == (Object)null) { return; } List<ItemDef> list = new List<ItemDef>(); int num = 0; for (int i = 0; i < ItemCatalog.itemCount; i++) { int num2 = inventory.itemStacks[i]; if (num2 <= 0) { continue; } ItemDef itemDef = ItemCatalog.GetItemDef((ItemIndex)i); if (itemDef.canRemove) { for (int j = 0; j < num2; j++) { list.Add(itemDef); num++; } } } if (num > 0) { ItemDef val = list[Random.Range(0, num)]; inventory.RemoveItem(val, 1); } } public static void AddLanguageToken(string token, string output, string language) { Dictionary<string, string> dictionary = (Language.languagesByName.ContainsKey(language) ? Language.languagesByName[language].stringsByToken : null); Debug.Log((object)dictionary); if (dictionary != null) { if (dictionary.ContainsKey(token)) { dictionary[token] = output; } else { dictionary.Add(token, output); } } } public static void AddLanguageToken(string token, string output) { AddLanguageToken(token, output, "en"); } } public class ContentPacks : IContentPackProvider { [CompilerGenerated] private sealed class <FinalizeAsync>d__4 : IEnumerator<object>, IEnumerator, IDisposable { private int <>1__state; private object <>2__current; public FinalizeAsyncArgs args; public ContentPacks <>4__this; object IEnumerator<object>.Current { [DebuggerHidden] get { return <>2__current; } } object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } [DebuggerHidden] public <FinalizeAsync>d__4(int <>1__state) { this.<>1__state = <>1__state; } [DebuggerHidden] void IDisposable.Dispose() { <>1__state = -2; } private bool MoveNext() { if (<>1__state != 0) { return false; } <>1__state = -1; args.ReportProgress(1f); return false; } bool IEnumerator.MoveNext() { //ILSpy generated this explicit interface implementation from .override directive in MoveNext return this.MoveNext(); } [DebuggerHidden] void IEnumerator.Reset() { throw new NotSupportedException(); } } [CompilerGenerated] private sealed class <GenerateContentPackAsync>d__5 : IEnumerator<object>, IEnumerator, IDisposable { private int <>1__state; private object <>2__current; public GetContentPackAsyncArgs args; public ContentPacks <>4__this; object IEnumerator<object>.Current { [DebuggerHidden] get { return <>2__current; } } object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } [DebuggerHidden] public <GenerateContentPackAsync>d__5(int <>1__state) { this.<>1__state = <>1__state; } [DebuggerHidden] void IDisposable.Dispose() { <>1__state = -2; } private bool MoveNext() { if (<>1__state != 0) { return false; } <>1__state = -1; ContentPack.Copy(<>4__this.contentPack, args.output); args.ReportProgress(1f); return false; } bool IEnumerator.MoveNext() { //ILSpy generated this explicit interface implementation from .override directive in MoveNext return this.MoveNext(); } [DebuggerHidden] void IEnumerator.Reset() { throw new NotSupportedException(); } } [CompilerGenerated] private sealed class <LoadStaticContentAsync>d__6 : IEnumerator<object>, IEnumerator, IDisposable { private int <>1__state; private object <>2__current; public LoadStaticContentAsyncArgs args; public ContentPacks <>4__this; object IEnumerator<object>.Current { [DebuggerHidden] get { return <>2__current; } } object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } [DebuggerHidden] public <LoadStaticContentAsync>d__6(int <>1__state) { this.<>1__state = <>1__state; } [DebuggerHidden] void IDisposable.Dispose() { <>1__state = -2; } private bool MoveNext() { if (<>1__state != 0) { return false; } <>1__state = -1; <>4__this.contentPack.identifier = <>4__this.identifier; <>4__this.contentPack.artifactDefs.Add(artifacts.ToArray()); return false; } bool IEnumerator.MoveNext() { //ILSpy generated this explicit interface implementation from .override directive in MoveNext return this.MoveNext(); } [DebuggerHidden] void IEnumerator.Reset() { throw new NotSupportedException(); } } internal ContentPack contentPack = new ContentPack(); public static List<ArtifactDef> artifacts = new List<ArtifactDef>(); public string identifier => "com.brynzananas.artifactofeternity.ContentProvider"; [IteratorStateMachine(typeof(<FinalizeAsync>d__4))] public IEnumerator FinalizeAsync(FinalizeAsyncArgs args) { //yield-return decompiler failed: Unexpected instruction in Iterator.Dispose() return new <FinalizeAsync>d__4(0) { <>4__this = this, args = args }; } [IteratorStateMachine(typeof(<GenerateContentPackAsync>d__5))] public IEnumerator GenerateContentPackAsync(GetContentPackAsyncArgs args) { //yield-return decompiler failed: Unexpected instruction in Iterator.Dispose() return new <GenerateContentPackAsync>d__5(0) { <>4__this = this, args = args }; } [IteratorStateMachine(typeof(<LoadStaticContentAsync>d__6))] public IEnumerator LoadStaticContentAsync(LoadStaticContentAsyncArgs args) { //yield-return decompiler failed: Unexpected instruction in Iterator.Dispose() return new <LoadStaticContentAsync>d__6(0) { <>4__this = this, args = args }; } } }