Gartic Instant Room Join, Anti‑AFK, No Kick Limit
// ==UserScript==
// @name Remove Cooldown | 2026
// @namespace https://github.com/GameSketchers
// @version 1.3
// @description Gartic Instant Room Join, Anti‑AFK, No Kick Limit
// @author Qwyua
// @match *://gartic.io/*
// @run-at document-start
// @grant GM_setValue
// @grant GM_getValue
// @grant unsafeWindow
// @license MIT
// ==/UserScript==
/gartic\.io$/.test(location.host)&&(()=>{
sessionStorage.getItem('pastel')&&(alert('Pastel found! Disable Remove Cooldown Script'),(()=>{throw 0})());
const [onElementAdded3,writePage]=[
(s,c,m=1)=>{let o,d=0,f=()=>{let q=document.querySelectorAll(s),i=0,l=q.length;for(;i<l;i++){c(q[i]);if(!m)return}o.observe(document.body,{childList:1,subtree:1})};o=new MutationObserver(r=>{for(let i=0,a,n,e;i<r.length;i++){a=r[i].addedNodes;for(let j=0;j<a.length;j++){n=a[j];if(n.nodeType!=1)continue;e=n.matches(s)?n:n.querySelector(s);if(e&&!d){c(e);if(!m){d=1;o.disconnect();return}}}}});document.body?f():new MutationObserver((_,b)=>document.body&&(b.disconnect(),f())).observe(document.documentElement,{childList:1})},
(t,m,d)=>{const i='__c',e=document.getElementById(i);if(e)return e.textContent=t+''&&e;const bg=m==='dark'?'#000':'#fff',fg=m==='dark'?'#fff':'#000',s=`position:fixed;inset:0;display:flex;align-items:center;justify-content:center;background:${bg};color:${fg};z-index:9999;font-family:Inter,system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:600;font-size:clamp(18px,4vw,48px);user-select:none;margin:0`,mk=b=>{const e=document.createElement('div');return e.id=i,e.style.cssText=s,e.textContent=t+'',b.appendChild(e),e};return d?(document.documentElement.innerHTML='<head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"></head><body style=margin:0></body>',document.body?mk(document.body):onElementAdded3('body',b=>mk(b))):(document.body?mk(document.body):onElementAdded3('body',b=>mk(b)))}
],TTL=27e4
;(o=>o[Object.keys(o).find(k=>location.href.includes(k))]?.())({
token:()=>{
const w=unsafeWindow
const upd=n=>writePage(`Token Genereting... (${n})`,'dark',false)
const run=()=>setTimeout(()=>w.turnstile.render('#cf-turnstile',{
sitekey:'0x4AAAAAABBPKaIbNwnPEfSo',
size:'invisible',
callback:t=>{
const now=Date.now()
const all=GM_getValue('Tokens')||[]
const clean=all.filter(x=>now-x.time<TTL)
clean.push({token:t,time:now})
GM_setValue('Tokens',clean)
upd(clean.length)
setTimeout(()=>{try{w.turnstile.reset()}catch{}},1e3+Math.random()*1e3)
}
}),1e3)
upd((GM_getValue('Tokens')||[]).filter(x=>Date.now()-x.time<TTL).length)
run()
},
gartic:()=>{
new class{
constructor(){
//localStorage.debug = '*'
//onElementAdded3("button.ic-yes",e=>e.click())
const w=unsafeWindow
this._owner=w._owner||(w._owner={})
Object.defineProperty(this._owner,"self",{value:this,enumerable:0,configurable:1,writable:1})
const T=typeof unsafeWindow!='undefined'?unsafeWindow:window,s={render:(...a)=>(queueMicrotask(()=>((a[1]?.callback||typeof a[1]=='function'&&a[1]||(()=>{}))('turnstile'))),'turnstile'),remove:()=>{}};Object.defineProperty(T,'turnstile',{configurable:1,enumerable:1,get:()=>s,set:()=>{}}),setTimeout(()=>T.turnstile=s,0);
onElementAdded3("div#content",e=>{let d=[50,100,200,400],i=0,f=()=>{const k=Object.getOwnPropertyNames(e).find(x=>x.startsWith("__react")),r=k&&e[k];if(r)return this._owner._play=r.pendingProps.children[1]._owner.stateNode._play,eval(`const p=_owner._play;p.start=(...a)=>{p._data=CACHE_DATA;p._room=a[1];p._data.user||=window.CACHE_DATA.user;p._getServer();p._setPopup(10)};const j=p._join;p._join=(...a)=>(console.log(a),a[4]?.forEach?.(x=>x?.nick&&(x.nick="🌙 | "+_owner.self.escapeInvisibles(x.nick))),j.apply(p,a));p._connect=()=>{const t=CACHE_DATA,e=t.user||CACHE_DATA.user,c=e.logado?0:e.avatar;p._reconnections=0;p._viewer?p._socket.emit(12,{v:2e4,platform:1,sala:p._room?.substr(2)}):p._room?(p._room===!0?p._socket.emit("2",{v:2e4,token:_owner.self.getToken(),nick:e.nome,avatar:c,platform:1,idioma:e.language,tipo:t.subject,limite:t.players,meta:t.points,visivel:t.visible,criado:t.created}):p._socket.emit("3",{v:2e4,token:_owner.self.getToken(),nick:e.nome,avatar:c,platform:1,sala:p._room.substr(2)})):p._socket.emit("1",{v:2e4,token:_owner.self.getToken(),nick:e.nome,avatar:c,platform:1,idioma:e.language})/*,p._ping()*/;p._socket.removeAllListeners("connect")}`);d[i]?setTimeout(f,d[i++]):0};f()},0)
onElementAdded3("div#screenRoom",e=>{let g,w=n=>n&&!g&&(n.tag==1&&(g=this._owner._game=n.stateNode?.props?.children?.[0]?._owner?.stateNode?._game)&&this.joinedRoom(g),!g&&w(n.child));for(let k in e)/^__r/.test(k)&&w(e[k])},1)
}
gT=()=>{let c="Zx1Yp8Qr7Wv6Ut5Os4Nm3Lk2Jh0GfAeBdCvHqIjKlMnOpQrStUvWxYz0123456789_-.",r=n=>Array.from({length:n},()=>c[Math.random()*c.length|0]).join(""),s=3+Math.random()*3|0;return"1."+Array.from({length:s},()=>r(80+Math.random()*120|0)).join(".")}
antiAFK=()=>{const o=this._owner,g=o?._game,e=g?._events;if(!e)return;e.avisoInativo=()=>{g._ativo=Date.now();g._socket.io.engine.transport.ws.send(`42[42,${g._codigo}]`)}}
escapeInvisibles=s=>s.replace(/\p{C}/gu,c=>`\\u${c.codePointAt(0).toString(16).toUpperCase().padStart(4,'0')}`)
joinedRoom=()=>{
addEventListener("keydown",e=>e.code==="Escape"&&(this._owner?._game?.exit(),delete this._owner._game),{passive:1,once:1})
Object.defineProperty(this._owner._game,'_tempoVotekick',{get:()=>0,set:()=>{}})
this.antiAFK()
}
getToken=()=>{
const now=Date.now()
let tokens=GM_getValue("Tokens")||[]
let valid=tokens.filter(t=>!t.used && now-t.time<this.TTL)
if(!valid.length) return this.gT()
let tok=valid.reduce((a,b)=>(this.TTL-(now-b.time))<(this.TTL-(now-a.time))?b:a)
tok.used=1
GM_setValue("Tokens",tokens)
return tok.token
}
}
}
});
})();