Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions source/Patches/CustomGameOptions.cs
Original file line number Diff line number Diff line change
Expand Up @@ -382,5 +382,6 @@ public static class CustomGameOptions
public static int HunterStalkUses => (int)Generate.HunterStalkUses.Get();
public static bool HunterBodyReport => Generate.HunterBodyReport.Get();
public static bool DoomsayerCantObserve => Generate.DoomsayerCantObserve.Get();
public static bool IndicateRecentDead => Generate.ShowRecentBodies.Get();
}
}
2 changes: 2 additions & 0 deletions source/Patches/CustomOption/Generate.cs
Original file line number Diff line number Diff line change
Expand Up @@ -123,6 +123,7 @@ public class Generate
public static CustomToggleOption FirstDeathShield;
public static CustomToggleOption NeutralEvilWinEndsGame;
public static CustomToggleOption GhostsDoTasks;
public static CustomToggleOption ShowRecentBodies;

public static CustomHeaderOption BetterPolusSettings;
public static CustomToggleOption VentImprovements;
Expand Down Expand Up @@ -797,6 +798,7 @@ public static void GenerateAll()
FirstDeathShield = new CustomToggleOption(num++, MultiMenu.main, "First Death Shield Next Game", false);
NeutralEvilWinEndsGame = new CustomToggleOption(num++, MultiMenu.main, "Neutral Evil Win Ends Game", true);
GhostsDoTasks = new CustomToggleOption(num++, MultiMenu.main, "Ghosts Do Tasks", true);
ShowRecentBodies = new(num++, MultiMenu.main, "Indicate Recent Dead In Meetings", true);

TaskTrackingSettings =
new CustomHeaderOption(num++, MultiMenu.main, "Task Tracking Settings");
Expand Down
38 changes: 38 additions & 0 deletions source/Patches/MeetingShowNewDead.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
using System.Linq;
using HarmonyLib;
using Il2CppInterop.Runtime.InteropTypes.Arrays;
using UnityEngine;

namespace TownOfUs.Patches
{
[HarmonyPatch]

public class ShowNewDead
{
[HarmonyPatch(typeof(MeetingHud), nameof(MeetingHud.CoIntro))]
[HarmonyPostfix]

public static void Postfix(MeetingHud __instance, ref GameData.PlayerInfo reportedBody, ref Il2CppReferenceArray<GameData.PlayerInfo> deadBodies)
{
if (!CustomGameOptions.IndicateRecentDead) return;

foreach (var player in __instance.playerStates)
{
if (deadBodies.Any(x => x.PlayerId == player.TargetPlayerId))
{
player.Megaphone.gameObject.SetActive(true);
player.Megaphone.enabled = true;
player.Megaphone.transform.localEulerAngles = Vector3.zero;
player.Megaphone.transform.localScale = Vector3.one;

if (player.TargetPlayerId != reportedBody.PlayerId)
{
player.Megaphone.sprite = GameManager.Instance.DeadBodyPrefab.bodyRenderers[0].sprite;
player.Megaphone.transform.localScale = new Vector3(0.3f, 0.3f, 0.3f);
player.Megaphone.transform.localPosition -= new Vector3(0.2f, 0, 0);
}
}
}
}
}
}