using QSB.Events; using System.Linq; namespace QSB.DeathSync { public static class DeathPatches { public static bool PreFinishDeathSequence(DeathType deathType) { if (RespawnOnDeath.Instance.AllowedDeathTypes.Contains(deathType)) { // Allow real death return true; } RespawnOnDeath.Instance.ResetShip(); RespawnOnDeath.Instance.ResetPlayer(); // Prevent original death method from running. return false; } public static void BroadcastDeath(DeathType deathType) { GlobalMessenger.FireEvent(EventNames.QSBPlayerDeath, deathType); } public static void DoPatches() { QSB.Helper.HarmonyHelper.AddPrefix("KillPlayer", typeof(DeathPatches), nameof(PreFinishDeathSequence)); QSB.Helper.HarmonyHelper.AddPostfix("KillPlayer", typeof(DeathPatches), nameof(BroadcastDeath)); } } }