Apps Home
|
Create an App
Jinjobot
Author:
jinjobot_test
Description
Source Code
Launch App
Current Users
Created by:
Jinjobot_Test
/* Title: "JinjoBot Author: a_cutie123 Version: 1.0.0 (09/06/2018) */ var HEART = '\u2665'; // ♥ BDIAMOND = '\u2666'; // ♦ BSTAR = '\u2605'; // ★ var tip_amt = 0; var separator_char = "| "; var msg; var MAXITEMS=20; var tipmenuprice = []; var tipmenuitem= []; var MAXSEP = 9; var guessedNumbers = []; var winner = false; var amount; var strdash = "~~~~~~~~~~~~~~~~~~~~~~~~~~~~"; var nl = '\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501'; var slugtimer = 2.5; var msg_prize; separators = [ {label:'Hearts',shortcut:':heart2'}, {label:'Glitter',shortcut:':pixelglitter'}, {label:'Flowers',shortcut:':tinyflower2'}, {label:'Bow',shortcut:':bluebow'}, {label:'Hearts2',shortcut:':pixelheart'}, {label:'Smiley',shortcut:':smile'}, {label:'Text Heart',shortcut:HEART}, {label:'Text Diamond',shortcut:BDIAMOND}, {label:'Text Star',shortcut:BSTAR}, ] cb.settings_choices = [ {name: 'chat_ad', type:'int', minValue: 1, maxValue: 999, defaultValue: 1, label: 'Delay in minutes between notice being displayed (minimum 1)'}, {name: 'sepchar', type: 'choice', choice1: 'Vertical Bar', choice2: 'Hearts', choice3:'Glitter',choice4:'Flowers',choice5:'Bow',choice6:'Hearts2',choice7:'Smiley',choice8:'Text Heart', choice9:'Text Diamond', choice10:'Text Star', defaultValue: 'Vertical Bar', label: "Separator character"}, {name:'item1', type:'str', label:'Item 1 (eg 10--flash tits)',}, {name:'item2', type:'str', required: false, label:'Item 2',}, {name:'item3', type:'str', required: false, label:'Item 3',}, {name:'item4', type:'str', required: false, label:'Item 4',}, {name:'item5', type:'str', required: false, label:'Item 5',}, {name:'item6', type:'str', required: false, label:'Item 6',}, {name:'item7', type:'str', required: false, label:'Item 7',}, {name:'item8', type:'str', required: false, label:'Item 8',}, {name:'item9', type:'str', required: false, label:'Item 9',}, {name:'item10', type:'str', required: false, label:'Item 10',}, {name:'item11', type:'str', required: false, label:'Item 11',}, {name:'item12', type:'str', required: false, label:'Item 12',}, {name:'item13', type:'str', required: false, label:'Item 13',}, {name:'item14', type:'str', required: false, label:'Item 14',}, {name:'item15', type:'str', required: false, label:'Item 15',}, {name:'item16', type:'str', required: false, label:'Item 16',}, {name:'item17', type:'str', required: false, label:'Item 17',}, {name:'item18', type:'str', required: false, label:'Item 18',}, {name:'item19', type:'str', required: false, label:'Item 19',}, {name:'item20', type:'str', required: false, label:'Item 20',}, {name:'noticecolor', type:'str', label:'Notice color (html code default magenta #cc0066)', defaultValue: '#cc0066'}, { name: 'roll_price', type: 'int', minValue: 1, label: 'How much do you want to charge per dice roll?', defaultValue: 24 }, { name: 'multirolls', type: 'int', minValue: 1, label: 'What is the maximum number of rolls you want a user to be able to make in a single tip? (set to 1 to disable) Example: If you set this to 3 and you charge 33 tokens per roll, a user could tip 66 for 2 rolls or 99 for 3 rolls. Any other tip amounts will be ignored.', defaultValue: 5 }, { name: 'notice_wait_time', type: 'choice', label: 'In minutes, how often should the app advertise itself?', choice1: 5, choice2: 10, choice3: 15, choice4: 20, choice5: 25, choice6: 30, choice7: 45, choice8: 60, defaultValue: 10 }, { name: 'change_room_subject', type: 'choice', label: 'Change room subject when using this bot?', choice1: 'Yes', choice2: 'No', defaultValue: 'Yes' }, {name: 'prize_1', type: 'str', label: 'Prize for rolling 1', defaultValue: '.'}, {name: 'prize_2', type: 'str', label: 'Prize for rolling 2', defaultValue: 'Kudos'}, {name: 'prize_3', type: 'str', label: 'Prize for rolling 3', defaultValue: 'Mystery Chest'}, {name: 'prize_4', type: 'str', label: 'Prize for rolling 4', defaultValue: 'Change Underwear'}, {name: 'prize_5', type: 'str', label: 'Prize for rolling 5', defaultValue: 'Spank Ass x5'}, {name: 'prize_6', type: 'str', label: 'Prize for rolling 6', defaultValue: 'Just The Tip!'}, {name: 'prize_7', type: 'str', label: 'Prize for rolling 7', defaultValue: 'Lucky Chest'}, {name: 'prize_8', type: 'str', label: 'Prize for rolling 8', defaultValue: 'Suck Finger'}, {name: 'prize_9', type: 'str', label: 'Prize for rolling 9', defaultValue: 'Flash Ass'}, {name: 'prize_10', type: 'str', label: 'Prize for rolling 10', defaultValue: 'Spank Ass x10'}, {name: 'prize_11', type: 'str', label: 'Prize for rolling 11', defaultValue: 'Flash (your choice)'}, {name: 'prize_12', type: 'str', label: 'Prize for rolling 12', defaultValue: 'Flash Dick'}, {name: 'prize_13', type: 'str', label: 'Prize for rolling 13', defaultValue: '13 Body Rolls'}, {name: 'prize_14', type: 'str', label: 'Prize for rolling 14', defaultValue: '14 Push-ups'}, {name: 'prize_15', type: 'str', label: 'Prize for rolling 15', defaultValue: 'Spank Ass x15'}, {name: 'prize_16', type: 'str', label: 'Prize for rolling 16', defaultValue: 'Bend Over in Panties'}, {name: 'prize_17', type: 'str', label: 'Prize for rolling 17', defaultValue: 'Lotion Abs'}, {name: 'prize_18', type: 'str', label: 'Prize for rolling 18', defaultValue: 'Spread Ass'}, {name: 'prize_19', type: 'str', label: 'Prize for rolling 19', defaultValue: 'Finger Ass'}, {name: 'prize_20', type: 'str', label: 'Prize for rolling 20', defaultValue: 'Lotion Dick + Naked'}, {name: 'prize_21', type: 'str', label: 'Prize for rolling 21', defaultValue: 'Legendary Chest'}, {name: 'prize_22', type: 'str', label: 'Prize for rolling 22', defaultValue: 'Spank Ass x100'}, {name: 'prize_23', type: 'str', label: 'Prize for rolling 23', defaultValue: 'Secret Mystery Underwear'}, {name: 'guessPrize', type:'str', required: true, label:'Lucky Number Prize'}, {name: 'luckyNumber', type:'int', required: true, label:'Lucky Number'}, {name:'bj1', type:'str', required: false, label:'Bad Joke 1',}, {name:'bj2', type:'str', required: false, label:'Bad Joke 2',}, {name:'bj3', type:'str', required: false, label:'Bad Joke 3',}, {name:'bj4', type:'str', required: false, label:'Bad Joke 4',}, {name:'bj5', type:'str', required: false, label:'Bad Joke 5',}, {name:'bj6', type:'str', required: false, label:'Bad Joke 6',}, {name:'bj7', type:'str', required: false, label:'Bad Joke 7',}, {name:'bj8', type:'str', required: false, label:'Bad Joke 8',} ]; var roll_price = cb.settings.roll_price; var multiRolls = cb.settings.multirolls; var lastRollData = '--'; var rollCounter = 0; var tipCounter = 0; var winners = []; var lastNum = 0; //Used to prevent dice from resulting in the same prize twice consecutively var minimumRollsToGetRareDice = 10; var playerObj = {}; cb.onEnter(function (user) { msg = ""; var name = user['user'], status, msg = ""; if (user['in_fanclub']) { status = 'fan'; } else if (user['tipped_tons_recently']) { status = 'dark_purple'; } else if (user['tipped_alot_recently']) { status = 'light_purple'; } else if (user['tipped_recently']) { status = 'dark_blue'; } else if (user['has_tokens']) { status = 'light_blue'; } else { status = 'grey'; } switch (status) { case 'fan': createPlayer( name ); if (playerObj[name].loginReceived === false) { playerObj[name].loginReceived = true; awardItem( name,'free',1,false ); awardItem( name,'kudos',1,false ); awardItem( name,'kudos',1,false ); } msg += "Welcome back, " + name + "! :heart2 Here are your free rewards you can receive daily as a member of my fanclub!\n"; msg += "Tip 24 tokens to roll the dice! Maximum rolls per tip: 5 (tip 120 tokens). Get a Free Dice Roll if you roll 5 dice!\n"; msg += "Type '!help prizes' to see a list of prizes!\n"; msg += "Type '!help dice' for more information about the dice rolls."; break; case 'light_purple': case 'dark_purple': msg += ":welcome10 " + name, + "\n"; msg += "Tip 24 tokens to roll the dice! Maximum rolls per tip: 5 (HINT: tip 120 tokens and get a free 6th dice roll).\n"; msg += "Type '!help prizes' to see a list of prizes!\n"; msg += "Type '!help dice' for more information about the dice rolls."; msg += "Type '!help' to learn more about my room."; break; case 'dark_blue': msg += ":welcome10 " + name, + "\n"; msg += "Tip 24 tokens to roll the dice! Maximum rolls per tip: 5 (HINT: tip 120 tokens and get a free 6th dice roll).\n"; msg += "Type '!help prizes' to see a list of prizes!\n"; msg += "Type '!help dice' for more information about the dice rolls."; msg += "Type '!help' to learn more about my room."; case 'light_blue': msg += ":welcome10 " + name, + "\n"; msg += "Tip 24 tokens to roll the dice! Maximum rolls per tip: 5 (HINT: tip 120 tokens and get a free 6th dice roll).\n"; msg += "Type '!help prizes' to see a list of prizes!\n"; msg += "Type '!help dice' for more information about the dice rolls."; msg += "Type '!help' to learn more about my room."; break; case 'grey': msg += ":welcome10 " + name, + "\n"; msg += "Welcome to my room, " + name + "! I like to have a good time, so feel free to stick around and join in!\n"; msg += "Type '!help class' to see the items you can win by tipping 5 tokens!\n"; msg += "Type '!help' to learn more about my room!\n"; msg += "Feel free to chat, but please the follow the room rules or you will be silenced."; break; } /*if ((status !== 'fan') && (status !== 'grey')) { msg += "Join my fanclub for 80 tks a month and receive 2 Kudos and 1 Free Dice Roll (84 tks value) every day you log in!"; }*/ printTeal(msg,name); showMenu( name ); if (playerObj[name]) { playerObj[name].inRoom = true; } return; }); cb.onLeave(function (user) { var name = user['user']; if (playerObj[name]) { playerObj[name].inRoom = false; } return; }); cb.onTip(function (tip) { tip_amt=parseInt(tip['amount']); name = tip['from_user']; fan = tip['from_user_in_fanclub']; forMenu = false; tipHearts(name,tip_amt); createPlayer(name); k = playerObj[name].kudos; tippedFor = ""; msg = tip['message'].toLowerCase(); var hasKudos = (msg.indexOf('kudos') > -1); if ((hasKudos) && (k >= 1)) { for (var i = 1; i <= MAXITEMS; i++) { if ((tipmenuprice[i] > 30) && (tipmenuprice[i] < 100)) { if (tip_amt + 30 == tipmenuprice[i]) { cb.sendNotice(name + ' tipped for ' + tipmenuitem[i],'','',cb.settings['noticecolor'],'bold'); removeItem( name,'kudos',1,false ); tippedFor = tipmenuitem[i]; forMenu = true; } } else if (tipmenuprice[i] >= 100) { if (tip_amt + 50 == tipmenuprice[i]) { cb.sendNotice(tip['from_user'] + ' tipped for ' + tipmenuitem[i],'','',cb.settings['noticecolor'],'bold'); removeItem( name,'kudos',1,false ); tippedFor = tipmenuitem[i]; forMenu = true; } } else { if (tip_amt == tipmenuprice[i]) { cb.sendNotice(tip['from_user'] + ' tipped for ' + tipmenuitem[i],'','',cb.settings['noticecolor'],'bold'); tippedFor = tipmenuitem[i]; forMenu = true; } } } } else { for (var i = 1; i <= MAXITEMS; i++) { if (tip_amt == tipmenuprice[i]) { cb.sendNotice(tip['from_user'] + ' tipped for ' + tipmenuitem[i],'','',cb.settings['noticecolor'],'bold'); tippedFor = tipmenuitem[i]; forMenu = true; } } } if (!(forMenu)) { if (tip_amt === cutieChest.price) { purchaseChest( name ); } } if (tip_amt < 10) { printYellow( 'I feel you ' + name + ", don't stop now!") } else if (tip_amt >= 10) { printYellow( 'Thank you ' + name + "! I love it!") } else if (tip_amt >= 50) { printYellow( 'OMG YES ' + name + "! I love my fans <3") } else if (tip_amt >= 200) { printYellow( 'THANK YOU' + name + "!! You are the best!") } if (goal !== "") { tipsGoal += tip_amt; if (tipsGoal >= goalAmount) { print("Goal reached: " + goal + "!"); goal = ""; tipsGoal = 0; goalAmount = 0; goalData = ""; } else { var rem = goalAmount - tipsGoal; printEX( goal + " [" + rem + " tokens remaining]"); goalData = goal + " [" + tipsGoal + "/" + goalAmount + "]"; } } if (tippedFor === "Spank Ass x20") { msg2 = spankMultiplier( name,20 ); if (msg2) { cb.sendNotice(msg2,'','',cb.settings['noticecolor'],'bold'); } } if (tippedFor === "Bad Joke") { if (badJokes.length > 0) { print(badJokes[0]); badJokes.shift(); } } if (tippedFor === "Play Cards Against Humanity") { cardsSignup( name ); joinGame( name ); } if (tip_amt === 10) { if (msg.indexOf('pirate') !== -1) { changeClass(name, 'pirate',fan); } else if (msg.indexOf('succubus') !== -1) { changeClass(name, 'succubus',fan); } else if (msg.indexOf('demigod') !== -1) { changeClass(name, 'demigod',fan); } else { if (chance( 0.33)) { changeClass(name, 'pirate',fan); } else if (chance( 0.5)) { changeClass(name, 'succubus',fan); } else { changeClass(name, 'demigod',fan); } } } if (!(forMenu)) { // check to see if tip was for a dice roll if ((tip_amt) >= roll_price && (tip_amt <= 120) && (tip_amt % roll_price == 0)) { var numberOfRolls = (Math.floor((tip_amt) / roll_price)); var excl = [lastNum], add = 0; for (var i = 0; i < numberOfRolls; i++) { add = roll(name, false, excl); excl.push(add); } lastRoller = name; lastNum = add; tippedFor = "Dice"; switch (numberOfRolls) { case 1: if (chance(0.34)) { awardItem(name,"kudos",1,false); } else if (chance(0.02)) { awardItem(name,"free",1,false); } else if (chance(0.015)) { awardItem(name,"heart",60,false); } break; case 2: if (chance(0.045)) { awardItem(name,"free",1,false); } else if (chance(0.75)) { awardItem(name,"kudos",1,false); } else if (chance(0.65)) { awardItem(name,"heart",200,false); } break; case 3: awardItem(name,"kudos",1,false); if (chance(0.05)) { awardItem(name,"free",1,false); } break; case 4: awardItem(name,"kudos",1,false); if (chance(0.15)) { awardItem(name,"free",1,false); } break; case 5: awardItem(name,"free",1,false); if (chance(0.18)) { awardItem(name,"kudos",1,false); } break; } } } var freeRollChance = 0.025; if (playerObj[name].tipped < 1) { freeRollChance = 0.45; } playerObj[name].tipped += tip_amt; if ((tip_amt >= 30) && (forMenu) && (chance(freeRollChance))) { awardItem( name,'free',1,false ); } else if ((tippedFor === "Flash Ass") || (tippedFor === "Flash Dick") || (tippedFor === "Flash Feet")) { rewardOut( 'pirate','kudos',0.45,1,name ); } else if (tippedFor === "Dice") { rewardOut( 'demigod','free',0.18,1,name ); } else if (tip_amt >= 200) { rewardOut( 'succubus','heart',1,Math.floor(7 + (Math.random() * 7)) * tip_amt,name ); } else if (tip_amt >= 100) { rewardOut( 'succubus','heart',1,Math.floor(5 + (Math.random() * 6)) * tip_amt,name ); } else if (tip_amt >= 40) { rewardOut( 'succubus','heart',1,Math.floor(3 + (Math.random() * 4)) * tip_amt,name ); } else if (tip_amt >= 15) { rewardOut( 'succubus','heart',1,2 * tip_amt,name ); } cb.drawPanel(); showLoot(name,false); if (chance(0.5) && tip_amt > 30) { illegalChestPrices.push(tip_amt); } var minNumber = 10; var maxNumber = 129; var found = false; if (winner != true) { if (tip.amount == cb.settings.luckyNumber) { print("\n" + strdash + "\n :woohoo \n You have guessed the Lucky number !!!\n " + name + " wins " + cb.settings.guessPrize); print("Lucky Number: " + tip.amount + "\n" + strdash); winner = true; } else { if (guessedNumbers.indexOf(tip.amount) === -1 && tip.amount <= maxNumber && tip.amount >= minNumber) { updateBoard(); if (tippedFor !== "Dice") { print(strdash + "\nNot the lucky number - keep guessing\n" + strdash); if (chance(0.15)) { drawBoard(''); } else { printEX( "Type '!help board' to see what's left!" ); } } guessedNumbers.push(tip.amount); guessedNumbers.sort(function(a,b){ return a-b; }); } } } else { return; } }); cb.onMessage(function (input) { command = ''; name = input['user']; msg = input['m']; var lowermsg = msg.toLowerCase(); if (msg[0] !== '!') { //it's a regular message, handle it as such: if (lowermsg.indexOf('pm me') > -1 || lowermsg === 'pm' || lowermsg === 'show dick' || lowermsg === 'show cock' || lowermsg === 'show ass') { input['m'] = getMeme(); showMenu(name); return m; } if (playerObj[name]) { switch (playerObj[name].class) { case 'none': return input; break; case 'pirate': case 'succubus': case 'demigod': input['m'] = speakChange(input['m'], playerObj[name].class); break; } if (playerObj[name].heart > 0) { input['m'] = ('[' + playerObj[name].heart + '] ' + input['m'] ); if (name === king) { input['m'] = ':heart2 ' + input['m']; } } } return input; } else { br = input['m'].indexOf(' '); if (br === -1) { command = input['m'].slice(1); target = "no one" } else { command = input['m'].slice(1, br); target = input['m'].slice(br + 1); } command = command.toLowerCase(); } if ((input['user'] == cb.room_slug)) { switch (command) { case "kiss": awardItem( target,"kudos",1,false ); break; case "free": awardItem( target,"free",1,false ); break; case "heart": awardItem( target,"heart",1,false ); break; case "welcome": print( ":welcome10 " + target, target); input['X-Spam'] = true; break; case "goal250": goal = target; tipsGoal = 0; goalAmount = 250; print( "Goal set: " + target + " [250 tokens]" ); input['X-Spam'] = true; break; case "goal400": goal = target; tipsGoal = 0; goalAmount = 400; print( "Goal set: " + target + " [400 tokens]" ); input['X-Spam'] = true; break; case "goal1000": goal = target; tipsGoal = 0; goalAmount = 1000; print( "Goal set: " + target + " [1000 tokens]" ); input['X-Spam'] = true; break; case "goal2000": goal = target; tipsGoal = 0; goalAmount = 2000; print( "Goal set: " + target + " [2000 tokens]" ); input['X-Spam'] = true; break; case "rate": printEX( target + ', thank you for tipping! If you enjoyed the show, please remember to rate! Rating helps me gain more visibility, which helps me put on better shows!', target); input['X-Spam'] = true; break; case "rules": showRules(name); input['X-Spam'] = true; break; case "notif": showNotifier( target ); input['X-Spam'] = true; break; case "shirt": if (target === 'off') { clothes.shirt = false; print("Model's shirt is off",name) } if (target === 'on') { clothes.shirt = true; print("Model's shirt is on",name) } input['X-Spam'] = true; break; case "pants": if (target === 'off') { clothes.pants = false; print("Model's pants are off",name) } if (target === 'on') { clothes.pants = true; print("Model's pants are on",name) } input['X-Spam'] = true; break; case "underwear": if (target === 'off') { clothes.underwear = false; print("Model's underwear is off",name) } if (target === 'on') { clothes.underwear = true; print("Model's underwear is on",name) } input['X-Spam'] = true; break; case "menu": showMenu( '' ); input['X-Spam'] = true; break; case "dice": print( 'Tip 24 tks to roll the dice! \n Tip 120 tokens to roll the dice 5 times and get a 6th roll free!'); input['X-Spam'] = true; break; case "follow": print( ':FollowCandy'); input['X-Spam'] = true; break; case "class": print( "Tip 10 tokens to become a Demigod, Succubus, or Pirate! \n Type '!help class' to learn more!" ); input['X-Spam'] = true; break; case "signups": cardsSignup( name ); input['X-Spam'] = true; break; case "start": loadCards(); input['X-Spam'] = true; break; case "next": showRound(); input['X-Spam'] = true; break; case "finish": endGame(); input['X-Spam'] = true; break; case "pick": pickWinner( target ); input['X-Spam'] = true; break; } } else { //general commands switch (command) { case "help": print( "What is happening" ); showHelp(name,target.toLowerCase()); input['X-Spam'] = true; break; case "rules": showRules(name); input['X-Spam'] = true; break; case "loot": showLoot(name,true); input['X-Spam'] = true; break; case "freeroll": if (playerObj[name].free > 0) { removeItem( name,"free",1,false ); roll(name,true,[lastNum]); showLoot(name,false); } else { print( "You don't have any free rolls available!",name ); input['X-Spam'] = true; } break; case "join": joinGame( name ); input['X-Spam'] = true; break; case "pick": selectCard( name,target ); input['X-Spam'] = true; break; case "hand": showHand( name ); input['X-Spam'] = true; break; case "even": if (playerObj[name].class === "demigod") { print( "You used your demigod powers to make all your dice rolls result in even sums!",name ); playerObj[name].dice = 'even'; } else { print( "You must be a demigod to use that ability!",name ); } input['X-Spam'] = true; break; case "odd": if (playerObj[name].class === "demigod") { print( "You used your demigod powers to make all your dice rolls result in odd sums!",name ); playerObj[name].dice = 'odd'; } else { print( name,"You must be a demigod to use that ability!" ); } input['X-Spam'] = true; break; case "heart": if (playerObj[name].class === "succubus") { var amt = parseInt(target), pay = (amt * 0.01), hit = false; if (amt > playerObj[name].heart) { print('You do not have that many Heart Pieces!',name); break; } for (var i = 1; i <= MAXITEMS; i++) { if (pay == tipmenuprice[i]) { print( name + ' (the ' + playerObj[name].classTranslation + ') used ' + amt + ' Heart Pieces in place of a tip!'); print( name + ' tipped for !' + tipmenuitem[i]); hit = true; } } if (hit) { awardItem( name,'heart',Math.floor(amt * 0.1 * getLevel(name),true )); removeItem( name,'heart',amt,false ); showLoot( name,false ); } else { print('That is not a valid value - type !help menu to see the valid menu items. 100 Heart Pieces = 1 Token.',name); } } else { print( 'You must be a Succubus to trade in Heart Pieces for menu items!',name ); } input['X-Spam'] = true; break; } } return input; }); function createPlayer(target) { if (!(playerObj[target])) { playerObj[target] = {}; playerObj[target].kudos = 0; playerObj[target].free = 0; playerObj[target].gametickets = 0; playerObj[target].heart = 0; playerObj[target].dicerolled = 0; playerObj[target].tipped = 0; playerObj[target].class = ''; playerObj[target].classTranslation = ''; playerObj[target].dice = 'normal'; //for demigod, can be even, odd, or normal playerObj[target].loginReceived = false; playerObj[target].inRoom = true; playerObj[target].skills = { 'even': false, 'odd': false, 'redluck': 0, 'blackluck': 0, 'diceluck': 0 } playerObj[target].needsAmount = { 'kudos': false, 'free': false, 'heart': false }; playerObj[target].firstItem = { 'kudos': true, 'free': true, 'heart': true }; } return; } function changeClass(target, type, fan) { createPlayer(target); var heartBottom = 500, placeholder; if (fan) { heartBottom = 1500; } playerObj[target].class = type; placeholder = Math.max(Math.ceil(playerObj[target].heart/2), heartBottom); playerObj[target].heart = 0; awardItem( target,'heart',placeholder,true ); if (type === 'pirate') { playerObj[target].classTranslation = 'Plundering Pirate'; cb.sendNotice( target + " has become a Plundering Pirate!", '', '#cc0066', '#ffffff', 'bold'); cb.sendNotice( ":pirate", target); cb.sendNotice( "Ye have chosen to walk the path of a Plundering Pirate, now get that booty! Whenever ye demand slaps ye gets more than ye bargained for, and ye also may get some free Kudos whenever somebooty else asks for a flash!", target, '', cb.settings['noticecolor'],'bold'); } if (type === 'succubus') { playerObj[target].classTranslation = 'Friendly Neighborhood Succubus'; cb.sendNotice( target + " has become a Friendly Neighborhood Succubus!", '', '#cc0066', '#ffffff', 'bold'); cb.sendNotice( ":succubus", target); cb.sendNotice( "You are the Friendly Neighborhood Succubus! Now, let your demons out! You can trade in Heart Pieces for Tip Menu items, and you may feed on the lust of others and collect Heart Pieces whenever anyone else drops a tip!", target, '', cb.settings['noticecolor'],'bold'); } if (type === 'demigod') { playerObj[target].classTranslation = 'Deranged Demigod'; cb.sendNotice( target + " has become a Deranged Demigod!", '', '#cc0066', '#ffffff', 'bold'); cb.sendNotice( ":statue002", target); cb.sendNotice( "You're the Deranged Demigod! And that means you don't care what anyone thinks, you just want CUM. You can control your dice to only get !odd or !even results, and you may get free dice rolls whenever anyone else tries their luck!", target, '', cb.settings['noticecolor'],'bold'); } playerObj[target].needsAmount['heart'] = true; } function awardItem(target, item, number, silent) { createPlayer(target); if (!(number)) { number = 1; } if ((playerObj[target].class === 'succubus') && (item === 'heart')) { number = Math.ceil(number * 1.4); } playerObj[target][item] = Math.floor(playerObj[target][item] + number); var amt = (number === 1 ? "a" : number); var plural = (number === 1 ? "" : "s"); if (!(silent)) { playerObj[target].needsAmount[item] = true; if (item === "kudos") { msg = (target + ' received ' + amt + ' Kudos!') } else if (item === "free") { msg = (target + ' received ' + amt + ' Free Dice Roll' + plural + '!') } else if (item === "heart") { msg = (target + ' received ' + amt + ' Heart Piece' + plural + '!') } cb.sendNotice(msg, '', '#00a395', '#ffffff', 'bold'); } if ((playerObj[target].firstItem[item] === true)) { playerObj[target].firstItem[item] = false; if (item === "kudos") { msg = ("HOW TO USE: Type 'kudos' anywhere in your tip message to get 30 tokens off! You can instead get 50 tokens off items that are 100 tokens or more.") } else if (item === "free") { msg = ("HOW TO USE: Type '!freeroll' in the main chat to roll the dice for free!") } printEX(msg, target); } if (item === 'heart') { heartPiecesTotal += number; getKing( target ); } } function removeItem(target, item, silent) { createPlayer(target); playerObj[target][item] -= 1; playerObj[target].needsAmount[item] = true; if (!(silent)) { if (item === "kudos") { msg = (target + ' used a Kudos!') } else if (item === "free") { msg = (target + ' used a Free Dice Roll') } else if (item === "heart") { msg = (target + ' used a Heart Piece!') } cb.sendNotice(msg, '', '#00a395', '#ffffff', 'bold'); return msg; } } function showAmount(target, item) { amt = playerObj[target][item]; if (amt > 0) { if (item === "kudos") { cb.sendNotice( "You have " + amt + " Kudos [Type 'Kudos' in tip message to get a 30 tk off a menu item! 50 tks off of items of at least 100 tks!]", target, '', cb.settings['noticecolor'],'bold'); } if (item === "free") { cb.sendNotice( "You have " + amt + " Free Dice Roll(s) [type !Freeroll to roll the dice].", target, '', cb.settings['noticecolor'],'bold'); } if (item === "heart") { cb.sendNotice( "You have " + amt + " :heart2.", target, '', cb.settings['noticecolor'],'bold'); } } else { if (item === "kudos") { cb.sendNotice( "You are out of Kudos!.", target, '', cb.settings['noticecolor'],'bold'); } if (item === "free") { cb.sendNotice( "You are out of Free Dice Rolls!", target, '', cb.settings['noticecolor'],'bold'); } if (item === "heart") { cb.sendNotice( "You are out of Heart Pieces!", target, '', cb.settings['noticecolor'],'bold'); } } } function showLoot(target,showAll) { var items = ['kudos', 'free', 'heart']; for (var a in items) { if (playerObj[name].needsAmount[items[a]] || showAll) { showAmount( name,items[a] ); playerObj[name].needsAmount[items[a]] = false; } } } function chatAd() { show++; if (show >= notifications.length) { show -= notifications.length; } showNotifier( show ); createChest(); cb.setTimeout(chatAd, (cb.settings.chat_ad * 2 * 60000)); return; } cb.setTimeout(chatAd, (cb.settings.chat_ad * 60000)); function showNotifier( number ) { var showNotif; if ((isNaN(number))) { showNotif = 1; } else { showNotif = parseInt(number); } showNotif--; //this is so the counting starts at 1 from the front end if ((showNotif > notifications.length) || (showNotif < 0)) { showNotif = 0; } getNotification( showNotif ); //cb.setTimeout( showNotifier( showNotif + 2), (cb.settings.chat_ad * 60000 * 100000000)); return; } function getNotification( number ) { switch (notifications[number]) { case 'dice1': print( ":diceeee \n Tip 24 tks to roll the 9-sided dice! \n Win a Flash with the most common numbers! \n Type '!help dice' to see more information! or '!help prizes' to see a list of prizes!" ); break; case 'dice2': print( ":diceeee \n Tip 24 tks to roll the 9-sided dice! \n Win a Lucky Chest with a roll of 7 or 14! Roll the 14-sided dice to win amazing prizes! \n Type '!help dice' to see more information! or '!help prizes' to see a list of prizes!" ); break; case 'fans': print( "I love my fans! :heart2 " ); break; case 'flash1': showMenu(''); print( ":pikachupull" ); break; case 'flash2': showMenu(''); print( ":pikachulove" ); break; case 'help': print( "I run an experimental bot called 'Jinjobot' in my room. Type '!help' to see the special games you can play with me! \n :FollowCandy" ); break; case 'tipifyou1': print( ":privat \n Private is open! Ask me about what I do in private!" ); break; case 'tipifyou2': print( ":privat \n Private is open! Ask me about what I do in private!" ); break; case 'photos': sendToGroup( ":a_cutie123piecesofass ", ['dark_blue', 'light_purple', 'dark_purple'] ); sendToGroup( ":pikachuKiss ", ['light_blue'] ); break; case 'fanclub': print( ":fanclubMOW \n Type '!help fanclub' to learn about my fanclub!" ); break; } } function showRules(name) { msg = "Room Rules: "; msg += "- Be respectful to the model and other members of the room.\n"; msg += "- No excessive graphics in public chat (pm is ok).\n"; msg += "- No hate speech.\n"; msg += "- No demands (if you want something not on the tip menu, I may do it if you tip a reasonable amount for it).\n"; msg += "- No advertising other rooms.\n"; msg += "- Type '!help' to see more general help."; if (name === cb.room_slug) { name = ''; } print( msg,name ); } function showHelp(target,data) { msg = ""; print( target + ' is looking at the help for ' + data,cb.room_slug); if (data === 'pirate') { msg = "Plundering Pirate: \n"; msg += "- It's all about that booty.\n"; msg += "- LEVEL 1: +50% spanks when tipped for/rolled.\n"; msg += "- LEVEL 2: +100% spanks when tipped for/rolled.\n"; msg += "- LEVEL 3: +150% spanks when tipped for/rolled.\n"; msg += "- LEVEL 4: +200% spanks when tipped for/rolled.\n"; msg += "- LEVEL 5: +400% spanks when tipped for/rolled.\n"; msg += "- Chance to collect a Kudos whenever someone else tips for a flash.\n"; msg += ("Levels are 500 Heart Pieces (1) 1,500 Heart Pieces (2) 4,500 Heart Pieces (3) 20,000 Heart Pieces (4) 100,000 Heart Pieces (5)"); print( msg,target ); } else if (data === 'succubus') { msg = "Friendly Neighborhood Succubus: \n"; msg += "- A sadistic lover.\n"; msg += "- Can use !heart [number] to use heart pieces in place of a tokens for a tip menu item.\n" msg += "- LEVEL 1: Retains 10% of Heart Pieces spent while using !heart.\n"; msg += "- LEVEL 2: Retains 20% of Heart Pieces spent while using !heart.\n"; msg += "- LEVEL 3: Retains 30% of Heart Pieces spent while using !heart.\n"; msg += "- LEVEL 4: Retains 40% of Heart Pieces spent while using !heart.\n"; msg += "- LEVEL 5: Retains 50% of Heart Pieces spent while using !heart.\n"; msg += "- Collects Heart Pieces at 40% faster than the usual rate.\n"; msg += "- Chance to collect a Heart Pieces whenever someone else tips.\n"; msg += ("Levels are 500 Heart Pieces (1) 1,500 Heart Pieces (2) 4,500 Heart Pieces (3) 20,000 Heart Pieces (4) 100,000 Heart Pieces (5)"); print( msg,target ); } else if (data === 'demigod') { msg = "Deranged Demigod: \n"; msg += "- A perverted little imp.\n"; msg += "- LEVEL 1: Very slightly increased chance to roll a 14 while rolling the dice.\n"; msg += "- LEVEL 2: Slightly increased chance to roll a 14 while rolling the dice.\n"; msg += "- LEVEL 3: Somewhat increased chance to roll a 14 while rolling the dice.\n"; msg += "- LEVEL 4: Decently increased chance to roll a 14 while rolling the dice.\n"; msg += "- LEVEL 5: Significantly increased chance to roll a 14 while rolling the dice.\n"; msg += "- Can use !odd or !even to make sure that their dice rolls result in an odd or even sum.\n"; msg += "- Chance to collect a Free Dice Roll whenever someone else rolls the dice.\n"; msg += ("Levels are 500 Heart Pieces (1) 1,500 Heart Pieces (2) 4,500 Heart Pieces (3) 20,000 Heart Pieces (4) 100,000 Heart Pieces (5)"); print( msg,target ); } else if (data === 'class') { if ((!playerObj[target]) || (playerObj[target].class === 'none')) { print( "You currently do not have a class! Tip 10 tokens and put the word 'pirate', 'demigod', or 'succubus' in your tip note to to cast a spell on yourself and become one!\n Type !help pirate, !help succubus, and !help demigod to see what they do.",target ); return; } msg = playerObj[target].classTranslation + ": \n"; if (playerObj[target].class === 'pirate') { msg += "*** The Plundering Pirate: \n"; msg += "Whenever you tip for spanks, you will get more spanks than usual!\n"; msg += "You can also obtain Kudos whenever someone else tips for a flash!\n"; } else if (playerObj[target].class === 'succubus') { msg += "*** The Friendly Neighborhood Succubus: \n"; msg += "You can use Heart Pieces in place of tokens to tip the model! Type !heart [number] to do so.\n"; msg += "You obtain Heart Pieces faster, and when you use them with !heart you retain a percentage of the ones spent.\n"; msg += "You can also obtain Heart Pieces whenever someone else tips!\n"; } else if (playerObj[target].class === 'demigod') { msg += "*** The Deranged Demigod: \n"; msg += "Use !odd or !even to choose whether you want the sum of your dice to come up as even or odd!\n"; msg += "You have an increased chance of rolling 14 on the dice roll!\n"; msg += "You can also obtain a Free Dice Roll whenever someone else rolls the dice!\n"; } msg += ("Levels are 500 Heart Pieces (1) 1,500 Heart Pieces (2) 4,500 Heart Pieces (3) 20,000 Heart Pieces (4) 100,000 Heart Pieces (5)\n"); msg += ("You are currently Level " + getLevel(target) + ".\n"); msg += ("Type !help " + playerObj[target].class + " to see more details."); print( msg,target ); } else if (data === 'dice') { msg = "These are no ordinary dice; you can roll between a 1-9 on either die to get a variety of sums! You can roll the 14-sided die with extreme luck!\n"; msg += "Tip " + roll_price + " tokens to roll the dice!\n"; msg += "You can roll a maximum of 5 times in a single tip (" + (5*roll_price) + " tokens). \n"; msg += "If you roll 5 dice, you win a 6th dice roll for free!\n"; msg += "Type !help prizes to see the list of prizes."; print( msg,target ); } else if (data === 'prizes') { msg = "### PRIZES: " for (var i = 1; i <= 23; i++) { if (prizes.indexOf(cb.settings['prize_' + i]) >= 0) msg += "\nRoll " + i + " - " + cb.settings['prize_' + i]; } print( msg,target ); } else if (data === 'menu') { showMenu(target); } else if (data === 'board') { drawBoard(name); } else if (data === 'spam') { msg += 'Some messages are deleted and replaced with memes. You were sent here by one of them!', msg += "Type '!help' to see what else this bot can do!", print( msg,target ); } else if (data === 'fanclub') { msg = "Joining my fanclub is fun and easy - \n"; msg += "Benefits include: \n"; msg += "- 2 Kudos on login (once per day).\n"; msg += "- 1 Free Dice Roll on login (once per day).\n"; msg += "- 1500 Heart Pieces to start when you pick a class (automatically level 2).\n"; msg += "- A special welcome message when you enter.\n"; msg += "- Name announced on entry/leave."; print( msg,target ); } else { msg = "Useful commands: \n"; msg += "!help dice to see the dice.\n"; msg += "!help menu to see the tip menu.\n"; msg += "!help class to learn about the classes you can use in my room.\n"; msg += "!help fanclub to learn about my fanclub."; print( msg,target ); } return; } function print(msg,target) { cb.sendNotice( msg, target, '', cb.settings['noticecolor'],'bold'); return; } function printTeal(msg,target) { cb.sendNotice( msg, target, '', '#15A6B0','bold'); return; } function printEX(msg,target) { cb.sendNotice( msg, target, '#ad00e2', "#FFFFFF",'bold'); return; } function printYellow(msg,target) { cb.sendNotice( msg, target, '#f7e600', "#000000",'bold'); return; } function sendToGroup(msg,target) { cb.sendNotice( msg, '', '', cb.settings['noticecolor'],'bold',target); return; } function roll( username,free,excl ) { rollCounter++; total = 0; while ((excl.indexOf(total) !== -1) || (total < 2) || (demigodDice( username,total ))) { var die1 = Math.floor(Math.random() * 9) + 1; var die2 = Math.floor(Math.random() * 9) + 1; // see if there's a chance we can roll a rare die if (rollCounter > minimumRollsToGetRareDice) { if (chance(rareDice(username))) { die1 = 14; } } var total = die1 + die2; var winner = false; } if (total >= 1) { winner = true; var prize = cb.settings['prize_' + total]; } else { winner = false; var prize = 'A Thank You!'; } var msg = toDiePrefix(die1) + " " + toDiePrefix(die2) + "\n"; if (total > 17) { msg += (username + " rolled a " + total + "!!!! \n").toUpperCase(); } else { msg += username + " rolled a " + total + "! \n"; } msg += "Roll #" + rollCounter + " | Prize: " + prize; var textColor = '#FFFFFF'; var bgColor = '#0000FF'; cb.sendNotice(msg, '', bgColor, textColor, 'bold'); var msg2 = false; switch (prize) { case "Spank Ass x5": msg2 = spankMultiplier(username,5); if (msg2) { cb.sendNotice(msg2, '', '',cb.settings['noticecolor'],'bold'); } break; case "Spank Ass x10": msg2 = spankMultiplier(username,10); if (msg2) { cb.sendNotice(msg2, '', '',cb.settings['noticecolor'],'bold'); } break; case "Spank Ass x15": msg2 = spankMultiplier(username,15); if (msg2) { cb.sendNotice(msg2, '', '',cb.settings['noticecolor'],'bold'); } break; case "Spank Ass x100": msg2 = spankMultiplier(username,100); if (msg2) { cb.sendNotice(msg2, '', '',cb.settings['noticecolor'],'bold'); } break; case "Kudos": awardItem( username,"kudos",1,false ); break; case "Mystery Chest": if (chance(0.45) && (playerObj[username].class !== '')) { msg2 = "The Mystery Chest contained 2,000 Heart Pieces!"; cb.sendNotice(msg2, '', bgColor, textColor, 'bold'); awardItem( username,"heart",2000,false ); } else if (chance(0.25)) { msg2 = "The Mystery Chest contained a change in underwear!"; cb.sendNotice(msg2, '', bgColor, textColor, 'bold'); } else if (chance(0.35)) { msg2 = "The Mystery Chest contained an ass spank!"; cb.sendNotice(msg2, '', bgColor, textColor, 'bold'); } else { msg2 = "The Mystery Chest contained a Kudos!"; cb.sendNotice(msg2, '', bgColor, textColor, 'bold'); awardItem( username,"kudos",1,false ); } if (playerObj[username].class === 'pirate') { msg2 = username + ' (the Plundering Pirate) found extra loot in the Chest!'; cb.sendNotice(msg2, '', bgColor, textColor, 'bold'); awardItem( username,"kudos",1,false ); awardItem( username,"heart",750,false ); } break; case "Lucky Chest": msg2 = "The Lucky Chest contained two Free Dice Rolls!!"; cb.sendNotice(msg2, '', bgColor, textColor, 'bold'); awardItem( username,"free",1,false ); awardItem( username,"free",1,false ); if (chance(0.45)) { msg2 = "The Lucky Chest also contained a Kudos!"; cb.sendNotice(msg2, '', bgColor, textColor, 'bold'); awardItem( username,"kudos",1,false ); } else if (chance(0.18)) { msg2 = "The Lucky Chest also contained two Kudos!"; cb.sendNotice(msg2, '', bgColor, textColor, 'bold'); awardItem( username,"kudos",1,false ); awardItem( username,"kudos",1,false ); } if (playerObj[username].class === 'pirate') { msg2 = username + ' (the Plundering Pirate) found extra loot in the Chest!'; cb.sendNotice(msg2, '', bgColor, textColor, 'bold'); awardItem( username,"kudos",1,false ); awardItem( username,"heart",1200,false ); } break; case "Legendary Chest": if (chance(0.65)) { msg2 = "The Legendary Chest contained FIVE FREE DICE ROLLS!!"; cb.sendNotice(msg2, '', bgColor, textColor, 'bold'); awardItem( username,"free",1,false ); awardItem( username,"free",1,false ); awardItem( username,"free",1,false ); awardItem( username,"free",1,false ); awardItem( username,"free",1,false ); msg2 = "The Legendary Chest also contained two kudos!!"; cb.sendNotice(msg2, '', bgColor, textColor, 'bold'); awardItem( username,"kudos",1,false ); awardItem( username,"kudos",1,false ); } else if (chance(0.55)) { msg2 = "The Legendary Chest contained SIX FREE DICE ROLLS!!"; cb.sendNotice(msg2, '', bgColor, textColor, 'bold'); awardItem( username,"free",1,false ); awardItem( username,"free",1,false ); awardItem( username,"free",1,false ); awardItem( username,"free",1,false ); awardItem( username,"free",1,false ); awardItem( username,"free",1,false ); msg2 = "The Legendary Chest also contained three kudos!!"; cb.sendNotice(msg2, '', bgColor, textColor, 'bold'); awardItem( username,"kudos",1,false ); awardItem( username,"kudos",1,false ); awardItem( username,"kudos",1,false ); } else { msg2 = "The Legendary Chest contained SEVEN FREE DICE ROLLS!!"; cb.sendNotice(msg2, '', bgColor, textColor, 'bold'); awardItem( username,"free",1,false ); awardItem( username,"free",1,false ); awardItem( username,"free",1,false ); awardItem( username,"free",1,false ); awardItem( username,"free",1,false ); awardItem( username,"free",1,false ); awardItem( username,"free",1,false ); msg2 = "The Legendary Chest also contained three kudos!!"; cb.sendNotice(msg2, '', bgColor, textColor, 'bold'); awardItem( username,"kudos",1,false ); awardItem( username,"kudos",1,false ); awardItem( username,"kudos",1,false ); } if (playerObj[username].class === 'pirate') { msg2 = username + ' (the Plundering Pirate) found extra loot in the Chest!'; awardItem( username,"free",1,false ); awardItem( username,"free",1,false ); awardItem( username,"kudos",1,false ); awardItem( username,"heart",25000,false ); } break; } lastRollData = ('' + username + ' rolled ' + total + ' - ' + prize + '!'); winners.push("Roll #" + rollCounter + " (" + total + "): " + username + " - " + prize); return total; } function chance( value ) { if (value > Math.random()) { return true; } return false; } function toDiePrefix( die ) { if (die === 9) { return (':reddie' + die); } return (':Reddie' + die) } function speakChange( msg,type ) { if (type === "pirate") { var dict = { "hello": "ahoy", "Hello": "Ahoy", " hey ": " avast there ", "Hey ": "Avast there ", "Hey, ": "Avast there,", "hey, ": "avast there,", " hi ": " avast ", "Hi ": "Avast! ", "Hi.": "Avast!", "Hi!": "Avast!!", "Yes ": "Aye ", " yes ": " aye ", "understand": "savvy", " my ": " me ", " My ": " Me ", " you ": " ye ", " your ": " yer ", "You ": "Ye ", " tokens": " pieces of booty", " tks ": " pieces of booty ", " dick": " Jolly Roger", " DICK": " JOLLY ROGER", "penis": " Jolly Roger", "cock": "Jolly Roger", } for (var k in dict) { while (msg.indexOf(k) !== -1) { msg = msg.replace(k, dict[k]); } } } else if (type === "succubus") { if (chance( 0.24 )) { msg = msg + " :heart5" } else if (chance( 0.04 )) { msg = msg + " :heart5 :heart5 :heart5" } } else if (type === "demigod") { var msg = msg.split( " " ); var msg2 = ""; for (var a in msg) { if (chance( 0.105 )) { msg2 += "CUM "; } else { msg2 += msg[a] + " "; } } msg = msg2; } return msg; } cb.onDrawPanel(function (user) { return { 'template': '3_rows_12_22_31', 'row1_label': 'Goal: ', 'row1_value': goalData, 'row2_label': 'Last dice roll:', 'row2_value': lastRollData, 'row3_label': 'Total Heart Pieces: ', 'row3_value': heartPiecesTotal }; }); function showMenu( target ) { msg = ' -- ### TIP MENU ### ------------------------ \n'; for (i=0;i<=MAXSEP-1;i++) { if (cb.settings['sepchar'] == separators[i].label) { separator_char = separators[i].shortcut + ' '; } } for (i=1;i<=MAXITEMS;i++) { var tmp; tmp=cb.settings['item' + i]; if (tmp) { var arr= tmp.split('--'); if (arr[1]===undefined) { cb.sendNotice('Error-You need two dashes to separate the tip amount and menu item for item no '+ i,'','',cb.settings['noticecolor'],'bold'); } else { var amt=parseInt(arr[0]); if (amt>0) { tipmenuprice[i]=amt; tipmenuitem[i]=arr[1]; if (i>=2) { msg += separator_char; } msg += arr[1] + '(' + amt + ') '; } } } } msg += '\n -- ### TIP MENU ### ------------------------'; printTeal(msg, target); } function getKing(name) { createPlayer(name); if ((playerObj[name].heart > 150) && (king !== name)) { if ((king !== '') && ((playerObj[king]))) { if ((playerObj[king].heart < playerObj[name].heart)) { king = name; print( "We have a new Cutie King: " + name + "!! :heart2" ); } } else { king = name; print( "We have a new Cutie King: " + name + "!! :heart2" ); } } if (playerObj[king]) { cutieKingData = (king + ': ' + playerObj[king].heart ); } else { cutieKingData = 'None'; } return; } /* Level related stuff */ function getLevel(name) { if (playerObj[name].heart >= 100000) { return 5; } else if (playerObj[name].heart >= 25000) { return 4; } else if (playerObj[name].heart >= 4500) { return 3; } else if (playerObj[name].heart >= 1500) { return 2; } else if (playerObj[name].heart >= 500) { return 1; } return 0; } function spankMultiplier(name,val) { if (playerObj[name].class !== 'pirate') { return false; } newval = val; if (getLevel(name) === 1) { newval = (Math.floor(1.5 * val)); } else if (getLevel(name) === 2) { newval = (Math.floor(2 * val)); } else if (getLevel(name) === 3) { newval = (Math.floor(2.5 * val)); } else if (getLevel(name) === 4) { newval = (Math.floor(3 * val)); } else if (getLevel(name) === 5) { newval = (Math.floor(5 * val)); } return (name + ' wants more booty! Now it be ' + newval + ' Ass Spanks!'); } function demigodDice(name,value) { if (playerObj[name].class !== 'demigod') { return false; } else { if ((playerObj[name].dice === 'even') && (value % 2 !== 0)) { return true; } if ((playerObj[name].dice === 'odd') && (value % 2 === 0)) { return true; } return false; } } function rareDice(name,value) { if (playerObj[name].class !== 'demigod') { return 0.0275; } else { levels = [0, 0.0325, 0.0375, 0.0425, 0.0475, 0.075]; return (levels[getLevel( name )] ); } } function rewardOut( type,rew,value,num,player ) { if (!(chance(value))) { return false; } var arr = Object.keys(playerObj), i = 0, j = 0, pl = ''; while ((i < 20)) { j = Math.floor( Math.random() * arr.length ); pl = arr[j]; i++; if (pl === player) { continue; } if (!(playerObj[pl].inRoom)) { continue; } if (playerObj[pl].class !== type) { continue; } print( pl + " (the " + playerObj[pl].classTranslation + ") snagged a prize!" ); awardItem( pl,rew,num,false ); break; } } function setPrizes() { for (var i = 1; i <= 23; i++) { prizes.push(cb.settings['prize_' + i]); } } function initiateChest() { cutieChest = null; illegalChestPrices = []; contentsTranslation = { 'free': "1 Free Dice Roll", 'free2': "2 Free Dice Rolls", 'free3': "3 Free Dice Rolls", 'kudos': "1 Kudos", 'kudos2': "2 Kudos", 'kudos3': "3 Kudos", 'quickd': "A Quick Dick Flash", 'quicka': "A Quick Ass Flash", 'lotiondick': "Lotion Dick", 'lotionass': "Lotion Ass", 'lotionabs': "Lotion Abs", 'shakebutt': "Shake Booty", 'spreadass': "Spread Asshole", 'kiss': "a Kiss", 'suckf': "Suck Finger", 'shirt': "Remove Shirt", 'pants': "Remove Pants", 'underwear': "Remove Underwear", 'spitd': "Spit on Dick" } possibleContents = [ 'free', 'free', 'free2', 'free3', 'kudos', 'kudos2', 'quickd', 'quicka', 'quicka', 'lotiondick', 'lotionabs', 'lotionass', 'shakebutt', 'spreadass', 'kiss', 'suckf', 'spitd', 'shirt', 'pants', 'underwear' ]; for (var a in tipmenuprice) { illegalChestPrices.push(tipmenuprice[a]) } for (var i = 1; i < 6; i++) { illegalChestPrices.push(roll_price * i); } } function createChest() { cutieChest = null, go = true, msg = ""; while (go) { go = generateChest(); } msg += ":treasureChest \n"; msg += "Tip " + cutieChest.price + " to see what's inside!"; //cutieChestTimer = cb.setTimeout( createChest( false ), 1000 * 2 * 60 ); print( msg ); return; } function generateChest() { cutieChest = null; var p = 0, contents = [], maxcontent, get, maxp; if (chance(0.06)) { maxContent = 1 } else if (chance(0.38)) { maxContent = 2 } else if (chance(0.75)) { maxContent = 3 } else { maxContent = 4 } if (chance(0.45)) { maxp = 25 } else if (chance(0.32)) { maxp = 45 } else if (chance(0.4)) { maxp = 85 } else if (chance(0.75)) { maxp = 120 } else { maxp = 500 } while (contents.length < maxContent) { contents = addContent(contents); } for (var c in contents) { get = contents[c]; if (get === 'free') { p+= (8 + (Math.random() * 5)); } else if (get === 'free2') { p+= (22 + (Math.random() * 12)); } else if (get === 'free3') { p+= (40 + (Math.random() * 20)); } else if (get === 'kudos') { p+= (0 + (Math.random() * 10)); } else if (get === 'kudos2') { p+= (15 + (Math.random() * 20)); } else if (get === 'kudos3') { p+= (32 + (Math.random() * 22)); } else if (get === 'quicka') { p+= (1 + (Math.random() * 12)); } else if (get === 'quickd') { p+= (3 + (Math.random() * 18)); } else if (get === 'lotionabs') { p+= (36 + (Math.random() * 18)); } else if (get === 'lotiondick') { p+= (24 + (Math.random() * 48)); } else if (get === 'lotionass') { p+= (52 + (Math.random() * 30)); } else if (get === 'shirt') { p+= (40 + (Math.random() * 40)); } else if (get === 'pants') { p+= (45 + (Math.random() * 45)); } else if (get === 'underwear') { p+= (79 + (Math.random() * 26)); } else if (get === 'spreadass') { p+= (110 + (Math.random() * 50)); } else if (get === 'kiss') { p+= ((2 + (Math.random() * 4)) * -1); } else if (get === 'suckf') { p+= (2 + (Math.random() * 10)); } else if (get === 'spitd') { p+= (80 + (Math.random() * 39)); } else if (get === 'shakebutt') { p+= (12 + (Math.random() * 50)); } } if (contents.length === 1) { if ((get === 'free') || (get === 'kudos') || (get === 'suckf')) { return true; } } if (contents.indexOf('kiss') !== -1) { p *= 0.85; } p+=10; if (contents.length > 1) { p += 5 } if (contents.length > 2) { p += 3 } if (contents.length > 3) { p += 2 } if (illegalChestPrices.indexOf(Math.floor(p)) === -1) { p = Math.floor(p); } else if (illegalChestPrices.indexOf(Math.ceil(p)) === -1) { p = Math.ceil(p); } else { return true; } if (p > maxp) { return true; } if (p < 10) { return true; } cutieChest = { 'price': p, 'contents': contents } return false; } function revealChest( seen ) { msg = "", i = 0; for (var c in cutieChest.contents) { i++; msg += contentsTranslation[ cutieChest.contents[c] ]; if (i === cutieChest.contents.length) { msg += "!"; } else { if (cutieChest.contents.length !== 2) { msg += ", "; } else { msg += " "; } if (i === cutieChest.contents.length - 1) { msg += "and "; } } } if (seen) { msg = ("The loot box contains " + msg) } else { msg = ("The loot box contained " + msg) } return msg; } function purchaseChest( buyer ) { print( revealChest() ); if (cutieChest.contents.indexOf('free') !== -1) { awardItem(buyer,'free',1,false); } if (cutieChest.contents.indexOf('free2') !== -1) { awardItem(buyer,'free',2,false); } if (cutieChest.contents.indexOf('free3') !== -1) { awardItem(buyer,'free',3,false); } if (cutieChest.contents.indexOf('kudos') !== -1) { awardItem(buyer,'kudos',1,false); } if (cutieChest.contents.indexOf('kudos2') !== -1) { awardItem(buyer,'kudos',2,false); } if (cutieChest.contents.indexOf('kudos3') !== -1) { awardItem(buyer,'kudos',3,false); } if (cutieChest.contents.indexOf('shirt') !== -1) { clothes.shirt = false; } if (cutieChest.contents.indexOf('pants') !== -1) { clothes.pants = false; } if (cutieChest.contents.indexOf('underwear') !== -1) { clothes.underwear = false; } cutieChest = { 'price': -1, 'contents': [] }; return false; } function addContent( list ) { var i = possibleContents[Math.floor(Math.random() * possibleContents.length)]; if (list.indexOf(i) === -1) { if ((i === 'free') || (i === 'free2') || i === 'free3') { if ((list.indexOf('free') !== -1) || (list.indexOf('free2') !== -1) || (list.indexOf('free3') !== -1)) { return list; } } if ((i === 'kudos') || (i === 'kudos2') || i === 'kudos3') { if ((list.indexOf('kudos') !== -1) || (list.indexOf('kudos2') !== -1) || (list.indexOf('kudos3') !== -1)) { return list; } } if ((i === 'quickd') || (i === 'lotiondick') || (i === 'spitd')) { if ((list.indexOf('quickd') !== -1) || (list.indexOf('lotiondick') || (i === 'spitd') !== -1)) { return list; } } if ((i === 'quicka') || (i === 'lotionass')) { if ((list.indexOf('quicka') !== -1) || (list.indexOf('lotionass') !== -1)) { return list; } } if ((i === 'underwear') && (clothes.pants === true)) { if (list.indexOf('pants') !== -1) { list.push(i); } return list; } if ((i === 'underwear') && (clothes.underwear === false)) { return list; } if ((i === 'pants') && (clothes.pants === false)) { return list; } if ((i === 'shirt') && (clothes.shirt === false)) { return list; } list.push(i); } return list; } function initiateRoulette( ) { greenRewards = [ "odd", "even", "demigod", "succubus", "shinobi", "pirate", "kudos", "2kudos", "free", "reveal", "redluck" ]; redRewards = [ "cuddlybundle", //2 Kudos, 1 Game Ticket "2free", "3free", "doubleheart", "blackluck", "passwordclue" ]; blackRewards = [ "passwordmegaclue", "megabundle", //5 Game Tickets, 3 Kudos, 2 Freeroll "8free", "diceluck", "megahearts", "10tickets", "openbox" ] } function playRoulette( name ) { if (playerObj[name].rouletteRewards) { printGame( 'You are already in a Roulette game. Type !pick green, !pick red, or !pick black to finish!', name ); return; } playerObj[name].rouletteRewards = { 'green': [], 'red': [], 'black': [] } var r, tr; while (playerObj[name].rouletteRewards.green.length < 4) { r = greenRewards[greenRewards.length * Math.random()]; if (playerObj[name].rouletteRewards.green.indexOf(r) === -1) { playerObj[name].rouletteRewards.green.push(r); } } while (playerObj[name].rouletteRewards.red.length < 3) { r = greenRewards[redRewards.length * Math.random()]; if (playerObj[name].rouletteRewards.red.indexOf(r) === -1) { playerObj[name].rouletteRewards.red.push(r); } } while (playerObj[name].rouletteRewards.black.length < 2) { r = greenRewards[blackRewards.length * Math.random()]; if (playerObj[name].rouletteRewards.black.indexOf(r) === -1) { playerObj[name].rouletteRewards.black.push(r); } } msg = "Type !pick green, !pick red, or !pick black to try your luck for a reward! If you pick Green, you win 100% of them time, but red is less common and black is rare."; msg += "\n GREEN REWARDS: "; for (var i in playerObj[name].rouletteRewards.green) { tr = rouletteTranslation[playerObj[name].rouletteRewards.green[i]]; msg += " " + (i + 1) + ". " + tr; } msg += "\n RED REWARDS: "; for (var i in playerObj[name].rouletteRewards.red) { tr = rouletteTranslation[playerObj[name].rouletteRewards.red[i]]; msg += " " + (i + 1) + ". " + tr; } msg += "\n BLACK REWARDS: "; for (var i in playerObj[name].rouletteRewards.black) { tr = rouletteTranslation[playerObj[name].rouletteRewards.black[i]]; msg += " " + (i + 1) + ". " + tr; } printGame( msg,name ); } function pickRoulette( name,color ) { if (!(playerObj[name].rouletteRewards)) { printGame( 'You are not in a Roulette game. Type !play r to start one.', name ); return; } var rew, ch; if (color === 'green') { rew = playerObj[name].rouletteRewards.green[ Math.random() * playerObj[name].rouletteRewards.green.length ]; } else if (color === 'red') { ch = (playerObj[name].skills.redluck > 0 ? 0.9 : 0.45); if (chance(ch)) { rew = playerObj[name].rouletteRewards.red[ Math.random() * playerObj[name].rouletteRewards.red.length ]; } else { rew = 'bust'; } } else if (color === 'black') { ch = (playerObj[name].skills.blackluck > 0 ? 0.15 : 0.075); if (chance(ch)) { rew = playerObj[name].rouletteRewards.black[ Math.random() * playerObj[name].rouletteRewards.black.length ]; } else { rew = 'bust'; } } else if (color === 'random') { if (chance(0.33)) { pickRoulette( name,'green'); } else if (chance(0.5)) { pickRoulette( name,'red'); } else { pickRoulette( name,'black'); } return; } else { printGame( "You must !pick green, red, or luck. Do !pick random if you can't decide!", name ); return; } if (playerObj[name].skills.redluck > 0) { playerObj[name].skills.redluck--; } if (playerObj[name].skills.blackluck > 0) { playerObj[name].skills.blackluck--; } roulettePrize( rew,name ); } function roulettePrize( rew,name ) { switch (rew) { case "bust": printGame( "Bad luck! You didn't win a reward!", name ); break; case "odd": printGame( "You rolled the Odd Dice Spell!", name ); playerObj[name].skills.odd = true; playerObj[name].skills.even = false; break; case "even": printGame( "You rolled the Even Dice Spell!", name ); playerObj[name].skills.odd = false; playerObj[name].skills.even = true; break; case "succubus": printGame( "You rolled the Succubus Spell!", name ); changeClass( name,'succubus' ); break; case "pirate": printGame( "You rolled the Pirate Spell!", name ); changeClass( name,'pirate' ); break; case "shinobi": printGame( "You rolled the Shinobi Spell!", name ); changeClass( name,'shinobi' ); break; case "demigod": printGame( "You rolled the Demigod Spell!", name ); changeClass( name,'demigod' ); break; case "kudos": printGame( "You rolled a free Kudos!", name ); awardItem( name,'kudos',1,false ); break; case "2kudos": printGame( "You rolled 2 free Kudos!", name ); awardItem( name,'kudos',1,false ); awardItem( name,'kudos',1,false ); break; case "free": printGame( "You rolled a Free Dice Roll!", name ); awardItem( name,'free',1,false ); break; case "reveal": //Reveal chest contents break; case "redluck": printGame( "You rolled the Red Luck Spell! You are twice as likely to succeed when rolling red for the next 3 tries.", name ); playerObj[name].skills.redluck = 3; break; } } function drawBoard(user) { updateBoard() print( board,user ); } function pad(number, length) { var str = '' + number; while (str.length < length) { str = '0' + str } return str } function updateBoard() { var out = "Lucky Guess Board - Winning Prize: " + cb.settings.guessPrize + "\n"; out += nl + '\n'; var mod = 10; var col = 1; for (var i = 10; i <= 129; i++) { out += ' '; if (guessedNumbers.indexOf(i) < 0 ) { out += pad(i,2) } else { out += 'xx' } out += ' '; if (col == mod) { out += '\n'; col = 1 } else { col++ } } if (out.substring(out.length - 1) != '\n') out += '\n'; out += nl; board = out } function initiateCards() { CardGame = { 'players': [], 'pointsNeeded': -1 } signups = []; blackcards = [ "Coming to Broadway this season, _____: The Musical", "I drink to forget _____.", "_____. That's how I want to die.", "_____ is a boy's best friend.", "Maybe she's born with it. Maybe it's _____.", "I'm sorry Professor, I couldn't finish my homework because of _____.", "But before I kill you Mr. Bond, I must show you _____.", "I got 99 problems but _____ ain't one.", "I guess America's over now, but at least we'll still have _____.", "Sorry bae I can't come over right now, I'm busy with _____.", "What are my parents hiding from me? _____.", "I get by with a little help from _____.", "Why am I broke? _____.", "What will always get you laid? _____.", "Our relationship is strictly professional. Let's not complicate it with something like _____.", "This is how the world ends, this is how the world ends, not with a bang, but with _____.", "In LA county jail, word is you can trade 200 cigarettes for _____.", "Kids these days, they just like _____ and chill.", "I'm going to hell because of _____.", "Money can't buy me love but it can buy me _____.", "Thanks to Disney, I now have unrealistic expectations about _____.", "In order to boost ticket sales, Disneyland just opened up a new land dedicated to _____.", "A romantic candlelight dinner is never complete without _____.", "Feminism is the radical notion that women are _____.", "The next president of the United States is _____.", "According to polls, _____ is the most controversial issue in politics these days.", "Someone replaced the Declaration of Independence with a 200,000 word fanfic about _____.", "Alright bakers, your next challenge is to create a cake disguised as _____.", "Google and I both know you have a thing for _____.", "What helps me sleep at night? _____.", "We realized there was a problem when we saw _____.", "BREAKING NEWS: Florida Man arrested for _____.", "In space no one can hear you _____.", "What's that taste in my mouth? _____.", "I'm not gay but _____ is _____.", "The Eagles vs Falcons game was delayed again due to _____.", "Today I wrote a Tumblr post about _____.", "SCIENTISTS HATE HIM: See how you can get ripped in 6 weeks with _____!", "The Internet is for _____.", "They told me to get a degree so I could get a job, so in school I majored in _____.", "Thirsty? Try _____!", "Why am I hard? _____.", "In his latest movie, Bruce Willis must survive _____.", "NEW FIGHTER CONFIRMED FOR SUPER SMASH BROTHERS ULTIMATE: _____." ], whitecards = [ "Statistically Validated Stereotypes", "Selling Your Soul to Amazon", "Setting Yourself on Fire", "A Sex Robot", "Mutually Assured Destruction", "Your Doctor's Soft Lips", "Giant Balls", "Friends With Benefits", "Getting High as Fuck", "2 More Years of this Bullshit", "A Diet of Hot Sauce & Doritos", "Faking the Moon Landing", "Getting Baited", "Free Samples", "Harry Potter Erotica", "iPhone Dick Picks", "Penetration in Every Hole", "Oral Sex", "Platonic Hand to Chest Contact", "China", "Fortnite", "The Bulge", "A Big Black Dick", "A Bigger, Blacker Dick", "The Biggest, Blackest Dick", "Cultural Appropriation", "The Invisible Hand", "Anime Boobs", "CHECKING YO PRIVILEGE", "Your Adderall Dealer", "John Oliver", "A Micropenis", "Plotting to Destroy America", "Sinful Thoughts", "The Black Half of Barack Obama", "Space Cher", "Elective Amnesia", "A Racist Caterpillar", "Being a Dick to Children", "Taking Off Your Shirt", "Phallic Symbolism", "Linguistic Psychology", "Men", "A Figment of Your Imagination", "Me Time", "Bees...?", "Dory, the Lesbian Fish", "Fucking a Corpse Back to Life", "Unreasonably Laying Claim to Everything the Light Touches", "A Homo-erotic Volleybal Montage", "Another Goddamn Star Wars Movie", "Thanos' Thicc Fingers", "Surprise Buttsex", "So Much Porn", "The Pope", "Pixelated Bukkake", "An Olympic Swimming Pool of Cum", "Chocolate Nipples", "Tentacle Rape", "An Impromptu Orgy", "$25,000", "Climaxing in Under 15 Seconds", "Turbo-fingering", "Nutting", "Leaving Room for Jesus", "Mansplaining", "An Erection Lasting 4 or More Hours", "Pretending to be a God", "The Goddess Kali, Giving 6 Handjobs at Once", "Neil deGrasse Tyson", "A God Complex", "Swallowing", "Invading Japan just to Take their Hentai", "Explosions", "Getting Molested", "Trigger Me Elmo", "16 Feet of Scarf Bondage", "Running Around Naked at the Walmart", "Suffocating on Giant Titties", "Forgetting the Second Letter of the Alphabet", "Space Jam", "Pacman Uncontrollably Guzzling Cum", "The Buddha", "The Bone Zone", "Boning on the International Space Station", "Hatsune Miku", "A Vagina That Bites", "Jesus, Who Hasn't Cummed in Over 2,000 Years", "Florida Man", "Fake News", "Origami Bondage", "Water", "Cunnilingus", "Escapism", "Water", "Vladmir Putin", "Period Sex", "Vulpix", "Lady Gaga", "Literally Satan", "Waria, the Evil Twin of the Virgin Maria", "Cockquafina - Water Straight From the Shaft", "Restoring Peace to the Middle East", "A Local Single in Your Area", "Using Chaturbate as a Dating Website", "Shouting I'M REALLY FEELING IT", "Jacking Off to Yourself in the Mirror", "Licking Things to Claim Them As Your Own" ] } function cardsSignup( starter ) { if (CardGame.pointsNeeded !== -1) { print( 'A Card game is already in session, cannot be started',starter ); return false; } signups = []; CardGame = { 'players': { }, 'pointsNeeded': 0, 'winner': '' }; print( 'A game of Cards Against Humanity has begun! Type !join to join the game!'); } function joinGame( name ) { if (CardGame.pointsNeeded === -1) { print( 'A Card game is not in signups!'); return false; } if (CardGame.pointsNeeded !== 0) { print( 'A Card game is already in session!!'); return false; } if (signups.indexOf(name) !== -1) { print( 'You already joined the game', name ); return false; } if (signups.length >= 10) { print( 'Sorry, game is at full capacity! Join the next one!', name ); return false; } signups.push(name); print( name + ' is player #' + signups.length + ' to join the game!' ); return true; } function loadCards() { if (CardGame.pointsNeeded > 0) { print( 'Game in session, cannot start one',cb.room_slug); return false; } gameWhite = shuffleCards(whitecards), gameBlack = shuffleCards(blackcards); var i = 0; currentBlack = gameBlack.shift(); CardGame = { 'players': { }, 'pointsNeeded': 3 }; for (var s in signups) { CardGame.players[signups[s]] = {}; } for (var p in CardGame.players) { CardGame.players[p].points = 0; CardGame.players[p].selectedCard = ''; CardGame.players[p].cards = []; while (CardGame.players[p].cards.length < 8) { CardGame.players[p].cards.push( gameWhite.shift() ); } } signups = []; nextRound(); } function showHand( player ) { msg = currentBlack + "\n "; var i = 0; var k = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j'] for (var c in CardGame.players[player].cards) { msg += k[i] + ": " + CardGame.players[player].cards[c] + "\n "; i++; } msg += "You have " + CardGame.players[player].points + " point(s)."; print( msg,player ); } function selectCard( player,letter ) { msg = ""; if (CardGame.pointsNeeded < 1) { print( 'Wait until the game started!' ); return false; } if (CardGame.players[player].selectedCard !== "") { print( "You already chose your card!",player ); return; } var i = 0, placeholder = []; var k = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j'] for (var c in CardGame.players[player].cards) { if (k[i] === letter) { msg += "You've selected " + k[i] + ": " + CardGame.players[player].cards[c] + ""; CardGame.players[player].selectedCard = CardGame.players[player].cards[c]; selectedCards.push(CardGame.players[player].cards[c]); for (var c in CardGame.players[player].cards) { if (CardGame.players[player].cards[c] !== CardGame.players[player].selectedCard) { placeholder.push(CardGame.players[player].cards[c]); } } CardGame.players[player].cards = placeholder; print( msg,player ); print( player + " (Player #" + selectedCards.length + ") is ready." ); } i++; } } function showRound() { if (CardGame.pointsNeeded === -1) { print( 'Card game not in session', cb.room_slug); return false; } var temp = selectedCards; temp = shuffleCards(temp); selectedCards = temp; msg = ""; var i = 0; var k = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j']; for (var c in selectedCards) { str = replaceSpace(currentBlack,selectedCards[c]); msg += k[i] + ": " + str + "\n "; i++; } msg += "Please wait while the model chooses a winner!"; CardGame.canPick = true; print( msg ); } function pickWinner( letter ) { if (CardGame.pointsNeeded === -1) { print( 'Card game not in session', cb.room_slug); return false; } if (!(CardGame.canPick)) { print( 'Type !next to see the results', cb.room_slug); return false; } msg = ""; var i = 0; var k = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j']; for (var c in selectedCards) { if (k[i] === letter) { print( currentBlack ); print( "The Winning Card is " + selectedCards[c] + "!" ); gameBlack.push( currentBlack ); currentBlack = ""; for (var p in CardGame.players) { if (CardGame.players[p].selectedCard === selectedCards[c]) { print( p + " wins a point!" ); CardGame.players[p].points += 1; returnToDeck( selectedCards ); selectedCards = []; if (CardGame.players[p].points >= CardGame.pointsNeeded) { CardGame.winner = p; endGame(); } else { nextRound(); } } } } i++; } } function returnToDeck( selected ) { for (var a in selected) { var d = selected[a]; gameWhite.push( d ); } } function nextRound() { currentBlack = gameBlack[0]; gameBlack.shift(); selectedCards = []; print ('A new round has begun! \n' + currentBlack); for (var p in CardGame.players) { while (CardGame.players[p].cards.length < 8) { CardGame.players[p].cards.push( gameWhite.shift() ); } CardGame.players[p].selectedCard = ""; showHand(p); } if (chance(0.2)) { gameWhite = shuffleCards(gameWhite); } } function endGame() { if (CardGame.winner === "") { print( "Game isn't over yet",cb.room_slug ); return false; } print( CardGame.winner + ' has won this game!!!'); print( 'Thank you everyone for playing!'); awardItem( CardGame.winner,'free',1,false ); awardItem( CardGame.winner,'kudos',1,false ); CardGame = { 'players': { }, 'pointsNeeded': -1, 'winner': '' }; } function replaceSpace(str,white) { while (str.indexOf('_____') !== -1) { str = str.replace('_____',white); } return str; } function shuffleCards(a) { for (let i = a.length - 1; i > 0; i--) { const j = Math.floor(Math.random() * (i + 1)); [a[i], a[j]] = [a[j], a[i]]; } return a; } function getMeme() { var m, memes = [ "HOLY FUCK I'M CUMMING NOW!!!!", "Somebody once told me the world was gonna roll me. Well, I ain't the sharpest tool in the shed.", "Pi-pikachu! Pi-pi! Pika-Pi! Pikachu Pika-Pikachu, chu! Pi-pi-pi!", "I HAVE TINY BALLS XD", "Hey I just want to say I love you to everyone in this room, bless you all. :)", "Hi, I used to be a confused user, just like many of you. Then I realized there was a !help command, just for us! Now I type !help spam whenever I forget what's happening.", "Guys, I think I just figured out how to type '!help menu'! It shows you how much requests cost!" ] m = memes[memes.length * Math.random()]; return m; } function tipHearts(name,tip_amt) { if (tip_amt >= 1000) { awardItem(name,'heart',69,false); } else if (tip_amt >= 700) { awardItem(name,'heart',tip_amt * 50,true); } else if (tip_amt >= 500) { awardItem(name,'heart',tip_amt * 40,true); } else if (tip_amt >= 300) { awardItem(name,'heart',tip_amt * 30,true); } else if (tip_amt >= 200) { awardItem(name,'heart',tip_amt * 20,true); } else if (tip_amt >= 100) { awardItem(name,'heart',tip_amt * 10,true); } else if (tip_amt >= 25) { awardItem(name,'heart',tip_amt * 5,true); } else if (tip_amt >= 15) { awardItem(name,'heart',tip_amt * 3,true); } else if (tip_amt >= 5) { awardItem(name,'heart',tip_amt * 2,true); } else if (tip_amt >= 1) { awardItem(name,'heart',tip_amt,true); } } function init() { playerObj = {}; prizes = []; setPrizes(); showMenu(); king = ''; heartPiecesTotal = 0; tipsTotal = 0; tipsGoal = 0; goal = ""; goalData = ""; clothes = { 'pants': true, 'shirt': true, 'underwear': true } notifications = [ 'dice1', 'thoughts', 'flash1', 'help', 'tipifyou1', 'flash2', 'dice2', 'tipifyou2', 'fans', 'photos', 'fanclub' ]; cutieKingData = ''; show = 0; badJokes = []; if (cb.settings.bj1 !== '') { badJokes.push(cb.settings.bj1); } if (cb.settings.bj2 !== '') { badJokes.push(cb.settings.bj2); } if (cb.settings.bj3 !== '') { badJokes.push(cb.settings.bj3); } if (cb.settings.bj4 !== '') { badJokes.push(cb.settings.bj4); } if (cb.settings.bj5 !== '') { badJokes.push(cb.settings.bj5); } if (cb.settings.bj6 !== '') { badJokes.push(cb.settings.bj6); } if (cb.settings.bj7 !== '') { badJokes.push(cb.settings.bj7); } if (cb.settings.bj8 !== '') { badJokes.push(cb.settings.bj8); } initiateChest(); initiateCards(); createChest(); } init();
© Copyright Chaturbate 2011- 2025. All Rights Reserved.