// ==UserScript==
// @name m ccats ii
// @namespace Custom.Script
// @version 2.14
// @author fartpooper2565
// @description hi mom
// @match *://*/*
// @grant GM_getValue
// @grant GM_setValue
// @noframes
// @license GPL-3.0-or-later
// @icon https://media1.tenor.com/m/HBpfYm9_MVoAAAAC/push-up-cat.gif
// ==/UserScript==
(function () {
'use strict';
function color(value) {
return `hue-rotate(${value % 360}deg)`;
}
var labelheight = 160
const cars = [
//
{ name: "push up crah", url: "https://media1.tenor.com/m/HBpfYm9_MVoAAAAC/push-up-cat.gif", chance: 30, rarity: "uncommon", sfx:"https://files.catbox.moe/z5r0ku.mp3"},
{ name: "wamter cat", url: "https://media1.tenor.com/m/4VY0Ykn4lN4AAAAd/cat-broken-cat.gif", chance: 45, rarity: "commom", sfx:"https://files.catbox.moe/wyaowt.mp3"},
{ name: "cole cart", url: "https://i.imgur.com/qZdhXiW.gif", chance: 15, rarity: "rare", sfx: "https://files.catbox.moe/5z5f3q.mp3"},
{ name: "caert", url: "https://media1.tenor.com/m/vliHqLcJ0wUAAAAd/cute-kitten.gif", chance: 15, rarity: "rare", sfx: "https://files.catbox.moe/5z5f3q.mp3"},
{ name: "shorwmar kitr", url: "https://media1.tenor.com/m/4L4U7UME9RIAAAAd/kitty-kitten.gif", chance: 30, rarity: "uncommon", sfx: "https://files.catbox.moe/z5r0ku.mp3"},
{ name: "starm", url: "https://i.imgur.com/QYSZzKp.png", chance: 30, rarity: "uncommon", sfx: "https://files.catbox.moe/z5r0ku.mp3"},
{ name: "starm2", url: "https://i.imgur.com/9xPS4G2.png", chance: 15, rarity: "rare", sfx: "https://files.catbox.moe/5z5f3q.mp3"},
{ name: "bimp boops bithday", url: "https://i.imgur.com/9NVjxuT.png", chance: 10, rarity: "epic", sfx: "https://files.catbox.moe/ve6jm8.mp3"},
//
{ name: "kendca", url: "https://i.imgur.com/3YM93Uq.jpeg", chance: 10, rarity: "epic", sfx: "https://files.catbox.moe/ve6jm8.mp3"},
{ name: "ken carteson c", url: "https://i.imgur.com/Si6xk3x.jpeg", chance: 6, rarity: "epic", sfx: "https://files.catbox.moe/ve6jm8.mp3"},
{ name: "carti ca", url: "https://i.imgur.com/iEi1UEi.jpeg", chance: 10, rarity: "epic", sfx: "https://files.catbox.moe/ve6jm8.mp3"},
{ name: "kaney cartee", url: "https://i.imgur.com/IIqHI78.jpeg", chance: 10, rarity: "epic", sfx: "https://files.catbox.moe/ve6jm8.mp3"},
{ name: "exh exh eh e car", url: "https://i.imgur.com/9AWa1jw.jpeg", chance: 10, rarity: "epic", sfx: "https://files.catbox.moe/ve6jm8.mp3"},
{ name: "tlye cat", url: "https://i.imgur.com/dTCodhK.jpeg", chance: 10, rarity: "epic", sfx: "https://files.catbox.moe/ve6jm8.mp3"},
{ name: "frank eoan car", url: "https://i.imgur.com/0ccBIbS.jpeg", chance: 11, rarity: "epic", sfx: "https://files.catbox.moe/ve6jm8.mp3"},
{ name: "ticklel tecca", url: "https://i.imgur.com/Cw428wX.jpeg", chance: 10, rarity: "epic", sfx: "https://files.catbox.moe/ve6jm8.mp3"},
{ name: "21 savage cah", url: "https://i.imgur.com/6hpANfb.gif", chance: 10, rarity: "epic", sfx: "https://files.catbox.moe/ve6jm8.mp3"},
//
{ name: "I LOVE KITTY", url: "https://i.imgur.com/Mb8OwbB.gif", chance: 3, rarity: "woah sexy", sfx: "https://files.catbox.moe/8dzi3v.mp3"},
{ name: "if daint want me to be straight super rare !!", url: "https://i.imgur.com/XXDzfc3.jpeg", chance: 1, rarity: "SUPER sexy", sfx: "https://files.catbox.moe/8dzi3v.mp3"},
//
{ name: "I LOVE KITTY", url: "https://i.imgur.com/Mb8OwbB.gif", chance: 6, rarity: "mythic", sfx: "https://files.catbox.moe/nfh98n.mp3"},
{ name: "amril fall", url: "https://media1.tenor.com/m/SV80CXJoQvYAAAAd/apple-cat-apple.gif", chance: 6, rarity: "mythic", sfx: "https://files.catbox.moe/nfh98n.mp3"},
{ name: "oe aprekl", url: "https://media1.tenor.com/m/GBsEFKjmnh4AAAAd/cat-holding-apple-cat.gif", chance: 6, rarity: "mythic", sfx: "https://files.catbox.moe/nfh98n.mp3"},
{ name: "ome april", url: "https://media1.tenor.com/m/kusA5iJZMRQAAAAd/cat-greedy-cat-with-apple.gif", chance: 6, rarity: "mythic", sfx: "https://files.catbox.moe/nfh98n.mp3"},
{ name: "moeange", url: "https://i.imgur.com/Ju0WWV5.png", chance: 6, rarity: "mythic", sfx: "https://files.catbox.moe/nfh98n.mp3"},
//
{ name: "twine car no", url: "https://media1.tenor.com/m/t25MPZt8VNQAAAAd/twink-femboy.gif", chance: 2, rarity: "extra mythic", sfx: "https://files.catbox.moe/nfh98n.mp3" },
//
{ name: "naon cat s dide", url: "https://media1.tenor.com/m/xxgy9ivB2rUAAAAd/cats-plushies.gif", chance: 1, rarity: "legendary", sfx: "https://files.catbox.moe/wc54mx.mp3"},
];
const bass = new Audio("https://files.catbox.moe/o5waw2.mp3");
const colorchange = 10;
const colorchangetime = 1;
const bonusbox = Math.random() < 0.025;
if (bonusbox) {
for (let i = 0; i < 20; i++) {
catrain();
}
} else {
spawnBottomRightCat();
}
function sleep(ms) {
return new Promise(resolve => setTimeout(resolve, ms));
}
async function spawnBottomRightCat() {
const selectedCar = getRandomCar();
const colorq = Math.random() < 0.2 ? 1 : 5;
let rainbow = "";
if (colorq === 1) {
rainbow = "rainbow ";
}
let totalChance = cars.reduce((sum, car) => sum + car.chance, 0);
totalChance -= totalChance / 6;
let chance = selectedCar.chance / totalChance;
if (colorq === 1) chance /= 6;
const catgif = document.createElement('img');
catgif.src = selectedCar.url;
catgif.style.position = 'fixed';
catgif.style.bottom = '0';
catgif.style.right = '0';
catgif.style.zIndex = '999999999';
catgif.style.width = '150px';
catgif.style.cursor = 'pointer';
catgif.style.filter = color(0);
if (selectedCar.rarity === "mythic") catgif.style.height = '150px';
const raritysfx = new Audio(selectedCar.sfx);
const bass = new Audio("https://files.catbox.moe/o5waw2.mp3");
raritysfx.volume = 1;
bass.volume = 1;
catgif.onclick = async () => {
bass.play();
await sleep(900)
bass.play();
await sleep(900)
raritysfx.play();
await sleep(900)
bass.play();
await sleep(900)
bass.play();
await sleep(900)
catgif.remove();
label.remove();
};
document.body.appendChild(catgif);
let numbfound = GM_getValue("numbfound", 0);
const alreadyFound = GM_getValue(rainbow + selectedCar.name, false);
let arlfound = "";
const label = document.createElement('div');
if (!alreadyFound) {
GM_setValue(rainbow + selectedCar.name, true);
numbfound++;
arlfound = " (new cat)";
label.textContent = `${selectedCar.rarity + " " + rainbow + selectedCar.name} Chance: ${(chance * 100).toFixed(1)} %${arlfound}, Total found: ${numbfound} / ${cars.length * 2}`;
label.style.position = 'fixed';
label.style.bottom = labelheight + "px";
label.style.right = '0';
raritystyle(label, selectedCar.rarity);
document.body.appendChild(label);
GM_setValue("numbfound", numbfound);
} else {
arlfound = " (already found)";
label.textContent = `${numbfound}/${cars.length * 2}`;
label.style.position = 'fixed';
label.style.bottom = labelheight + "px";
label.style.right = '0';
raritystyle(label, selectedCar.rarity);
document.body.appendChild(label);
}
let value = 0;
function updateColor() {
if (colorq === 1) {
catgif.style.filter = color(value);
value += colorchangetime;
}
}
setInterval(updateColor, colorchange);
}
function catrain() {
const selectedCar = getRandomCar();
const colorq = Math.random() < 0.2 ? 1 : 5;
let rainbow = "";
if (colorq === 1) rainbow = "rainbow ";
const catgif = document.createElement('img');
catgif.src = selectedCar.url;
catgif.style.position = 'fixed';
catgif.style.top = '-150px';
catgif.style.left = `${Math.random() * (window.innerWidth - 150)}px`;
catgif.style.zIndex = '999999999';
catgif.style.width = '150px';
catgif.style.pointerEvents = 'none';
catgif.style.filter = color(0);
document.body.appendChild(catgif);
const fallDuration = 5 + Math.random() * 2;
catgif.animate([
{ transform: 'translateY(0px)' },
{ transform: `translateY(${window.innerHeight + 150}px)` }
], {
duration: fallDuration * 1000,
easing: 'linear'
});
setTimeout(() => catgif.remove(), fallDuration * 1000);
let numbfound = GM_getValue("numbfound", 0);
const alreadyFound = GM_getValue(rainbow + selectedCar.name, false);
if (!alreadyFound) {
GM_setValue(rainbow + selectedCar.name, true);
numbfound++;
GM_setValue("numbfound", numbfound);
}
const label = document.createElement('div');
let totalChance = cars.reduce((sum, car) => sum + car.chance, 0);
totalChance -= totalChance / 6;
let chance = selectedCar.chance / totalChance;
if (colorq === 1) chance /= 6;
let arlfound = alreadyFound ? " (already found)" : " (new cat)";
label.textContent = `${selectedCar.rarity + " " + rainbow + selectedCar.name} Chance: ${(chance * 100).toFixed(1)} %${arlfound}, Total found: ${numbfound} / ${cars.length * 2}`;
label.style.position = 'fixed';
label.style.bottom = labelheight + "px";
labelheight = labelheight + 25
label.style.right = '0';
raritystyle(label, selectedCar.rarity);
document.body.appendChild(label);
}
function getRandomCar() {
const weightedIndexes = [];
cars.forEach((car, index) => {
for (let i = 0; i < car.chance; i++) {
weightedIndexes.push(index);
}
});
const selectedIndex = weightedIndexes[Math.floor(Math.random() * weightedIndexes.length)];
return cars[selectedIndex];
}
function raritystyle(label, rarity) {
if (rarity === "commom") label.style.color = 'black';
if (rarity === "uncommon") label.style.color = 'green';
if (rarity === "rare") label.style.color = 'blue';
if (rarity === "epic") label.style.color = 'purple';
if (rarity === "extra mythic") label.style.color = 'red';
if (rarity === "mythic") label.style.color = 'red';
if (rarity === "legendary") label.style.color = 'yellow';
if (rarity === "woah sexy" || rarity === "SUPER sexy") {
label.style.color = 'pink';
label.style.fontFamily = 'cursive';
} else {
label.style.fontFamily = 'sans-serif';
}
label.style.fontSize = '14px';
label.style.background = 'rgba(255, 255, 255, 0.8)';
label.style.padding = '6px 10px';
label.style.borderRadius = '8px';
label.style.zIndex = '9999999999';
label.style.pointerEvents = 'none';
}
})();