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 TF2StyleKillFeed v1.0.0
TF2StyleKillFeed.dll
Decompiled a year agousing System.Collections.Generic; using System.Diagnostics; using System.IO; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using System.Runtime.Versioning; using BepInEx; using HarmonyLib; using TMPro; using UnityEngine; using UnityEngine.UI; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] [assembly: AssemblyTitle("MyHopefullyKYSRepoMOD")] [assembly: AssemblyDescription("")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("HP")] [assembly: AssemblyProduct("MyHopefullyKYSRepoMOD")] [assembly: AssemblyCopyright("Copyright © HP 2025")] [assembly: AssemblyTrademark("")] [assembly: ComVisible(false)] [assembly: Guid("ef944c74-4cac-48b1-9060-aa93d4c2fe5a")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: TargetFramework(".NETFramework,Version=v4.8", FrameworkDisplayName = ".NET Framework 4.8")] [assembly: AssemblyVersion("1.0.0.0")] namespace TF2StyleKillFeed; [BepInPlugin("com.thisismynameyes.TF2StyleKillFeed", "Please work", "1.0.0")] public class InnerWorksOfTf2Style : BaseUnityPlugin { public GameObject killFeedEntryPrefab; public Canvas killFeedCanvas; private readonly List<GameObject> killFeedEntries = new List<GameObject>(); public static InnerWorksOfTf2Style Instance { get; private set; } private void Awake() { //IL_0038: Unknown result type (might be due to invalid IL or missing references) //IL_003e: Expected O, but got Unknown Instance = this; ((BaseUnityPlugin)this).Logger.LogInfo((object)"Hopefully this works"); Object.DontDestroyOnLoad((Object)(object)((Component)this).gameObject); CreateKillFeedCanvas(); LoadAssetBundle(); Harmony val = new Harmony("com.thisismynameyes.TF2StyleKillFeed"); val.PatchAll(); } private void CreateKillFeedCanvas() { //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_000c: Expected O, but got Unknown //IL_004d: Unknown result type (might be due to invalid IL or missing references) GameObject val = new GameObject("KillFeedCanvas"); killFeedCanvas = val.AddComponent<Canvas>(); killFeedCanvas.renderMode = (RenderMode)0; killFeedCanvas.sortingOrder = 100; CanvasScaler val2 = val.AddComponent<CanvasScaler>(); val2.uiScaleMode = (ScaleMode)1; val2.referenceResolution = new Vector2(1920f, 1080f); val2.screenMatchMode = (ScreenMatchMode)0; val2.matchWidthOrHeight = 0.5f; val.AddComponent<GraphicRaycaster>(); Object.DontDestroyOnLoad((Object)(object)val); } private void LoadAssetBundle() { string text = Path.Combine(Paths.PluginPath, "TF2StyleKillFeed", "final"); AssetBundle val = AssetBundle.LoadFromFile(text); if ((Object)(object)val == (Object)null) { ((BaseUnityPlugin)this).Logger.LogError((object)("Failed to load killfeed asset bundle from path: " + text)); return; } killFeedEntryPrefab = val.LoadAsset<GameObject>("assets/killfeedwidgetfinal.prefab"); ((BaseUnityPlugin)this).Logger.LogInfo((object)("Asset was loaded at " + text)); if ((Object)(object)killFeedEntryPrefab == (Object)null) { ((BaseUnityPlugin)this).Logger.LogError((object)"Failed to load the prefab 'KillFeedWidget' from the asset bundle."); } } public void AddKillFeedEntry(string playerName) { //IL_00a3: Unknown result type (might be due to invalid IL or missing references) if ((Object)(object)killFeedEntryPrefab == (Object)null) { ((BaseUnityPlugin)this).Logger.LogError((object)"Killfeed asset (killFeedEntryPrefab) is null."); } if ((Object)(object)killFeedCanvas == (Object)null) { ((BaseUnityPlugin)this).Logger.LogInfo((object)"Killfeed canvas (killFeedCanvas) is null, creating one right now"); CreateKillFeedCanvas(); } if ((Object)(object)killFeedEntryPrefab == (Object)null || (Object)(object)killFeedCanvas == (Object)null) { return; } GameObject val = Object.Instantiate<GameObject>(killFeedEntryPrefab, ((Component)killFeedCanvas).transform); val.transform.localScale = new Vector3(0.2f, 0.2f, 0.2f); TextMeshProUGUI componentInChildren = val.GetComponentInChildren<TextMeshProUGUI>(); if ((Object)(object)componentInChildren != (Object)null) { TMP_FontAsset val2 = Resources.Load<TMP_FontAsset>("Fonts & Materials/LiberationSans SDF"); if ((Object)(object)val2 != (Object)null) { if ((Object)(object)((TMP_Text)componentInChildren).font == (Object)null || (Object)(object)((TMP_Asset)((TMP_Text)componentInChildren).font).material == (Object)null) { ((TMP_Text)componentInChildren).font = val2; ((TMP_Text)componentInChildren).fontSharedMaterial = ((TMP_Asset)val2).material; ((BaseUnityPlugin)this).Logger.LogInfo((object)"Fallback TMP font assigned due to null font or material."); } else { ((TMP_Text)componentInChildren).font = val2; ((TMP_Text)componentInChildren).fontSharedMaterial = ((TMP_Asset)val2).material; ((BaseUnityPlugin)this).Logger.LogInfo((object)"Fallback TMP font forcibly assigned from mod Resources."); } } else { ((BaseUnityPlugin)this).Logger.LogError((object)"Failed to load fallback TMP font from mod Resources."); } ((TMP_Text)componentInChildren).text = playerName; ((TMP_Text)componentInChildren).fontSize = 64f; ((TMP_Text)componentInChildren).ForceMeshUpdate(false, false); ((BaseUnityPlugin)this).Logger.LogInfo((object)("Set player name on killfeed entry: " + ((TMP_Text)componentInChildren).text)); } else { ((BaseUnityPlugin)this).Logger.LogError((object)"TextMeshProUGUI component not found in the killfeed prefab."); } killFeedEntries.Insert(0, val); RepositionEntries(); Object.Destroy((Object)(object)val, 6f); } private void RepositionEntries() { //IL_0076: Unknown result type (might be due to invalid IL or missing references) //IL_008d: Unknown result type (might be due to invalid IL or missing references) //IL_00a4: Unknown result type (might be due to invalid IL or missing references) //IL_00bd: Unknown result type (might be due to invalid IL or missing references) killFeedEntries.RemoveAll((GameObject item) => (Object)(object)item == (Object)null); float num = 0f; float num2 = 50f; foreach (GameObject killFeedEntry in killFeedEntries) { RectTransform component = killFeedEntry.GetComponent<RectTransform>(); if ((Object)(object)component != (Object)null) { component.anchorMin = new Vector2(1f, 1f); component.anchorMax = new Vector2(1f, 1f); component.pivot = new Vector2(1f, 1f); component.anchoredPosition = new Vector2(-400f, -75f - num); num += num2; } } } } [HarmonyPatch(typeof(PlayerAvatar), "PlayerDeathRPC")] public class PlayerDeathRPCPatch { private static void Postfix(PlayerAvatar __instance, int enemyIndex) { FieldInfo fieldInfo = AccessTools.Field(typeof(PlayerAvatar), "playerName"); string text = (string)fieldInfo.GetValue(__instance); Debug.Log((object)$"[HarmonyPatch] PlayerDeathRPC called for player: {text}, enemyIndex: {enemyIndex}"); InnerWorksOfTf2Style.Instance.AddKillFeedEntry(text); } }