using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Diagnostics.CodeAnalysis;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.Versioning;
using System.Security;
using System.Security.Permissions;
using BepInEx;
using BepInEx.Logging;
using GameNetcodeStuff;
using HarmonyLib;
using Microsoft.CodeAnalysis;
using UnityEngine;
[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)]
[assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")]
[assembly: AssemblyCompany("Nyan.LC.DeathMessages")]
[assembly: AssemblyConfiguration("Debug")]
[assembly: AssemblyDescription("This is a description")]
[assembly: AssemblyFileVersion("0.0.2.0")]
[assembly: AssemblyInformationalVersion("0.0.2")]
[assembly: AssemblyProduct("Nyan.LC.DeathMessages")]
[assembly: AssemblyTitle("Nyan.LC.DeathMessages")]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: AssemblyVersion("0.0.2.0")]
[module: UnverifiableCode]
[module: RefSafetyRules(11)]
namespace Microsoft.CodeAnalysis
{
[CompilerGenerated]
[Microsoft.CodeAnalysis.Embedded]
internal sealed class EmbeddedAttribute : Attribute
{
}
}
namespace System.Runtime.CompilerServices
{
[CompilerGenerated]
[Microsoft.CodeAnalysis.Embedded]
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Event | AttributeTargets.Parameter | AttributeTargets.ReturnValue | AttributeTargets.GenericParameter, AllowMultiple = false, Inherited = false)]
internal sealed class NullableAttribute : Attribute
{
public readonly byte[] NullableFlags;
public NullableAttribute(byte P_0)
{
NullableFlags = new byte[1] { P_0 };
}
public NullableAttribute(byte[] P_0)
{
NullableFlags = P_0;
}
}
[CompilerGenerated]
[Microsoft.CodeAnalysis.Embedded]
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Method | AttributeTargets.Interface | AttributeTargets.Delegate, AllowMultiple = false, Inherited = false)]
internal sealed class NullableContextAttribute : Attribute
{
public readonly byte Flag;
public NullableContextAttribute(byte P_0)
{
Flag = P_0;
}
}
[CompilerGenerated]
[Microsoft.CodeAnalysis.Embedded]
[AttributeUsage(AttributeTargets.Module, AllowMultiple = false, Inherited = false)]
internal sealed class RefSafetyRulesAttribute : Attribute
{
public readonly int Version;
public RefSafetyRulesAttribute(int P_0)
{
Version = P_0;
}
}
}
namespace LCDeathMessages
{
public static class DeathMessages
{
private static List<string> Unknown { get; } = new List<string>(10) { "$$이(가) 패배했습니다.", "$$의 영혼이 무지개다리를 건넜습니다.", "$$이(가) 살해당했습니다.", "$$이(가) 요단강을 건넜습니다.", "$$의 심장이 멎었습니다.", "$$이(가) 접속을 종료했습니다.", "$$의 생명 유지 장치가 제거되었습니다.", "$$의 안색이 창백해졌습니다.", "$$의 무능함이 만천하에 드러났습니다.", "$$이(가) 숨을 거두었습니다." };
private static List<string> Bludgeoning { get; } = new List<string>(8) { "$$이(가) 참혹한 패배를 맛보았습니다.", "$$의 뼈가 부러졌습니다.", "$$이(가) 머리를 세게 맞았습니다.", "$$이(가) 둔기에 맞아 이승으로 떠났습니다.", "$$이(가) 흉기에 찔리고 말았습니다.", "$$이(가) 막다른 길에 맞닥뜨렸습니다.", "$$의 목뼈가 사라졌습니다.", "$$이(가) 치명상을 입고 쓰러졌습니다." };
private static List<string> Gravity { get; } = new List<string>(9) { "$$이(가) 착지하지 못했습니다.", "$$이(가) 발을 헛디뎠습니다.", "$$이(가) 중력의 법칙을 몸소 깨달았습니다.", "$$이(가) 본인이 날 수 있다고 착각했습니다.", "$$이(가) 바닥에 작은 구덩이를 남겼습니다.", "$$이(가) 바닥에 평범한 크기의 구덩이를 남겼습니다.", "$$이(가) 바닥에 거대한 분화구를 남겼습니다.", "$$이(가) 단단한 땅 위를 걷는 법을 잊어버렸습니다.", "$$이(가) 바닥에 납작하게 짓눌렸습니다." };
private static List<string> Blast { get; } = new List<string>(8) { "$$이(가) 쾅 하고 터져버렸습니다!", "$$이(가) 사방팔방으로 흩어졌습니다.", "$$이(가) 화려한 폭발과 함께 생을 마감했습니다.", "$$이(가) 형체도 없이 박살났습니다.", "$$이(가) 자폭했습니다.", "$$이(가) 한 줌의 먼지가 되어 사라졌습니다.", "$$이(가) 폭발에 휘말렸습니다.", "$$이(가) 원자 단위로 분해되었습니다." };
private static List<string> Strangulation { get; } = new List<string>(6) { "$$의 목이 예쁜 리본처럼 꽉 조여졌습니다.", "$$이(가) 숨이 막혀 정신을 잃고 말았습니다.", "$$이(가) 목이 졸려 비참한 최후를 맞았습니다.", "$$이(가) 숨을 뺏겨버리고 말았습니다.", "$$이(가) 숨 쉴 권리를 박탈당했습니다.", "$$의 목이 꽉 조여졌습니다." };
private static List<string> Suffocation { get; } = new List<string>(9) { "$$이(가) 숨을 쉴 수 없었습니다.", "$$의 공기가 바닥나고 말았습니다.", "$$의 허파가 텅 비어버렸습니다.", "$$이(가) 마지막 숨을 내뱉었습니다.", "$$이(가) 어둠 속에서 질식해 죽었습니다.", "$$의 마지막 숨결은 허망하게 흩어졌습니다.", "$$이(가) 질식사했습니다.", "$$이(가) 저산소증을 겪으며 쓰러졌습니다.", "$$의 숨결이 멎었습니다." };
private static List<string> Mauling => new List<string>(10)
{
"$$이(가) 살해당했습니다.",
"$$이(가) 차갑게 죽었습니다.",
"$$이(가) 살해되었습니다.",
"$$의 얼굴이 뜯겨 나갔습니다.",
"$$의 내장이 파헤쳐졌습니다.",
"$$이(가) 처참하게 학살당했습니다.",
"$$이(가) 몸이 두 동강 났습니다.",
"$$의 시체를 구분할 수 없었습니다.",
"$$의 주요 장기들이 파열되었습니다.",
"$$이(가) " + ((Object)Plugin.RoundData.currentLevel).name + "에서 '제거'되었습니다."
};
private static List<string> Gunshots { get; } = new List<string>(9) { "$$의 몸에 구멍이 몇 개 더 뚫렸습니다.", "$$의 몸이 뚫렸습니다.", "$$의 몸속에 총알이 이식되었습니다.", "$$이(가) 훌륭한 사격 연습 표적이 되었습니다.", "$$이(가) 총소리를 듣지 못했습니다.", "$$이(가) '네오'가 아니었습니다. (영화 매트릭스 패러디)", "$$이(가) 총알이 아프다는 사실을 몸소 깨달았습니다.", "$$이(가) 사살당했습니다.", "$$이(가) 제 발로 사격 연습장에 걸어 들어갔습니다." };
private static List<string> Crushing { get; } = new List<string>(6) { "$$이(가) 짓눌리는 참혹한 패배를 맞이했습니다.", "$$이(가) 압력을 견디지 못했습니다.", "$$의 생명은 무참히 짓눌려 꺼졌습니다.", "$$이(가) 감당할 수 없는 무게에 짓눌렸습니다.", "$$이(가) 엄청난 압력 아래 고통스럽게 쓰러졌습니다.", "$$이(가) 중력이 단지 떨어뜨리기만 하는 게 아님을 깨달았습니다." };
private static List<string> Drowning { get; } = new List<string>(7) { "$$이(가) 상어 밥이 되었습니다.", "$$이(가) 물고기들과 함께 잠들었습니다.", "$$이(가) 물에 빠져 죽었습니다.", "$$이(가) 호수를 통째로 마시려다 실패했습니다.", "$$이(가) '아틀란티스'를 발견했습니다.", "$$이(가) 물을 잘못 마시고 말았습니다.", "$$이(가) 아가미가 없었습니다." };
private static List<string> Abandoned { get; } = new List<string>(6) { "$$이(가) 뒤에 홀로 남겨졌습니다.", "$$이(가) 모두의 기억 속에서 잊혔습니다.", "$$이(가) 그다지 중요한 존재가 아니었습니다.", "$$이(가) 그냥 행성에 머물기로 결정했습니다.", "$$이(가) 시간 가는 줄 모르고 있다가 화를 당했습니다.", "$$이(가) 미션의 가장 중요한 마지막 단계를 잊어버렸습니다." };
private static List<string> Electrocution { get; } = new List<string>(8) { "$$이(가) 대체 무슨 일이 일어났는지 알지 못했습니다.", "$$이(가) 넘쳐나는 와트(전력)를 감당하지 못했습니다.", "$$이(가) 인간 배터리가 되어버렸습니다.", "$$이(가) 인간 피뢰침이 되었습니다.", "$$의 긍정적인 생명력이 '음전하(-)'로 바뀌었습니다.", "$$이(가) 지지직 소리와 함께 타버렸습니다.", "$$이(가) 건드리지 말아야 할 전선을 건드렸습니다.", "$$이(가) 더 이상 '전류가 흐르지(살아있지)' 않습니다." };
private static List<string> Kicking { get; } = new List<string>(3) { "$$이(가) 축구공이 되었습니다.", "$$이(가) 멀리 날아갔습니다.", "$$이(가) 실연당했습니다." };
public static string Get(CauseOfDeath cause, string username)
{
//IL_000b: Unknown result type (might be due to invalid IL or missing references)
//IL_0045: Expected I4, but got Unknown
Random random = new Random();
if (1 == 0)
{
}
string text = (int)cause switch
{
0 => Unknown[random.Next(0, Unknown.Count)],
1 => Bludgeoning[random.Next(0, Bludgeoning.Count)],
2 => Gravity[random.Next(0, Gravity.Count)],
3 => Blast[random.Next(0, Blast.Count)],
4 => Strangulation[random.Next(0, Strangulation.Count)],
5 => Suffocation[random.Next(0, Suffocation.Count)],
6 => Mauling[random.Next(0, Mauling.Count)],
7 => Gunshots[random.Next(0, Gunshots.Count)],
8 => Crushing[random.Next(0, Crushing.Count)],
9 => Drowning[random.Next(0, Drowning.Count)],
10 => Abandoned[random.Next(0, Abandoned.Count)],
11 => Electrocution[random.Next(0, Electrocution.Count)],
12 => Kicking[random.Next(0, Kicking.Count)],
_ => string.Empty,
};
if (1 == 0)
{
}
return text.Replace("$$", username);
}
}
[BepInPlugin("Nyan.LC.DeathMessages", "Nyan.LC.DeathMessages", "0.0.2")]
public class Plugin : BaseUnityPlugin
{
public static Plugin? Instance;
private readonly Harmony _harmony = new Harmony("Nyan.LC.DeathMessages");
public static StartOfRound RoundData => StartOfRound.Instance;
public static ManualLogSource? Log
{
[return: NotNull]
get;
private set; }
private void Awake()
{
if (Instance == null)
{
Instance = this;
}
((BaseUnityPlugin)this).Logger.LogInfo((object)"Started Death Messages Plugin Successfully.");
_harmony.PatchAll(typeof(Plugin));
Log = ((BaseUnityPlugin)this).Logger;
}
[HarmonyPatch(typeof(PlayerControllerB), "KillPlayer")]
[HarmonyPostfix]
private static void SendDeathMessage(PlayerControllerB __instance)
{
//IL_0011: Unknown result type (might be due to invalid IL or missing references)
if (__instance.isPlayerDead)
{
string text = DeathMessages.Get(__instance.causeOfDeath, __instance.playerUsername);
string text2 = "<color=#E11919>" + text + "</color>";
HUDManager.Instance.AddTextToChatOnServer(text2, -1);
}
}
}
public static class PluginInfo
{
public const string PLUGIN_GUID = "Nyan.LC.DeathMessages";
public const string PLUGIN_NAME = "Nyan.LC.DeathMessages";
public const string PLUGIN_VERSION = "0.0.2";
}
}