From 7d5305cb29df5d407578fc8e112d8ca995896995 Mon Sep 17 00:00:00 2001
From: Atony <75191600+AtonyGit@users.noreply.github.com>
Date: Thu, 16 Oct 2025 16:35:05 -0500
Subject: [PATCH] Reimplement vanilla kill animations in mira
---
MiraAPI/Networking/CustomMurderRpc.cs | 67 ++++++++++++++++++++++++++-
1 file changed, 66 insertions(+), 1 deletion(-)
diff --git a/MiraAPI/Networking/CustomMurderRpc.cs b/MiraAPI/Networking/CustomMurderRpc.cs
index f94223b..54c43b5 100644
--- a/MiraAPI/Networking/CustomMurderRpc.cs
+++ b/MiraAPI/Networking/CustomMurderRpc.cs
@@ -1,5 +1,6 @@
using System;
using System.Collections;
+using System.Collections.Generic;
using System.Linq;
using AmongUs.Data;
using AmongUs.GameOptions;
@@ -174,7 +175,7 @@ public static class CustomMurderRpc
{
try
{
- HudManager.Instance.KillOverlay.ShowKillAnimation(source.Data, data);
+ HudManager.Instance.KillOverlay.ShowMiraKillAnimation(source.Data, data);
}
catch (Exception e)
{
@@ -297,4 +298,68 @@ public static class CustomMurderRpc
PlayerControl.LocalPlayer.isKilling = false;
source.isKilling = false;
}
+
+ ///
+ /// Reimplementation of vanilla's kill animation screen.
+ ///
+ /// The kill overlay from the Hud Manager.
+ /// The murderer's network information.
+ /// The murdered player's network information.
+ public static void ShowMiraKillAnimation(this KillOverlay killOverlay, NetworkedPlayerInfo killer, NetworkedPlayerInfo victim)
+ {
+ List self = killOverlay.KillAnims.ToList();
+ OverlayKillAnimation killAnimation;
+ if (killer.Object)
+ {
+ OverlayKillAnimation[] killAnimations = killer.Object.MyPhysics.Animations.GetKillAnimations();
+ if (GameOptionsManager.Instance.CurrentGameOptions.GameMode == AmongUs.GameOptions.GameModes.HideNSeek && AprilFoolsMode.ShouldHorseAround())
+ {
+ self = killOverlay.HorseWrangleAnims.ToList();
+ }
+ else if (killAnimations.Length != 0)
+ {
+ self = killAnimations.ToList();
+ }
+ else
+ {
+ SkinViewData skin = ShipStatus.Instance.CosmeticsCache.GetSkin(killer.Object.CurrentOutfit.SkinId);
+ if (skin && skin.CustomKillAnimID > 0)
+ {
+ if (!string.IsNullOrEmpty(skin.HatID_KillAnim) && skin.HatID_KillAnim != killer.Object.CurrentOutfit.HatId)
+ {
+ if (killer.Role.CustomKillAnimations.Length != 0)
+ {
+ self = killer.Role.CustomKillAnimations.ToList();
+ }
+ killAnimation = self.Random();
+ killOverlay.ShowKillAnimation(killAnimation, killer, victim);
+ return;
+ }
+ if (!string.IsNullOrEmpty(skin.VisorID_KillAnim) && skin.VisorID_KillAnim != killer.Object.CurrentOutfit.VisorId)
+ {
+ if (killer.Role.CustomKillAnimations.Length != 0)
+ {
+ self = killer.Role.CustomKillAnimations.ToList();
+ }
+ killAnimation = self.Random();
+ killOverlay.ShowKillAnimation(killAnimation, killer, victim);
+ return;
+ }
+ self = new List
+ {
+ killOverlay.CustomKillAnimations[skin.CustomKillAnimID - 1],
+ };
+ killAnimation = self.Random();
+ killOverlay.ShowKillAnimation(killAnimation, killer, victim);
+ return;
+ }
+ else if (killer.Role.CustomKillAnimations.Length != 0)
+ {
+ self = killer.Role.CustomKillAnimations.ToList();
+ }
+ }
+ }
+ killAnimation = self.Random();
+ killOverlay.ShowKillAnimation(killAnimation, killer, victim);
+ }
}