Decompiled source of DiceAndColor v1.1.0

DiceAndColor1.1.0.dll

Decompiled 2 weeks ago
using System.Collections.Generic;
using System.Diagnostics;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using System.Runtime.Versioning;
using System.Text;
using BepInEx;
using HarmonyLib;
using UnityEngine;

[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)]
[assembly: AssemblyTitle("DiceAndColor")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("DiceAndColor")]
[assembly: AssemblyCopyright("Copyright ©  2026")]
[assembly: AssemblyTrademark("")]
[assembly: ComVisible(false)]
[assembly: Guid("e59b3713-dbff-4d0e-bb86-544e8b81ca53")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: TargetFramework(".NETFramework,Version=v4.7.2", FrameworkDisplayName = ".NET Framework 4.7.2")]
[assembly: AssemblyVersion("1.0.0.0")]
namespace DiceAndColor;

[BepInPlugin("cUtils.DiceAndColor", "DiceAndColor", "1.1.0")]
[BepInProcess("atlyss.exe")]
public class Plugin : BaseUnityPlugin
{
	[HarmonyPatch(typeof(ChatBehaviour), "Cmd_SendChatMessage")]
	public class Cmd_SendChatMessage_Patch
	{
		public static bool Prefix(ChatBehaviour __instance, ref string _message)
		{
			if (_message == null || !_message.StartsWith("/"))
			{
				return true;
			}
			string[] array = _message.Split(new char[1] { ' ' });
			string text = array[0].ToLower();
			switch (text)
			{
			case "/diceandcolor":
			case "/diceandcolorhelp":
			case "/ccolorhelp":
			case "/crollhelp":
			case "/diceandcolour":
			case "/diceandcolourhelp":
			case "/ccolourhelp":
				Help(__instance, text);
				return false;
			case "/ccolor":
			case "/ccolour":
				CColor(__instance, array);
				return false;
			case "/ccolorget":
			case "/ccolourget":
				CColorGet(__instance);
				return false;
			case "/ccolorlist":
			case "/ccolourlist":
				CColorList(__instance);
				return false;
			case "/croll":
				return CRollCheckValid(__instance, array);
			case "/crollclient":
				CRollClient(__instance, array);
				return false;
			default:
				return true;
			}
		}

		private static void Help(ChatBehaviour chat, string command)
		{
			StringBuilder stringBuilder = new StringBuilder();
			stringBuilder.AppendLine("<color=yellow>cUtils.DiceAndColor 1.1.0</color> " + command + ":");
			stringBuilder.AppendLine("type <color=green>/croll</color> to roll a d20.");
			stringBuilder.AppendLine("type <color=green>/croll [nr]</color> to roll a d[nr].");
			stringBuilder.AppendLine("valid dice numbers go from <color=yellow>1</color> to <color=yellow>2147483646</color>.");
			stringBuilder.AppendLine("the dice gets rolled by the server, to detect cheaters.");
			stringBuilder.AppendLine("valid rolls will display in <color=#ff7f50>orange</color> and <color=#9acd32>green</color>.");
			stringBuilder.AppendLine("if the host doesn't have the mod, you can use <color=green>/crollclient</color> instead.");
			stringBuilder.AppendLine("type <color=green>/ccolor</color> to set a random chatcolor.");
			stringBuilder.AppendLine("type <color=green>/ccolor [name]</color> to set a CSS color as chatcolor.");
			stringBuilder.AppendLine("type <color=green>/ccolorlist</color> to list all CSS colors.");
			stringBuilder.AppendLine("type <color=green>/ccolorget</color> to display your last messages hexcolor.");
			chat.New_ChatMessage(stringBuilder.ToString());
		}

		private static void CColor(ChatBehaviour chat, string[] inputArray)
		{
			string text = "";
			if (inputArray.Length < 2)
			{
				text = $"#{Random.Range(0, 16777216):X6}";
			}
			else
			{
				string key = inputArray[1].ToLower();
				if (!cssColors.ContainsKey(key))
				{
					chat.New_ChatMessage("color not found");
					return;
				}
				text = cssColors[key];
			}
			chat.Send_ChatMessage("/chatcolor " + text);
			chat.New_ChatMessage("<color=" + text + ">" + text + "</color>");
		}

		private static void CColorGet(ChatBehaviour chat)
		{
			string nickname = Player._mainPlayer._nickname;
			string text = "[" + nickname + "]</color>";
			bool flag = false;
			for (int num = chat._chatMessages.Count - 1; num >= 0; num--)
			{
				if (chat._chatMessages[num].Contains(text))
				{
					text = chat._chatMessages[num];
					flag = true;
					break;
				}
			}
			if (!flag)
			{
				chat.New_ChatMessage("you need to send a message first");
				return;
			}
			text = text.Substring(text.IndexOf("#") + 1);
			if (text.Contains("<color=#"))
			{
				text = text.Substring(text.IndexOf("#"), 7);
				chat.New_ChatMessage("<color=" + text + ">" + text + "</color>");
			}
			else
			{
				chat.New_ChatMessage("default color");
			}
		}

		private static void CColorList(ChatBehaviour chat)
		{
			StringBuilder stringBuilder = new StringBuilder();
			string text = "";
			foreach (string key in cssColors.Keys)
			{
				text = cssColors[key];
				stringBuilder.Append("<color=" + text + ">" + key + "</color> ");
			}
			chat.New_ChatMessage(stringBuilder.ToString());
		}

		private static bool CRollCheckValid(ChatBehaviour chat, string[] inputArray)
		{
			int result = 20;
			if (inputArray.Length > 1)
			{
				int.TryParse(inputArray[1], out result);
				result = ((result <= 2147483646) ? result : 0);
			}
			if (result < 1 || inputArray.Length > 2)
			{
				chat.New_ChatMessage(GetInvalidMessage());
				return false;
			}
			return true;
		}

		private static void CRollClient(ChatBehaviour chat, string[] inputArray)
		{
			int result = 20;
			if (inputArray.Length > 1)
			{
				int.TryParse(inputArray[1], out result);
				result = ((result <= 2147483646) ? result : 0);
			}
			if (result < 1 || inputArray.Length > 2)
			{
				chat.New_ChatMessage(GetInvalidMessage());
				return;
			}
			int num = Random.Range(1, result + 1);
			string text = $"cRollClient d{result} #{num}";
			chat.Send_ChatMessage(text);
		}

		private static string GetInvalidMessage()
		{
			StringBuilder stringBuilder = new StringBuilder();
			stringBuilder.AppendLine("<color=red>invalid command</color>");
			stringBuilder.AppendLine("type <color=green>/diceandcolor</color> for more info");
			return stringBuilder.ToString();
		}
	}

	[HarmonyPatch(typeof(ChatBehaviour), "Rpc_RecieveChatMessage")]
	public static class ChatBehaviour_Rpc_RecieveChatMessage
	{
		public static bool Prefix(ref ChatBehaviour __instance, ref string message)
		{
			if (message == null || !message.StartsWith("/"))
			{
				return true;
			}
			string[] array = message.Split(new char[1] { ' ' });
			string text = array[0].ToLower();
			string text2 = text;
			string text3 = text2;
			if (text3 == "/croll")
			{
				CRollServer(array, ref message);
				return true;
			}
			return true;
		}

		private static void CRollServer(string[] inputArray, ref string message)
		{
			if (inputArray.Length > 2)
			{
				message = "<color=red>I JUST TRIED TO CHEAT AT /CROLL</color>";
				return;
			}
			int result = 20;
			if (inputArray.Length == 2)
			{
				int.TryParse(inputArray[1], out result);
				result = ((result <= 2147483646) ? result : 0);
				result = ((result < 1) ? 20 : result);
			}
			int num = Random.Range(1, result + 1);
			message = $"/cRoll <color=#ff7f50>d{result}</color> <color=#9acd32>#{num}</color>";
		}
	}

	private const string PLUGIN_GUID = "cUtils.DiceAndColor";

	private const string PLUGIN_NAME = "DiceAndColor";

	private const string PLUGIN_VERSION = "1.1.0";

	private readonly Harmony harmony = new Harmony("cUtils.DiceAndColor");

	protected static Dictionary<string, string> cssColors;

	private void Awake()
	{
		cssColors = BuildCssColors();
		harmony.PatchAll();
		((BaseUnityPlugin)this).Logger.LogInfo((object)"Plugin DiceAndColor is loaded!");
	}

	private Dictionary<string, string> BuildCssColors()
	{
		return new Dictionary<string, string>
		{
			{ "aliceblue", "#f0f8ff" },
			{ "antiquewhite", "#faebd7" },
			{ "aqua", "#00ffff" },
			{ "aquamarine", "#7fffd4" },
			{ "azure", "#f0ffff" },
			{ "beige", "#f5f5dc" },
			{ "bisque", "#ffe4c4" },
			{ "black", "#000000" },
			{ "blanchedalmond", "#ffebcd" },
			{ "blue", "#0000ff" },
			{ "blueviolet", "#8a2be2" },
			{ "brown", "#a52a2a" },
			{ "burlywood", "#deb887" },
			{ "cadetblue", "#5f9ea0" },
			{ "chartreuse", "#7fff00" },
			{ "chocolate", "#d2691e" },
			{ "coral", "#ff7f50" },
			{ "cornflowerblue", "#6495ed" },
			{ "cornsilk", "#fff8dc" },
			{ "crimson", "#dc143c" },
			{ "cyan", "#00ffff" },
			{ "darkblue", "#00008b" },
			{ "darkcyan", "#008b8b" },
			{ "darkgoldenrod", "#b8860b" },
			{ "darkgray", "#a9a9a9" },
			{ "darkgreen", "#006400" },
			{ "darkgrey", "#a9a9a9" },
			{ "darkkhaki", "#bdb76b" },
			{ "darkmagenta", "#8b008b" },
			{ "darkolivegreen", "#556b2f" },
			{ "darkorange", "#ff8c00" },
			{ "darkorchid", "#9932cc" },
			{ "darkred", "#8b0000" },
			{ "darksalmon", "#e9967a" },
			{ "darkseagreen", "#8fbc8f" },
			{ "darkslateblue", "#483d8b" },
			{ "darkslategray", "#2f4f4f" },
			{ "darkslategrey", "#2f4f4f" },
			{ "darkturquoise", "#00ced1" },
			{ "darkviolet", "#9400d3" },
			{ "deeppink", "#ff1493" },
			{ "deepskyblue", "#00bfff" },
			{ "dimgray", "#696969" },
			{ "dimgrey", "#696969" },
			{ "dodgerblue", "#1e90ff" },
			{ "firebrick", "#b22222" },
			{ "floralwhite", "#fffaf0" },
			{ "forestgreen", "#228b22" },
			{ "fuchsia", "#ff00ff" },
			{ "gainsboro", "#dcdcdc" },
			{ "ghostwhite", "#f8f8ff" },
			{ "goldenrod", "#daa520" },
			{ "gold", "#ffd700" },
			{ "gray", "#808080" },
			{ "green", "#008000" },
			{ "greenyellow", "#adff2f" },
			{ "grey", "#808080" },
			{ "honeydew", "#f0fff0" },
			{ "hotpink", "#ff69b4" },
			{ "indianred", "#cd5c5c" },
			{ "indigo", "#4b0082" },
			{ "ivory", "#fffff0" },
			{ "khaki", "#f0e68c" },
			{ "lavenderblush", "#fff0f5" },
			{ "lavender", "#e6e6fa" },
			{ "lawngreen", "#7cfc00" },
			{ "lemonchiffon", "#fffacd" },
			{ "lightblue", "#add8e6" },
			{ "lightcoral", "#f08080" },
			{ "lightcyan", "#e0ffff" },
			{ "lightgoldenrodyellow", "#fafad2" },
			{ "lightgray", "#d3d3d3" },
			{ "lightgreen", "#90ee90" },
			{ "lightgrey", "#d3d3d3" },
			{ "lightpink", "#ffb6c1" },
			{ "lightsalmon", "#ffa07a" },
			{ "lightseagreen", "#20b2aa" },
			{ "lightskyblue", "#87cefa" },
			{ "lightslategray", "#778899" },
			{ "lightslategrey", "#778899" },
			{ "lightsteelblue", "#b0c4de" },
			{ "lightyellow", "#ffffe0" },
			{ "lime", "#00ff00" },
			{ "limegreen", "#32cd32" },
			{ "linen", "#faf0e6" },
			{ "magenta", "#ff00ff" },
			{ "maroon", "#800000" },
			{ "mediumaquamarine", "#66cdaa" },
			{ "mediumblue", "#0000cd" },
			{ "mediumorchid", "#ba55d3" },
			{ "mediumpurple", "#9370db" },
			{ "mediumseagreen", "#3cb371" },
			{ "mediumslateblue", "#7b68ee" },
			{ "mediumspringgreen", "#00fa9a" },
			{ "mediumturquoise", "#48d1cc" },
			{ "mediumvioletred", "#c71585" },
			{ "midnightblue", "#191970" },
			{ "mintcream", "#f5fffa" },
			{ "mistyrose", "#ffe4e1" },
			{ "moccasin", "#ffe4b5" },
			{ "navajowhite", "#ffdead" },
			{ "navy", "#000080" },
			{ "oldlace", "#fdf5e6" },
			{ "olive", "#808000" },
			{ "olivedrab", "#6b8e23" },
			{ "orange", "#ffa500" },
			{ "orangered", "#ff4500" },
			{ "orchid", "#da70d6" },
			{ "palegoldenrod", "#eee8aa" },
			{ "palegreen", "#98fb98" },
			{ "paleturquoise", "#afeeee" },
			{ "palevioletred", "#db7093" },
			{ "papayawhip", "#ffefd5" },
			{ "peachpuff", "#ffdab9" },
			{ "peru", "#cd853f" },
			{ "pink", "#ffc0cb" },
			{ "plum", "#dda0dd" },
			{ "powderblue", "#b0e0e6" },
			{ "purple", "#800080" },
			{ "rebeccapurple", "#663399" },
			{ "red", "#ff0000" },
			{ "rosybrown", "#bc8f8f" },
			{ "royalblue", "#4169e1" },
			{ "saddlebrown", "#8b4513" },
			{ "salmon", "#fa8072" },
			{ "sandybrown", "#f4a460" },
			{ "seagreen", "#2e8b57" },
			{ "seashell", "#fff5ee" },
			{ "sienna", "#a0522d" },
			{ "silver", "#c0c0c0" },
			{ "skyblue", "#87ceeb" },
			{ "slateblue", "#6a5acd" },
			{ "slategray", "#708090" },
			{ "slategrey", "#708090" },
			{ "snow", "#fffafa" },
			{ "springgreen", "#00ff7f" },
			{ "steelblue", "#4682b4" },
			{ "tan", "#d2b48c" },
			{ "teal", "#008080" },
			{ "thistle", "#d8bfd8" },
			{ "tomato", "#ff6347" },
			{ "turquoise", "#40e0d0" },
			{ "violet", "#ee82ee" },
			{ "wheat", "#f5deb3" },
			{ "white", "#ffffff" },
			{ "whitesmoke", "#f5f5f5" },
			{ "yellow", "#ffff00" },
			{ "yellowgreen", "#9acd32" }
		};
	}
}