Apps Home
|
Create an App
littlebonnie's Roll the Dice!
Author:
ganja_babe
Description
Source Code
Launch App
Current Users
Created by:
Ganja_Babe
/** * App: littlebonnie’s Roll the Dice * Version: 1.0 * Author: ganja_babe (thanks zingknaat!) * Date: 2017-6-22 */ var i = 0; var j = 0; var msgs=[]; msgs[0]=":hello"; msgs[1]="Private discussions in PM. PM 10 tokenssss."; msgs[2]="Join littlebonnie's fan club and turn green, like my eyes))"; msgs[3]=":catfollow_a1"; msgs[4]=0; var color=[]; color[1] = '#FF1493'; color[2] = '#228B22'; color[3] = '#FFD700'; cb.settings_choices = [ { name: 'tokens', type: 'int', minValue: 1, maxValue: 100, label: 'How much do you want to charge per roll?', defaultValue: 25 }, { name: 'minimum_rolls', type: 'choice', label: 'What is the minimum number of rolls before the rare dice can appear? (Keep this a secret!)', choice1: 10, choice2: 20, choice3: 30, choice4: 40, choice5: 50, defaultValue: 30 }, { name: 'notice_wait_time', type: 'int', minValue:1, maxValue: 15, label: 'In minutes, how often should the app advertise itself?', defaultValue: 10 }, {name: 'prize_1', type: 'str', default: 'Smile', label: 'Prize for rolling 1'}, {name: 'prize_2', type: 'str', default: 'Braids', label: 'Prize for rolling 2'}, {name: 'prize_3', type: 'str', default: 'Spectacles', label: 'Prize for rolling 3'}, {name: 'prize_4', type: 'str', default: 'Clap', label: 'Prize for rolling 4'}, {name: 'prize_5', type: 'str', default: 'Cheek Claps', label: 'Prize for rolling 5'}, {name: 'prize_6', type: 'str', default: ':Kitty Ears', label: 'Prize for rolling 6'}, {name: 'prize_7', type: 'str', default: 'Eyebrow Raise', label: 'Prize for rolling 7'}, {name: 'prize_8', type: 'str', default: 'Belly Belly Belly', label: 'Prize for rolling 8'}, {name: 'prize_9', type: 'str', default: 'My Favorite Song', label: 'Prize for rolling 9'}, {name: 'prize_10', type: 'str', default: 'PM', label: 'Prize for rolling 10'}, {name: 'prize_11', type: 'str', default: 'Ponytail', label: 'Prize for rolling 11'}, {name: 'prize_12', type: 'str', default: 'Head Dance', label: 'Prize for rolling 12'}, {name: 'prize_13', type: 'str', default: 'GREEN EYES!', label: 'Prize for rolling 13 (RARE)'} ]; var langTokens = (cb.settings.tokens > 1) ? 'tokens' : 'token'; var lastRoller = '--'; var lastPrizeWon = '--'; var rollCounter = 0; var tipCounter = 0; var winners = []; var prizes = []; var minimumRollsToGetRareDice = parseInt(cb.settings.minimum_rolls); /**var numberOfSides = (cb.settings.die_type == 'Traditional') ? 6 : 10; *var maxOutcome = (cb.settings.die_type == 'Traditional') ? 13 : 21;*/ var dieImagePrefix = ':reddie'; 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(); } }); cb.onDrawPanel(function (user) { return { 'template': '3_rows_12_22_31', 'row1_label': 'Last prize won:', 'row1_value': lastPrizeWon, 'row2_label': 'Last player:', 'row2_value': lastRoller, 'row3_value': /*tipCounter + ' ' + langTokens + ' received */ 'Rolled ' + rollCounter + ' time(s)' }; }); cb.onEnter(function (user) { showAppAd(user['user']); }); 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; }); function roll(username) { rollCounter++; var die1 = Math.floor(Math.random() * 6+1); var die2 = Math.floor(Math.random() * 6+1); // convoluted logic to appease the dev gods on cb var randomNum = Math.ceil(Math.random() * (100 - minimumRollsToGetRareDice) + minimumRollsToGetRareDice); if (rollCounter == randomNum) { if ((die1 == 1) && (die2 != 1)) die1 = 7; if ((die2 == 1) && (die1 != 1)) die2 = 7; } var total = die1 + die2; var winner = false; if (total >= 1) { winner = true; var prize = cb.settings['prize_' + total]; } else { winner = false; var prize = 'Thank You!'; } var prizeIndex = prizes.indexOf(prize); /*if (prizeIndex >= 0) prize = 'Thank You!';*/ var msg = dieImagePrefix + die1 + " " + dieImagePrefix + die2 + "\n"; msg += username + " rolled a " + total + "! \n".toUpperCase(); msg += "Roll #" + rollCounter + " | Prize: " + prize; var textColor = '#000000'; var bgColor = '#D9FAD7'; if (winner) textColor = '#067D00'; if (total == 13) { bgColor = '#FFDBF3'; textColor = '#A805A6'; } cb.sendNotice(msg, '', bgColor, textColor, 'bold'); lastPrizeWon = prize; winners.push("Roll #" + rollCounter + " (" + total + "): " + username + " - " + prize); cb.drawPanel(); } function setPrizes() { var rareText = ''; for (var i = 1; i <= 13; i++) { if (i == 13) rareText = " (VERY RARE)"; prizes.push(cb.settings['prize_' + i] + rareText); } } function showPrizes(username) { if (prizes.length) { var rareText = ''; var msg = "##### POSSIBLE PRIZES #####"; for (var i = 1; i <= 13; i++) { if (i == 13) rareText = " (VERY RARE)"; if (prizes.indexOf(cb.settings['prize_' + i] + rareText) >= 0) msg += "\nRoll " + i + " - " + cb.settings['prize_' + i] + rareText; } } else { var msg = "SORRY! There are no prizes left in the list, but thank you for the tip. :thumbup"; } cb.sendNotice(msg, username, '#DBFBFF', '#008596', 'bold'); } function showPrizesWon(username) { var msg = "##### LAST 40 WINNERS #####"; msg += "\nList sorted in chronological order"; if (winners.length == 0) { cb.sendNotice('No one has won anything yet. Roll the dice to win a prize!', 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'); } } function advertise() { showAppAd(); cb.setTimeout(advertise, parseInt(cb.settings.notice_wait_time) * 60000); } function showAppAd(username) { var msg = ""; if (username != undefined) { msg += "Welcome, " + username + " to :bonniebraids room \n We are playing littlebonnie's Roll the Dice)) \n"; } /*else { msg += "littlebonnie's Roll the Dice by ganja_babe \n"; }*/ msg += "Each roll reveals a prize. There are " + prizes.length + " possible prizes. \n"; msg += "Each prize won will stay on the list.\n"; msg += "Tip " + cb.settings.tokens + " " + langTokens + " to roll the dice. \n"; msg += "Type \"/prizes\" to see the list of prizes. \n"; msg += "Type \"/prizes all\" to send the list to all viewers if you're a mod or the broadcaster.\n"; msg += "Type \"/winners\" to see a list of the last 20 winners."; cb.sendNotice(msg, username, '', '#15A6B0', 'bold'); } function init() { setPrizes(); advertise(); cb.changeRoomSubject('Tip ' + cb.settings.tokens + ' tokens to roll the dice! PM 10 tokensssss'); /*notices();*/ } function notices() { var msg; var colour; var MAXITEMS = 4; var msg0 = ":hello"; var msg1 = "Private discussions in PM. PM 10 tokenssss."; var msg2 = "Join littlebonnie's fan club and turn green, like my eyes))"; var msg3 = ":catfollow_a1"; var color1 = '#FF1493'; var color2 = '#228B22'; var color3 = '#FFD700'; while (msgs[i+1] == 0) { //skip empty messages i++;j++; i %= MAXITEMS; j %= MAXITEMS; } msg = msgs[i+1]; i++; i %= MAXITEMS; colour = color[j+1]; j++; j %= MAXITEMS; cb.sendNotice(msg,'','',colour,'bold'); cb.setTimeout(notices, (1 * 60000)); /*cb.sendNotice(pm, '', '', '#FF1493', 'bold'); **cb.sendNotice(fanclub, '', '', '#228B22', 'bold'); **cb.sendNotice(follow, '', '', '#FFD700', 'bold');*/ } cb.setTimeout(notices, (0.5 * 60000)); init();
© Copyright Chaturbate 2011- 2025. All Rights Reserved.