Apps Home
|
Create an App
Luna Pop The Balloons
Author:
philthytest
Description
Source Code
Launch App
Current Users
Created by:
Philthytest
/** * App: Pop The Balloon * Version: 1.15 * Author: zingknaat * Date: 01.15.14 */ var totalBalloons = 50; var totalBalloonsPopped = 0; var totalPrizesRemaining = 0; var totalNumberOfPrizes = 0; var balloonBoard = Array(); var prizeLocations = Array(); var prizes = Array(); var availableLocations = Array(); var langTokens = (cb.settings.tokens > 1) ? 'tokens' : 'token'; var winners = Array(); cb.settings_choices = [ {name:'tokens', type:'int', minValue:1, maxValue:100, label:'Cost per Try (in tokens)', defaultValue:5}, {name:'notice_wait_time', type:'choice', label:'Notification Time (in minutes)', choice1:1, choice2:2, choice3:3, choice4:4, choice5:5, choice6:10, choice7:15, choice8:20, choice9:25, choice10:30, choice11:45, choice12:60, defaultValue:10}, {name:'prize_1', type:'str', label:'Prize #1 (example: butt flash)'}, {name:'prize_2', type:'str', label:'Prize #2 (optional)', required:false}, {name:'prize_3', type:'str', label:'Prize #3 (optional)', required:false}, {name:'prize_4', type:'str', label:'Prize #4 (optional)', required:false}, {name:'prize_5', type:'str', label:'Prize #5 (optional)', required:false}, {name:'prize_6', type:'str', label:'Prize #6 (optional)', required:false}, {name:'prize_7', type:'str', label:'Prize #7 (optional)', required:false}, {name:'prize_8', type:'str', label:'Prize #8 (optional)', required:false}, {name:'prize_9', type:'str', label:'Prize #9 (optional)', required:false}, {name:'prize_10', type:'str', label:'Prize #10 (optional)', required:false}, {name:'prize_11', type:'str', label:'Prize #11 (optional)', required:false}, {name:'prize_12', type:'str', label:'Prize #12 (optional)', required:false}, {name:'prize_13', type:'str', label:'Prize #13 (optional)', required:false}, {name:'prize_14', type:'str', label:'Prize #14 (optional)', required:false}, {name:'prize_15', type:'str', label:'Prize #15 (optional)', required:false}, {name:'prize_16', type:'str', label:'Prize #16 (optional)', required:false}, {name:'prize_17', type:'str', label:'Prize #17 (optional)', required:false}, {name:'prize_18', type:'str', label:'Prize #18 (optional)', required:false}, {name:'prize_19', type:'str', label:'Prize #19 (optional)', required:false}, {name:'prize_20', type:'str', label:'Prize #20 (optional)', required:false}, {name:'prize_21', type:'str', label:'Prize #21 (optional)', required:false}, {name:'prize_22', type:'str', label:'Prize #22 (optional)', required:false}, {name:'prize_23', type:'str', label:'Prize #23 (optional)', required:false}, {name:'prize_24', type:'str', label:'Prize #24 (optional)', required:false}, {name:'prize_25', type:'str', label:'Prize #25 (optional)', required:false}, ]; cb.onTip(function (tip) { if(totalBalloonsPopped < totalBalloons) { if(parseInt(tip['amount']) >= cb.settings.tokens) { var numberOfDarts = Math.floor(parseInt(tip['amount'])/cb.settings.tokens); cb.sendNotice(tip['from_user'] + " is throwing " + numberOfDarts + " dart(s).", "", "#E6F5FA", "", "bold"); for(var dart=0;dart<numberOfDarts;dart++) { throwDart(tip['from_user']); } drawBoard(); } cb.drawPanel(); } }); cb.onDrawPanel(function(user) { return { 'template': '3_rows_12_22_31', 'row1_label': 'Prizes Remaining', 'row1_value': totalPrizesRemaining + ' out of ' + totalNumberOfPrizes, 'row2_label': 'Balloons Popped', 'row2_value': totalBalloonsPopped + ' out of ' + totalBalloons, 'row3_value': 'Tip ' + cb.settings.tokens + ' ' + langTokens + ' to throw a dart.' } }); cb.onEnter(function(user) { var notices = "Welcome " + user['user'] + ". We're playing Pop The Balloon \n"; notices += "Tip " + cb.settings.tokens + " " + langTokens + " to throw a dart. \n"; notices += "Type /board to show the board. \n"; notices += "Type /prizes to see all " + totalNumberOfPrizes + " prizes.\n"; notices += "Type /winners to see a list of the last 20 winners."; cb.sendNotice(notices, user['user'], '', '#BF6600', 'bold'); }); cb.onMessage(function(msg) { if(msg['m'].trim().substring(0,6) == '/board') drawBoard(msg); if(msg['m'].trim().substring(0,7) == '/prizes') showPrizes(msg); if(msg['m'].trim().substring(0,8) == '/winners') showWinners(msg['user']); }); function resetBoard() { for(var i=0; i<totalBalloons; i++) { balloonBoard[i] = 'O'; availableLocations[i] = i; } } function randomLocation() { return availableLocations[Math.floor(Math.random()*availableLocations.length)]; } function getUsername(user) { if (user != null || user != undefined) { return user['user']; } return ''; } function showPrizes(user) { var displayUsername = getUsername(user); var prizeNum = 0; var notices = '**** PRIZES REMAINING ****\n'; for(var p=0; p<prizes.length; p++) { prizeNum++; notices += "Prize #" + prizeNum + ": " + prizes[p]; if((prizes.length > 1) && (prizes.length != prizeNum)) { notices += " \n"; } } cb.sendNotice(notices, displayUsername, '#EBFFFF', '', 'bold'); } function showWinners(username) { winners.reverse(); var notices = "\n**** LAST 20 WINNERS ****\n"; if(winners.length == 0) { cb.sendNotice('No one has won anything yet. Pop a balloon to reveal a prize!', username, '', '', 'bold'); } else { winners.slice(0,20); var prizeNum = 1; for(var i=0; i<winners.length;i++) { notices += prizeNum + ") " + winners[i] + " \n"; prizeNum++; } cb.sendNotice(notices, username, '#CCFF99', '', 'bold'); } } function calculateTotalNumberOfPrizes() { for(var i=1; i<=25;i++) { if(cb.settings['prize_' + i]) { totalNumberOfPrizes++; prizes.push(cb.settings['prize_' + i]); } } totalPrizesRemaining = totalNumberOfPrizes; } function randomizePrizeLocation() { for(var i=0; i<totalNumberOfPrizes; i++) { prizeLocations[i] = randomLocation(); } } function getPrize() { var prize = prizes.pop(); totalPrizesRemaining = prizes.length; return prize; } function throwDart(user) { var location = randomLocation(); var notices = ""; balloonBoard[location] = 'X'; var locationIndex = availableLocations.indexOf(location); availableLocations.splice(locationIndex,1); if(totalBalloonsPopped < totalBalloons) { totalBalloonsPopped++; } if(prizeLocations.indexOf(location) != -1) { var locationIndex = prizeLocations.indexOf(location); prizeLocations.splice(locationIndex,1); var prize = getPrize(); notices += "WE GOT A WINNER! " + user + " won a prize!\n"; notices += "Prize: " + prize; cb.sendNotice(notices, "", "#12800D", "#FFFFFF", "bold"); winners.push(user + ' won: ' + prize); } else { cb.sendNotice("Sorry, " + user + ". You didn't win anything. Better luck next time!", "", "", "#CC0000", "bold"); } } function drawBoard(user) { var row = ''; var col = 1; var displayUsername = getUsername(user); var notices = ""; var rowNum = 1; for(var b=0; b<totalBalloons; b++) { row += balloonBoard[b] + ' '; if(col%10 == 0) { if(rowNum != 5) row += "\n"; notices += row; row = ''; rowNum++; } col++; } cb.sendNotice(notices, displayUsername, '', '', 'bold'); } function advertise() { var notices = "Pop The Balloon! by zingknaat \n"; notices += "Tip " + cb.settings.tokens + " " + langTokens + " to throw a dart. \n"; notices += "Type /board to show the board. \n"; notices += "Type /prizes to see all " + totalNumberOfPrizes + " prizes.\n"; notices += "Type /winners to see a list of the last 20 winners."; if(totalBalloonsPopped < totalBalloons) { cb.sendNotice(notices, '', '', '#AB001C'); cb.setTimeout(advertise, cb.settings.notice_wait_time * 60000); } } function init() { cb.changeRoomSubject('Pop the balloon to reveal a prize'); resetBoard(); calculateTotalNumberOfPrizes(); randomizePrizeLocation(); advertise(); } init();
© Copyright Chaturbate 2011- 2025. All Rights Reserved.