Apps Home
|
Create an App
Santas Naughty & Nice Dice
Author:
garterxxx
Description
Source Code
Launch App
Current Users
Created by:
Garterxxx
/** * App: Santa's Naughty & Nice Dice ππ¬ * Version: 1.0-Christmas * Author: Glow XXX * Date: 2026-03-20 * Description: Roll the festive dice! π Every roll reveals a naughty or nice Christmas prize ππβοΈπ₯ * Commands (broadcaster & mods): * /prizes - List all available Christmas prizes * /prizes all - Show prizes to all if mod or broadcaster * /winners - List the last 40 festive winners */ // ===================== // SETTINGS // ===================== cb.settings_choices = [ { name: 'tokens', type: 'int', minValue: 1, maxValue: 100, label: 'Tokens per roll π', defaultValue: 25 }, { name: 'remove_winning_prize', type: 'choice', label: 'Remove prize after each roll?', choice1: 'Yes', choice2: 'No', defaultValue: 'No' }, { name: 'die_type', type: 'choice', label: 'Use traditional (6-sided) or festive Chinese (10-sided) die? π²', choice1: 'Traditional', choice2: 'Chinese', default: 'Traditional' }, { name: 'minimum_rolls', type: 'choice', label: 'Minimum rolls before rare festive prize appears?', choice1: 10, choice2: 15, choice3: 20, choice4: 25, choice5: 30, defaultValue: 10 }, { name: 'notice_wait_time', type: 'choice', label: 'Minutes between app adverts β°', choice1: 5, choice2: 10, choice3: 15, choice4: 20, defaultValue: 10 }, { name: 'prize_1', type: 'str', label: 'Prize for rolling 1', defaultValue: 'Show feet in Santa socks π π§¦' }, { name: 'prize_2', type: 'str', label: 'Prize for rolling 2', defaultValue: 'Blow a festive kiss ππ' }, { name: 'prize_3', type: 'str', label: 'Prize for rolling 3', defaultValue: 'Show cute elf ears πβ¨' }, { name: 'prize_4', type: 'str', label: 'Prize for rolling 4', defaultValue: 'Play with candy cane π¬π' }, { name: 'prize_5', type: 'str', label: 'Prize for rolling 5', defaultValue: 'Show your Christmas butt ππ' }, { name: 'prize_6', type: 'str', label: 'Prize for rolling 6', defaultValue: 'Do a naughty elf dance ππ' }, { name: 'prize_7', type: 'str', label: 'Prize for rolling 7', defaultValue: '(rare) Cum in Santa hat π©π₯' }, { name: 'prize_8', type: 'str', label: 'Prize for rolling 8', defaultValue: '(rare) Christmas strip tease ππ¦' }, { name: 'prize_9', type: 'str', label: 'Prize for rolling 9', defaultValue: 'Show armpits under mistletoe πΏπ' }, { name: 'prize_10', type: 'str', label: 'Prize for rolling 10', defaultValue: 'Naughty push-ups with tinsel ππͺ' }, { name: 'prize_11', type: 'str', label: 'Prize for rolling 11', defaultValue: '(rare) Shower in candy canes πΏπ¬' }, { name: 'prize_12', type: 'str', label: 'Prize for rolling 12', defaultValue: '(rare) Cum surprise under tree ππ¦' }, { name: 'prize_13', type: 'str', label: 'Prize for rolling 13', defaultValue: 'A festive wink ππ' }, { name: 'prize_14', type: 'str', label: 'Prize for rolling 14 (Chinese die only)', defaultValue: 'Elf toy play ππ§Έ' }, { name: 'prize_15', type: 'str', label: 'Prize for rolling 15 (Chinese die only)', defaultValue: 'Show stocking feet π§¦β¨' }, { name: 'prize_16', type: 'str', label: 'Prize for rolling 16 (Chinese die only)', defaultValue: 'Mistletoe kiss ππΏ' }, { name: 'prize_17', type: 'str', label: 'Prize for rolling 17 (Chinese die only)', defaultValue: 'Santa hat tease π©π₯' }, { name: 'prize_18', type: 'str', label: 'Prize for rolling 18 (Chinese die only)', defaultValue: 'Elf outfit reveal ππ¦' }, { name: 'prize_19', type: 'str', label: 'Prize for rolling 19 (Chinese die only)', defaultValue: 'Candy cane play π¬π' }, { name: 'prize_20', type: 'str', label: 'Prize for rolling 20 (Chinese die only)', defaultValue: '(rare) Naughty Christmas cum ππ¦' }, { name: 'prize_21', type: 'str', label: 'Prize for rolling 21 (VERY RARE; Chinese die only)', defaultValue: 'Ultimate elf pleasure show ππ₯π¦' } ]; // ===================== // STATE VARIABLES // ===================== var langTokens = (cb.settings.tokens > 1) ? 'tokens' : 'token'; var numberOfSides = (cb.settings.die_type == 'Traditional') ? 6 : 10; var lastRoller = '--'; var lastPrizeWon = '--'; var rollCounter = 0; var tipCounter = 0; var winners = []; var prizes = []; var minimumRollsToGetRareDice = parseInt(cb.settings.minimum_rolls); var maxOutcome = (cb.settings.die_type == 'Traditional') ? 13 : 21; var dieImagePrefix = (cb.settings.die_type == 'Traditional') ? ':reddie' : ':cdie'; // ===================== // TIP HANDLING // ===================== cb.onTip(function (tip) { tipCounter += parseInt(tip['amount']); if (parseInt(tip['amount']) >= cb.settings.tokens) { var numberOfRolls = Math.floor(parseInt(tip['amount']) / cb.settings.tokens); for (var i = 0; i < numberOfRolls; i++) { roll(tip['from_user']); lastRoller = tip['from_user']; } } else { cb.drawPanel(); } }); // ===================== // PANEL DISPLAY // ===================== cb.onDrawPanel(function (user) { return { 'template': '3_rows_12_22_31', 'row1_label': 'Last festive prize:', 'row1_value': lastPrizeWon, 'row2_label': 'Last roller:', 'row2_value': lastRoller, 'row3_value': tipCounter + ' ' + langTokens + ' received / rolled ' + rollCounter + ' time(s)' }; }); // ===================== // CHAT COMMANDS // ===================== cb.onMessage(function (msg) { if (msg['m'].match(/\/winners/i)) { msg['X-Spam'] = true; showPrizesWon(msg['user']); } else if (msg['m'].match(/\/prizes/i)) { msg['X-Spam'] = true; if (msg['m'].match(/all/i) && ((msg['is_mod'] == true) || (msg['user'] == cb.room_slug))) { showPrizes(); } else { showPrizes(msg['user']); } } return msg; }); // ===================== // ROLL LOGIC // ===================== function roll(username) { rollCounter++; var die1 = Math.floor(Math.random() * numberOfSides + 1); var die2 = Math.floor(Math.random() * numberOfSides + 1); var randomNum = Math.ceil(Math.random() * (100 - minimumRollsToGetRareDice) + minimumRollsToGetRareDice); if (rollCounter == randomNum) { if ((die1 == 1) && (die2 != 1)) die1 = (cb.settings.die_type == 'Traditional') ? 7 : 11; if ((die2 == 1) && (die1 != 1)) die2 = (cb.settings.die_type == 'Traditional') ? 7 : 11; } var total = die1 + die2; var winner = (total >= 1); var prize = winner ? cb.settings['prize_' + total] : 'A festive Thank You!'; var prizeIndex = prizes.indexOf(prize); if (prizeIndex >= 0 && cb.settings.remove_winning_prize == 'Yes') prizes.splice(prizeIndex, 1); var msg = dieImagePrefix + die1 + " " + dieImagePrefix + die2 + "\n"; msg += username + " rolled a " + total + "! \n".toUpperCase(); msg += "Roll #" + rollCounter + " | Prize: " + prize; var textColor = '#000000'; var bgColor = '#FFF8DC'; if (winner) textColor = '#067D00'; if (total == maxOutcome) { bgColor = '#FFD700'; textColor = '#A805A6'; } cb.sendNotice(msg, '', bgColor, textColor, 'bold'); lastPrizeWon = prize; winners.push("Roll #" + rollCounter + " (" + total + "): " + username + " - " + prize); cb.drawPanel(); } // ===================== // PRIZES MANAGEMENT // ===================== function setPrizes() { for (var i = 1; i <= maxOutcome; i++) { var rareText = (i == maxOutcome) ? " (VERY RARE π)" : ""; prizes.push(cb.settings['prize_' + i] + rareText); } } function showPrizes(username) { if (prizes.length) { var msg = "##### POSSIBLE CHRISTMAS PRIZES π #####"; for (var i = 1; i <= maxOutcome; i++) { var rareText = (i == maxOutcome) ? " (VERY RARE π)" : ""; if (prizes.indexOf(cb.settings['prize_' + i] + rareText) >= 0) msg += "\nRoll " + i + " - " + cb.settings['prize_' + i] + rareText; } } else { var msg = "SORRY! No prizes left, but thanks for your tip π"; } cb.sendNotice(msg, username, '#DBFBFF', '#008596', 'bold'); } function showPrizesWon(username) { var msg = "##### LAST 40 FESTIVE WINNERS π #####\nChronological order:"; if (winners.length == 0) { cb.sendNotice('No one has won yet! Roll the festive dice π', username, '', '', 'bold'); } else { var recentWinners = winners.slice(-40); for (var i = 0; i < recentWinners.length; i++) msg += "\n" + recentWinners[i]; cb.sendNotice(msg, username, '#FFF0DE', '#8A4900', 'bold'); } } // ===================== // ADVERTISING // ===================== function advertise() { showAppAd(); cb.setTimeout(advertise, parseInt(cb.settings.notice_wait_time) * 60000); } function showAppAd(username) { var msg = username ? "Welcome " + username + "! π Let's roll the Christmas dice!" : "Santa's Dice by Glow XXX π"; msg += "\nEach roll reveals a naughty or nice prize. There are " + prizes.length + " possible prizes."; msg += cb.settings.remove_winning_prize == 'Yes' ? "\nPrizes are removed once won." : "\nPrizes remain after being won."; msg += "\nTip " + cb.settings.tokens + " " + langTokens + " to roll the festive dice ππ!"; msg += "\nType /prizes to see them or /winners to view last winners."; cb.sendNotice(msg, username, '', '#15A6B0', 'bold'); } // ===================== // INIT // ===================== function init() { setPrizes(); advertise(); cb.changeRoomSubject('π Tip ' + cb.settings.tokens + ' ' + langTokens + ' to roll the festive dice! π'); } init();
© Copyright Chaturbate 2011- 2026. All Rights Reserved.