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 Spartan Weaponry v1.0.3
Haloweapon.dll
Decompiled 2 years agousing System; using System.Collections.Generic; using System.Diagnostics; using System.IO; 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 HarmonyLib; using HunkMod.Modules.Weapons; using Microsoft.CodeAnalysis; 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("HunkHalo")] [assembly: AssemblyConfiguration("Release")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0+c92bcf44bbc7b3a18235dbf80a0d327813e2c39d")] [assembly: AssemblyProduct("HunkHalo")] [assembly: AssemblyTitle("HunkHalo")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.0.0.0")] [module: UnverifiableCode] [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 HunkHalo { [BepInPlugin("_score.HunkHalo", "HunkHalo", "0.0.1")] public class HunkHaloPlugin : BaseUnityPlugin { public const string PluginGUID = "_score.HunkHalo"; public const string PluginAuthor = "score"; public const string PluginName = "HunkHalo"; public const string PluginVersion = "0.0.1"; internal static Harmony Harm; public static HunkHaloPlugin Instance { get; private set; } public void Awake() { //IL_000b: Unknown result type (might be due to invalid IL or missing references) //IL_0015: Expected O, but got Unknown Instance = this; Harm = new Harmony("_score.HunkHalo"); Log.Init(((BaseUnityPlugin)this).Logger); AddWeaponReskins(); } private void AddWeaponReskins() { WeaponManager.Init(); WeaponManager.AddWeapon<SMG>("mdlSMGHalo"); WeaponManager.AddWeapon<MUP>("mdlMUPHalo"); WeaponManager.FinishPatch(); } } internal static class Log { internal 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 ErrorAsset(string assetName) { Error("failed to load asset, " + assetName + ", because it does not exist in any asset bundle"); } internal static void ErrorAssetBundle(string assetName) { Error("failed to load asset bundle " + assetName); } internal static void ErrorTargetMethod(string typeName) { Error("failed to find target property modelPrefab because it does not exist in the class " + typeName); } 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); } } public static class WeaponManager { internal static readonly Dictionary<string, GameObject> modelPrefabsByName = new Dictionary<string, GameObject>(); internal static readonly Dictionary<Type, string> prefabNamesByType = new Dictionary<Type, string>(); internal static void Init() { foreach (string bundleName in from p in Directory.EnumerateFiles(Path.GetDirectoryName(((BaseUnityPlugin)HunkHaloPlugin.Instance).Info.Location), "*", SearchOption.AllDirectories) where !Path.HasExtension(p) select p) { ((AsyncOperation)AssetBundle.LoadFromFileAsync(bundleName)).completed += delegate(AsyncOperation o) { AssetBundle assetBundle = ((AssetBundleCreateRequest)((o is AssetBundleCreateRequest) ? o : null)).assetBundle; if ((Object)(object)assetBundle != (Object)null) { Log.Warning("Loading assetbundle " + ((Object)assetBundle).name + "..."); GameObject[] array = assetBundle.LoadAllAssets<GameObject>(); foreach (GameObject val in array) { Log.Warning("Found " + ((Object)val).name); modelPrefabsByName[((Object)val).name] = val; } } else { Log.ErrorAssetBundle(bundleName); } }; } } public static void FinishPatch() { if (prefabNamesByType.Any()) { HunkHaloPlugin.Harm.CreateClassProcessor(typeof(ReplacePrefab)).Patch(); HunkHaloPlugin.Harm.CreateClassProcessor(typeof(ReplacePickup)).Patch(); } else { Log.Error("No replacements found, did you forget to add it?"); } } public static void AddWeapon<T>(string prefabReplacementName) where T : BaseWeapon { prefabNamesByType[typeof(T)] = prefabReplacementName; Log.Warning("Replacing " + typeof(T).Name + ".modelPrefab with " + prefabReplacementName); } internal static GameObject LoadModelPrefab(MethodBase propertyInfo, bool isPickup = false) { string text = prefabNamesByType[propertyInfo.DeclaringType]; if (isPickup) { text += "Pickup"; } if (modelPrefabsByName.TryGetValue(text, out var value) && (Object)(object)value != (Object)null) { Log.Warning("Successfully replaced " + propertyInfo.DeclaringType.Name + " with new model " + ((Object)value).name); return value; } Log.ErrorAsset(text); return null; } } [HarmonyPatch] public class ReplacePrefab { [HarmonyTargetMethods] public static IEnumerable<MethodBase> TargetMethods() { return WeaponManager.prefabNamesByType.Keys.Select((Type t) => AccessTools.PropertyGetter(t, "modelPrefab")); } [HarmonyPrefix] public static bool Prefix(MethodBase __originalMethod, ref GameObject __result) { return (Object)(object)(__result = WeaponManager.LoadModelPrefab(__originalMethod)) == (Object)null; } } [HarmonyPatch] public class ReplacePickup { [HarmonyTargetMethods] public static IEnumerable<MethodBase> TargetMethods() { return WeaponManager.prefabNamesByType.Keys.Select((Type t) => AccessTools.Method(t, "Init", (Type[])null, (Type[])null)); } [HarmonyPostfix] public static void Postfix(MethodBase __originalMethod, BaseWeapon __instance) { __instance.itemDef.pickupModelPrefab = WeaponManager.LoadModelPrefab(__originalMethod, isPickup: true); } } }
Chief.dll
Decompiled 2 years agousing System; using System.Collections.Generic; using System.Diagnostics; using System.IO; using System.Linq; using System.Reflection; using System.Runtime.CompilerServices; using System.Security.Permissions; using BepInEx; using BepInEx.Logging; using MonoMod.RuntimeDetour.HookGen; using RoR2; using UnityEngine; using UnityEngine.AddressableAssets; using UnityEngine.Rendering; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("0.0.0.0")] namespace Chief; [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInPlugin("com.LONK.Chief", "Chief", "1.0.0")] public class ChiefPlugin : BaseUnityPlugin { private class FieldException : Exception { public FieldException(string message, Exception innerException) : base(message, innerException) { } } private static AssetBundle assetBundle; private static readonly List<Material> materialsWithRoRShader = new List<Material>(); internal static ChiefPlugin Instance { get; private set; } internal static ManualLogSource InstanceLogger { get { ChiefPlugin instance = Instance; return (instance != null) ? ((BaseUnityPlugin)instance).Logger : null; } } private void Start() { Instance = this; using (Stream stream = Assembly.GetExecutingAssembly().GetManifestResourceStream("Chief.lonkchief")) { assetBundle = AssetBundle.LoadFromStream(stream); } ((ResourceAvailability)(ref BodyCatalog.availability)).CallWhenAvailable((Action)BodyCatalogInit); HookEndpointManager.Add((MethodBase)typeof(Language).GetMethod("LoadStrings"), (Delegate)new Action<Action<Language>, Language>(LanguageLoadStrings)); ReplaceShaders(); } private static void ReplaceShaders() { LoadMaterialsWithReplacedShader("RoR2/Base/Shaders/HGStandard.shader", "Assets/LONKChief/Bodu.mat", "Assets/LONKChief/Head.mat"); } private static void LoadMaterialsWithReplacedShader(string shaderPath, params string[] materialPaths) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0007: Unknown result type (might be due to invalid IL or missing references) Shader shader = Addressables.LoadAssetAsync<Shader>((object)shaderPath).WaitForCompletion(); foreach (string text in materialPaths) { Material val = assetBundle.LoadAsset<Material>(text); val.shader = shader; materialsWithRoRShader.Add(val); } } private static void LanguageLoadStrings(Action<Language> orig, Language self) { orig(self); self.SetStringByToken("LONK_SKIN_CHIEF_NAME", "Master Chief"); } private static void Nothing(Action<SkinDef> orig, SkinDef self) { } private static void BodyCatalogInit() { MethodInfo method = typeof(SkinDef).GetMethod("Awake", BindingFlags.Instance | BindingFlags.NonPublic); HookEndpointManager.Add((MethodBase)method, (Delegate)new Action<Action<SkinDef>, SkinDef>(Nothing)); AddRobHunkBodyChiefSkin(); HookEndpointManager.Remove((MethodBase)method, (Delegate)new Action<Action<SkinDef>, SkinDef>(Nothing)); } private static void AddRobHunkBodyChiefSkin() { //IL_02d8: Unknown result type (might be due to invalid IL or missing references) string text = "RobHunkBody"; string text2 = "Chief"; try { GameObject val = BodyCatalog.FindBodyPrefab(text); if (!Object.op_Implicit((Object)(object)val)) { InstanceLogger.LogWarning((object)("Failed to add \"" + text2 + "\" skin because \"" + text + "\" doesn't exist")); return; } ModelLocator component = val.GetComponent<ModelLocator>(); if (!Object.op_Implicit((Object)(object)component)) { InstanceLogger.LogWarning((object)("Failed to add \"" + text2 + "\" skin to \"" + text + "\" because it doesn't have \"ModelLocator\" component")); return; } GameObject gameObject = ((Component)component.modelTransform).gameObject; ModelSkinController val2 = (Object.op_Implicit((Object)(object)gameObject) ? gameObject.GetComponent<ModelSkinController>() : null); if (!Object.op_Implicit((Object)(object)val2)) { InstanceLogger.LogWarning((object)("Failed to add \"" + text2 + "\" skin to \"" + text + "\" because it doesn't have \"ModelSkinController\" component")); return; } CharacterModel component2 = gameObject.GetComponent<CharacterModel>(); if (!Object.op_Implicit((Object)(object)component2)) { InstanceLogger.LogWarning((object)("Failed to add \"" + text2 + "\" skin to \"" + text + "\" because it doesn't have \"CharacterModel\" component")); return; } Renderer[] renderers = component2.baseRendererInfos.Select((RendererInfo info) => info.renderer).ToArray(); SkinDef skin = ScriptableObject.CreateInstance<SkinDef>(); TryCatchThrow("Icon", delegate { skin.icon = assetBundle.LoadAsset<Sprite>("Assets\\SkinMods\\Chief\\Icons\\ChiefIcon.png"); }); ((Object)skin).name = text2; skin.nameToken = "LONK_SKIN_CHIEF_NAME"; skin.rootObject = gameObject; TryCatchThrow("Base Skins", delegate { skin.baseSkins = Array.Empty<SkinDef>(); }); TryCatchThrow("Unlockable Name", delegate { skin.unlockableDef = null; }); TryCatchThrow("Game Object Activations", delegate { skin.gameObjectActivations = Array.Empty<GameObjectActivation>(); }); TryCatchThrow("Renderer Infos", delegate { //IL_0011: 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_004c: Unknown result type (might be due to invalid IL or missing references) //IL_004d: Unknown result type (might be due to invalid IL or missing references) //IL_0056: Unknown result type (might be due to invalid IL or missing references) //IL_0075: Unknown result type (might be due to invalid IL or missing references) //IL_0091: Unknown result type (might be due to invalid IL or missing references) //IL_0092: Unknown result type (might be due to invalid IL or missing references) skin.rendererInfos = (RendererInfo[])(object)new RendererInfo[2] { new RendererInfo { defaultMaterial = assetBundle.LoadAsset<Material>("Assets/LONKChief/Bodu.mat"), defaultShadowCastingMode = (ShadowCastingMode)1, ignoreOverlays = false, renderer = renderers[0] }, new RendererInfo { defaultMaterial = assetBundle.LoadAsset<Material>("Assets/LONKChief/Head.mat"), defaultShadowCastingMode = (ShadowCastingMode)1, ignoreOverlays = false, renderer = renderers[1] } }; }); TryCatchThrow("Mesh Replacements", delegate { //IL_0011: Unknown result type (might be due to invalid IL or missing references) //IL_003c: Unknown result type (might be due to invalid IL or missing references) //IL_003d: Unknown result type (might be due to invalid IL or missing references) //IL_0046: Unknown result type (might be due to invalid IL or missing references) //IL_0071: Unknown result type (might be due to invalid IL or missing references) //IL_0072: Unknown result type (might be due to invalid IL or missing references) //IL_007b: Unknown result type (might be due to invalid IL or missing references) //IL_0098: Unknown result type (might be due to invalid IL or missing references) //IL_0099: Unknown result type (might be due to invalid IL or missing references) //IL_00a2: Unknown result type (might be due to invalid IL or missing references) //IL_00bf: Unknown result type (might be due to invalid IL or missing references) //IL_00c0: Unknown result type (might be due to invalid IL or missing references) //IL_00c9: Unknown result type (might be due to invalid IL or missing references) //IL_00e6: Unknown result type (might be due to invalid IL or missing references) //IL_00e7: Unknown result type (might be due to invalid IL or missing references) //IL_00f0: Unknown result type (might be due to invalid IL or missing references) //IL_010d: Unknown result type (might be due to invalid IL or missing references) //IL_010e: 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_0134: 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) skin.meshReplacements = (MeshReplacement[])(object)new MeshReplacement[7] { new MeshReplacement { mesh = assetBundle.LoadAsset<Mesh>("Assets\\SkinMods\\Chief\\Meshes\\body.mesh"), renderer = renderers[0] }, new MeshReplacement { mesh = assetBundle.LoadAsset<Mesh>("Assets\\SkinMods\\Chief\\Meshes\\head.mesh"), renderer = renderers[1] }, new MeshReplacement { mesh = null, renderer = renderers[2] }, new MeshReplacement { mesh = null, renderer = renderers[3] }, new MeshReplacement { mesh = null, renderer = renderers[4] }, new MeshReplacement { mesh = null, renderer = renderers[5] }, new MeshReplacement { mesh = null, renderer = renderers[6] } }; }); TryCatchThrow("Minion Skin Replacements", delegate { skin.minionSkinReplacements = Array.Empty<MinionSkinReplacement>(); }); TryCatchThrow("Projectile Ghost Replacements", delegate { skin.projectileGhostReplacements = Array.Empty<ProjectileGhostReplacement>(); }); Array.Resize(ref val2.skins, val2.skins.Length + 1); val2.skins[val2.skins.Length - 1] = skin; BodyCatalog.skins[BodyCatalog.FindBodyIndex(val)] = val2.skins; } catch (FieldException ex) { InstanceLogger.LogWarning((object)("Failed to add \"" + text2 + "\" skin to \"" + text + "\"")); InstanceLogger.LogWarning((object)("Field causing issue: " + ex.Message)); InstanceLogger.LogError((object)ex.InnerException); } catch (Exception ex2) { InstanceLogger.LogWarning((object)("Failed to add \"" + text2 + "\" skin to \"" + text + "\"")); InstanceLogger.LogError((object)ex2); } } private static void TryCatchThrow(string message, Action action) { try { action?.Invoke(); } catch (Exception innerException) { throw new FieldException(message, innerException); } } }