Git Product home page Git Product logo

bingosync's People

Contributors

adamkaak avatar airships01 avatar akumar282 avatar armuell avatar asheevee avatar basedjellyfish11 avatar benjaminsnarky avatar cad97 avatar cammymoop avatar doid01 avatar duke1102 avatar ethanuphoff avatar jasoniltg avatar jasonye4273 avatar jbzdarkid avatar karanum avatar kbuzsaki avatar kdhuynh avatar kevinkib avatar lenophis avatar lepelog avatar mewtwo15026 avatar mickely avatar neomatamune avatar owen-splat avatar seresharp avatar slyryd avatar smartkin avatar srmcconomy avatar striferider avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

bingosync's Issues

Handle "missed" disconnect events

if django and tornado can't talk to each other when a socket drops, tornado will fail to send the message and won't retry. This leaves the system in an inconsistent state where a player appears active on the site but actually doesn't have a live socket.

Fixes are either having tornado retry sending the events until they go through or having one of the two poll the other periodically to sync up.

Manual Disconnect

Allow players to manually disconnect from a game and then rejoin. Big purpose here is to allow them to rejoin with a new name and to force a disconnect if things ever go haywire.

Add Kirby & The Amazing Mirror bingo

var bingoList = [];
bingoList[1] = [
{ name: "Cook ability", types: ["ability"] },
{ name: "Crash ability", types: ["ability"] },
{ name: "Sleep ability", types: ["ability"] },
];
bingoList[2] = [
{ name: "Throw ability", types: ["ability"] },
{ name: "Hammer ability", types: ["ability"] },
];
bingoList[3] = [
{ name: "Defeat Batafire", types: ["midboss", "rainbow", "moonlight", "cabbage", "mustard"] },
{ name: "Defeat Box Boxer", types: ["midboss", "rainbow", "cabbage", "mustard", "peppermint", "candy"] },
{ name: "Defeat Boxy", types: ["midboss", "moonlight", "mustard", "olive", "radish"] },
];
bingoList[4] = [
{ name: "Defeat Bonkers", types: ["midboss", "moonlight", "cabbage", "olive", "peppermint", "radish", "candy"] },
{ name: "Defeat Mr. Frosty", types: ["midboss", "moonlight", "olive", "peppermint"] },
{ name: "Defeat King Golem", types: ["boss", "moonlight"] },
];
bingoList[5] = [
{ name: "Kirby's Sounds", types: ["notes", "candy"] },
{ name: "Battle Notes", types: ["notes", "radish"] },
{ name: "Spunky Notes", types: ["notes", "cabbage"] },
];
bingoList[6] = [
{ name: "Sound Effects", types: ["notes", "olive"] },
{ name: "Secret Sounds", types: ["notes", "cabbage"] },
{ name: "Secret Notes", types: ["notes", "carrot"] },
];
bingoList[7] = [
{ name: "Dream Notes", types: ["notes", "peppermint"] },
{ name: "Enemy Sounds", types: ["notes", "moonlight"] },
];
bingoList[8] = [
{ name: "Pink Spray", types: ["spray", "peppermint"] },
{ name: "Red Spray", types: ["spray", "carrot"] },
{ name: "Green Spray", types: ["spray", "rainbow"] },
];
bingoList[9] = [
{ name: "Cherry Spray", types: ["spray", "mustard"] },
{ name: "Carbon Spray", types: ["spray", "candy"] },
{ name: "Chalk Spray", types: ["spray", "moonlight"] },
{ name: "Chocolate Spray", types: ["spray", "cabbage"] },
];
bingoList[10] = [
{ name: "Emerald Spray", types: ["spray", "radish"] },
{ name: "Grape Spray", types: ["spray", "peppermint"] },
{ name: "Orange Spray", types: ["spray", "moonlight"] },
{ name: "Snow Spray", types: ["spray", "peppermint"] }
];
bingoList[11] = [
{ name: "Magic ability", types: ["ability"] },
{ name: "Mini ability", types: ["ability"] },
{ name: "Smash ability", types: ["ability"] },
{ name: "Ufo ability", types: ["ability"] },
];
bingoList[12] = [
{ name: "Defeat Bombar", types: ["midboss", "mustard", "peppermint"] },
{ name: "Defeat Phan Phan", types: ["midboss", "mustard", "carrot", "peppermint", "candy"] },
{ name: "Defeat Master Hand", types: ["midboss", "rainbow", "radish", "candy"] },
];
bingoList[13] = [
{ name: "Defeat Moley", types: ["boss", "cabbage"] },
{ name: "Defeat Kracko", types: ["boss", "mustard"] },
{ name: "Defeat Mega Titan", types: ["boss", "carrot"] },
];
bingoList[14] = [
{ name: "Defeat Gobbler", types: ["boss", "olive"] },
{ name: "Defeat Wiz", types: ["boss", "peppermint"] },
];
bingoList[15] = [
{ name: "Cabbage Cavern Map", types: ["map", "cabbage"] },
{ name: "Mustard Mountain Map", types: ["map", "mustard"] },
{ name: "Carrot Castle Map", types: ["map", "carrot"] },
];
bingoList[16] = [
{ name: "Olive Ocean Map", types: ["map", "olive"] },
{ name: "Peppermint Palace Map", types: ["map", "peppermint"] },
{ name: "Radish Ruins Map", types: ["map", "radish"] },
{ name: "Candy Constellation Map", types: ["map", "candy"] },
];
bingoList[17] = [
{ name: "Happy Notes", types: ["notes", "peppermint"] },
{ name: "Beginning Notes", types: ["notes", "rainbow"] },
];
bingoList[18] = [
{ name: "Yellow Spray", types: ["spray", "carrot"] },
{ name: "Ocean Spray", types: ["spray", "olive"] },
{ name: "Saphire Spray", types: ["spray", "cabbage"] },
];
bingoList[19] = [
{ name: "Vitality Heart in Carrot Castle", types: ["heart", "carrot"] },
{ name: "Vitality Heart in Olive Ocean", types: ["heart", "olive"] },
{ name: "Vitality Heart in Radish Ruins", types: ["heart", "radish"] },
{ name: "Vitality Heart in Candy Constellation", types: ["heart", "candy"] },
];
bingoList[20] = [
{ name: "Have 20 extra lives", types: ["extra"] },
{ name: "Sound Player", types: ["candy"] },
{ name: "6 Spray Paints", types: ["spray"] },
{ name: "5 Notes", types: ["notes"] },
];
bingoList[21] = [
{ name: "Defeat ??? (Dark Meta Knight)", types: ["boss", "radish"] },
{ name: "Defeat Master Hand & Crazy Hand", types: ["boss", "candy"] },
];
bingoList[22] = [
{ name: "Defeat 5 different Mid-Bosses", types: ["midboss"] },
{ name: "Collect 3 Shards", types: ["boss"] },
{ name: "All VItality Hearts", types: ["midboss"] },
];
bingoList[23] = [
{ name: "All Treasures in Rainbow Route", types: ["rainbow"] },
{ name: "All Treasures in Moonlight Mansion", types: ["moonlight"] },
{ name: "All Treasures in Cabbage Cavern", types: ["cabbage"] },
];
bingoList[24] = [
{ name: "All Treasures in Mustard Mountain", types: ["mustard"] },
{ name: "All Treasures in Carrot Castle", types: ["carrot"] },
{ name: "All Treasures in Olive Ocean", types: ["olive"] },
];
bingoList[25] = [
{ name: "All Treasures in Peppermint Palace", types: ["peppermint"] },
{ name: "All Treasures in Radish Ruins", types: ["radish"] },
{ name: "All Treasures in Candy Constellation", types: ["candy"] },
];
$(function() { srl.bingo(bingoList, 5); });

Name: Kirby & The Amazing Mirror
Abbreviation: KtAM

Feature request: Add a bingo counter

With the allowance for up to 10 simultaneous racers, it can be hard to keep track of what goals each person has, or even how many bingos you have (in a triple or cinco bingo setting). This is challenging even with only two racers. What would resolve this is a counter for how many rows, columns, or diagonals have been completed by each racer in non-lockout mode.

Feature request: Public shareable link to bingo board with view access

With bingo races on events or tournaments it is sometimes an issue, that people watching these races can't read the bingo card because of stream quality so it would be beneficial to have a link to the board to easily see what goals are on there. While there is a spectator mode that still needs the password, which obviously can't be shared.

So there could be an option when creating the board to have a shareable public link with view access. A potential issue is that viewers could see the board before the race even started

Looking forward to any feedback :)
'

MM bingo outdated

Bingosync is using an outdated Bingo for the game Majora's Mask. The one on SRL got updated recently.

OBS/Streaming Support

It would be really nice if there was a way to include these bingo cards on our streams. Adding a window capture source on a browser window that can have varying sizes is not a practical solution. Instead, a browser source pointing to a room as a spectator would be ideal. The problem is when you add the room as a browser source, it instead shows a "login box" instead of the bingo card.

A possible solution is to have the username, password, and spectator flag as GET variables that we can tag onto the end of the URL. And each new card we can just swap in new URLs with the proper GET variables.

New bingocard - World of Warcraft

Hi kbuzsaki,

Thanks for all your work on bingosync! I've got a new board I'd like to have added for World of Warcraft as below:

Name: New character race
Short name: Fresh Char

List of goals:
Complete Exiles Reach
Complete the Draenor introduction scenario
Complete the Legion introduction scenario
Complete the goblin starting area
Complete the worgen starting area
Complete a zone's quest line
Complete the Death Knight starting area
Complete the Demon Hunter starting area
Visit 5 innkeepers
Visit 10 innkeepers
Visit 15 innkeepers
Visit 20 innkeepers
Explore 1 zones fully
Explore 3 zones fully
Explore 5 zones fully
Reach level 15
Reach level 20
Die to fatigue
Die to lava/fire
Die to drowning
Die to falling
Die to a dungeon boss
Obtain resurrection sickness
Visit 4 capital cities
Visit 6 capital cities
Visit 8 capital cities
Visit 3 continents
Visit 5 continents
Visit 7 continents
Visit 5 flight paths
Visit 10 flight paths
Visit 20 flight paths
Jump off Thunder Bluff and survive
Jump off Dalaran
Jump off Teldrassil
Jump off Mount Hyjal
Jump off Outland
Jump off a tower
Jump off a cliff
Visit the top of Kun Lai summit
Visit the bottom of the ocean in Vashjir
Visit the Maelstrom
Visit Icecrown Citadel
Visit the Black Temple
Visit the Exodaar
Visit Silvermoon City
Visit the Gilneas
Visit the Blackrock Foundry
Visit Blackrock mountain
Visit Karazahn
Visit Strathholme
Visit Wyrmrest Temple
Visit the Great Wall of Pandaria
Visit the Goldshire Inn
Visit the big sword in silithus
Visit the Argent Tournament
Visit Gallywix's Pleasure Palace
Visit the Gates of Valour
Visit Booty Bay
Visit the Loch
Visit Ironforge Airport
Visit Fizzle & Pozzik's Speedbarge
Visit a class order hall
Visit an obelisk
Visit a lake
Visit a temple
Visit a worldtree
Visit a battleground portal
Visit a dome
Visit a pyramid
Visit an arena
Visit an isle
Visit a library
Visit a graveyard
Visit a necropolis/ziggurat
Visit the past (other than using the dark portal/chromie time)
Visit somewhere snowy
Visit somewhere sandy
Visit somewhere windy
Visit somewhere underwater
Visit somewhere underground
Visit 3 starting subzones
Visit 6 starting subzones
Click a Kalimdor dungeon waystone
Click a Kalimdor raid waystone
Click an Eastern Kingdoms dungeon waystone
Click an Eastern Kingdoms raid waystone
Click an Outland dungeon waystone
Click an Outland raid waystone
Click a Northrend dungeon waystone
Click a Northrend raid waystone
Click a Pandaria dungeon waystone
Click a Pandaria raid waystone
Click a Draenor dungeon waystone
Click a Draenor raid waystone
Click a Broken Isles dungeon waystone
Click a Broken Isles raid waystone
Click a Zandalar dungeon waystone
Click a Zandalar raid waystone
Click a Kul Tiras dungeon waystone
Click a Kul Tiras raid waystone
Enter a dungeon
Enter 3 dungeons
Enter 5 dungeons
Find 1 treasure
Find 5 treasures
Find 10 treasures
Obtain a key
Obtain a letter
Obtain a skull
Obtain oil
Obtain a badge
Obtain a silly hat
Obtain sludge/goo
Obtain something mechanical
Obtain something wooden
Obtain a tooth
Obtain a claw
Obtain a tusk
Obtain an offal
Obtain a bone
Obtain an eye
Obtain a web
Obtain an elemental item
Obtain an item that starts a quest
Obtain 10 crafting materials
Obtain 15 crafting materials
Obtain 20 crafting materials
Obtain something blue
Obtain something red
Obtain something yellow
Obtain something green
Obtain something orange
Obtain something brown
Obtain something purple
Obtain something white
Obtain something black
Obtain something grey
Eat 5 different foods
Eat 10 different foods
Eat 20 different foods
Eat Fish
Eat Poultry
Eat Dairy
Eat Bread
Drink 5 different drinks
Drink 10 different drinks
Drink 20 different drinks
Drink water
Eat/drink conjured food/drink
Loot 3 different cloths
Loot 5 different cloths
Loot 10 different cloths
Skin 3 different leathers
Skin 5 different leathers
Skin 10 different leathers
Mine 3 different ores
Mine 5 different ores
Mine 10 different ores
Gather 3 different herbs
Gather 5 different herbs
Gather 10 different herbs
Fish 3 up different fish
Fish 5 up different fish
Fish up 10 different fish
Make a bandage
Cook 3 different foods
Cook 5 different foods
Cook 10 different foods
Craft an item
Craft 3 items
Craft 5 items
Enchant a weapon
Disenchant an item
Disenchant 3 items
Disenchant 5 items
Survey a whole dig site
Complete an archeological artifact
Get a profession to level 10
Get a profession to level 25
Get a profession to level 50
Learn a recipe
Learn 3 recipes
Learn 5 recipes
Kill a skeleton
Kill a snake
Kill a dinosaur
Kill a ghost
Kill a gnoll
Kill a murloc
Kill a demon
Kill a crab
Kill a gorilla
Kill a troll
Kill a dwarf
Kill an elemental
Kill a naga
Kill a mammoth
Kill a gnome
Kill an elf
Kill a dragon
Kill a crocolisk
Kill a scorpid
Kill a wolf
Kill a bear
Kill a spider
Kill a vykrul
Kill a bat
Kill a bird
Kill a wind serpent
Kill an undead
Kill a clefthoof
Kill a yeti
Kill a robot
Kill an orc
Kill a kobald
Kill an insect
Kill a human
Kill a quillboar
Kill a beast on each continent (except Shadowlands)
Kill an elite (dragon frame)
Kill a rare (silver frame)
Kill a dungeon boss
Kill a named npc
Kill 25 creatures
Kill 50 creatures
Kill 100 creatures
Kill 25 critters
Kill 50 critters
Kill 100 critters
Shoot a gun/cannon
Tame an animal
Summon a totem
Say a prayer
Obtain an artifact weapon
Use a talented spell
Summon a demon
Dismiss a pet
Change form
Enter stealth
Wield 2 weapons
Use a shield
Revive yourself after dying
Cast a healing spell
Cast a lightning spell
Cast a nature spell
Cast a holy spell
Cast a shadow spell
Cast a frost spell
Cast a fire spell
Cast an arcane spell
Generate 100 rage
Run out of mana
Heal an NPC
Use a trap
Get a haircut
Sit on a throne
Use a mission table
Ring a gong
Drink a potion
Read a book
Change your transmog
Use a controllable vehicle
Talk to an animal
Set something on fire
Put out a fire
/pet a dog
/pet a cat
/pet a rabbit
/pet a named animal
/love 5 critter for the achieve 'To all the squirels I've loved before'
/love 10 critter for the achieve 'To all the squirels I've loved before'
/love 5 critters for the achieve 'To all the squirrels who've shared my life'
/love 5 critters for the achieve 'To all the squirrels who cared for me'
/love 5 critters for the achieve 'To all the squirrels I once caressed'
/love 5 critters for the achieve 'To all the squirrels through time and space'
/love 5 critters for the achieve 'To all the squirrels I love despite their scars'
/love 5 critters for the achieve 'To all the squirrels I set sail to see'
Slay 5 critters for the achieve 'Pest control'
Slay 10 critters for the achieve 'Pest control'
Walk through the dark portal
Ride a zeppelin
Ride a train
Ride a boat
Ride an elevator
Take a flight path
Use 15 unique portals
Use 20 unique portals
Use your hearthstone
Use your hearthstone 2 times
Use your hearthstone 3 times
Complete 10 quests
Complete 20 quests
Complete 30 quests
Have a reputation at honoured
Complete a daily (blue) quest
Complete a world quest
Obtain 2 tabards
Obtain 3 tabards
Obtain 50 silver
Obtain 1 gold
Obtain 5 gold
Buy a green item
Sell a green item
Sell an item to a vendor in a dungeon
Loot a grey item and equip it
Loot a green item and equip it
Loot a blue item and equip it
Equip a trinket
Equip 2 rings
Get cursed
Get poisoned
Get burnt
Get stabbed (and bleed)
Have 3 buffs at once
Have 5 buffs at once
Have 7 buffs at once
/wave at Khadgar
/wave at Garrosh Hellscream
/wave at a dragon aspect
/wave at an enemy faction leader
/wave at an Undercity banker
/wave at a Teldrassil banker
/wave at Tirion Fordring
/wave at Mankrik's wife
/wave at Sylvanus
/wave at Thrall
/wave at Anduin Wrynn
/wave at Magni Bronzebeard
/wave at the Lich King
/wave at Bwomsamdi
/wave at Jaina Proudmoore
/wave at Harrison Jones
/wave at Hemit Nesingwary
/wave at Brann Bronzebeard
/wave at Illidan Stormrage
/wave at Malfurion Stormrage
/wave at Deathwing
/wave at a Warlord of Draenor
/wave at Guldan
/wave at Maiev Shadowsong

Update to octo expansion bingo

var bingoList = [];
bingoList[1] = [
{name: "A05 w/ splat bombs", types: ["A", "early"]},
{name: "A08 w/ squiffer", types: ["A", "early"]},
{name: "Beat 2 8ball levels", types: ["8ball", "early"]},
{name: "Beat 1 level with blaster", types: ["blaster"]},
{name: "Beat 1 level with charger", types: ["charger"]}
];

bingoList[2] = [
{name: "Unlock I (green) line", types: ["enemy"]},
{name: "Complete 6 connector (square) stations", types: ["lines"]},
{name: "Get 5000 credits", types: ["credits"]},
{name: "Get a loan from Marina and pay it back", types: ["credits"]},
{name: "Beat 1 level with brella", types: ["brella"]}
];

bingoList[3] = [
{name: "All levels on yellow line", types: ["A"]},
{name: "Beat 3 8ball levels", types: ["8ball"]},
{name: "1 Thang", types: ["thang"]},
{name: "Beat 1 level with splatling", types: ["splatling"]},
{name: "Beat 2 levels using Baller", types: ["baller"]}
];

bingoList[4] = [
{name: "Beat 1 boss", types: ["boss"]},
{name: "C02 w/o goal Balloon Fish", types: ["ink"]},
{name: "Beat a station using all 3 supplied weapons", types: ["misc"]},
{name: "J03/D08 with the Splat Charger", types: ["J", "D"]}
];

bingoList[5] = [
{name: "I05/B08 w/ the Bamboozler", types: ["I", "B"]},
{name: "Beat 2 levels using inkjet", types: ["inkjet"]},
{name: "J04 w/ the inkbrush", types: ["J", "inkbrush"]},
{name: "8ball OOB in E06", types: ["8ball"]}
];

bingoList[6] = [
{name: "Beat 4 8-ball levels", types: ["8ball"]},
{name: "Beat 2 “Balloon Pop” levels", types: ["balloon"]},
{name: "Collect 5 armor upgrades", types: ["armor"]},
{name: "Beat 3 levels using a roller", types: [""]},
{name: "I02 without grabbing ink refills", types: ["I", "ink"]}
];

bingoList[7] = [
{name: "F02 w/ burst bombs only", types: ["F"]},
{name: "Beat 2 stations using all 3 supplied weapons", types: ["misc"]},
{name: "Unlock 6 lines", types: ["lines"]},
{name: "Beat 3 levels using a brush", types: ["brush"]},
{name: "Complete 10 connector (square) stations", types: ["lines"]}
];

bingoList[8] = [
{name: "Beat 3 levels using dualies", types: ["dual"]},
{name: "Beat 3 levels using a slosher", types: ["slosher"]},
{name: "Collect 2 thangs", types: ["thang"]},
{name: "Beat all levels on 2 lines", types: ["lines"]},
{name: "Beat 3 levels using a brella", types: ["brella"]},
{name: "Collect 15 power egg containers", types: ["credits"]},
{name: "J02 w/ splat charger ", types: ["J", "charger"]}
];

bingoList[9] = [
{name: "Beat all levels on lime line [I]", types: ["I", "lines"]},
{name: "Complete E10 with splat charger", types: ["E", "charger"]},
{name: "Beat 3 levels using a splatling", types: ["splatling"]},
{name: "Get 10000 credits", types: ["credits"]},
{name: "Fly through every ring in G10/E07", types: ["G", "E", "inkjet"]}
];

bingoList[10] = [
{name: "Beat both match the shape stations", types: ["F", "J"]},
{name: "Beat 3 levels using a charger", types: ["charger"]},
{name: "Complete 12 connector (square) stations", types: ["lines"]},
{name: "Beat 3 levels using blaster", types: ["blaster"]},
{name: "Beat all levels on blue line [H]", types: ["H", "lines"]}
];

bingoList[11] = [
{name: "Beat 5 levels using a roller", types: ["roller"]},
{name: "Collect 20 power egg containers", types: ["credits"]},
{name: "Beat all levels on purple line (G)", types: ["G", "lines"]},
{name: "G02 w/ the Dynamo Roller", types: ["G", "roller"]},
{name: "Beat 3 stages using all 3 supplied weapons", types: ["misc"]}
];

bingoList[12] = [
{name: "Beat both data point stages", types: ["E", "F"]},
{name: "E09 w/ only Burst Bombs", types: ["E"]},
{name: "Get at least 15000 credits", types: ["credits"]},
{name: "Beat 3 “Balloon Pop” levels", types: ["balloon"]},
{name: "Beat 3 levels using inkjet", types: ["inkjet"]},
{name: "Beat 5 levels using a charger", types: ["charger"]},
{name: "Complete 12 connector (square) stations", types: ["lines"]}
];

bingoList[13] = [
{name: "Beat all levels on gray line (D)", types: ["D", "lines"]},
{name: "Beat all levels on pink line (J)", types: ["J", "lines"]},
{name: "Collect 10 armor upgrades", types: ["armor"]},
{name: "Beat 5 levels using a brush", types: ["brush"]},
{name: "Beat all levels on 3 lines", types: ["lines"]},
{name: "Beat both rainmaker levels", types: ["A", "F"]}
];

bingoList[14] = [
{name: "Unlock 8 lines", types: ["lines"]},
{name: "Beat 2 boss fights", types: ["boss"]},
{name: "Beat 5 levels using a slosher", types: ["slosher"]},
{name: "I01/G01 with the Octobrush", types: ["boss", "brush"]},
{name: "Beat all levels on black line (F)", types: ["F", "lines"]},
{name: "Beat both tower control levels", types: ["H", "B"]}
];

bingoList[15] = [
{name: "Beat all levels on green line (C)", types: ["C", "lines"]},
{name: "Beat 7 levels using a roller", types: ["roller"]},
{name: "Beat both “defend the orb” levels", types: ["J", "D", "I", "E"]},
{name: "Beat 5 levels using a brella", types: ["brella"]},
{name: "Collect 30 power egg containers", types: ["credits"]},
{name: "Get 20000 credits", types: ["credits"]},
{name: "Beat 7 levels using a charger", types: ["charger"]}
];

bingoList[16] = [
{name: "Beat 5 levels using a splatling", types: ["splatling"]},
{name: "Beat 6 8-Ball levels", types: ["8ball"]},
{name: "Beat all 4 limited ink stages", types: ["ink"]},
{name: "Complete 16 connector (square) stations", types: ["lines"]},
{name: "Beat 3 levels using baller", types: ["baller"]},
{name: "Beat 4 stages using all 3 supplied weapons", types: ["misc"]}
];

bingoList[17] = [
{name: "Beat all levels on teal line (B)", types: ["B", "lines"]},
{name: "Beat 5 levels using inkjet", types: ["inkjet"]},
{name: "Beat 4 “Balloon Pop” levels", types: ["balloon"]},
{name: "Collect 3 thangs", types: ["thang"]},
{name: "Unlock all 10 lines", types: ["lines"]},
{name: "Collect 15 armor upgrades", types: ["armor"]}
];

bingoList[18] = [
{name: "Beat 3 boss fights", types: ["boss"]},
{name: "Beat all levels on magenta line (E)", types: ["E", "lines"]},
{name: "Beat 7 levels using a blaster", types: ["blaster"]},
{name: "Get at least 25000 credits", types: ["credits"]},
{name: "Beat 9 levels using charger", types: ["charger"]}
];

bingoList[19] = [
{name: "Beat 7 levels using a slosher", types: ["slosher"]},
{name: "Beat 7 levels using a brella", types: ["brella"]},
{name: "Beat 8 8-Ball levels", types: ["8ball"]},
{name: "Beat 9 levels using blaster", types: ["blaster"]},
{name: "Collect 40 power egg containers", types: ["credits"]}
];

bingoList[20] = [
{name: "Beat all levels on 4 lines", types: ["lines"]},
{name: "Beat 7 levels using a splatling", types: ["splatling"]},
{name: "Beat 9 levels using a roller", types: ["roller"]},
{name: "Complete all 20 connector (square) stations", types: ["lines"]},
{name: "Get at least 30000 credits", types: ["credits"]}
];

bingoList[21] = [
{name: "Beat all 4 boss fights", types: ["boss"]},
{name: "Beat 12 levels using a charger", types: ["charger"]},
{name: "Collect 20 armor upgrades", types: ["armor"]},
{name: "Beat 5 levels using all 3 supplied weapons", types: ["misc"]},
{name: "Beat 5 levels using dualies", types: ["dual"]}
];

bingoList[22] = [
{name: "Beat 12 levels using a blaster", types: ["blaster"]},
{name: "Collect all 4 thangs", types: ["thang"]},
{name: "Beat 7 levels using a brush", types: ["brush"]},
{name: "Get at least 35000 credits", types: ["credits"]}
];

bingoList[23] = [
{name: "Beat 9 levels using a brush", types: ["brush"]},
{name: "Collect 50 power egg containers", types: ["credits"]},
{name: "Beat 9 levels using a roller", types: ["roller"]}
];

bingoList[24] = [
{name: "Beat all 10 8 Ball levels", types: ["8ball"]},
{name: "Beat 14 levels using blaster", types: ["blaster"]},
];

bingoList[25] = [
{name: "Get at least 40000 credits", types: ["credits", "long"]},
{name: "Beat 16 levels using a charger", types: ["charger", "long"]},
{name: "Beat 6 levels using all 3 supplied weapons", types: ["misc", "long"]},
{name: "Beat all levels on 5 lines", types: ["lines", "long"]}
];

$(function() { srl.bingo(bingoList, 5); });

Add BotW short bingo

Would be nice to have a shorter variant for the BotW bingo. There is no need for adding another generator for that, just adding the "mode":"short" parameter to the generator call should do it.

Add New Game: Yooka-Laylee and the Impossible Lair

Game Name: "Yooka-Laylee and the Impossible Lair"
Shortened Name: "YLIL"
Goals:
var bingoList = [];
bingoList[1] = [
{ name: "2 Woods Bees", types: ["bees", "woods"] },
{ name: "2 Lake Bees", types: ["bees", "lake"] },
{ name: "2 Beach Bees", types: ["bees", "beach"] },
{ name: "2 Overworld Bees", types: ["bees", "overworld"] },
{ name: "7 Plains Tonics", types: ["tonic", "collect", "plains"] },
];
bingoList[2] = [
{ name: "Open 5 Tomes", types: ["tome"] },
{ name: "Plains Paywall", types: ["paywall", "coin"] },
{ name: "4 Plains Coins", types: ["coin", "plains"] },
{ name: "5 Coins", types: ["coin"] },
{ name: "2 Beach Tonics", types: ["tonic", "collect", "beach"] },
];
bingoList[3] = [
{ name: "10 Tonics", types: ["tonic", "collect"] },
{ name: "9 Plains Tonics", types: ["tonic", "collect", "plains"] },
{ name: "3 Desert Tonics", types: ["tonic", "collect", "desert"] },
{ name: "Open 3 Alt States", types: ["tome"] },
{ name: "Bomb Jump to T4", types: ["misc", "plains"] },
];
bingoList[4] = [
{ name: "Woods Level First", types: ["bees", "first", "overworld"] },
{ name: "6 Woods Tonics", types: ["tonic", "collect", "woods"] },
{ name: "5 Lake Tonics", types: ["tonic", "collect", "lake"] },
{ name: "5C Plains Level", types: ["coin", "plains"] },
{ name: "14-2 Intended Unlock", types: ["tome", "pagie"] },
];
bingoList[5] = [
{ name: "4 Beach Coins", types: ["coin", "beach"] },
{ name: "7-S Intended Way", types: ["bees", "secret", "woods"] },
{ name: "4 Woods Bees", types: ["bees", "woods"] },
{ name: "3 Pagies", types: ["pagie"] },
{ name: "11 Plains Tonics", types: ["tonic", "collect", "plains"] },
];
bingoList[6] = [
{ name: "2 Desert Bees", types: ["bees", "desert"] },
{ name: "4 Overworld Bees", types: ["bees", "overworld"] },
{ name: "5 Desert Tonics", types: ["tonic", "collect", "desert"] },
{ name: "7 Lake Tonics", types: ["tonic", "collect", "lake"] },
{ name: "Touch the Dead Planker", types: ["misc", "desert"] },
];
bingoList[7] = [
{ name: "4 Woods Coins", types: ["coin", "woods"] },
{ name: "7-2 No DA", types: ["bees", "woods"] },
{ name: "8 Woods Tonics", types: ["tonic", "collect", "woods"] },
{ name: "4 Beach Tonics", types: ["tonic", "collect", "beach"] },
{ name: "2 Factory Tonics", types: ["tonic", "collect", "factory"] },
];
bingoList[8] = [
{ name: "8 Plains Coins", types: ["coin", "plains"] },
{ name: "10 Coins", types: ["coin"] },
{ name: "9 Lake Tonics", types: ["tonic", "collect", "lake"] },
{ name: "4 Desert Coins", types: ["coin", "desert"] },
{ name: "4 Lake Coins", types: ["coin", "lake"] },
];
bingoList[9] = [
{ name: "2 Plains Bees", types: ["bees", "plains"] },
{ name: "5C Woods Level", types: ["coin", "woods"] },
{ name: "5C Beach Level", types: ["coin", "beach"] },
{ name: "14-S Intended Way", types: ["bees", "secret", "lake"] },
{ name: "16-S Intended Way", types: ["bees", "secret", "beach"] },
];
bingoList[10] = [
{ name: "Open 10 Tomes", types: ["tome"] },
{ name: "Open 6 Alt States", types: ["tome"] },
{ name: "Desert Paywall", types: ["paywall", "coin"] },
{ name: "15 Coins", types: ["coin"] },
{ name: "Purchase 4 Tonics", types: ["tonic", "buy"] },
];
bingoList[11] = [
{ name: "4 Beach Bees", types: ["bees", "beach"] },
{ name: "8 Beach Coins", types: ["coin", "beach"] },
{ name: "6 Overworld Bees", types: ["bees", "overworld"] },
{ name: "8 Woods Coins", types: ["coin", "woods"] },
{ name: "5C Desert Level", types: ["coin", "desert"] },
];
bingoList[12] = [
{ name: "6 Woods Bees", types: ["bees", "woods"] },
{ name: "4 Lake Bees", types: ["bees", "lake"] },
{ name: "Lake Level First", types: ["bees", "first"] },
{ name: "Woods Paywall", types: ["paywall", "coin"] },
{ name: "12 Plains Coins", types: ["coin", "plains"] },
];
bingoList[13] = [
{ name: "Yooka-Laylee Rap", types: ["misc", "plains"] },
{ name: "4 Plains Bees", types: ["bees", "plains"] },
{ name: "20 Tonics", types: ["tonic", "collect"] },
{ name: "Open 9 Alt States", types: ["tome"] },
{ name: "20 Coins", types: ["coin"] },
];
bingoList[14] = [
{ name: "5-S Intended Way", types: ["bees", "secret", "woods"] },
{ name: "7 Desert Tonics", types: ["tonic", "collect", "desert"] },
{ name: "Super Buddy Slam", types: ["tonic", "collect"] },
{ name: "5C Lake Level", types: ["coin", "lake"] },
{ name: "25% IL 0 Bees", types: ["misc", "lair"] },
];
bingoList[15] = [
{ name: "8 Overworld Bees", types: ["bees", "overworld"] },
{ name: "6 Pagies", types: ["pagie"] },
{ name: "3 Factory Tonics", types: ["tonic", "collect", "factory"] },
{ name: "8 Desert Coins", types: ["coin", "desert"] },
{ name: "4 Factory Coins", types: ["coin", "factory"] },
];
bingoList[16] = [
{ name: "Purchase 7 Tonics", types: ["tonic", "buy"] },
{ name: "8 Lake Coins", types: ["coin", "lake"] },
{ name: "5C Factory Level", types: ["coin", "factory"] },
{ name: "2 Intended Secret Exits", types: ["bees", "secret"] },
{ name: "6 Beach Tonics", types: ["tonic", "collect", "beach"] },
];
bingoList[17] = [
{ name: "4 Desert Bees", types: ["bees", "desert"] },
{ name: "2 Factory Bees", types: ["bees", "factory"] },
{ name: "12 Beach Coins", types: ["coin", "beach"] },
{ name: "Rampo Tonic", types: ["tonic", "collect"] },
{ name: "Lake Paywall", types: ["paywall", "coin"] },
];
bingoList[18] = [
{ name: "6 Beach Bees", types: ["bees", "beach"] },
{ name: "8-2", types: ["bees", "woods", "buy"] },
{ name: "10 Woods Tonics", types: ["tonic", "collect", "woods"] },
{ name: "Open 15 Tomes", types: ["tome"] },
{ name: "12 Woods Coins", types: ["coin", "woods"] },
];
bingoList[19] = [
{ name: "6 Plains Bees", types: ["bees", "plains"] },
{ name: "25 Coins", types: ["coin"] },
{ name: "20-1 No DA", types: ["bees", "factory"] },
{ name: "Open 12 Alt States", types: ["tome"] },
{ name: "Ch. 4 Pagie", types: ["pagie"] },
];
bingoList[20] = [
{ name: "5-2", types: ["bees", "woods"] },
{ name: "10-2 No oob", types: ["bees", "desert"] },
{ name: "15-2 No oob", types: ["bees", "beach"] },
{ name: "Purchase 10 Tonics", types: ["tonic", "buy"] },
{ name: "12 Desert Coins", types: ["coin", "desert"] }
];
bingoList[21] = [
{ name: "20-2 No DA", types: ["bees", "factory"] },
{ name: "9 Pagies ", types: ["pagie"] },
{ name: "30 Tonics", types: ["tonic", "collect"] },
{ name: "12 Lake Coins", types: ["coin", "lake"] },
{ name: "8 Factory Coins", types: ["coin", "factory"] },
];
bingoList[22] = [
{ name: "30 Coins", types: ["coin"] },
{ name: "Factory Level First", types: ["bees", "first"] },
{ name: "4 Factory Tonics", types: ["tonic", "collect", "factory"] },
{ name: "Beach Paywall", types: ["paywall", "coin"] },
{ name: "50% IL ", types: ["misc", "lair"] },
];
bingoList[23] = [
{ name: "4 Intended Secret Exits", types: ["bees", "secret"] },
{ name: "12 Pagies", types: ["pagie"] },
{ name: "Purchase 13 Tonics", types: ["tonic", "buy"] },
{ name: "35 Coins", types: ["coin"] },
{ name: "Open 20 Tomes", types: ["tome"] },
];
bingoList[24] = [
{ name: "6 Desert Bees", types: ["bees", "desert"] },
{ name: "6 Lake Bees", types: ["bees", "lake"] },
{ name: "Open 15 Alt States", types: ["tome"] },
{ name: "12 Factory Coins", types: ["coin", "factory"] },
{ name: "40 Coins", types: ["coin"] }
];
bingoList[25] = [
{ name: "75% IL ", types: ["misc", "lair"] },
{ name: "4 Factory Bees", types: ["bees", "factory"] },
{ name: "15 Pagies", types: ["pagie"] },
{ name: "40 Tonics", types: ["tonic", "collect"] },
{ name: "Purchase 16 Tonics", types: ["tonic", "buy"] },
];

New Bingo - Dragon Warrior Monsters

Let me know if I missed anything, or did the syntax wrong.

1: Generator:

bingoGenerator = require("./generators/generator_bases/srl_generator_v5.js");

var bingoList = [];

bingoList[1] = [
{ name: "DrakSlime or DragonKid", types: ["breed"] },
{ name: "Windbeast or MadCandle", types: ["breed"] },
{ name: "MadRaven or RotRaven", types: ["breed"] },
{ name: "Gulpple or DarkEye", types: ["breed"] },
];
bingoList[2] = [
{ name: "SpotSlime or Tonguella", types: ["breed"] },
{ name: "MistyWing or CoilBird", types: ["breed"] },
{ name: "Toadstool or Mummy", types: ["breed"] },
{ name: "GiantWorm or EyeBall", types: ["breed"] },
];
bingoList[3] = [
{ name: "WingSlime or Picky", types: ["breed"] },
{ name: "Tortagon or Almiraj", types: ["breed"] },
{ name: "AmberWeed or Facer", types: ["breed"] },
{ name: "Lipsy or DarkCrab", types: ["breed"] },
];
bingoList[4] = [
{ name: "TreeSlime or MadPlant", types: ["breed"] },
{ name: "Pteranod or Wyvern", types: ["breed"] },
{ name: "StagBug or SpikyBoy", types: ["breed"] },
{ name: "SkulRider or DeadNite", types: ["breed"] },
];
bingoList[5] = [
{ name: "Snaily or GiantSlug", types: ["breed"] },
{ name: "Gasgon or FireWeed", types: ["breed"] },
{ name: "Catfly or BullBird", types: ["breed"] },
{ name: "EvilBeast or MadMirror", types: ["breed"] },
];
bingoList[6] = [
{ name: "SlimeNite or Pixy", types: ["breed"] },
{ name: "FairyDrak or Catapila", types: ["breed"] },
{ name: "PillowRat or FloraMan", types: ["breed"] },
{ name: "Shadow or RogueNite", types: ["breed"] },
];
bingoList[7] = [
{ name: "Babble or Spooky", types: ["breed"] },
{ name: "LizardMan or MedusaEye", types: ["breed"] },
{ name: "Saccer or Gophecada", types: ["breed"] },
{ name: "FloraJay or WingTree", types: ["breed"] },
];
bingoList[8] = [
{ name: "BoxSlime or JewelBag", types: ["breed"] },
{ name: "Poisongon or MadSpirit", types: ["breed"] },
{ name: "Grizzly or Gremlin", types: ["breed"] },
{ name: "DuckKite or Butterfly", types: ["breed"] },
];
bingoList[9] = [
{ name: "Swordgon or EvilWand", types: ["breed"] },
{ name: "Skullroo or Putrepup", types: ["breed"] },
{ name: "MadPecker or Demonite", types: ["breed"] },
{ name: "Cactiball or WeedBug", types: ["breed"] },
];
bingoList[10] = [
{ name: "Unicorn", types: ["breed"] },
{ name: "Roboster", types: ["breed"] },
{ name: "Phoenix", types: ["breed"] },
{ name: "Lionex", types: ["breed"] },
];
bingoList[11] = [
{ name: "ManEater", types: ["breed"] },
{ name: "HornBeet", types: ["breed"] },
{ name: "ChopClown", types: ["breed"] },
{ name: "BoneSlave", types: ["breed"] },
];
bingoList[12] = [
{ name: "5 Different Slimes", types: ["breed"] },
{ name: "5 Different Dragons", types: ["breed"] },
{ name: "5 Different Beasts", types: ["breed"] },
{ name: "5 Different Birds", types: ["breed"] },
];
bingoList[13] = [
{ name: "5 Different Plants", types: ["breed"] },
{ name: "5 Different Bugs", types: ["breed"] },
{ name: "5 Different Devils", types: ["breed"] },
{ name: "5 Different Zombies", types: ["breed"] },
];
bingoList[14] = [
{ name: "C-Class", types: ["progress"] },
{ name: "B-Class", types: ["progress"] },
{ name: "A-Class", types: ["progress"] },
{ name: "S-Class", types: ["progress"] },
];
bingoList[15] = [
{ name: "G-Class", types: ["progress"] },
{ name: "F-Class", types: ["progress"] },
{ name: "E-Class", types: ["progress"] },
{ name: "D-Class", types: ["progress"] },
];
bingoList[16] = [
{ name: "Joy Gate (FunkyBird)", types: ["progress"] },
{ name: "Wisdom Gate (SkyDragon)", types: ["progress"] },
{ name: "5 Different Materials", types: ["breed"] },
{ name: "Colosseum Gate (Digster)", types: ["progress"] },
];
bingoList[17] = [
{ name: "Anger Gate (BattleWrex)", types: ["progress"] },
{ name: "Well Gate (Gigantes)", types: ["progress"] },
{ name: "Strength Gate (StoneMan)", types: ["progress"] },
{ name: "Monster Farm Gate (CopyCat)", types: ["progress"] },
];
bingoList[18] = [
{ name: "Memories Gate (MadCat)", types: ["progress"] },
{ name: "Bewilder Gate (FaceTree)", types: ["progress"] },
{ name: "Peace Gate (FangSlime)", types: ["progress"] },
{ name: "Bravery Gate (BigEye)", types: ["progress"] },
];
bingoList[19] = [
{ name: "Beginning Gate (Healer)", types: ["progress"] },
{ name: "Villager Gate (Dragon)", types: ["progress"] },
{ name: "Talisman Gate (Golem)", types: ["progress"] },
{ name: "Bazaar Gate (MadNite)", types: ["progress"] },
];
bingoList[20] = [
{ name: "'King' monster", types: ["breed"] },
{ name: "'Mad' monster", types: ["breed"] },
{ name: "'Nite' monster", types: ["breed"] },
{ name: "Double letters in name (ex: gOOpi, ducKKite)", types: ["breed"] },
];
bingoList[21] = [
{ name: "3 Level 30+ Monsters", types: ["train"] },
{ name: "No limbs (excluding Slib)", types: ["breed"] },
{ name: "One Eye", types: ["breed"] },
{ name: "BigRoost or GoHopper or CopyCat or Watabou", types: ["breed"] },
];
bingoList[22] = [
{ name: "+5 Monster", types: ["breed"] },
{ name: "Breed 10 Monsters", types: ["breed"] },
{ name: "Breed 4 times with other masters", types: ["breed"] },
{ name: "Breed Slib", types: ["breed"] },
];
bingoList[23] = [
{ name: "Any Book", types: ["item"] },
{ name: "BeastTail", types: ["item"] },
{ name: "13 Tiny Medals", types: ["item"] },
{ name: "Badmeat", types: ["item"] },
];
bingoList[24] = [
{ name: "Beat 3 Masters in wild", types: ["choice"] },
{ name: "Pick up no items in a gate", types: ["choice"] },
{ name: "Hatch an egg without checking gender", types: ["choice"] },
{ name: "Turn away all monsters in a gate", types: ["choice"] },
];
bingoList[25] = [
{ name: "'slash' skill", types: ["breed"] },
{ name: "Tatsu/Diago/Samsi/Bazoo-call", types: ["breed"] },
{ name: "'dance' skill", types: ["breed"] },
{ name: "Type counter skill (ex: BeastCut, SmashSlime", types: ["breed"] },
];

2: Name: Dragon Warrior Monsters
3: DWM

OSRS Bingo Setup

Was hoping to submit a pull request for this but couldn't get the site to compile locally, so I guess I'll just open an issue. Sorry.

Please add the following Old School RS bingo list + description:
https://pastebin.com/f7rk5C2C

GameType.osrs: {
    "name": "Old School Runescape",
    "variants": [
      (GameType.osrs, "F2P + Entrana", "OSRS")
    ],
},

Splatoon 2 Octo Expansion Bingo

I would like SPlatoon 2 Octo Expansion added to Bingosync

var bingoList = [];
bingoList[1] = [
{name: "A05 w/ splat bombs", types: ["A", "early"]},
{name: "Break All Tutorial Area Boxes", types: ["early"]}
];

bingoList[2] = [
{name: "Splat 5 Octosnipers", types: ["enemy"]},
{name: "Complete 2 connector (square) stations", types: ["lines"]},
{name: "Unlock 2 lines", types: ["lines"]},
{name: "Get a loan from Marina and pay it back", types: ["credits"]}
];

bingoList[3] = [
{name: "All levels on yellow line", types: ["A"]},
{name: "Beat 1 boss", types: ["boss"]},
{name: "1 Thang", types: ["thang"]},
{name: "Splat 5 Octolings", types: ["octo"]},
{name: "Beat 2 levels using Baller", types: ["baller"]}
];

bingoList[4] = [
{name: "Beat all levels on 2 lines", types: ["lines"]},
{name: "C02 w/o goal Balloon Fish", types: ["ink"]},
{name: "Splat 5 OctoCommanders", types: ["enemy"]},
{name: "Beat a station using all 3 supplied weapons", types: ["misc"]},
{name: "Complete 4 connector (square) stations", types: ["lines"]}
];

bingoList[5] = [
{name: "Beat all levels on blue line [H]", types: ["H", "lines"]},
{name: "5000 credits", types: ["credits"]},
{name: "I05/B08 w/ the Bamboozler", types: ["I", "B"]},
{name: "Beat 2 levels using inkjet", types: ["inkjet"]},
{name: "J04 w/ the inkbrush", types: ["J", "inkbrush"]},
{name: "Splat 5 OctoBombers", types: ["enemy"]}
];

bingoList[6] = [
{name: "Splat 10 Octolings", types: ["octo"]},
{name: "Complete 6 connector (square) stations", types: ["lines"]},
{name: "Beat 2 “Balloon Pop” levels", types: ["balloon"]},
{name: "Collect 5 armor upgrades", types: ["armor"]},
{name: "Beat 3 levels using a roller", types: [""]},
{name: "I02 without grabbing ink refills", types: ["I", "ink"]}
];

bingoList[7] = [
{name: "J03/D08 with the Splat Charger", types: ["J", "D"]},
{name: "F02 w/ burst bombs only", types: ["F"]},
{name: "J02 w/ Rapid blaster pro", types: ["J"]},
{name: "Beat 3 levels using a brush", types: ["brush"]},
{name: "Splat 10 Octosnipers", types: ["enemy"]},
{name: "Beat both rainmaker levels", types: ["rainmaker"]}
];

bingoList[8] = [
{name: "Beat 3 levels using dualies", types: ["dual"]},
{name: "Beat 3 levels using a slosher", types: ["slosher"]},
{name: "Collect 2 thangs", types: ["thang"]},
{name: "Beat all levels on purple line", types: ["G", "lines"]},
{name: "Beat 3 levels using a brella", types: ["brella"]},
{name: "Collect 15 power egg containers", types: ["credits"]},
{name: "J02 w/ splat charger ", types: ["J", "charger"]}
];

bingoList[9] = [
{name: "Beat all levels on gray line", types: ["D", "lines"]},
{name: "Beat all levels on lime line", types: ["I", "lines"]},
{name: "Complete E10 “Cratebuster Station” with splat charger", types: ["E", "charger"]},
{name: "Beat 3 levels using a splatling", types: ["splatling"]},
{name: "Beat 2 stations using all 3 supplied weapons", types: ["misc"]},
{name: "Fly through every ring in G10/E07", types: ["G", "E", "inkjet"]}
];

bingoList[10] = [
{name: "Beat all levels on black line", types: ["F", "lines"]},
{name: "Unlock 6 lines", types: ["lines"]},
{name: "Beat 3 levels using a charger", types: ["charger"]},
{name: "Beat 2 8 Ball levels", types: ["8ball"]},
{name: "Complete 10 connector (square) stations", types: ["lines"]},
{name: "Splat 10 Octocommanders", types: ["enemy"]}
];

bingoList[11] = [
{name: "Beat all levels on pink line", types: ["J", "lines"]},
{name: "Beat 5 levels using a roller", types: ["roller"]},
{name: "Beat 4 8-Ball levels", types: ["8ball"]},
{name: "Beat 3 levels using inkjet", types: ["inkjet"]},
{name: "Collect 20 power egg containers", types: ["credits"]},
{name: "Beat 5 levels using a brush", types: ["brush"]}
];

bingoList[12] = [
{name: "Beat 3 levels using Baller", types: ["baller"]},
{name: "Beat all levels on green line", types: ["C", "lines"]},
{name: "Beat both data point stages", types: ["E", "F"]},
{name: "Beat both tower control levels", types: ["H", "B"]},
{name: "Get at least 10000 credits", types: ["credits"]},
{name: "Beat 3 “Balloon Pop” levels", types: ["balloon"]}
];

bingoList[13] = [
{name: "Beat all levels on teal line", types: ["B", "lines"]},
{name: "Beat 5 levels using dualies", types: ["dual"]},
{name: "Complete 13 connector (square) stations", types: ["lines"]},
{name: "G02 w/ the Dynamo Roller", types: ["G", "roller"]},
{name: "E09 w/ only Burst Bombs", types: ["E"]},
{name: "Splat 15 Octosnipers", types: ["enemy"]}
];

bingoList[14] = [
{name: "Unlock 8 lines", types: ["lines"]},
{name: "Beat 2 boss fights", types: ["boss"]},
{name: "Beat both match the shape stages", types: ["F", "J"]},
{name: "Beat 5 levels using a slosher", types: ["slosher"]},
{name: "I01/G01 with the Octobrush", types: ["boss", "brush"]},
{name: "Beat 3 stages using all 3 supplied weapons", types: ["misc"]}
];

bingoList[15] = [
{name: "Beat all levels on magenta line", types: ["E", "lines"]},
{name: "Beat 7 levels using a roller", types: ["roller"]},
{name: "Beat both “defend the orb” levels", types: ["J", "D", "I", "E"]},
{name: "Beat 5 levels using a brella", types: ["brella"]},
{name: "Collect 30 power egg containers", types: ["credits"]},
{name: "Splat 15 Octolings", types: ["octo"]}
];

bingoList[16] = [
{name: "Beat 5 levels using a splatling", types: ["splatling"]},
{name: "Beat 6 8-Ball levels", types: ["8ball"]},
{name: "Beat all 4 limited ink stages", types: ["ink"]},
{name: "Complete 16 connector (square) stations", types: ["lines"]},
{name: "Splat 10 Octobombers", types: ["enemy"]}
];

bingoList[17] = [
{name: "Beat all levels on 4 lines", types: ["lines"]},
{name: "Beat 5 levels using inkjet", types: ["inkjet"]},
{name: "Beat 4 “Balloon Pop” levels", types: ["balloon"]},
{name: "Collect 3 thangs", types: ["thang"]},
{name: "Unlock all 10 lines", types: ["lines"]}
];

bingoList[18] = [
{name: "Beat 3 boss fights", types: ["boss"]},
{name: "Beat 5 levels using a charger", types: ["charger"]},
{name: "Beat 7 levels using a brella", types: ["brella"]},
{name: "Get at least 15000 credits", types: ["credits"]},
{name: "Splat 15 Octocommanders", types: ["enemy"]},
{name: "Collect 10 armor upgrades", types: ["armor"]}
];

bingoList[19] = [
{name: "Beat 7 levels using a slosher", types: ["slosher"]},
{name: "Beat 7 levels using a brush", types: ["brush"]},
{name: "Beat 8 8-Ball levels", types: ["8ball"]},
{name: "Splat 20 Octosnipers", types: ["enemy"]},
{name: "Collect 40 power egg containers", types: ["credits"]}
];

bingoList[20] = [
{name: "Beat all levels on 6 lines", types: ["lines"]},
{name: "Beat 7 levels using a splatling", types: ["splatling"]},
{name: "Beat 10 levels using a roller", types: ["roller"]},
{name: "Complete all 20 connector (square) stations", types: ["lines"]},
{name: "Get at least 20000 credits", types: ["credits"]},
];

bingoList[21] = [
{name: "Beat all 4 boss fights", types: ["boss"]},
{name: "Beat 7 levels using a charger", types: ["charger"]},
{name: "Splat 20 Octocommanders", types: ["enemy"]}
];

bingoList[22] = [
{name: "Beat 12 levels using a roller", types: ["roller"]},
{name: "Collect all 4 thangs", types: ["thang"]}
];

bingoList[23] = [
{name: "Beat 9 levels using a brush", types: ["brush"]},
{name: "Get at least 25000 credits", types: ["credits"]},
{name: "Splat 25 Octosnipers", types: ["enemy"]},
{name: "Collect 50 power egg containers", types: ["credits"]}
];

bingoList[24] = [
{name: "Beat all 10 8 Ball levels", types: ["8ball"]},
{name: "Splat 15 Octobombers", types: ["enemy"]},
{name: "Collect 15 armor upgrades", types: ["armor"]}
];

bingoList[25] = [
{name: "Beat all levels on 8 lines", types: ["long", "lines"]},
{name: "Get at least 30000 credits", types: ["long", "credits"]}
];
$(function() { srl.bingo(bingoList, 5); });

Want to add a Subnautica list using an existing generator for another game.

So, I have no knowledge of github and limited coding knowledge. A while back a friend of mine made a generator for Link's Awakening - https://github.com/kbuzsaki/bingosync/blob/master/bingosync-app/generators/generator_bases/ladx_generator.js

He tells me it uses groups which is ideal for me. I have made a list of goals for Subnautica, and have saved it in both a .txt and .js file,
subnautica_bingo_list.txt

However I have no idea how to actually add it or what to do now, and am seeking guidance.
Thanks.

Add pop-out for board (and possibly rows?)

Pop out windows will almost certainly need a websocket of their own. The hard part is making sure that this doesn't interfere with the other window.

I think they should be okay together?

Add Octopath Traveler bingo

I'm not exactly certain what all has to be added other than the generator, so I'm making this an issue rather than a PR. Due to the structure - 8 sets of goals which don't want to be in the same bingo in order to make for a somewhat balanced card around the length of All Prologues - it required a custom generator, which I've implemented a version of below.

I actually copped out on trying to generate a unique layout so just hardcoded one that gets randomly mirrored and transposed and filled in to hide the pattern a bit. I'll probably come back to the problem later and figure out more of these not-quite-magic-squares or at least how to generate one in no worse than quadratic time (so I can hardcode more options).

// What even is this magic?
(function(j, i, g, m, k, n, o) {
    function q(b) {
        var e, f, a = this,
            c = b.length,
            d = 0,
            h = a.i = a.j = a.m = 0;
        a.S = [];
        a.c = [];
        for (c || (b = [c++]); d < g;) a.S[d] = d++;
        for (d = 0; d < g; d++) e = a.S[d], h = h + e + b[d % c] & g - 1, f = a.S[h], a.S[d] = f, a.S[h] = e;
        a.g = function(b) {
            var c = a.S,
                d = a.i + 1 & g - 1,
                e = c[d],
                f = a.j + e & g - 1,
                h = c[f];
            c[d] = h;
            c[f] = e;
            for (var i = c[e + h & g - 1]; --b;) d = d + 1 & g - 1, e = c[d], f = f + e & g - 1, h = c[f], c[d] = h, c[f] = e, i = i * g + c[e + h & g - 1];
            a.i = d;
            a.j = f;
            return i
        };
        a.g(g)
    }

    function p(b, e, f, a, c) {
        f = [];
        c = typeof b;
        if (e && c == "object")
            for (a in b)
                if (a.indexOf("S") < 5) try {
                    f.push(p(b[a], e - 1))
                } catch (d) {}
                return f.length ? f : b + (c != "string" ? "\0" : "")
    }

    function l(b, e, f, a) {
        b += "";
        for (a = f = 0; a < b.length; a++) {
            var c = e,
                d = a & g - 1,
                h = (f ^= e[a & g - 1] * 19) + b.charCodeAt(a);
            c[d] = h & g - 1
        }
        b = "";
        for (a in e) b += String.fromCharCode(e[a]);
        return b
    }
    i.seedrandom = function(b, e) {
        var f = [],
            a;
        b = l(p(e ? [b, j] : arguments.length ? b : [(new Date).getTime(), j, window], 3), f);
        a = new q(f);
        l(a.S, j);
        i.random = function() {
            for (var c = a.g(m), d = o, b = 0; c < k;) c = (c + b) * g, d *= g, b = a.g(1);
            for (; c >= n;) c /= 2, d /= 2, b >>>= 1;
            return (c + b) / d
        };
        return b
    };
    o = i.pow(g, m);
    k = i.pow(2, k);
    n = k * 2;
    l(i.random(), j)
})([], Math, 256, 6, 52);

bingoGenerator = function(bingoList, opts) {
  const LANG = opts.lang || 'name';
  const MODE = opts.mode || 'normal';
  const cardType = 'Normal';
  const SEED = opts.seed || Math.ceil(999999 * Math.random()).toString();
  const size = 5;
  
  // octopath generator by @CAD97
  Math.seedrandom(SEED);
  
  function shuffle(list) {
    for (let i = list.length - 1; i > 0; i--) {
      const j = Math.floor(Math.random() * (i + 1));
      [list[i], list[j]] = [list[j], list[i]];
    }
    return list;
  }
  function transpose(matrix) {
    for (let i = 0; i < matrix.length; i++) {
      for (let j = 0; j < i; j++) {
        [matrix[i][j], matrix[j][i]] = [matrix[j][i], matrix[i][j]]
      }
    }
    return matrix;
  }
  function horizontalMirror(matrix) {
    for (let i = 0; i < matrix.length; i++) {
      matrix[i] = matrix[i].reverse();
    }
    return matrix;
  }
  function verticalMirror(matrix) {
    return matrix.reverse();
  }
  function coinFlip() {
    return Math.random() < 0.5;
  }
  function randomPop(arr) {
    const i = Math.floor(Math.random() * arr.length);
    const ret = arr[i];
    arr.splice(i, 1);
    return ret;
  }
  
  let boardLayout = [
    [0, 2, 4, 6, 7],
    [1, 3, 2, 5, 4],
    [3, 4, 1, 2, 6],
    [5, 6, 3, 7, 0],
    [2, 1, 7, 0, 5]
  ];
  if (coinFlip()) boardLayout = transpose(boardLayout);
  if (coinFlip()) boardLayout = horizontalMirror(boardLayout);
  if (coinFlip()) boardLayout = verticalMirror(boardLayout);
  bingoList = shuffle(bingoList);
  
  return [].concat(...boardLayout.map(row =>
    row.map(idx => randomPop(bingoList[idx]))));
}

var bingoList = [];
bingoList[0] = [
	{ "name": "Ophilia" },
	{ "name": "Ophilia - Sheltering Veil" },
	{ "name": "Ophilia - Luminescence" },
	{ "name": "Ophilia - Heal More" },
	{ "name": "Ophilia - Reflective Veil" },
	{ "name": "Ophilia - Revive" }
];
bingoList[1] = [
	{ "name": "Cyrus" },
	{ "name": "Cyrus - Lightning Bolt" },
	{ "name": "Cyrus - Analyze" },
	{ "name": "Cyrus - Fire Storm" },
	{ "name": "Cyrus - Blizzard" },
	{ "name": "Cyrus - Lightning Blast" }
];
bingoList[2] = [
	{ "name": "Tressa" },
	{ "name": "Tressa - Rest" },
	{ "name": "Tressa - Trade Tempest" },
	{ "name": "Tressa - Donate BP" },
	{ "name": "Tressa - Sidestep" },
	{ "name": "Tressa - Hired Help" }
];
bingoList[3] = [
	{ "name": "Olberic" },
	{ "name": "Olberic - Spearhead" },
	{ "name": "Olberic - Incite" },
	{ "name": "Olberic - Cross Strike" },
	{ "name": "Olberic - Stout Wall" },
	{ "name": "Olberic - Thousand Spears" }
];
bingoList[4] = [
	{ "name": "Primrose" },
	{ "name": "Primrose - Peacock Strut" },
	{ "name": "Primrose - Mole Dance" },
	{ "name": "Primrose - Night Ode" },
	{ "name": "Primrose - Panther Dance" },
	{ "name": "Primrose - Bewildering Grace" }
];
bingoList[5] = [
	{ "name": "Alfyn" },
	{ "name": "Alfyn - Rehabilitate" },
	{ "name": "Alfyn - Amputation" },
	{ "name": "Alfyn - Empoison" },
	{ "name": "Alfyn - Vivify" },
	{ "name": "Alfyn - Last Stand" }
];
bingoList[6] = [
	{ "name": "Therion" },
	{ "name": "Therion - HP Thief" },
	{ "name": "Therion - Shackle Foe" },
	{ "name": "Therion - Armor Corrosive" },
	{ "name": "Therion - Steal SP" },
	{ "name": "Therion - Share SP" }
];
bingoList[7] = [
	{ "name": "H'aanit" },
	{ "name": "H'aanit - Thunderbird" },
	{ "name": "H'aanit - Leghold Trap" },
	{ "name": "H'aanit - Mercy Strike" },
	{ "name": "H'aanit - Arrowstorm" },
	{ "name": "H'aanit - Take Aim" }
];

I used a few more recent javascriptisms but I can dumb it down if you want as well.

Add Lists API

Hi,

I'm working on a browser extension for Bingosync and I need to retrieve the lists of goals for the current game and variant in order to add a couple new features (organizing the card, and custom translation notably)

As of right now, I've been able to fetch one of the generators, and then evaluate the code, but it's very janky and unsafe since I'm using eval on code pulled from the web.

On top of that, this method does not work from the extension options page, where the user would input the url of the generator if I had to go with the current system. (CSP protecting the browser)

image

A way more elegant and practice way to do this would be to be able to read current Game and Variant somewhere in the DOM, and call an internal API that returns every list that the generator used.

Is this a thing ? Could you open an API for it if it isn't ?

Let me know if you need any more details about what I'm trying to accomplish.

Add "Lobby" functionality to let players start a game after joining a room

The rush to join a room after the seed is revealed can be stressful and error-prone.

This can be alleviated by letting players join a room before committing to a seed. The implementation could either allow delayed setting of the seed or "re-setting" of the seed after a room is already created (likely creating a new game).

Allow for more than 25 items in JSON list; select them randomly

I am interested in this feature, and if it will be approved I am willing to implement it,

I was thinking I could implement a new function into forms.py, where in clean.py, instead of denying any board where len() != 25, I will instead check if len() > 25, call a function which randomly reduces the list down to 25, then continues on with that board.

I have a goal list of more than 100 goals, and am currently having to pick them randomly before hand using this tool.

Add Link's Awakening bingo

Could you please add this generator for Link's Awakening DX?

Game: The Legend of Zelda: Link's Awakening DX
Abbreviation: LADX
Generator: https://pastebin.com/jHuhVGr9

This generator is geared towards Randomizer use, as it removes some goals that are impossible for the current randomizer (i.e. goals related to ghost).

Feature suggestion: "counting" tiles

I just watched this video and noticed a possible improvement for the bingo board:

Problem: These dudes have goals like "complete 5 levels in normal difficulty", but as soon as multiple goals like this are in play it gets very hard to remember all of it.
Proposition: How about the option to declare a tile "counting", and have a little counter in the corner of the tile which counts down every time a player selects it? As soon as the counter hits zero the tile is marked as won by the player who first completed it (if playing lockout, for example).
Don't know how often this use case arises, but I wanted to throw it out there.

Redesign how generator attribution is presented

Current generator attribution is done manually in paragraph form on the about page. This is haphazard and confusing at best, incomplete and inscrutable at worst.

Need to redesign the page to make it more clear where each bingo comes from and who asked for it, possibly in a standardized tabular layout. Would also be nice for this page to have instructions for how to request that a generator be added and how to create a generator if one doesn't exist.

Transition all django<->tornado traffic to use localhost

The tornado url is set in settings.py as sockets.bingosync.com. This is working, but I think it means that traffic between them is round-tripping the net.

Also might be a good idea to restrict certain routes for each server to localhost only.

New Skyrim Bingo

Hi I noticed there was no Skyrim Bingo generator so I decided to try to make one myself. This is my first time with making one of these so I expect something to be possibly wrong. Here is the link: https://pastebin.com/yhXntYHK
Let me know if I need to make any changes!

Add a way to ensure that multiple rooms have the same seed

When multiple teams are racing against each other in bingo blackout, they need to make sure that they're all racing using the same board.

This is done by human coordination and can be error prone, so it would be nice to have a built in way to make sure multiple rooms have the same seed.

Minecraft Bedrock Friendly Cards

I play Minecraft Bedrock on Switch with my brother locally(which is horrible) and when we revealed the card I saw "Put a banner on a Shield". I was like 'Isn't that a Java thing?' He was like 'Just ignore it.' So long story short, there should be a Bedrock Friendly Card.
Screenshot_20210210-222314_Chrome

New game: Pikmin 3

Goal list, SRL style: https://pastebin.com/vbcWwqcz
Name: Pikmin 3
Shortened name: Pik3
I can't imagine the full name is long enough to justify an actually shorter short name, but there's a 4 character name if you need it

Integrate with Bingo64 (SM64 mod)

Hello! I've made a ROM hack of SM64 called "Bingo64". (Github repo: https://github.com/matt-kempster/bingo64, Discord: https://discord.gg/cShWXHe)

It's bingo that's built in to the game; this enables objectives that humans would never be able to track, like exact amounts of total coins collected, or even things like "perform a BLJ" (which would otherwise be rather subjective).

I'm interested in integrating it into bingosync, but it would be a very difficult task. It would involve porting all of the C logic into JS in a way that preserves the RNG functionality.

I almost want to say that packaging the C code as some sort of portable binary, and installing it on your bingosync site server-side, would be easier. Maybe not that extreme, but something like that.

Do you have any thoughts on how we might approach this? (The other issue is that the game is under active development, and when I add objectives, I'll have to change the board generator again and again!)

If it is infeasible, I could write my own site - but I'd love to integrate with the existing solution if at all possible. Thanks!

Feel free to close this issue if this was the wrong medium for this.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.