static void Postfix(VitalsMinigame __instance) { // Hacker show time since death bool showHackerInfo = Hacker.hacker != null && Hacker.hacker == PlayerControl.LocalPlayer && Hacker.hackerTimer > 0; for (int k = 0; k < __instance.MCCBOPIEOEC.Length; k++) { VitalsPanel vitalsPanel = __instance.MCCBOPIEOEC[k]; GameData.OFKOJOKOOAK OFKOJOKOOAK = GameData.Instance.AllPlayers[k]; if (vitalsPanel.IsDead) { DeadPlayer deadPlayer = deadPlayers?.Where(x => x.player?.PlayerId == OFKOJOKOOAK?.GMBAIPNOKLP)?.FirstOrDefault(); if (deadPlayer != null && deadPlayer.timeOfDeath != null) { float timeSinceDeath = ((float)(DateTime.UtcNow - deadPlayer.timeOfDeath).TotalMilliseconds); if (showHackerInfo) { vitalsPanel.Text.Text = Math.Round(timeSinceDeath / 1000) + "s"; } else { vitalsPanel.Text.Text = DestroyableSingleton <TranslationController> .CMJOLNCMAPD.GetString(Palette.OCCIKHJPJPK[(int)OFKOJOKOOAK.JFHFMIKFHGG], new UnhollowerBaseLib.Il2CppReferenceArray <Il2CppSystem.Object>(0)); } } } } }
static void Postfix(VitalsMinigame __instance) { // Hacker show time since death if (Hacker.hacker != null && Hacker.hacker == PlayerControl.LocalPlayer && Hacker.hackerTimer > 0) { for (int k = 0; k < __instance.vitals.Length; k++) { VitalsPanel vitalsPanel = __instance.vitals[k]; GameData.PlayerInfo player = GameData.Instance.AllPlayers[k]; // Hacker update if (vitalsPanel.IsDead) { DeadPlayer deadPlayer = deadPlayers?.Where(x => x.player?.PlayerId == player?.PlayerId)?.FirstOrDefault(); if (deadPlayer != null && deadPlayer.timeOfDeath != null && k < hackerTexts.Count && hackerTexts[k] != null) { float timeSinceDeath = ((float)(DateTime.UtcNow - deadPlayer.timeOfDeath).TotalMilliseconds); hackerTexts[k].gameObject.SetActive(true); hackerTexts[k].text = Math.Round(timeSinceDeath / 1000) + "s"; } } } } else { foreach (TMPro.TextMeshPro text in hackerTexts) { if (text != null && text.gameObject != null) { text.gameObject.SetActive(false); } } } }
static void Postfix(VitalsMinigame __instance) { // Spy show time since death bool showSpyInfo = Spy.spy != null && Spy.spy == PlayerControl.LocalPlayer && Spy.spyTimer > 0; for (int k = 0; k < __instance.vitals.Length; k++) { VitalsPanel vitalsPanel = __instance.vitals[k]; GameData.PlayerInfo playerInfo = GameData.Instance.AllPlayers[k]; if (vitalsPanel.IsDead) { DeadPlayer deadPlayer = deadPlayers?.Where(x => x.player?.PlayerId == playerInfo?.PlayerId)?.FirstOrDefault(); if (deadPlayer != null && deadPlayer.timeOfDeath != null) { float timeSinceDeath = ((float)(DateTime.UtcNow - deadPlayer.timeOfDeath).TotalMilliseconds); if (showSpyInfo) { vitalsPanel.Text.Text = Math.Round(timeSinceDeath / 1000) + "s"; } else { vitalsPanel.Text.Text = DestroyableSingleton <TranslationController> .Instance.GetString(Palette.ShortColorNames[(int)playerInfo.ColorId], new UnhollowerBaseLib.Il2CppReferenceArray <Il2CppSystem.Object>(0)); } } } } }
static void Postfix(VitalsMinigame __instance) { // Hacker show time since death bool showHackerInfo = Hacker.hacker != null && Hacker.hacker == PlayerControl.LocalPlayer && Hacker.hackerTimer > 0; for (int k = 0; k < __instance.vitals.Length; k++) { VitalsPanel vitalsPanel = __instance.vitals[k]; GameData.PlayerInfo player = GameData.Instance.AllPlayers[k]; // Crowded scaling float scale = 10f / Mathf.Max(10, __instance.vitals.Length); vitalsPanel.transform.localPosition = new Vector3((float)k * 0.6f * scale + -2.7f, 0.2f, -1f); vitalsPanel.transform.localScale = new Vector3(scale, scale, vitalsPanel.transform.localScale.z); // Hacker update if (vitalsPanel.IsDead) { DeadPlayer deadPlayer = deadPlayers?.Where(x => x.player?.PlayerId == player?.PlayerId)?.FirstOrDefault(); if (deadPlayer != null && deadPlayer.timeOfDeath != null) { float timeSinceDeath = ((float)(DateTime.UtcNow - deadPlayer.timeOfDeath).TotalMilliseconds); if (showHackerInfo) { vitalsPanel.Text.text = Math.Round(timeSinceDeath / 1000) + "s"; } else if (__instance.vitals.Length > 10) { vitalsPanel.Text.text = player.PlayerName.Length >= 4 ? player.PlayerName.Substring(0, 4).ToUpper() : player.PlayerName.ToUpper(); } else { vitalsPanel.Text.text = DestroyableSingleton <TranslationController> .Instance.GetString(Palette.ShortColorNames[(int)player.ColorId], new UnhollowerBaseLib.Il2CppReferenceArray <Il2CppSystem.Object>(0)); } } } } }
static void Postfix(VitalsMinigame __instance) { // Spy show time since death if (Spy.spy == null || Spy.spy != PlayerControl.LocalPlayer) { return; } for (int k = 0; k < __instance.vitals.Length; k++) { VitalsPanel vitalsPanel = __instance.vitals[k]; GameData.PlayerInfo playerInfo = GameData.Instance.AllPlayers[k]; if (vitalsPanel.IsDead) { DeadPlayer deadPlayer = deadPlayers?.Where(x => x.player?.PlayerId == playerInfo?.PlayerId)?.FirstOrDefault(); if (deadPlayer != null && deadPlayer.timeOfDeath != null) { float timeSinceDeath = ((float)(DateTime.UtcNow - deadPlayer.timeOfDeath).TotalMilliseconds); vitalsPanel.Text.Text = Math.Round(timeSinceDeath / 1000) + "s"; } } } }