Bots Home
|
Create an App
scratch it 1
Author:
test345043
Description
Source Code
Launch Bot
Current Users
Created by:
Test345043
// Scratch the Card App for Chaturbate // Summary: "Scratch the Card: Tip as low as 1 token to scratch and maybe win exciting prizes! A fun, chat-based game with auto-reinitializing rewards and customizable settings—no card counts, just pure fun!" // Description: "Bring excitement to your room with Scratch the Card! Viewers tip as little as 1 token (up to 100) for a chance to win one of up to 20 custom prizes. The prize pool refreshes automatically when low, keeping the action alive. Customize with up to 10,000 cards, set your tip price, and define your prize list. Use `/scprizes` to peek at rewards, `/sclastwin` for the latest win, or `/screinit` to reset. Ads keep viewers hooked, all without revealing card counts. Boost tips and engagement now!" var ScratchTheCardBot = { // Game state remainingCards: 0, remainingPrizes: [], lastWin: null, adTimer: null, // Default prize list (20 prizes) defaultPrizes: [ "Spit tits", "Lick toe", "2*Fingering pussy", "Flash ass", "10 spanks", "Oil boobs", "Blow kiss", "Dance tease", "Show feet", "Twerk", "Nipple tease", "Remove top", "Pussy close-up", "Doggy pose", "Suck finger", "Custom request", "Wink at cam", "Sing a line", "Flash smile", "Sexy stretch" ], // Handle tip events with 1% win chance onTip: function(tip) { var cardPrice = cb.settings.card_price; if (tip.amount === cardPrice && this.remainingCards > 0) { this.remainingCards--; // Decrease card count with every tip // Random chance to win (1% probability) var winChance = Math.random(); if (winChance < 0.01) { // 1% chance to win if (this.remainingPrizes.length === 0) { cb.sendNotice("No prizes left!", "", "#FF0000"); // Red for no prizes return; } var prizeIndex = Math.floor(Math.random() * this.remainingPrizes.length); var prize = this.remainingPrizes.splice(prizeIndex, 1)[0]; this.lastWin = prize; cb.sendNotice(tip.from_user + " scratched a card and won: " + prize + "!", "", "#00FF00"); // Green for wins this.checkReinit(); } else { cb.sendNotice(tip.from_user + " *scratched a card and struck out—better luck next time!*", "", "#FFA500"); // Orange, bold } } }, // Handle chat messages for commands onMessage: function(msg) { var text = msg.m.toLowerCase(); if (text === "/scprizes") { cb.sendNotice("Available prizes: " + this.remainingPrizes.join(", "), "", "#FFFF00"); // Yellow for info } else if (text === "/sclastwin") { cb.sendNotice(this.lastWin ? "Last win: " + this.lastWin : "No wins yet!", "", "#FFFF00"); } else if (text === "/screinit") { this.reinit(); cb.sendNotice("Game reinitialized!", "", "#00FFFF"); // Cyan for resets } }, // Check if reinitialization is needed (≤10% prizes left) checkReinit: function() { var prizePercentage = (this.remainingPrizes.length / this.defaultPrizes.length) * 100; if (prizePercentage <= 10) { this.reinit(); cb.sendNotice("Prize pool reinitialized!", "", "#00FFFF"); } }, // Reinitialize game state with custom or default prizes reinit: function() { this.remainingCards = cb.settings.total_cards; var customPrizes = cb.settings.prizes_list ? cb.settings.prizes_list.split(",").map(p => p.trim()) : []; if (customPrizes.length === 0 || customPrizes.every(p => p === "")) { this.remainingPrizes = this.defaultPrizes.slice(); // Use default if empty or invalid } else { this.remainingPrizes = customPrizes.slice(0, 20); // Limit to 20 prizes } this.defaultPrizes = this.remainingPrizes.slice(); // Update defaultPrizes for reinitialization consistency }, // Start or restart ad timer using cb.setTimeout startAdTimer: function() { if (this.adTimer) { cb.clearTimeout(this.adTimer); // Clear existing timer } var self = this; function sendAd() { cb.sendNotice("*Take a wild scratch for " + cb.settings.card_price + " tokens—win big with " + self.remainingPrizes.length + " prizes left!*", "", "#800080"); // Purple background, bold self.adTimer = cb.setTimeout(sendAd, cb.settings.ad_delay * 60 * 1000); // Schedule next ad } this.adTimer = cb.setTimeout(sendAd, cb.settings.ad_delay * 60 * 1000); // Initial call } }; // Define settings choices for the broadcaster cb.settings_choices = [ { name: "total_cards", type: "int", minValue: 50, maxValue: 10000, defaultValue: 10000, // 10,000 cards by default label: "Total Cards" }, { name: "card_price", type: "int", minValue: 1, maxValue: 100, defaultValue: 22, label: "Card Price (Tokens)" }, { name: "ad_delay", type: "int", minValue: 2, maxValue: 10, defaultValue: 5, label: "Ad Delay (Minutes)" }, { name: "prizes_list", type: "str", defaultValue: "Spit tits, Lick toe, 2*Fingering pussy, Flash ass, 10 spanks, Oil boobs, Blow kiss, Dance tease, Show feet, Twerk, Nipple tease, Remove top, Pussy close-up, Doggy pose, Suck finger, Custom request, Wink at cam, Sing a line, Flash smile, Sexy stretch", label: "Prizes (comma-separated, max 20)" } ]; // Register event handlers cb.onTip(function(tip) { ScratchTheCardBot.onTip(tip); }); cb.onMessage(function(msg) { ScratchTheCardBot.onMessage(msg); }); // Initialize the app ScratchTheCardBot.reinit(); // Set initial state with 10,000 cards and custom/default prizes ScratchTheCardBot.startAdTimer(); // Start the ad timer cb.sendNotice("Scratch the Card initialized! Tip " + cb.settings.card_price + " tokens to win a prize!", "", "#00FFFF");
© Copyright Chaturbate 2011- 2025. All Rights Reserved.