// ==UserScript==
// @name Sigmally Mod
// @version 4.2
// @description Sigmally Mod (Client) for Sigmally.com | by cursd#0126
// @author Cursed
// @match *://sigmally.com/*
// @icon https://i.ibb.co/M7CsXZW/SigMod4.png
// @run-at document-end
// @license MIT
// @namespace https://greasyfork.org/users/981958
// @downloadURL none
// ==/UserScript==
(function() {
'use strict';
if(localStorage.getItem("SigmodSettings")) localStorage.removeItem("modSettings");
let bl = [];
let modSettings = localStorage.getItem("SigmodSettings");
if (!modSettings) {
modSettings = {
keyBindingsRapidFeed: "w",
keyBindingsdoubleSplit: "d",
keyBindingsTripleSplit: "f",
keyBindingsQuadSplit: "g",
keyBindingsFreezePlayer: "s",
keyBindingsToggleMenu: "v",
keyBindingsSwitchChat: "t",
mapColor: null,
nameColor: null,
borderColor: null,
mapImageURL: "",
Theme: "Dark",
savedNames: [],
tag: 0,
showClientChat: false,
chatBGcolor: "#2a3052",
chatTextColor: "#ffffff",
};
localStorage.setItem("SigmodSettings", JSON.stringify(modSettings));
} else {
modSettings = JSON.parse(modSettings);
}
function hexToRGBA (hex, alpha) {
const r = parseInt(hex.slice(1, 3), 16);
const g = parseInt(hex.slice(3, 5), 16);
const b = parseInt(hex.slice(5, 7), 16);
return `rgba(${r}, ${g}, ${b}, ${alpha})`;
}
class Client {
constructor() {
this.ws = new WebSocket("wss://sigmallysocket.marco077x.repl.co");
this.id = "";
this.playerId = Math.floor(Math.random() * 1e15);
this.gameMode = "";
this.chatData = [];
this.Username = "User";
this.currentTag = 0;
this.settingsShown = false;
this.chatIsDown = false;
this.unreadedMessages = 0;
this.notification = document.getElementById("notification");
this.init();
}
get style() {
return `
#client-chat {
position: fixed;
bottom: 10px;
left: 10px;
z-index: 2147483647;
overflow: hidden;
width: 435px;
height: 250px;
border-radius: 2px;
border-top-left-radius: 10px;
border-top-right-radius: 10px;
display: flex;
flex-direction: column;
justify-content: flex-end;
transform-origin: bottom;
transition: all .3s ease;
}
#client-messages {
display: flex;
flex-direction: column;
max-height: 200px;
overflow-y: auto;
direction: rtl;
}
.message {
direction: ltr;
margin: 2px 0 0 5px;
}
#client-messages::-webkit-scrollbar {
width: 10px;
}
#client-messages::-webkit-scrollbar-track {
background: #222;
border-radius: 5px;
}
#client-messages::-webkit-scrollbar-thumb {
background-color: #333;
border-radius: 5px;
}
#client-messages::-webkit-scrollbar-thumb:hover {
background: #444;
}
#chatInputContainer {
display: flex;
align-items: center;
padding: 5px;
background: rgba(68, 68, 68, 0.5);
}
#chatSendInput {
flex-grow: 1;
border: none;
background: transparent;
color: #fff;
padding: 5px;
outline: none;
}
#sendButton {
background: #e37955;
border: none;
border-radius: 5px;
padding: 5px 10px;
color: #fff;
transition: all 0.3s;
cursor: pointer;
}
#sendButton:hover {
background: #cc603b;
}
.chatOptions {
position: fixed;
bottom: 10px;
left: 450px;
z-index: 2147483647;
}
.chatButton {
background: #e37955;
border: 0;
border-radius: 5px;
padding: 5px 10px;
color: #fff;
transition: all 0.3s;
}
.chatButton:hover {
background: #cc603b;
}
.chatButton:active {
scale: 0.95;
}
.chatText {
color: #ffffff;
font-weight: 500;
-webkit-text-stroke: 0.5px #000;
text-stroke: 0.5px #000;
}
#tag {
width: 50px;
margin-left: 5px
}
.ClientChatTitle {
position: absolute;
top: 5px;
right: 5px;
pointer-events: none;
-webkit-text-stroke: 0.5px #000;
text-stroke: 0.5px #000;
color: #7400FF;
font-size: 16px;
font-weight: 500;
}
#sendButton {
display: flex;
align-items: center;
gap: 5px;
}
#notification {
position: absolute;
top: -10px;
right: -10px;
background-color: #3EDF6F;
color: #ffffff;
font-size: 12px;
font-weight: bold;
padding: 2px 7px;
border-radius: 50px;
transform: rotate(15deg);
font-weight: 500;
}
.chatSettings {
position: absolute;
top: 30px;
right: 36px;
border: none;
background-color: transparent;
transition: all .3s ease;
}
.chatSettings:hover {
transform: scale(.9)
}
.chatDown {
position: absolute;
top: 30px;
right: 5px;
width: 30px;
}
.chatSettingsDiv {
z-index: 99996;
position: absolute;
bottom: 45px;
left: 450px;
height: 215px;
width: 150px;
border-radius: 10px;
display: flex;
flex-direction: column;
align-items: center;
padding: 10px;
transition: all .3s ease;
}
/* Mod Style */
:root {
--default-mod-color: #2E2D80;
}
input, select, button{
outline: none;
}
.flex {
display: flex;
}
.centerX {
display: flex;
justify-content: center;
}
.centerY {
display: flex;
align-items: center;
}
.centerXY {
display: flex;
align-items: center;
justify-content: center
}
.f-column {
display: flex;
flex-direction: column;
}
#sig-mod-settings {
border-radius: 4px;
border: 2px solid #2E2D80;
width: 440px;
box-shadow: inset 0 0 10px #424190, 0 0 10px #424190;
height: 355px;
}
.tabs_navigation {
display: flex;
justify-content: space-around;
}
.keybinding {
max-width: 20px;
text-align: center;
margin-right: 5px;
outline: none;
color: #fff;
background-color: #111;
border: 0px solid #fff;
font-weight: 500;
border-bottom: 2px solid var(--default-mod-color);
position: relative;
border-top-right-radius: 4px;
border-top-left-radius: 4px;
transition: all .3s ease;
}
.keybinding:hover {
background-color: #333;
}
#sig-mod-settings.hidden {
display: none;
}
#text-block,#left_ad_block,#ad_bottom,.ad-block,.ad-block-left,.ad-block-right {
display: none;
}
.SettingsTitle{
font-size: 32px;
color: #EEE;
margin-left: 10px;
}
.CloseBtn{
outline: none;
background-color: transparent;
padding: 10px;
font-size: 16px;
transition: all .3s;
color: #fff;
border-radius: 15px;
border: 2px solid #4C2B8D;
width: 48px;
}
.CloseBtn:hover{
border: 2px solid #5600FF;
}
.text {
user-select: none;
font-weight: 500;
text-align: left;
}
.titleImg{
width: 50px;
height: 50px;
border-radius: 20px;
object-fit: cover;
}
.modContainer {
display: flex;
justify-content: space-between;
}
.modButton{
background-color: #333;
border-radius: 5px;
color: #fff;
transition: all .3s;
outline: none;
padding: 5px;
font-size: 13px;
border: none;
}
.modButton:hover {
background-color: #222
}
.tabbtn {
background-color: #111;
border-bottom: 2px solid var(--default-mod-color);
border-radius: 0;
position: relative;
border-top-right-radius: 2px;
border-top-left-radius: 2px;
box-shadow: 0 4px 10px -4px var(--default-mod-color);
}
.tabbtn::before {
content: "";
position: absolute;
left: 0;
bottom: 0;
width: 100%;
height: 0;
background: linear-gradient(to top, var(--default-mod-color), transparent);
transition: height 0.3s ease;
}
.tabbtn:hover::before {
height: 30%;
}
.modInput {
background-color: #111;
border: none;
border-bottom: 2px solid var(--default-mod-color);
border-radius: 0;
position: relative;
border-top-right-radius: 4px;
border-top-left-radius: 4px;
font-family: arial;
font-weight: 500;
padding: 4px;
box-shadow: 0 4px 10px -4px var(--default-mod-color);
color: #fff;
}
.SettingsButton{
border: none;
outline: none;
margin-right: 10px;
transition: all .3s ease;
}
.SettingsButton:hover {
scale: 1.1;
}
.colorInput{
background-color: transparent;
width: 33px;
height: 35px;
border-radius: 50%;
border: none;
}
.colorInput::-webkit-color-swatch {
border-radius: 50%;
border: 1px solid #000;
}
#dclinkdiv {
display: flex;
flex-direction: row;
}
.dclinks {
width: calc(50% - 5px);
height: 36px;
display: flex;
justify-content: center;
align-items: center;
background-color: rgba(88, 101, 242, 1);
border-radius: 6px;
margin: 0 auto;
color: #fff;
}
#settings {
display: flex;
flex-direction: column;
}
#cm_close__settings {
width: 50px;
transition: all .3s ease;
}
#cm_close__settings svg:hover {
scale: 1.1;
}
#cm_close__settings svg {
transition: all .3s ease;
}
.modTitleText {
text-align: center;
font-size: 16px;
}
#settings > .checkbox-grid {
width: 232px;
}
.ModSettings {
display: flex;
justify-content: center;
}
.settingsTitle {
margin-bottom: 6px;
text-decoration: underline;
font-size: 16px font-weight: 600
}
.tab {
display: none;
}
.modItem {
display: flex;
justify-content: center;
align-items: center;
flex-direction: column;
}
.tab-content {
margin: 10px;
}
.w-100 {
width: 100%
}
.btnRS {
margin: 0 5px;
width: 50%
}
#savedNames {
background-color: #222;
padding: 5px;
border-top-left-radius: 5px;
overflow-y: scroll;
width: 200px;
height: 170px;
display: flex;
border-bottom: 2px solid var(--default-mod-color);
box-shadow: 0 4px 20px -4px var(--default-mod-color);
}
#savedNames::-webkit-scrollbar, .themes::-webkit-scrollbar, .modKeybindings::-webkit-scrollbar {
width: 10px;
}
#savedNames::-webkit-scrollbar-track, .themes::-webkit-scrollbar-track, .modKeybindings::-webkit-scrollbar-track {
background: #222;
border-radius: 5px;
}
#savedNames::-webkit-scrollbar-thumb, .themes::-webkit-scrollbar-thumb, .modKeybindings::-webkit-scrollbar-thumb {
background-color: #555;
border-radius: 5px;
}
#savedNames::-webkit-scrollbar-thumb:hover, .themes::-webkit-scrollbar-thumb:hover, .modKeybindings::-webkit-scrollbar-thumb:hover {
background: #666;
}
.themes {
display: flex;
flex-direction: row;
width: 100%;
height: 220px;
background: #000;
border-radius: 5px;
overflow-y: scroll;
gap: 10px;
padding: 5px;
flex-wrap: wrap;
justify-content: center;
}
.themeContent {
width: 50px;
height: 50px;
border: 2px solid #222;
border-radius: 50%;
background-position: center;
}
.theme {
height: 75px;
display: flex;
align-items: center;
justify-content: center;
flex-direction: column;
cursor: pointer;
}
.delName {
font-weight: 500;
background: #e17e7e;
height: 20px;
border: none;
border-radius: 5px;
font-size: 10px;
margin-left: 5px;
color: #fff;
display: flex;
justify-content: center;
align-items: center;
width: 20px;
}
.NameDiv {
display: flex;
background: #151515;
border-radius: 5px;
margin: 5px;
padding: 3px 8px;
height: 34px;
align-items: center;
justify-content: space-between;
cursor: pointer;
box-shadow: 0 4px 10px -4px var(--default-mod-color);
}
.NameLabel {
cursor: pointer;
font-weight: 500;
text-align: center;
color: #fff;
}
.resetButton {
width: 25px;
height: 25px;
background-image: url("https://raw.githubusercontent.com/Sigmally/SigMod/main/images/reset.svg");
background-color: transparent;
border: none;
}
.modAlert {
position: absolute;
top: 50px;
left: 50%;
transform: translate(-50%, -50%);
z-index: 99998;
background: #57C876;
padding: 10px;
border-radius: 10px;
text-align: center;
transition: all .3s ease-out;
}
.modAlert > .text {
color: #fff;
}
.donate {
position: fixed;
top: 80px;
left: 50%;
transform: translate(-50%, -50%);
z-index: 99995;
background: #3F3F3F;
border-radius: 10px;
display: flex;
flex-direction: column;
padding: 10px;
color: #fff;
}
.themeEditor {
z-index: 100000;
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
background: #222;
color: #fff;
padding: 10px;
border-radius: 5px;
}
.modKeybindings {
display: flex;
flex-direction: column;
overflow-y: scroll;
max-height: 170px;
}
.modKeybindings > label {
margin-right: 5px;
}
`;
}
sendLog(msg) {
const logMessage = {
type: "log",
content: msg,
name: this.Username,
};
this.ws.send(JSON.stringify(logMessage));
}
handleWSMessage(message) {
const parsedMessage = JSON.parse(message);
if (parsedMessage.type === "log-back") {
console.log(parsedMessage.content);
} else if (parsedMessage.type === "chat-message") {
const content = parsedMessage.content;
const msgUser = content.user;
const msgContent = content.message;
const tag = content.tag;
const id = content.id;
if (tag === this.currentTag) {
this.chatData.push(msgUser, msgContent);
this.updateChat(id, msgUser, msgContent);
}
} else if(parsedMessage.type === "ban-list") {
bl = parsedMessage.content;
}
}
createTagElement() {
const nick = document.querySelector("#nick");
const tagElement = document.createElement("input");
tagElement.classList.add("form-control");
tagElement.placeholder = "tag";
tagElement.setAttribute("id", "tag");
tagElement.setAttribute("maxLength", 3);
tagElement.value = "0";
const pnick = nick.parentElement;
pnick.style.display = "flex";
document.getElementById("play-btn").addEventListener("click", () => {
this.currentTag = tagElement.value;
document.getElementById("client-chat-title").innerText = `SigMod Client Chat | Tag: ${this.currentTag}`;
modSettings.tag = this.currentTag;
localStorage.setItem("SigmodSettings", JSON.stringify(modSettings));
})
nick.insertAdjacentElement("afterend", tagElement);
}
updateTag(message) {
const content = message.content
const tag = content.tag;
const members = content.members;
console.log(tag, members)
}
sendData(type, content) {
const msg = {
type: type,
content: content
}
this.ws.send(JSON.stringify(msg))
}
createClientChat() {
const chat = document.createElement("div");
chat.id = "client-chat";
chat.classList.add("client_chat_div")
chat.innerHTML = `
SigMod Client Chat | Tag: ${this.currentTag}
`;
const chatOptions = document.createElement("div");
chatOptions.innerHTML = `
`;
chatOptions.classList.add("chatOptions");
document.body.append(chatOptions);
document.body.append(chat);
const send = document.getElementById("sendButton");
send.addEventListener("click", () => {
this.sendMsg();
})
const chatSendInput = document.getElementById("chatSendInput");
chatSendInput.addEventListener("keydown", (e) => {
e.stopPropagation();
if(e.code == "Enter") {
this.sendMsg();
setTimeout(() => {
chatSendInput.blur();
}, 10)
}
})
chatSendInput.addEventListener("click", () => {
const noti = document.getElementById("notifications");
if(document.getElementById("notification")) {
document.getElementById("notification").remove();
this.unreadedMessages = 0;
}
})
document.addEventListener("keydown", (e) => {
if(e.code == "Enter") {
chatSendInput.focus();
if(document.getElementById("notification")) {
document.getElementById("notification").remove();
this.unreadedMessages = 0;
}
}
})
}
switchChat() {
const mainBtn = document.getElementById("mainBtn");
const partyBtn = document.getElementById("partyBtn");
const chatBlock = document.getElementById("chat_block");
const clientChat = document.getElementById("client-chat");
const showChat = document.getElementById("showChat");
mainBtn.addEventListener("click", () => {
chatBlock.style.display = "block";
clientChat.style.display = "none";
if(!showChat.checked) showChat.click()
modSettings.showClientChat = false;
localStorage.setItem("SigmodSettings", JSON.stringify(modSettings))
})
partyBtn.addEventListener("click", () => {
chatBlock.style.display = "none";
clientChat.style.display = "flex";
if(document.getElementById("notification")) {
document.getElementById("notification").remove();
this.unreadedMessages = 0;
}
if(showChat.checked) showChat.click()
modSettings.showClientChat = true;
localStorage.setItem("SigmodSettings", JSON.stringify(modSettings))
})
}
updateChat(id, user, message) {
const chatContainer = document.getElementById("client-messages");
const formattedMessage = `${user}: ${message}`;
chatContainer.innerHTML += formattedMessage;
const messageCount = chatContainer.children.length;
const messageLimit = 50;
if (messageCount > messageLimit) {
const messagesToRemove = messageCount - messageLimit;
for (let i = 0; i < messagesToRemove; i++) {
chatContainer.removeChild(chatContainer.firstChild);
this.chatData.splice(0, 2);
}
}
chatContainer.scrollTop = chatContainer.scrollHeight;
if(id == this.playerId) return
this.unreadedMessages++;
if (this.unreadedMessages === 0) return;
const partyBtn = document.getElementById("partyBtn");
const notification = this.notification;
if (notification) {
notification.textContent = this.unreadedMessages;
} else {
const notificationElement = document.createElement("span");
notificationElement.id = "notification";
notificationElement.textContent = this.unreadedMessages;
partyBtn.appendChild(notificationElement);
}
}
sendMsg() {
const username = document.getElementById("nick").value;
let msg = document.querySelector("#chatSendInput").value;
let tag = this.currentTag;
let id = this.playerId;
const msgContent = { name: username, message: msg, length: msg.length, tag: tag, playerId: id };
if(msg == "") return
const settings = document.querySelector(".chatSettings");
const chatDown = document.querySelector(".chatDown");
const sendButton = document.getElementById("sendButton");
const client_messages = document.getElementById("client-messages");
if(!this.chatIsDown) {
document.getElementById("client-chat").style.height = "250px";
document.getElementById("client-chat-title").style.display = "block";
chatDown.style.rotate = "0deg";
chatDown.style.top = "30px";
settings.style.display = "block";
sendButton.style.display = "block";
client_messages.style.display = "flex";
this.chatIsDown = false;
}
this.sendData("chat-message", msgContent);
document.getElementById("chatSendInput").value = "";
}
chatOptions() {
let chatIsDown = this.chatIsDown;
const sendButton = document.getElementById("sendButton");
const settings = document.createElement("button");
const client_messages = document.getElementById("client-messages");
settings.innerHTML = "
"
settings.classList.add("chatSettings")
document.getElementById("client-chat").append(settings)
settings.addEventListener("click", this.chatSettings)
const chatDown = document.createElement("button");
chatDown.innerHTML = "↓";
chatDown.addEventListener("click", () => {
if(!chatIsDown) {
document.getElementById("client-chat").style.height = "40px";
document.getElementById("client-chat-title").style.display = "none";
chatDown.style.rotate = "180deg";
chatDown.style.top = "6px";
settings.style.display = "none";
sendButton.style.display = "none";
client_messages.style.display = "none";
chatIsDown = true;
} else {
document.getElementById("client-chat").style.height = "250px";
document.getElementById("client-chat-title").style.display = "block";
chatDown.style.rotate = "0deg";
chatDown.style.top = "30px";
settings.style.display = "block";
sendButton.style.display = "block";
client_messages.style.display = "flex";
chatIsDown = false;
}
})
chatDown.classList.add("chatDown", "modButton")
document.getElementById("client-chat").append(chatDown)
}
chatSettings() {
let settingsShown = this.settingsShown;
if(!settingsShown) {
const settings = document.createElement("div");
settings.classList.add("chatSettingsDiv", "client_chat_div");
settings.id = "ClientChatSettings";
settings.innerHTML = `
More coming soon
`;
settings.style.backgroundColor = hexToRGBA(modSettings.chatBGcolor, 0.4);
document.body.append(settings)
setTimeout(() => {
const changeBg = document.getElementById("changeChatBg")
changeBg.addEventListener("input", () => {
const clientChatDivs = document.getElementsByClassName("client_chat_div");
for (let i = 0; i < clientChatDivs.length; i++) {
const rgbaColor = hexToRGBA(changeBg.value, 0.4);
clientChatDivs[i].style.backgroundColor = rgbaColor;
}
modSettings.chatBGcolor = changeBg.value;
localStorage.setItem("SigmodSettings", JSON.stringify(modSettings));
});
const changeChatColor = document.getElementById("changeChatColor")
changeChatColor.addEventListener("input", () => {
const chatText = document.getElementsByClassName("chatText");
for(let i=0; i < chatText.length; i++) {
chatText[i].style.color = changeChatColor.value;
}
modSettings.chatTextColor = changeChatColor.value;
localStorage.setItem("SigmodSettings", JSON.stringify(modSettings));
});
});
this.settingsShown = true;
} else {
document.querySelector(".chatSettingsDiv").remove();
this.settingsShown = false;
}
}
init() {
const chatBlock = document.getElementById("chat_block");
const showChat = document.getElementById("showChat");
//style
const styleTag = document.createElement("style")
styleTag.innerHTML = this.style;
document.head.append(styleTag)
setTimeout(() => {
this.Username = uData.fullName || document.getElementById("nick").value || "User";
this.id = uData.id || "";
}, 1500)
this.ws.onopen = () => {
setTimeout(() => {
this.sendLog(`${this.Username} connected to Client.`);
this.sendData("auth", this.id)
}, 1600)
};
this.ws.onmessage = (event) => {
const message = event.data;
this.handleWSMessage(message);
};
this.ws.onclose = () => {
if (confirm("There was an update in the Sigmally Mod Client, you can no longer send messages in the Client Chat. Reload the page?")) {
location.reload();
}
}
setTimeout(() => {
const changeBg = document.getElementById("changeChatBg");
const changeChatColor = document.getElementById("changeChatColor");
this.switchChat();
this.chatOptions();
const clientChat = document.getElementById("client-chat");
if (localStorage.getItem("SigmodSettings")) {
const modSettings = JSON.parse(localStorage.getItem("SigmodSettings"));
if (modSettings.tag) {
console.log(modSettings.tag);
this.currentTag = modSettings.tag;
document.getElementById("tag").value = this.currentTag;
document.getElementById("client-chat-title").innerText = `SigMod Client Chat | Tag: ${this.currentTag}`;
}
if(!modSettings.showClientChat) {
chatBlock.style.display = "block";
clientChat.style.display = "none";
if(showChat.checked) showChat.click();
} else {
chatBlock.style.display = "none";
clientChat.style.display = "flex";
if(!showChat.checked) showChat.click();
}
if(changeBg || changeChatColor) {
changeBg.value = modSettings.chatBGcolor;
changeChatColor.value = modSettings.chatTextColor;
}
const clientChatDivs = document.getElementsByClassName("client_chat_div");
for (let i = 0; i < clientChatDivs.length; i++) {
const rgbaColor = hexToRGBA(modSettings.chatBGcolor, 0.4);
clientChatDivs[i].style.backgroundColor = rgbaColor;
}
const chatText = document.getElementsByClassName("chatText");
for(let i=0; i < chatText.length; i++) {
chatText[i].style.color = modSettings.chatTextColor;
}
}
});
this.createTagElement();
this.createClientChat();
setTimeout(() => {
for(let i = 0; i < bl.length; i++) {
if(document.getElementById("nick").value.includes(bl[i])){
alert("You are banned from Sigmally Mod.");
location.href = "https://google.com";
}
}
}, 3000)
}
}
new Client();
function keypress(key, keycode) {
const keyDownEvent = new KeyboardEvent("keydown", { key: key, code: keycode });
const keyUpEvent = new KeyboardEvent("keyup", { key: key, code: keycode });
window.dispatchEvent(keyDownEvent);
window.dispatchEvent(keyUpEvent);
}
function mod() {
this.welcomeUser = document.createElement("span");
this.splitKey = {
keyCode: 32,
code: "Space",
cancelable: true,
composed: true,
isTrusted: true,
which: 32,
}
this.createMenu();
}
mod.prototype = {
respawnTime: Date.now(),
respawnCooldown: 1000,
move(cx, cy) {
const mouseMoveEvent = new MouseEvent("mousemove", { clientX: cx, clientY: cy });
const canvas = document.querySelector("canvas");
canvas.dispatchEvent(mouseMoveEvent);
},
center(sx, sy) {
const mouseMoveEvent = new MouseEvent("mousemove", { clientX: sx, clientY: sy });
const canvas = document.getElementById("canvas");
canvas.dispatchEvent(mouseMoveEvent);
},
getColors() {
const mapColor = document.getElementById("mapColor");
const mapImage = document.getElementById("mapImage");
const originalFillRect = CanvasRenderingContext2D.prototype.fillRect;
function ChangeMapColor() {
CanvasRenderingContext2D.prototype.fillRect = function (x, y, width, height) {
if ((width + height) / 2 === (window.innerWidth + window.innerHeight) / 2) {
this.fillStyle = mapColor.value;
}
originalFillRect.apply(this, arguments);
};
modSettings.mapColor = mapColor.value;
localStorage.setItem("SigmodSettings", JSON.stringify(modSettings));
}
mapColor.addEventListener("input", ChangeMapColor);
function ChangeMapImage() {
const canvas = document.getElementById("canvas");
const ctx = canvas.getContext("2d");
const img = new Image();
let pattern;
img.onload = function () {
const tempCanvas = document.createElement("canvas");
const tempCtx = tempCanvas.getContext("2d");
tempCanvas.width = img.width;
tempCanvas.height = img.height;
tempCtx.drawImage(img, 0, 0);
pattern = ctx.createPattern(tempCanvas, "repeat");
fillCanvas();
};
function fillCanvas() {
const fillRect = CanvasRenderingContext2D.prototype.fillRect;
CanvasRenderingContext2D.prototype.fillRect = function (x, y, width, height) {
this.fillStyle = pattern;
fillRect.apply(this, arguments);
};
ctx.fillRect(0, 0, canvas.width, canvas.height);
}
img.src = mapImage.value;
modSettings.mapImageURL = mapImage.value;
localStorage.setItem("SigmodSettings", JSON.stringify(modSettings));
}
document.getElementById("setMapImage").addEventListener("click", () => {
if(mapImage.value == "") return
const canvas = document.getElementById("canvas");
const ctx = canvas.getContext("2d");
const img = new Image();
let pattern;
img.onload = function() {
const tempCanvas = document.createElement("canvas");
const tempCtx = tempCanvas.getContext("2d");
tempCanvas.width = img.width;
tempCanvas.height = img.height;
tempCtx.drawImage(img, 0, 0);
pattern = ctx.createPattern(tempCanvas, "repeat");
fillCanvas();
};
function fillCanvas() {
const fillRect = CanvasRenderingContext2D.prototype.fillRect;
CanvasRenderingContext2D.prototype.fillRect = function(x, y, width, height) {
this.fillStyle = pattern;
fillRect.apply(this, arguments);
};
ctx.fillRect(0, 0, canvas.width, canvas.height);
}
img.src = mapImage.value;
modSettings.mapImageURL = mapImage.value;
localStorage.setItem("SigmodSettings", JSON.stringify(modSettings));
});
const mapColorReset = document.getElementById("mapColorReset");
mapColorReset.addEventListener("click", () => {
modSettings.mapColor = null;
localStorage.setItem("SigmodSettings", JSON.stringify(modSettings));
const mapColor = document.getElementById("mapColor");
mapColor.value = "";
});
const removeButton = document.getElementById("removeMapImage");
removeButton.addEventListener("click", () => {
if (mapImage.value == "" || modSettings.mapImageURL === "") return;
if (confirm("You need to reload the page to remove the background image. Reload?")) {
modSettings.mapImageURL = "";
localStorage.setItem("SigmodSettings", JSON.stringify(modSettings));
location.reload();
}
});
if (localStorage.getItem("SigmodSettings")) {
function ChangeMapColor() {
CanvasRenderingContext2D.prototype.fillRect = function (x, y, width, height) {
if ((width + height) / 2 === (window.innerWidth + window.innerHeight) / 2) {
this.fillStyle = modSettings.mapColor;
}
originalFillRect.apply(this, arguments);
};
}
ChangeMapColor();
function ChangeMapImage() {
const canvas = document.getElementById("canvas");
const ctx = canvas.getContext("2d");
const img = new Image();
let pattern;
img.onload = function () {
const tempCanvas = document.createElement("canvas");
const tempCtx = tempCanvas.getContext("2d");
tempCanvas.width = img.width;
tempCanvas.height = img.height;
tempCtx.drawImage(img, 0, 0);
pattern = ctx.createPattern(tempCanvas, "repeat");
fillCanvas();
};
function fillCanvas() {
const fillRect = CanvasRenderingContext2D.prototype.fillRect;
CanvasRenderingContext2D.prototype.fillRect = function (x, y, width, height) {
this.fillStyle = pattern;
fillRect.apply(this, arguments);
};
ctx.fillRect(0, 0, canvas.width, canvas.height);
}
img.src = modSettings.mapImageURL;
}
mapImage.value = modSettings.mapImageURL;
ChangeMapImage();
}
},
setColors() {
// - NAME - //
const nameColorValue = document.getElementById("nameColor");
const fillText = CanvasRenderingContext2D.prototype.fillText;
nameColorValue.addEventListener("input", () => {
CanvasRenderingContext2D.prototype.fillText = function(text, x, y) {
if (text === document.getElementById("nick").value && this.playerId == this.playerId) {
const width = this.measureText(text).width;
this.fillStyle = nameColorValue.value;
}
return fillText.apply(this, arguments);
};
modSettings.nameColor = nameColorValue.value
localStorage.setItem("SigmodSettings", JSON.stringify(modSettings))
})
if (localStorage.getItem("SigmodSettings")) {
const nameColor = document.getElementById("nameColor");
CanvasRenderingContext2D.prototype.fillText = function(text, x, y) {
if (text === document.getElementById("nick").value) {
const width = this.measureText(text).width;
this.fillStyle = modSettings.nameColor;
}
return fillText.apply(this, arguments);
};
nameColor.value = modSettings.nameColor;
}
const nameColorReset = document.getElementById("nameColorReset");
nameColorReset.addEventListener("click", () => {
CanvasRenderingContext2D.prototype.fillText = function(text, x, y) {
if (text === document.getElementById("nick").value) {
const width = this.measureText(text).width;
const fontSize = 8;
this.fillStyle = "#ffffff";
}
return fillText.apply(this, arguments);
};
nameColorValue.value = "#ffffff"
modSettings.nameColor = null;
localStorage.setItem("SigmodSettings", JSON.stringify(modSettings))
});
if(modSettings.nameColor == null) nameColorValue.value = "#ffffff";
// - BORDER - //
const borderColorinput = document.getElementById("borderColor");
const borderColorReset = document.getElementById("borderColorReset");
const moveTo = CanvasRenderingContext2D.prototype.moveTo;
borderColorinput.addEventListener("input", () => {
CanvasRenderingContext2D.prototype.moveTo = function(x, y) {
this.strokeStyle = borderColorinput.value;
return moveTo.apply(this, arguments)
}
modSettings.borderColor = borderColorinput.value;
localStorage.setItem("SigmodSettings", JSON.stringify(modSettings))
})
borderColorReset.addEventListener("click", () => {
CanvasRenderingContext2D.prototype.moveTo = function(x, y) {
this.strokeStyle = ""
return moveTo.apply(this, arguments)
}
modSettings.borderColor = "";
localStorage.setItem("SigmodSettings", JSON.stringify(modSettings));
})
if(modSettings.borderColor !== null) {
CanvasRenderingContext2D.prototype.moveTo = function(x, y) {
this.strokeStyle = modSettings.borderColor;
return moveTo.apply(this, arguments)
}
}
},
menu() {
let Tab1;
let Tab2;
let Tab3;
let Tab4;
let Tab5;
const welcomeuser = this.welcomeUser;
const ModSettings = document.createElement("div");
const KeyBindings = document.createElement("div");
function openTab(tab) {
let tabSelected = document.getElementById(tab);
let allTabs = document.getElementsByClassName("tab");
for (let i = 0; i < allTabs.length; i++) {
allTabs[i].style.display = "none";
}
tabSelected.style.display = "flex";
}
const settings = document.querySelector("#cm_modal__settings > .ctrl-modal__overlay > .ctrl-modal__modal");
const DefaultSettings = document.querySelector("#settings > .checkbox-grid");
const settingsTitle = settings.querySelector(".ctrl-modal__header > .ctrl-modal__title");
settingsTitle.innerHTML = '
SigMod Settings';
settingsTitle.style.textAlign = "left";
settings.setAttribute("id", "sig-mod-settings");
const settingsHeader = settings.querySelector(".ctrl-modal__header");
const menuTabs = document.createElement("div");
menuTabs.classList.add("tabs_navigation");
menuTabs.innerHTML = `
`;
settingsHeader.insertAdjacentElement("afterend", menuTabs);
const gameSettings = document.querySelector("#settings");
const defaultSettingsTitle = document.createElement("span");
defaultSettingsTitle.textContent = "Basic Settings";
defaultSettingsTitle.classList.add("text", "settingsTitle");
gameSettings.insertAdjacentElement("afterbegin", defaultSettingsTitle);
welcomeuser.textContent = `Welcome Guest, to SigMod!`;
welcomeuser.classList.add("text");
welcomeuser.style = "margin: 10px 0; text-align: center; font-size: 16px;";
const bsettings = document.querySelector("#sig-mod-settings > .ctrl-modal__content > .menu__item");
bsettings.classList.add("tab")
bsettings.style = "display: flex; flex-direction: column; margin: 0";
bsettings.insertAdjacentElement("afterbegin", welcomeuser);
Tab1 = bsettings;
Tab1.setAttribute("id", "Tab1")
Tab2 = document.createElement("div");
Tab2.classList.add("centerX");
Tab2.innerHTML = `
`;
Tab2.classList.add("tab", "hidden");
Tab2.setAttribute("id", "Tab2");
Tab3 = document.createElement("div");
Tab3.innerHTML = `
`;
Tab3.classList.add("tab", "hidden", "centerX");
Tab3.setAttribute("id", "Tab3");
Tab4 = document.createElement("div");
Tab4.innerHTML = `
`;
Tab4.classList.add("tab", "hidden", "centerX");
Tab4.setAttribute("id", "Tab4");
Tab5 = document.createElement("div");
Tab5.innerHTML = `SigMod V4 | Cursed YT | Official Sigmally YT
`;
Tab5.classList.add("tab", "hidden");
Tab5.setAttribute("id", "Tab5");
document.getElementById("modHome").addEventListener("click", () => {
openTab("Tab1");
});
document.getElementById("GameOptions").addEventListener("click", () => {
openTab("Tab2");
});
document.getElementById("NameOptions").addEventListener("click", () => {
openTab("Tab3");
});
document.getElementById("modThemes").addEventListener("click", () => {
openTab("Tab4");
});
document.getElementById("modInfo").addEventListener("click", () => {
openTab("Tab5");
});
const tabContent = document.querySelector("#sig-mod-settings > .ctrl-modal__content");
tabContent.append(Tab2)
tabContent.append(Tab3)
tabContent.append(Tab4)
tabContent.append(Tab5)
KeyBindings.classList.add("modKeybindings")
KeyBindings.innerHTML = `
KeyBindings
`;
bsettings.append(ModSettings);
ModSettings.append(gameSettings)
ModSettings.append(KeyBindings);
ModSettings.classList.add("ModSettings")
document.querySelector("#cm_close__settings svg").setAttribute("width", "22")
document.querySelector("#cm_close__settings svg").setAttribute("height", "24")
},
Themes() {
const elements = [
"#menu",
".top-users__inner",
"#left-menu",
".menu-links",
".menu--stats-mode",
"#js-skin-select-icon-text",
"#nick",
"#tag",
"#gamemode",
"#option_0",
"#option_1",
"#option_2",
"#signInBtn",
"#cm_modal__settings > .ctrl-modal__overlay > .ctrl-modal__modal"
];
const b_inner = document.querySelector(".body__inner");
let bodyColorElements = b_inner.querySelectorAll(
".body__inner > :not(.body__inner), #s-skin-select-icon-text"
);
const toggleColor = (element, background, text) => {
let image = `url("${background}")`;
if (background.includes("http")) {
element.style.background = image;
element.style.backgroundPosition = "center";
element.style.backgroundSize = "cover";
} else {
element.style.background = background;
}
element.style.color = text;
};
const openSVG = document.querySelector("#clans_and_settings > Button > svg");
const openSVGPath = document.querySelector("#clans_and_settings > Button > svg > path");
const newPath = openSVG.setAttribute("fill", "#fff")
const closeSVGPath = document.querySelector("#cm_close__settings > svg > path");
openSVG.setAttribute("width", "36")
openSVG.setAttribute("height", "36")
const toggleTheme = (theme) => {
if (theme.text === "#FFFFFF") {
openSVGPath.setAttribute("fill", "#fff")
closeSVGPath.setAttribute("stroke", "#fff")
} else {
closeSVGPath.setAttribute("stroke", "#222");
openSVG.setAttribute("fill", "#222");
}
const backgroundColor = theme.background;
const textColor = theme.text;
elements.forEach((element) => {
const el = document.querySelector(element);
toggleColor(el, backgroundColor, textColor);
});
bodyColorElements.forEach((element) => {
element.style.color = textColor;
});
modSettings.Theme = theme.name;
localStorage.setItem("SigmodSettings", JSON.stringify(modSettings));
};
const themes = {
defaults: [
{
name: "Dark",
background: "#151515",
text: "#FFFFFF"
},
{
name: "White",
background: "#ffffff",
text: "#000000"
},
],
orderly: [
{
name: "THC",
background: "linear-gradient(160deg, #9BEC7A, #117500)",
text: "#000000"
},
{
name: "4 AM",
background: "linear-gradient(160deg, #8B0AE1, #111)",
text: "#FFFFFF"
},
{
name: "OTO",
background: "linear-gradient(160deg, #A20000, #050505)",
text: "#FFFFFF"
},
{
name: "Gaming",
background: "https://i.ibb.co/DwKkQfh/BG-1-lower-quality.jpg",
text: "#FFFFFF"
},
{
name: "Shapes",
background: "https://i.ibb.co/h8TmVyM/BG-2.png",
text: "#FFFFFF"
},
{
name: "Blue",
background: "https://i.ibb.co/9yQBfWj/BG-3.png",
text: "#FFFFFF"
},
{
name: "Blue - 2",
background: "https://i.ibb.co/7RJvNCX/BG-4.png",
text: "#FFFFFF"
},
{
name: "Purple",
background: "https://i.ibb.co/vxY15Tv/BG-5.png",
text: "#FFFFFF"
},
{
name: "Orange Blue",
background: "https://i.ibb.co/99nfFBN/BG-6.png",
text: "#FFFFFF"
},
{
name: "Gradient",
background: "https://i.ibb.co/hWMLwLS/BG-7.png",
text: "#FFFFFF"
},
{
name: "Sky",
background: "https://i.ibb.co/P4XqDFw/BG-9.png",
text: "#000000"
},
{
name: "Sunset",
background: "https://i.ibb.co/0BVbYHC/BG-10.png",
text: "#FFFFFF"
},
{
name: "Galaxy",
background: "https://i.ibb.co/MsssDKP/Galaxy.png",
text: "#FFFFFF"
},
{
name: "Planet",
background: "https://i.ibb.co/KLqWM32/Planet.png",
text: "#FFFFFF"
},
{
name: "colorful",
background: "https://i.ibb.co/VqtB3TX/colorful.png",
text: "#FFFFFF"
},
{
name: "Sunset - 2",
background: "https://i.ibb.co/TLp2nvv/Sunset.png",
text: "#FFFFFF"
},
{
name: "Epic",
background: "https://i.ibb.co/kcv4tvn/Epic.png",
text: "#FFFFFF"
},
{
name: "Galaxy - 2",
background: "https://i.ibb.co/smRs6V0/galaxy.png",
text: "#FFFFFF"
},
{
name: "Cloudy",
background: "https://i.ibb.co/MCW7Bcd/cloudy.png",
text: "#000000"
},
]
};
function createThemeCard(theme) {
const themeCard = document.createElement("div");
themeCard.classList.add("theme");
let themeBG;
if (theme.background.includes("http")) {
themeBG = `background: url(${theme.background})`;
} else {
themeBG = `background: ${theme.background}`;
}
themeCard.innerHTML = `
${theme.name}
`;
themeCard.addEventListener("click", () => {
toggleTheme(theme);
});
return themeCard;
}
const themesContainer = document.getElementById("themes");
themes.defaults.forEach((theme) => {
const themeCard = createThemeCard(theme);
themesContainer.append(themeCard);
});
const orderlyThemes = themes.orderly.sort((a, b) => a.name.localeCompare(b.name));
orderlyThemes.forEach((theme) => {
const themeCard = createThemeCard(theme);
themesContainer.append(themeCard);
});
const savedTheme = modSettings.Theme;
if (savedTheme) {
let selectedTheme;
selectedTheme = themes.defaults.find((theme) => theme.name === savedTheme);
if (!selectedTheme) {
selectedTheme = themes.orderly.find((theme) => theme.name === savedTheme);
}
if (selectedTheme) {
toggleTheme(selectedTheme);
}
}
},
smallMods() {
let user;
const welcomeuser = this.welcomeUser;
setTimeout(() => {
user = uData.givenName || "Guest";
welcomeuser.textContent = `Welcome ${user}, to SigMod!`
}, 1500)
const gameSettings = document.querySelector(".checkbox-grid");
gameSettings.innerHTML += `
`;
const gameTitle = document.getElementById("title");
gameTitle.innerHTML = 'SigmallyMod by Cursed';
const nickName = document.getElementById("nick");
nickName.maxLength = 50;
},
saveNames() {
let savedNames = modSettings.savedNames;
let savedNamesOutput = document.getElementById("savedNames");
let saveNameBtn = document.getElementById("saveName");
let saveNameInput = document.getElementById("saveNameValue");
const createNameDiv = (name) => {
let nameDiv = document.createElement("div");
nameDiv.classList.add("NameDiv");
let nameLabel = document.createElement("label");
nameLabel.classList.add("NameLabel");
nameLabel.innerText = name;
let delName = document.createElement("button");
delName.innerText = "X";
delName.classList.add("delName");
nameDiv.addEventListener("click", () => {
navigator.clipboard.writeText(nameLabel.innerText).then(() => {
const copiedAlert = document.createElement("div");
copiedAlert.innerHTML = `
Added Nickname to clipboard!
`;
copiedAlert.classList.add("modAlert");
setTimeout(() => {
copiedAlert.style.opacity = 0;
setTimeout(() => {
copiedAlert.remove();
}, 300)
}, 500)
document.querySelector(".body__inner").append(copiedAlert)
});
});
delName.addEventListener("click", () => {
if (confirm("Are you sure you want to delete the name '" + nameLabel.innerText + "'?")) {
console.log("deleted name: " + nameLabel.innerText);
nameDiv.remove();
savedNames = savedNames.filter((n) => n !== nameLabel.innerText);
modSettings.savedNames = savedNames;
localStorage.setItem("SigmodSettings", JSON.stringify(modSettings));
}
});
nameDiv.appendChild(nameLabel);
nameDiv.appendChild(delName);
return nameDiv;
};
saveNameBtn.addEventListener("click", () => {
if (saveNameInput.value == "") {
console.log("empty name");
} else {
setTimeout(() => {
saveNameInput.value = "";
}, 10);
if (savedNames.includes(saveNameInput.value)) {
console.log("You already have this name saved!");
return;
}
let nameDiv = createNameDiv(saveNameInput.value);
savedNamesOutput.appendChild(nameDiv);
savedNames.push(saveNameInput.value);
modSettings.savedNames = savedNames;
localStorage.setItem("SigmodSettings", JSON.stringify(modSettings));
}
});
if (savedNames.length > 0) {
savedNames.forEach((name) => {
let nameDiv = createNameDiv(name);
savedNamesOutput.appendChild(nameDiv);
});
}
},
Macros() {
const KEY_SPLIT = this.splitKey;
let ff = null;
let keydown = false;
let open = false;
document.addEventListener("keyup", (e) => {
if (e.key == modSettings.keyBindingsRapidFeed && keydown) {
clearInterval(ff);
keydown = false;
}
});
document.addEventListener("keydown", (e) => {
if (document.activeElement instanceof HTMLInputElement) return;
if (e.key == "Tab") {
e.preventDefault();
}
if (e.key == modSettings.keyBindingsToggleMenu) {
if (!open) {
_cm_settings_open();
open = true;
} else {
document.querySelector("#cm_close__settings").click();
open = false;
}
}
if (e.key === modSettings.keyBindingsSwitchChat) {
if (modSettings.showClientChat) {
document.getElementById("mainBtn").click();
} else {
document.getElementById("partyBtn").click();
}
}
if (e.key == modSettings.keyBindingsFreezePlayer) {
const CX = window.innerWidth / 2;
const CY = window.innerHeight / 2;
this.center(CX, CY);
}
if (e.key == modSettings.keyBindingsRapidFeed && !keydown) {
keydown = true;
function fastMass() {
let x = 15;
while (x--) {
keypress("w", "KeyW");
}
}
ff = setInterval(fastMass, 50);
}
if (e.key == modSettings.keyBindingsdoubleSplit) {
window.dispatchEvent(new KeyboardEvent("keydown", KEY_SPLIT));
window.dispatchEvent(new KeyboardEvent("keyup", KEY_SPLIT));
window.dispatchEvent(new KeyboardEvent("keydown", KEY_SPLIT));
window.dispatchEvent(new KeyboardEvent("keyup", KEY_SPLIT));
return;
}
if (e.key == modSettings.keyBindingsTripleSplit) {
window.dispatchEvent(new KeyboardEvent("keydown", KEY_SPLIT));
window.dispatchEvent(new KeyboardEvent("keyup", KEY_SPLIT));
window.dispatchEvent(new KeyboardEvent("keydown", KEY_SPLIT));
window.dispatchEvent(new KeyboardEvent("keyup", KEY_SPLIT));
window.dispatchEvent(new KeyboardEvent("keydown", KEY_SPLIT));
window.dispatchEvent(new KeyboardEvent("keyup", KEY_SPLIT));
return;
}
if (e.key == modSettings.keyBindingsQuadSplit) {
window.dispatchEvent(new KeyboardEvent("keydown", KEY_SPLIT));
window.dispatchEvent(new KeyboardEvent("keyup", KEY_SPLIT));
window.dispatchEvent(new KeyboardEvent("keydown", KEY_SPLIT));
window.dispatchEvent(new KeyboardEvent("keyup", KEY_SPLIT));
window.dispatchEvent(new KeyboardEvent("keydown", KEY_SPLIT));
window.dispatchEvent(new KeyboardEvent("keyup", KEY_SPLIT));
window.dispatchEvent(new KeyboardEvent("keydown", KEY_SPLIT));
window.dispatchEvent(new KeyboardEvent("keyup", KEY_SPLIT));
return;
}
});
},
setInputActions() {
const macroInputs = ["modinput1", "modinput2", "modinput3", "modinput4", "modinput5", "modinput6", "modinput7"];
macroInputs.forEach((modkey) => {
const modInput = document.getElementById(modkey);
document.addEventListener("keydown", (event) => {
if (document.activeElement !== modInput) return;
if (event.key === "Backspace") {
modInput.value = "";
let propertyName = modInput.name;
modSettings[propertyName] = "";
localStorage.setItem("SigmodSettings", JSON.stringify(modSettings));
return;
}
modInput.value = event.key.toLowerCase();
if (modInput.value !== "" && (macroInputs.filter((item) => item === modInput.value).length > 1 || macroInputs.some((otherKey) => {
const otherInput = document.getElementById(otherKey);
return otherInput !== modInput && otherInput.value === modInput.value;
}))) {
alert("You can't use 2 keybindings at the same time.");
setTimeout(() => {modInput.value = ""})
return;
}
let propertyName = modInput.name;
modSettings[propertyName] = modInput.value;
localStorage.setItem("SigmodSettings", JSON.stringify(modSettings));
});
});
},
mainMenu() {
let menucontent = document.querySelector(".menu-center-content");
menucontent.style.margin = "auto";
const discordlinks = document.createElement("div");
discordlinks.setAttribute("id", "dclinkdiv")
discordlinks.innerHTML = `
Sigmally Discord
SigModz Discord
`;
document.getElementById("discord_link").remove();
document.getElementById("menu").appendChild(discordlinks)
document.querySelector("#cm_modal__settings .ctrl-modal__modal").style.padding = "20px"
},
respawn() {
const __line2 = document.getElementById("__line2")
const c = document.getElementById("continue_button")
const p = document.getElementById("play-btn")
if (__line2.classList.contains("line--hidden")) return
this.respawnTime = null
setTimeout(() => {
c.click()
setTimeout(() => {
p.click()
this.respawnTime = Date.now()
}, 200)
}, 200)
},
donate() {
// Link: https://Sigmally.sell.app/product/donation
const Donate = document.createElement("div");
Donate.classList.add("donate")
Donate.innerHTML = `
Donate to get custom color!
`;
setTimeout(() => {
document.getElementById("closeDonate").addEventListener("click", () => {
Donate.remove();
});
document.getElementById("donateBtn").addEventListener("click", () => {
window.open("https://Sigmally.sell.app/product/donation");
})
})
document.body.append(Donate);
},
createMenu() {
this.smallMods();
this.menu();
// this.donate(); I will add this when I added custom name color feature
setTimeout(() => {
this.Macros();
this.Themes();
this.saveNames();
this.setInputActions();
this.getColors();
this.setColors();
this.mainMenu();
setInterval(() => {
if (document.getElementById("autoRespawn").checked && this.respawnTime && Date.now() - this.respawnTime >= this.respawnCooldown) {
this.respawn();
}
})
})
}
}
// PF macro:
window.setInterval = new Proxy(setInterval, {
apply(target, _this, args) {
if (args[1] === (1000 / 7)) {
args[1] = 0
}
return target.apply(_this, args)
}
})
new mod();
})();