Repository files navigation

Guided by Fate

Fate?

Finding the true path the story will take...

Tower of God DiscordTower of God Reddit

Can find downloads here

To make sure this is as accessible as possible to all people, all examples below use free and open source software, and there is no requirement to use any service or be connected to the internet for any of this to work. I am also providing files that would work on Linux, so even the Operating System would not require a potentially country restricted one like Windows, or hardware specific ones like Macintosh.

Note: If you are copying names directly from Discord, or just names in general contain non-ASCII characters, then I would recommend you change a setting in MarkText to better handle UTF encoding.

File -> Preferences -> Editor -> File Representation

And turn off "Automatically detect file encoding" and make sure default encoding it set to UTF-8

If you are looking for a specific section there is a Table of Contents:

brave_9SHeXeXKGF


I made this app for Tower of God Wiki/Reddit Discord, but there is no reason this couldn't be used by other communities or for personal use. This is the format that the App is based around, but it is not limited to this, and offers a wide variety of customization:

Bingo

Usage

I tried to make the app as simple to interface with as can be. After having downloaded the App, simply put it in a directory of your choice. I have imagined it would go into a folder, and then along with it, another folder to hold the Chapter Spreadsheets, but they don't have to be in the same place for the App to work.

Example:

Tower Of God Bingo
-> Chapters
-> tog-bingo.exe

Handling Data

Managing Spreadsheet

To start with, the spreadsheet:

image

The app works on a per file basis, so each new chapter, or just any new bingo in general, would have its own file. All entries are done on the first sheet. Column A is where all names go. Column B is where their guesses go. The names should be continuous, with no empty row in-between any names. If done as such, no names past the break would be analyzed.

All characters are valid except for P which is reserved to pass on squares. In the examples below I use Y and N, but you could just as easily use X and O, or any other combination of characters, what's important here is to be consistent and everyone follow the syntax. A player can only Pass on the bonus squares. If they attempt to Pass on squares they can't, the app will mark it as an incorrect guess by them. Case doesn't matter, nor any spaces.

Getting File Path

Getting the path to the file is pretty simple. In the normal Windows Explorer, you can click the arrow on the top right and more options will cascade. Simply click the file to highlight it, and then click "Copy path". This will copy it to the clipboard.

image

If you are using OneCommander, there is an option on the bottom of the right-click context menu.

image

(Note: Keyboard shortcut only works in OneCommander)

On Linux you can simply just copy the file as a normal copy, and when you paste inside a text field, it will paste the path to the file.

Running App

Note: The Spreadsheet Must Not be Opened By Another Program When Using App

On Windows you can simply open it like any other program.

On Linux, first you must make sure its executable.

image

Then you can right-click in an empty space inside the directory, and click open in terminal.

image

This will open the current directory in the terminal. From there type ./ and then the program name. Just typing tog and pressing TAB should be enough to auto complete.

image

Using App

Upon running the app, it will ask you to decide on a choice:

image

Default Configuration

Entering 1 will load the default settings based on this format:

Bingo

That is to say a 4x3 grid, with the bonus being the final column. Think of it like a 3x3 + 1 Column:

Grid123Bonus
A10101020
B30303060
C505050100

After entering 1 and pressing ENTER to submit, it will inform you the settings were loaded and now ask for the path you should have copied to your clipboard.

On Windows you can simply Right-Mouse CLICK and it should paste the path.

You can also press CTRL + SHIFT + V on your keyboard to paste it. This option will also work on Linux.

One you have pasted it, press ENTER to submit it. The Program will now ask for you to enter a Key. This Key is the correct sequence of the bingo once the correct bingo is known. The players guesses are compared against the known correct Key.

The order is read from left to right, and row to row.

-->

10101020

-->

30303060

-->

505050100

For the default settings, the key must be 12 characters long. If you do not enter enough, the program will tell prompt you again. A Key should NOT contain any other characters other than the decided syntax, Y and N, X and O, etc. Case doesn't matter, nor any spaces.

image

Upon entering in the key press ENTER to submit. If there are no errors, it will tell you it successfully completed the operation, and tell you how many guesses have been gone through.

image

The output file is saved in the same location as the previously entered path, and takes the same name as well. It saves it as a Markdown file, but it also functions just fine as a normal text document. The output file is pre ordered from highest score to lowest, with the names corresponding.

Along with the scores, it also outputs two tables, the first one shows the correct bingo answer, and the second shows the total number of correct picks for the respective squares. Its output in a percentage format.

image

image

Custom Configuration

Besides the default configuration, the solver also supports custom inputs.

The maximum size for the grid is 255 x 255, for a total of 65,025 squares. Under realistic conditions this is well beyond reasonable usage, as there would need to be just as many questions that are thought up.

Press 2 and press ENTER and initially it will ask you for an input of some value and also show what the default settings are for reference.

Default XL

What I will be building in this example: image

This amount is how many columns there are in total, including the bonus columns.

image

Default settings loads a value of 4.

Grid1234

In this example I will be using a column value of 5.

Grid12345

image

Next it asks for a row input. I'll also be using a value of 5, for a total of 25 total squares.

Grid12345
A
B
C
D
E

image

Now it asks for the bonus column amount. In the default config, of the 4 total columns, the 1 final column is the bonus. Like a 3x3 grid, plus an extra row.

Grid123Bonus

For this example I will be saying that out of the 5 total columns, 2 will be bonus.

Grid123BonusBonus

image

Next is how much each row will increment over the current row. In the default config the first row is worth 10 per normal square, with a value of 20 here, the next row will go up to 30. Then the following row will go up another 20 to equal 50.

Grid1
A10
B30
C50

For this example I will use 50 as the value:

Grid1
A10
B60
C110

image

Next is deciding the multiplier the bonus squares will have over their rows normal value. In the default config a value of 2 means that the bonus squares are worth twice the amount.

Grid123Bonus
A10101020
B30303060

I will be using a 4 here, making each bonus square worth four times the rows base amount.

image

Finally we have the starting rows base amount. This is what the worth is of the normal squares on the very first row. For this value I will use a 20 base value.

So for this example we have a 5x5 grid, of which the final 2 columns are bonus columns, and which the first row starts with a base value of 20, and a 4 times multiplier for the bonus squares, with each rows base value going up by 50 from the previous.

Grid123BonusBonus
A2020208080
B707070280280
C120120120480480
D170170170680680
E220220220880880

image

It then asks to input the path. This is done just as normal.

image

And finally you enter the key. And with that you are done. The solver will output in the same manner as before, making a markdown file with the same name and location as the original spreadsheet. Also ordered from highest score to lowest. Also with the table of the correct answer, and the correct amount of guesses.

image

Standard Bingo

If you wanted a more standard Bingo format, where every square would be the same value, no bonus squares, a free square, etc., then you can also get that functionality as well.

image

Firstly, I will be making a 5x5 grid, with a free space in the middle. Each square will be worth 50 points, and you can pass on any square.

As the host of the Bingo, you can decide the rules to voting, where you can say to just pick what they think is going to happen, passing on squares they don't think will happen, and leave it at that. However, you could also decide to award points for those who want to say that some things wont happen instead. Its all decided on the Key input in the end. For this example I will just be taking inputs that people think will happen, and just skip those they think won't.

Now as this isn't an actual bingo, where you have to make a full connected line, a free space doesn't really serve a purpose, but just for demonstration purposes I will include it. A free square is really just that you would always enter something in that spot, that everyone knows this, and entered it in themselves in that spot for a correct guess. For this example I will use also be using X and O.

image

I set the the Columns and Rows to 5, to set the 5x5 grid size.

image

The way the program works by default is that only bonus squares can be Passed, so to make it possible to pass on any square in the grid, we need to set the bonus columns to the same amount as the full range of columns, in this case 5. This qualifies the full grid as "Bonus", allowing any to be passed with a P.

image

As I am making each square worth 50, I set this to 50.

image

As I want all squares on all rows to be worth the same, 50, I will set this to 0.

image

Although we effectively made the entire bingo grid a bonus grid, as I've already set the value I wanted, I don't need any multiplier. I will set it to 1 so that the value for all squares are left at 50, 50 x 1 = 50.

image

And with that the grid is built. Next you just enter the file path as normal.

image

For the answer key, you would just enter the known correct outcome, making sure to answer the free square, that everyone would have, with the agreed upon character. For the center square I made sure that it was an O that would line up with what everyone else would have picked there, making a "free" square.

Key12345
AXOOXX
BXXOOO
COXOXX
DXOOXX
EOXXOX

A guess by someone could then look like this, having followed the rules and only voted for what they thought would happen, and passed the ones they thought wouldn't:

Guess12345
APPOOP
BPPOPO
COPOOP
DPOOOP
EOPPOP

Now first of all, depending on your humor, this can be hilarious. And secondly, the result such a guess would have would be:

Stats12345
A0.00%0.00%100.00%0.00%0.00%
B0.00%0.00%100.00%0.00%100.00%
C100.00%0.00%100.00%0.00%0.00%
D0.00%100.00%100.00%0.00%0.00%
E100.00%0.00%0.00%100.00%0.00%
NamesScores
Rolo300

Markdown to PNG

This process in manual for now. With the file open in MarkText click the hamburger menu and go to: File -> Export -> HTML

image

From there a box will pop up. You can search through and tweak things if you'd like, one of which I'd recommend being the font size, but you can also just leave it default which is what I have done in this example. Just name the file what you want, and click save.

image

I have kept the same name as the other files for this bingo.

image

Next you'll want to open the new HTML file. This should open your default browser.

image

To get a thinner, and in my opinion, a nicer looking final image, you can just make the browser window itself as thin as you need.

image

The viewport size changes and so does the table rendered.

From here, if you are on FireFox, or a fork of it, you can just right click and save as screenshot. and save as a full page.

image

image

If you are on a Chromium based browser, like Google Chrome, Edge, Brave, etc., you can get an extension, or you can use the built in option that's hidden behind dev tools.

As I couldn't possibly cover every extension, I'll only be showing the dev tools option. To enter the dev mode, press F12 on your keyboard. this will bring up a menu in the browser.

image

From there press CTRL + SHIFT + P to bring up the command pallet. Type in Shot and select "Capture full-size screenshot" and then name it and choose where to save it. I name it the same as the other folders and place it in the same folder.

image

And with that you have a PNG image with that width you set.

image

Credits

Thanks to JetBrains for the licenses as part of the All Products Pack and their continued support for open source projects

JetBrains

About

Repo for a bingo app I made for the Tower of God Discord

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Repository files navigation

Guided by Fate

Fate?

Finding the true path the story will take...

Tower of God DiscordTower of God Reddit

Can find downloads here

To make sure this is as accessible as possible to all people, all examples below use free and open source software, and there is no requirement to use any service or be connected to the internet for any of this to work. I am also providing files that would work on Linux, so even the Operating System would not require a potentially country restricted one like Windows, or hardware specific ones like Macintosh.

Note: If you are copying names directly from Discord, or just names in general contain non-ASCII characters, then I would recommend you change a setting in MarkText to better handle UTF encoding.

File -> Preferences -> Editor -> File Representation

And turn off "Automatically detect file encoding" and make sure default encoding it set to UTF-8

If you are looking for a specific section there is a Table of Contents:

brave_9SHeXeXKGF


I made this app for Tower of God Wiki/Reddit Discord, but there is no reason this couldn't be used by other communities or for personal use. This is the format that the App is based around, but it is not limited to this, and offers a wide variety of customization:

Bingo

Usage

I tried to make the app as simple to interface with as can be. After having downloaded the App, simply put it in a directory of your choice. I have imagined it would go into a folder, and then along with it, another folder to hold the Chapter Spreadsheets, but they don't have to be in the same place for the App to work.

Example:

Tower Of God Bingo
-> Chapters
-> tog-bingo.exe

Handling Data

Managing Spreadsheet

To start with, the spreadsheet:

image

The app works on a per file basis, so each new chapter, or just any new bingo in general, would have its own file. All entries are done on the first sheet. Column A is where all names go. Column B is where their guesses go. The names should be continuous, with no empty row in-between any names. If done as such, no names past the break would be analyzed.

All characters are valid except for P which is reserved to pass on squares. In the examples below I use Y and N, but you could just as easily use X and O, or any other combination of characters, what's important here is to be consistent and everyone follow the syntax. A player can only Pass on the bonus squares. If they attempt to Pass on squares they can't, the app will mark it as an incorrect guess by them. Case doesn't matter, nor any spaces.

Getting File Path

Getting the path to the file is pretty simple. In the normal Windows Explorer, you can click the arrow on the top right and more options will cascade. Simply click the file to highlight it, and then click "Copy path". This will copy it to the clipboard.

image

If you are using OneCommander, there is an option on the bottom of the right-click context menu.

image

(Note: Keyboard shortcut only works in OneCommander)

On Linux you can simply just copy the file as a normal copy, and when you paste inside a text field, it will paste the path to the file.

Running App

Note: The Spreadsheet Must Not be Opened By Another Program When Using App

On Windows you can simply open it like any other program.

On Linux, first you must make sure its executable.

image

Then you can right-click in an empty space inside the directory, and click open in terminal.

image

This will open the current directory in the terminal. From there type ./ and then the program name. Just typing tog and pressing TAB should be enough to auto complete.

image

Using App

Upon running the app, it will ask you to decide on a choice:

image

Default Configuration

Entering 1 will load the default settings based on this format:

Bingo

That is to say a 4x3 grid, with the bonus being the final column. Think of it like a 3x3 + 1 Column:

Grid123Bonus
A10101020
B30303060
C505050100

After entering 1 and pressing ENTER to submit, it will inform you the settings were loaded and now ask for the path you should have copied to your clipboard.

On Windows you can simply Right-Mouse CLICK and it should paste the path.

You can also press CTRL + SHIFT + V on your keyboard to paste it. This option will also work on Linux.

One you have pasted it, press ENTER to submit it. The Program will now ask for you to enter a Key. This Key is the correct sequence of the bingo once the correct bingo is known. The players guesses are compared against the known correct Key.

The order is read from left to right, and row to row.

-->

10101020

-->

30303060

-->

505050100

For the default settings, the key must be 12 characters long. If you do not enter enough, the program will tell prompt you again. A Key should NOT contain any other characters other than the decided syntax, Y and N, X and O, etc. Case doesn't matter, nor any spaces.

image

Upon entering in the key press ENTER to submit. If there are no errors, it will tell you it successfully completed the operation, and tell you how many guesses have been gone through.

image

The output file is saved in the same location as the previously entered path, and takes the same name as well. It saves it as a Markdown file, but it also functions just fine as a normal text document. The output file is pre ordered from highest score to lowest, with the names corresponding.

Along with the scores, it also outputs two tables, the first one shows the correct bingo answer, and the second shows the total number of correct picks for the respective squares. Its output in a percentage format.

image

image

Custom Configuration

Besides the default configuration, the solver also supports custom inputs.

The maximum size for the grid is 255 x 255, for a total of 65,025 squares. Under realistic conditions this is well beyond reasonable usage, as there would need to be just as many questions that are thought up.

Press 2 and press ENTER and initially it will ask you for an input of some value and also show what the default settings are for reference.

Default XL

What I will be building in this example: image

This amount is how many columns there are in total, including the bonus columns.

image

Default settings loads a value of 4.

Grid1234

In this example I will be using a column value of 5.

Grid12345

image

Next it asks for a row input. I'll also be using a value of 5, for a total of 25 total squares.

Grid12345
A
B
C
D
E

image

Now it asks for the bonus column amount. In the default config, of the 4 total columns, the 1 final column is the bonus. Like a 3x3 grid, plus an extra row.

Grid123Bonus

For this example I will be saying that out of the 5 total columns, 2 will be bonus.

Grid123BonusBonus

image

Next is how much each row will increment over the current row. In the default config the first row is worth 10 per normal square, with a value of 20 here, the next row will go up to 30. Then the following row will go up another 20 to equal 50.

Grid1
A10
B30
C50

For this example I will use 50 as the value:

Grid1
A10
B60
C110

image

Next is deciding the multiplier the bonus squares will have over their rows normal value. In the default config a value of 2 means that the bonus squares are worth twice the amount.

Grid123Bonus
A10101020
B30303060

I will be using a 4 here, making each bonus square worth four times the rows base amount.

image

Finally we have the starting rows base amount. This is what the worth is of the normal squares on the very first row. For this value I will use a 20 base value.

So for this example we have a 5x5 grid, of which the final 2 columns are bonus columns, and which the first row starts with a base value of 20, and a 4 times multiplier for the bonus squares, with each rows base value going up by 50 from the previous.

Grid123BonusBonus
A2020208080
B707070280280
C120120120480480
D170170170680680
E220220220880880

image

It then asks to input the path. This is done just as normal.

image

And finally you enter the key. And with that you are done. The solver will output in the same manner as before, making a markdown file with the same name and location as the original spreadsheet. Also ordered from highest score to lowest. Also with the table of the correct answer, and the correct amount of guesses.

image

Standard Bingo

If you wanted a more standard Bingo format, where every square would be the same value, no bonus squares, a free square, etc., then you can also get that functionality as well.

image

Firstly, I will be making a 5x5 grid, with a free space in the middle. Each square will be worth 50 points, and you can pass on any square.

As the host of the Bingo, you can decide the rules to voting, where you can say to just pick what they think is going to happen, passing on squares they don't think will happen, and leave it at that. However, you could also decide to award points for those who want to say that some things wont happen instead. Its all decided on the Key input in the end. For this example I will just be taking inputs that people think will happen, and just skip those they think won't.

Now as this isn't an actual bingo, where you have to make a full connected line, a free space doesn't really serve a purpose, but just for demonstration purposes I will include it. A free square is really just that you would always enter something in that spot, that everyone knows this, and entered it in themselves in that spot for a correct guess. For this example I will use also be using X and O.

image

I set the the Columns and Rows to 5, to set the 5x5 grid size.

image

The way the program works by default is that only bonus squares can be Passed, so to make it possible to pass on any square in the grid, we need to set the bonus columns to the same amount as the full range of columns, in this case 5. This qualifies the full grid as "Bonus", allowing any to be passed with a P.

image

As I am making each square worth 50, I set this to 50.

image

As I want all squares on all rows to be worth the same, 50, I will set this to 0.

image

Although we effectively made the entire bingo grid a bonus grid, as I've already set the value I wanted, I don't need any multiplier. I will set it to 1 so that the value for all squares are left at 50, 50 x 1 = 50.

image

And with that the grid is built. Next you just enter the file path as normal.

image

For the answer key, you would just enter the known correct outcome, making sure to answer the free square, that everyone would have, with the agreed upon character. For the center square I made sure that it was an O that would line up with what everyone else would have picked there, making a "free" square.

Key12345
AXOOXX
BXXOOO
COXOXX
DXOOXX
EOXXOX

A guess by someone could then look like this, having followed the rules and only voted for what they thought would happen, and passed the ones they thought wouldn't:

Guess12345
APPOOP
BPPOPO
COPOOP
DPOOOP
EOPPOP

Now first of all, depending on your humor, this can be hilarious. And secondly, the result such a guess would have would be:

Stats12345
A0.00%0.00%100.00%0.00%0.00%
B0.00%0.00%100.00%0.00%100.00%
C100.00%0.00%100.00%0.00%0.00%
D0.00%100.00%100.00%0.00%0.00%
E100.00%0.00%0.00%100.00%0.00%
NamesScores
Rolo300

Markdown to PNG

This process in manual for now. With the file open in MarkText click the hamburger menu and go to: File -> Export -> HTML

image

From there a box will pop up. You can search through and tweak things if you'd like, one of which I'd recommend being the font size, but you can also just leave it default which is what I have done in this example. Just name the file what you want, and click save.

image

I have kept the same name as the other files for this bingo.

image

Next you'll want to open the new HTML file. This should open your default browser.

image

To get a thinner, and in my opinion, a nicer looking final image, you can just make the browser window itself as thin as you need.

image

The viewport size changes and so does the table rendered.

From here, if you are on FireFox, or a fork of it, you can just right click and save as screenshot. and save as a full page.

image

image

If you are on a Chromium based browser, like Google Chrome, Edge, Brave, etc., you can get an extension, or you can use the built in option that's hidden behind dev tools.

As I couldn't possibly cover every extension, I'll only be showing the dev tools option. To enter the dev mode, press F12 on your keyboard. this will bring up a menu in the browser.

image

From there press CTRL + SHIFT + P to bring up the command pallet. Type in Shot and select "Capture full-size screenshot" and then name it and choose where to save it. I name it the same as the other folders and place it in the same folder.

image

And with that you have a PNG image with that width you set.

image

Credits

Thanks to JetBrains for the licenses as part of the All Products Pack and their continued support for open source projects

JetBrains

About

Repo for a bingo app I made for the Tower of God Discord

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Guided by Fate

Fate?

Finding the true path the story will take...

Tower of God DiscordTower of God Reddit

Can find downloads here

To make sure this is as accessible as possible to all people, all examples below use free and open source software, and there is no requirement to use any service or be connected to the internet for any of this to work. I am also providing files that would work on Linux, so even the Operating System would not require a potentially country restricted one like Windows, or hardware specific ones like Macintosh.

Note: If you are copying names directly from Discord, or just names in general contain non-ASCII characters, then I would recommend you change a setting in MarkText to better handle UTF encoding.

File -> Preferences -> Editor -> File Representation

And turn off "Automatically detect file encoding" and make sure default encoding it set to UTF-8

If you are looking for a specific section there is a Table of Contents:

brave_9SHeXeXKGF


I made this app for Tower of God Wiki/Reddit Discord, but there is no reason this couldn't be used by other communities or for personal use. This is the format that the App is based around, but it is not limited to this, and offers a wide variety of customization:

Bingo

Usage

I tried to make the app as simple to interface with as can be. After having downloaded the App, simply put it in a directory of your choice. I have imagined it would go into a folder, and then along with it, another folder to hold the Chapter Spreadsheets, but they don't have to be in the same place for the App to work.

Example:

Tower Of God Bingo
-> Chapters
-> tog-bingo.exe

Handling Data

Managing Spreadsheet

To start with, the spreadsheet:

image

The app works on a per file basis, so each new chapter, or just any new bingo in general, would have its own file. All entries are done on the first sheet. Column A is where all names go. Column B is where their guesses go. The names should be continuous, with no empty row in-between any names. If done as such, no names past the break would be analyzed.

All characters are valid except for P which is reserved to pass on squares. In the examples below I use Y and N, but you could just as easily use X and O, or any other combination of characters, what's important here is to be consistent and everyone follow the syntax. A player can only Pass on the bonus squares. If they attempt to Pass on squares they can't, the app will mark it as an incorrect guess by them. Case doesn't matter, nor any spaces.

Getting File Path

Getting the path to the file is pretty simple. In the normal Windows Explorer, you can click the arrow on the top right and more options will cascade. Simply click the file to highlight it, and then click "Copy path". This will copy it to the clipboard.

image

If you are using OneCommander, there is an option on the bottom of the right-click context menu.

image

(Note: Keyboard shortcut only works in OneCommander)

On Linux you can simply just copy the file as a normal copy, and when you paste inside a text field, it will paste the path to the file.

Running App

Note: The Spreadsheet Must Not be Opened By Another Program When Using App

On Windows you can simply open it like any other program.

On Linux, first you must make sure its executable.

image

Then you can right-click in an empty space inside the directory, and click open in terminal.

image

This will open the current directory in the terminal. From there type ./ and then the program name. Just typing tog and pressing TAB should be enough to auto complete.

image

Using App

Upon running the app, it will ask you to decide on a choice:

image

Default Configuration

Entering 1 will load the default settings based on this format:

Bingo

That is to say a 4x3 grid, with the bonus being the final column. Think of it like a 3x3 + 1 Column:

Grid123Bonus
A10101020
B30303060
C505050100

After entering 1 and pressing ENTER to submit, it will inform you the settings were loaded and now ask for the path you should have copied to your clipboard.

On Windows you can simply Right-Mouse CLICK and it should paste the path.

You can also press CTRL + SHIFT + V on your keyboard to paste it. This option will also work on Linux.

One you have pasted it, press ENTER to submit it. The Program will now ask for you to enter a Key. This Key is the correct sequence of the bingo once the correct bingo is known. The players guesses are compared against the known correct Key.

The order is read from left to right, and row to row.

-->

10101020

-->

30303060

-->

505050100

For the default settings, the key must be 12 characters long. If you do not enter enough, the program will tell prompt you again. A Key should NOT contain any other characters other than the decided syntax, Y and N, X and O, etc. Case doesn't matter, nor any spaces.

image

Upon entering in the key press ENTER to submit. If there are no errors, it will tell you it successfully completed the operation, and tell you how many guesses have been gone through.

image

The output file is saved in the same location as the previously entered path, and takes the same name as well. It saves it as a Markdown file, but it also functions just fine as a normal text document. The output file is pre ordered from highest score to lowest, with the names corresponding.

Along with the scores, it also outputs two tables, the first one shows the correct bingo answer, and the second shows the total number of correct picks for the respective squares. Its output in a percentage format.

image

image

Custom Configuration

Besides the default configuration, the solver also supports custom inputs.

The maximum size for the grid is 255 x 255, for a total of 65,025 squares. Under realistic conditions this is well beyond reasonable usage, as there would need to be just as many questions that are thought up.

Press 2 and press ENTER and initially it will ask you for an input of some value and also show what the default settings are for reference.

Default XL

What I will be building in this example: image

This amount is how many columns there are in total, including the bonus columns.

image

Default settings loads a value of 4.

Grid1234

In this example I will be using a column value of 5.

Grid12345

image

Next it asks for a row input. I'll also be using a value of 5, for a total of 25 total squares.

Grid12345
A
B
C
D
E

image

Now it asks for the bonus column amount. In the default config, of the 4 total columns, the 1 final column is the bonus. Like a 3x3 grid, plus an extra row.

Grid123Bonus

For this example I will be saying that out of the 5 total columns, 2 will be bonus.

Grid123BonusBonus

image

Next is how much each row will increment over the current row. In the default config the first row is worth 10 per normal square, with a value of 20 here, the next row will go up to 30. Then the following row will go up another 20 to equal 50.

Grid1
A10
B30
C50

For this example I will use 50 as the value:

Grid1
A10
B60
C110

image

Next is deciding the multiplier the bonus squares will have over their rows normal value. In the default config a value of 2 means that the bonus squares are worth twice the amount.

Grid123Bonus
A10101020
B30303060

I will be using a 4 here, making each bonus square worth four times the rows base amount.

image

Finally we have the starting rows base amount. This is what the worth is of the normal squares on the very first row. For this value I will use a 20 base value.

So for this example we have a 5x5 grid, of which the final 2 columns are bonus columns, and which the first row starts with a base value of 20, and a 4 times multiplier for the bonus squares, with each rows base value going up by 50 from the previous.

Grid123BonusBonus
A2020208080
B707070280280
C120120120480480
D170170170680680
E220220220880880

image

It then asks to input the path. This is done just as normal.

image

And finally you enter the key. And with that you are done. The solver will output in the same manner as before, making a markdown file with the same name and location as the original spreadsheet. Also ordered from highest score to lowest. Also with the table of the correct answer, and the correct amount of guesses.

image

Standard Bingo

If you wanted a more standard Bingo format, where every square would be the same value, no bonus squares, a free square, etc., then you can also get that functionality as well.

image

Firstly, I will be making a 5x5 grid, with a free space in the middle. Each square will be worth 50 points, and you can pass on any square.

As the host of the Bingo, you can decide the rules to voting, where you can say to just pick what they think is going to happen, passing on squares they don't think will happen, and leave it at that. However, you could also decide to award points for those who want to say that some things wont happen instead. Its all decided on the Key input in the end. For this example I will just be taking inputs that people think will happen, and just skip those they think won't.

Now as this isn't an actual bingo, where you have to make a full connected line, a free space doesn't really serve a purpose, but just for demonstration purposes I will include it. A free square is really just that you would always enter something in that spot, that everyone knows this, and entered it in themselves in that spot for a correct guess. For this example I will use also be using X and O.

image

I set the the Columns and Rows to 5, to set the 5x5 grid size.

image

The way the program works by default is that only bonus squares can be Passed, so to make it possible to pass on any square in the grid, we need to set the bonus columns to the same amount as the full range of columns, in this case 5. This qualifies the full grid as "Bonus", allowing any to be passed with a P.

image

As I am making each square worth 50, I set this to 50.

image

As I want all squares on all rows to be worth the same, 50, I will set this to 0.

image

Although we effectively made the entire bingo grid a bonus grid, as I've already set the value I wanted, I don't need any multiplier. I will set it to 1 so that the value for all squares are left at 50, 50 x 1 = 50.

image

And with that the grid is built. Next you just enter the file path as normal.

image

For the answer key, you would just enter the known correct outcome, making sure to answer the free square, that everyone would have, with the agreed upon character. For the center square I made sure that it was an O that would line up with what everyone else would have picked there, making a "free" square.

Key12345
AXOOXX
BXXOOO
COXOXX
DXOOXX
EOXXOX

A guess by someone could then look like this, having followed the rules and only voted for what they thought would happen, and passed the ones they thought wouldn't:

Guess12345
APPOOP
BPPOPO
COPOOP
DPOOOP
EOPPOP

Now first of all, depending on your humor, this can be hilarious. And secondly, the result such a guess would have would be:

Stats12345
A0.00%0.00%100.00%0.00%0.00%
B0.00%0.00%100.00%0.00%100.00%
C100.00%0.00%100.00%0.00%0.00%
D0.00%100.00%100.00%0.00%0.00%
E100.00%0.00%0.00%100.00%0.00%
NamesScores
Rolo300

Markdown to PNG

This process in manual for now. With the file open in MarkText click the hamburger menu and go to: File -> Export -> HTML

image

From there a box will pop up. You can search through and tweak things if you'd like, one of which I'd recommend being the font size, but you can also just leave it default which is what I have done in this example. Just name the file what you want, and click save.

image

I have kept the same name as the other files for this bingo.

image

Next you'll want to open the new HTML file. This should open your default browser.

image

To get a thinner, and in my opinion, a nicer looking final image, you can just make the browser window itself as thin as you need.

image

The viewport size changes and so does the table rendered.

From here, if you are on FireFox, or a fork of it, you can just right click and save as screenshot. and save as a full page.

image

image

If you are on a Chromium based browser, like Google Chrome, Edge, Brave, etc., you can get an extension, or you can use the built in option that's hidden behind dev tools.

As I couldn't possibly cover every extension, I'll only be showing the dev tools option. To enter the dev mode, press F12 on your keyboard. this will bring up a menu in the browser.

image

From there press CTRL + SHIFT + P to bring up the command pallet. Type in Shot and select "Capture full-size screenshot" and then name it and choose where to save it. I name it the same as the other folders and place it in the same folder.

image

And with that you have a PNG image with that width you set.

image

Credits

Thanks to JetBrains for the licenses as part of the All Products Pack and their continued support for open source projects

JetBrains

About

Repo for a bingo app I made for the Tower of God Discord

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Guided by Fate

Fate?

Finding the true path the story will take...

Tower of God DiscordTower of God Reddit

Can find downloads here

To make sure this is as accessible as possible to all people, all examples below use free and open source software, and there is no requirement to use any service or be connected to the internet for any of this to work. I am also providing files that would work on Linux, so even the Operating System would not require a potentially country restricted one like Windows, or hardware specific ones like Macintosh.

Note: If you are copying names directly from Discord, or just names in general contain non-ASCII characters, then I would recommend you change a setting in MarkText to better handle UTF encoding.

File -> Preferences -> Editor -> File Representation

And turn off "Automatically detect file encoding" and make sure default encoding it set to UTF-8

If you are looking for a specific section there is a Table of Contents:

brave_9SHeXeXKGF


I made this app for Tower of God Wiki/Reddit Discord, but there is no reason this couldn't be used by other communities or for personal use. This is the format that the App is based around, but it is not limited to this, and offers a wide variety of customization:

Bingo

Usage

I tried to make the app as simple to interface with as can be. After having downloaded the App, simply put it in a directory of your choice. I have imagined it would go into a folder, and then along with it, another folder to hold the Chapter Spreadsheets, but they don't have to be in the same place for the App to work.

Example:

Tower Of God Bingo
-> Chapters
-> tog-bingo.exe

Handling Data

Managing Spreadsheet

To start with, the spreadsheet:

image

The app works on a per file basis, so each new chapter, or just any new bingo in general, would have its own file. All entries are done on the first sheet. Column A is where all names go. Column B is where their guesses go. The names should be continuous, with no empty row in-between any names. If done as such, no names past the break would be analyzed.

All characters are valid except for P which is reserved to pass on squares. In the examples below I use Y and N, but you could just as easily use X and O, or any other combination of characters, what's important here is to be consistent and everyone follow the syntax. A player can only Pass on the bonus squares. If they attempt to Pass on squares they can't, the app will mark it as an incorrect guess by them. Case doesn't matter, nor any spaces.

Getting File Path

Getting the path to the file is pretty simple. In the normal Windows Explorer, you can click the arrow on the top right and more options will cascade. Simply click the file to highlight it, and then click "Copy path". This will copy it to the clipboard.

image

If you are using OneCommander, there is an option on the bottom of the right-click context menu.

image

(Note: Keyboard shortcut only works in OneCommander)

On Linux you can simply just copy the file as a normal copy, and when you paste inside a text field, it will paste the path to the file.

Running App

Note: The Spreadsheet Must Not be Opened By Another Program When Using App

On Windows you can simply open it like any other program.

On Linux, first you must make sure its executable.

image

Then you can right-click in an empty space inside the directory, and click open in terminal.

image

This will open the current directory in the terminal. From there type ./ and then the program name. Just typing tog and pressing TAB should be enough to auto complete.

image

Using App

Upon running the app, it will ask you to decide on a choice:

image

Default Configuration

Entering 1 will load the default settings based on this format:

Bingo

That is to say a 4x3 grid, with the bonus being the final column. Think of it like a 3x3 + 1 Column:

Grid123Bonus
A10101020
B30303060
C505050100

After entering 1 and pressing ENTER to submit, it will inform you the settings were loaded and now ask for the path you should have copied to your clipboard.

On Windows you can simply Right-Mouse CLICK and it should paste the path.

You can also press CTRL + SHIFT + V on your keyboard to paste it. This option will also work on Linux.

One you have pasted it, press ENTER to submit it. The Program will now ask for you to enter a Key. This Key is the correct sequence of the bingo once the correct bingo is known. The players guesses are compared against the known correct Key.

The order is read from left to right, and row to row.

-->

10101020

-->

30303060

-->

505050100

For the default settings, the key must be 12 characters long. If you do not enter enough, the program will tell prompt you again. A Key should NOT contain any other characters other than the decided syntax, Y and N, X and O, etc. Case doesn't matter, nor any spaces.

image

Upon entering in the key press ENTER to submit. If there are no errors, it will tell you it successfully completed the operation, and tell you how many guesses have been gone through.

image

The output file is saved in the same location as the previously entered path, and takes the same name as well. It saves it as a Markdown file, but it also functions just fine as a normal text document. The output file is pre ordered from highest score to lowest, with the names corresponding.

Along with the scores, it also outputs two tables, the first one shows the correct bingo answer, and the second shows the total number of correct picks for the respective squares. Its output in a percentage format.

image

image

Custom Configuration

Besides the default configuration, the solver also supports custom inputs.

The maximum size for the grid is 255 x 255, for a total of 65,025 squares. Under realistic conditions this is well beyond reasonable usage, as there would need to be just as many questions that are thought up.

Press 2 and press ENTER and initially it will ask you for an input of some value and also show what the default settings are for reference.

Default XL

What I will be building in this example: image

This amount is how many columns there are in total, including the bonus columns.

image

Default settings loads a value of 4.

Grid1234

In this example I will be using a column value of 5.

Grid12345

image

Next it asks for a row input. I'll also be using a value of 5, for a total of 25 total squares.

Grid12345
A
B
C
D
E

image

Now it asks for the bonus column amount. In the default config, of the 4 total columns, the 1 final column is the bonus. Like a 3x3 grid, plus an extra row.

Grid123Bonus

For this example I will be saying that out of the 5 total columns, 2 will be bonus.

Grid123BonusBonus

image

Next is how much each row will increment over the current row. In the default config the first row is worth 10 per normal square, with a value of 20 here, the next row will go up to 30. Then the following row will go up another 20 to equal 50.

Grid1
A10
B30
C50

For this example I will use 50 as the value:

Grid1
A10
B60
C110

image

Next is deciding the multiplier the bonus squares will have over their rows normal value. In the default config a value of 2 means that the bonus squares are worth twice the amount.

Grid123Bonus
A10101020
B30303060

I will be using a 4 here, making each bonus square worth four times the rows base amount.

image

Finally we have the starting rows base amount. This is what the worth is of the normal squares on the very first row. For this value I will use a 20 base value.

So for this example we have a 5x5 grid, of which the final 2 columns are bonus columns, and which the first row starts with a base value of 20, and a 4 times multiplier for the bonus squares, with each rows base value going up by 50 from the previous.

Grid123BonusBonus
A2020208080
B707070280280
C120120120480480
D170170170680680
E220220220880880

image

It then asks to input the path. This is done just as normal.

image

And finally you enter the key. And with that you are done. The solver will output in the same manner as before, making a markdown file with the same name and location as the original spreadsheet. Also ordered from highest score to lowest. Also with the table of the correct answer, and the correct amount of guesses.

image

Standard Bingo

If you wanted a more standard Bingo format, where every square would be the same value, no bonus squares, a free square, etc., then you can also get that functionality as well.

image

Firstly, I will be making a 5x5 grid, with a free space in the middle. Each square will be worth 50 points, and you can pass on any square.

As the host of the Bingo, you can decide the rules to voting, where you can say to just pick what they think is going to happen, passing on squares they don't think will happen, and leave it at that. However, you could also decide to award points for those who want to say that some things wont happen instead. Its all decided on the Key input in the end. For this example I will just be taking inputs that people think will happen, and just skip those they think won't.

Now as this isn't an actual bingo, where you have to make a full connected line, a free space doesn't really serve a purpose, but just for demonstration purposes I will include it. A free square is really just that you would always enter something in that spot, that everyone knows this, and entered it in themselves in that spot for a correct guess. For this example I will use also be using X and O.

image

I set the the Columns and Rows to 5, to set the 5x5 grid size.

image

The way the program works by default is that only bonus squares can be Passed, so to make it possible to pass on any square in the grid, we need to set the bonus columns to the same amount as the full range of columns, in this case 5. This qualifies the full grid as "Bonus", allowing any to be passed with a P.

image

As I am making each square worth 50, I set this to 50.

image

As I want all squares on all rows to be worth the same, 50, I will set this to 0.

image

Although we effectively made the entire bingo grid a bonus grid, as I've already set the value I wanted, I don't need any multiplier. I will set it to 1 so that the value for all squares are left at 50, 50 x 1 = 50.

image

And with that the grid is built. Next you just enter the file path as normal.

image

For the answer key, you would just enter the known correct outcome, making sure to answer the free square, that everyone would have, with the agreed upon character. For the center square I made sure that it was an O that would line up with what everyone else would have picked there, making a "free" square.

Key12345
AXOOXX
BXXOOO
COXOXX
DXOOXX
EOXXOX

A guess by someone could then look like this, having followed the rules and only voted for what they thought would happen, and passed the ones they thought wouldn't:

Guess12345
APPOOP
BPPOPO
COPOOP
DPOOOP
EOPPOP

Now first of all, depending on your humor, this can be hilarious. And secondly, the result such a guess would have would be:

Stats12345
A0.00%0.00%100.00%0.00%0.00%
B0.00%0.00%100.00%0.00%100.00%
C100.00%0.00%100.00%0.00%0.00%
D0.00%100.00%100.00%0.00%0.00%
E100.00%0.00%0.00%100.00%0.00%
NamesScores
Rolo300

Markdown to PNG

This process in manual for now. With the file open in MarkText click the hamburger menu and go to: File -> Export -> HTML

image

From there a box will pop up. You can search through and tweak things if you'd like, one of which I'd recommend being the font size, but you can also just leave it default which is what I have done in this example. Just name the file what you want, and click save.

image

I have kept the same name as the other files for this bingo.

image

Next you'll want to open the new HTML file. This should open your default browser.

image

To get a thinner, and in my opinion, a nicer looking final image, you can just make the browser window itself as thin as you need.

image

The viewport size changes and so does the table rendered.

From here, if you are on FireFox, or a fork of it, you can just right click and save as screenshot. and save as a full page.

image

image

If you are on a Chromium based browser, like Google Chrome, Edge, Brave, etc., you can get an extension, or you can use the built in option that's hidden behind dev tools.

As I couldn't possibly cover every extension, I'll only be showing the dev tools option. To enter the dev mode, press F12 on your keyboard. this will bring up a menu in the browser.

image

From there press CTRL + SHIFT + P to bring up the command pallet. Type in Shot and select "Capture full-size screenshot" and then name it and choose where to save it. I name it the same as the other folders and place it in the same folder.

image

And with that you have a PNG image with that width you set.

image

Credits

Thanks to JetBrains for the licenses as part of the All Products Pack and their continued support for open source projects

JetBrains

About

Repo for a bingo app I made for the Tower of God Discord

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Repository files navigation

Guided by Fate

Fate?

Finding the true path the story will take...

Tower of God DiscordTower of God Reddit

Can find downloads here

To make sure this is as accessible as possible to all people, all examples below use free and open source software, and there is no requirement to use any service or be connected to the internet for any of this to work. I am also providing files that would work on Linux, so even the Operating System would not require a potentially country restricted one like Windows, or hardware specific ones like Macintosh.

Note: If you are copying names directly from Discord, or just names in general contain non-ASCII characters, then I would recommend you change a setting in MarkText to better handle UTF encoding.

File -> Preferences -> Editor -> File Representation

And turn off "Automatically detect file encoding" and make sure default encoding it set to UTF-8

If you are looking for a specific section there is a Table of Contents:

brave_9SHeXeXKGF


I made this app for Tower of God Wiki/Reddit Discord, but there is no reason this couldn't be used by other communities or for personal use. This is the format that the App is based around, but it is not limited to this, and offers a wide variety of customization:

Bingo

Usage

I tried to make the app as simple to interface with as can be. After having downloaded the App, simply put it in a directory of your choice. I have imagined it would go into a folder, and then along with it, another folder to hold the Chapter Spreadsheets, but they don't have to be in the same place for the App to work.

Example:

Tower Of God Bingo
-> Chapters
-> tog-bingo.exe

Handling Data

Managing Spreadsheet

To start with, the spreadsheet:

image

The app works on a per file basis, so each new chapter, or just any new bingo in general, would have its own file. All entries are done on the first sheet. Column A is where all names go. Column B is where their guesses go. The names should be continuous, with no empty row in-between any names. If done as such, no names past the break would be analyzed.

All characters are valid except for P which is reserved to pass on squares. In the examples below I use Y and N, but you could just as easily use X and O, or any other combination of characters, what's important here is to be consistent and everyone follow the syntax. A player can only Pass on the bonus squares. If they attempt to Pass on squares they can't, the app will mark it as an incorrect guess by them. Case doesn't matter, nor any spaces.

Getting File Path

Getting the path to the file is pretty simple. In the normal Windows Explorer, you can click the arrow on the top right and more options will cascade. Simply click the file to highlight it, and then click "Copy path". This will copy it to the clipboard.

image

If you are using OneCommander, there is an option on the bottom of the right-click context menu.

image

(Note: Keyboard shortcut only works in OneCommander)

On Linux you can simply just copy the file as a normal copy, and when you paste inside a text field, it will paste the path to the file.

Running App

Note: The Spreadsheet Must Not be Opened By Another Program When Using App

On Windows you can simply open it like any other program.

On Linux, first you must make sure its executable.

image

Then you can right-click in an empty space inside the directory, and click open in terminal.

image

This will open the current directory in the terminal. From there type ./ and then the program name. Just typing tog and pressing TAB should be enough to auto complete.

image

Using App

Upon running the app, it will ask you to decide on a choice:

image

Default Configuration

Entering 1 will load the default settings based on this format:

Bingo

That is to say a 4x3 grid, with the bonus being the final column. Think of it like a 3x3 + 1 Column:

Grid123Bonus
A10101020
B30303060
C505050100

After entering 1 and pressing ENTER to submit, it will inform you the settings were loaded and now ask for the path you should have copied to your clipboard.

On Windows you can simply Right-Mouse CLICK and it should paste the path.

You can also press CTRL + SHIFT + V on your keyboard to paste it. This option will also work on Linux.

One you have pasted it, press ENTER to submit it. The Program will now ask for you to enter a Key. This Key is the correct sequence of the bingo once the correct bingo is known. The players guesses are compared against the known correct Key.

The order is read from left to right, and row to row.

-->

10101020

-->

30303060

-->

505050100

For the default settings, the key must be 12 characters long. If you do not enter enough, the program will tell prompt you again. A Key should NOT contain any other characters other than the decided syntax, Y and N, X and O, etc. Case doesn't matter, nor any spaces.

image

Upon entering in the key press ENTER to submit. If there are no errors, it will tell you it successfully completed the operation, and tell you how many guesses have been gone through.

image

The output file is saved in the same location as the previously entered path, and takes the same name as well. It saves it as a Markdown file, but it also functions just fine as a normal text document. The output file is pre ordered from highest score to lowest, with the names corresponding.

Along with the scores, it also outputs two tables, the first one shows the correct bingo answer, and the second shows the total number of correct picks for the respective squares. Its output in a percentage format.

image

image

Custom Configuration

Besides the default configuration, the solver also supports custom inputs.

The maximum size for the grid is 255 x 255, for a total of 65,025 squares. Under realistic conditions this is well beyond reasonable usage, as there would need to be just as many questions that are thought up.

Press 2 and press ENTER and initially it will ask you for an input of some value and also show what the default settings are for reference.

Default XL

What I will be building in this example: image

This amount is how many columns there are in total, including the bonus columns.

image

Default settings loads a value of 4.

Grid1234

In this example I will be using a column value of 5.

Grid12345

image

Next it asks for a row input. I'll also be using a value of 5, for a total of 25 total squares.

Grid12345
A
B
C
D
E

image

Now it asks for the bonus column amount. In the default config, of the 4 total columns, the 1 final column is the bonus. Like a 3x3 grid, plus an extra row.

Grid123Bonus

For this example I will be saying that out of the 5 total columns, 2 will be bonus.

Grid123BonusBonus

image

Next is how much each row will increment over the current row. In the default config the first row is worth 10 per normal square, with a value of 20 here, the next row will go up to 30. Then the following row will go up another 20 to equal 50.

Grid1
A10
B30
C50

For this example I will use 50 as the value:

Grid1
A10
B60
C110

image

Next is deciding the multiplier the bonus squares will have over their rows normal value. In the default config a value of 2 means that the bonus squares are worth twice the amount.

Grid123Bonus
A10101020
B30303060

I will be using a 4 here, making each bonus square worth four times the rows base amount.

image

Finally we have the starting rows base amount. This is what the worth is of the normal squares on the very first row. For this value I will use a 20 base value.

So for this example we have a 5x5 grid, of which the final 2 columns are bonus columns, and which the first row starts with a base value of 20, and a 4 times multiplier for the bonus squares, with each rows base value going up by 50 from the previous.

Grid123BonusBonus
A2020208080
B707070280280
C120120120480480
D170170170680680
E220220220880880

image

It then asks to input the path. This is done just as normal.

image

And finally you enter the key. And with that you are done. The solver will output in the same manner as before, making a markdown file with the same name and location as the original spreadsheet. Also ordered from highest score to lowest. Also with the table of the correct answer, and the correct amount of guesses.

image

Standard Bingo

If you wanted a more standard Bingo format, where every square would be the same value, no bonus squares, a free square, etc., then you can also get that functionality as well.

image

Firstly, I will be making a 5x5 grid, with a free space in the middle. Each square will be worth 50 points, and you can pass on any square.

As the host of the Bingo, you can decide the rules to voting, where you can say to just pick what they think is going to happen, passing on squares they don't think will happen, and leave it at that. However, you could also decide to award points for those who want to say that some things wont happen instead. Its all decided on the Key input in the end. For this example I will just be taking inputs that people think will happen, and just skip those they think won't.

Now as this isn't an actual bingo, where you have to make a full connected line, a free space doesn't really serve a purpose, but just for demonstration purposes I will include it. A free square is really just that you would always enter something in that spot, that everyone knows this, and entered it in themselves in that spot for a correct guess. For this example I will use also be using X and O.

image

I set the the Columns and Rows to 5, to set the 5x5 grid size.

image

The way the program works by default is that only bonus squares can be Passed, so to make it possible to pass on any square in the grid, we need to set the bonus columns to the same amount as the full range of columns, in this case 5. This qualifies the full grid as "Bonus", allowing any to be passed with a P.

image

As I am making each square worth 50, I set this to 50.

image

As I want all squares on all rows to be worth the same, 50, I will set this to 0.

image

Although we effectively made the entire bingo grid a bonus grid, as I've already set the value I wanted, I don't need any multiplier. I will set it to 1 so that the value for all squares are left at 50, 50 x 1 = 50.

image

And with that the grid is built. Next you just enter the file path as normal.

image

For the answer key, you would just enter the known correct outcome, making sure to answer the free square, that everyone would have, with the agreed upon character. For the center square I made sure that it was an O that would line up with what everyone else would have picked there, making a "free" square.

Key12345
AXOOXX
BXXOOO
COXOXX
DXOOXX
EOXXOX

A guess by someone could then look like this, having followed the rules and only voted for what they thought would happen, and passed the ones they thought wouldn't:

Guess12345
APPOOP
BPPOPO
COPOOP
DPOOOP
EOPPOP

Now first of all, depending on your humor, this can be hilarious. And secondly, the result such a guess would have would be:

Stats12345
A0.00%0.00%100.00%0.00%0.00%
B0.00%0.00%100.00%0.00%100.00%
C100.00%0.00%100.00%0.00%0.00%
D0.00%100.00%100.00%0.00%0.00%
E100.00%0.00%0.00%100.00%0.00%
NamesScores
Rolo300

Markdown to PNG

This process in manual for now. With the file open in MarkText click the hamburger menu and go to: File -> Export -> HTML

image

From there a box will pop up. You can search through and tweak things if you'd like, one of which I'd recommend being the font size, but you can also just leave it default which is what I have done in this example. Just name the file what you want, and click save.

image

I have kept the same name as the other files for this bingo.

image

Next you'll want to open the new HTML file. This should open your default browser.

image

To get a thinner, and in my opinion, a nicer looking final image, you can just make the browser window itself as thin as you need.

image

The viewport size changes and so does the table rendered.

From here, if you are on FireFox, or a fork of it, you can just right click and save as screenshot. and save as a full page.

image

image

If you are on a Chromium based browser, like Google Chrome, Edge, Brave, etc., you can get an extension, or you can use the built in option that's hidden behind dev tools.

As I couldn't possibly cover every extension, I'll only be showing the dev tools option. To enter the dev mode, press F12 on your keyboard. this will bring up a menu in the browser.

image

From there press CTRL + SHIFT + P to bring up the command pallet. Type in Shot and select "Capture full-size screenshot" and then name it and choose where to save it. I name it the same as the other folders and place it in the same folder.

image

And with that you have a PNG image with that width you set.

image

Credits

Thanks to JetBrains for the licenses as part of the All Products Pack and their continued support for open source projects

JetBrains

About

Repo for a bingo app I made for the Tower of God Discord

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Guided by Fate

Fate?

Finding the true path the story will take...

Tower of God DiscordTower of God Reddit

Can find downloads here

To make sure this is as accessible as possible to all people, all examples below use free and open source software, and there is no requirement to use any service or be connected to the internet for any of this to work. I am also providing files that would work on Linux, so even the Operating System would not require a potentially country restricted one like Windows, or hardware specific ones like Macintosh.

Note: If you are copying names directly from Discord, or just names in general contain non-ASCII characters, then I would recommend you change a setting in MarkText to better handle UTF encoding.

File -> Preferences -> Editor -> File Representation

And turn off "Automatically detect file encoding" and make sure default encoding it set to UTF-8

If you are looking for a specific section there is a Table of Contents:

brave_9SHeXeXKGF


I made this app for Tower of God Wiki/Reddit Discord, but there is no reason this couldn't be used by other communities or for personal use. This is the format that the App is based around, but it is not limited to this, and offers a wide variety of customization:

Bingo

Usage

I tried to make the app as simple to interface with as can be. After having downloaded the App, simply put it in a directory of your choice. I have imagined it would go into a folder, and then along with it, another folder to hold the Chapter Spreadsheets, but they don't have to be in the same place for the App to work.

Example:

Tower Of God Bingo
-> Chapters
-> tog-bingo.exe

Handling Data

Managing Spreadsheet

To start with, the spreadsheet:

image

The app works on a per file basis, so each new chapter, or just any new bingo in general, would have its own file. All entries are done on the first sheet. Column A is where all names go. Column B is where their guesses go. The names should be continuous, with no empty row in-between any names. If done as such, no names past the break would be analyzed.

All characters are valid except for P which is reserved to pass on squares. In the examples below I use Y and N, but you could just as easily use X and O, or any other combination of characters, what's important here is to be consistent and everyone follow the syntax. A player can only Pass on the bonus squares. If they attempt to Pass on squares they can't, the app will mark it as an incorrect guess by them. Case doesn't matter, nor any spaces.

Getting File Path

Getting the path to the file is pretty simple. In the normal Windows Explorer, you can click the arrow on the top right and more options will cascade. Simply click the file to highlight it, and then click "Copy path". This will copy it to the clipboard.

image

If you are using OneCommander, there is an option on the bottom of the right-click context menu.

image

(Note: Keyboard shortcut only works in OneCommander)

On Linux you can simply just copy the file as a normal copy, and when you paste inside a text field, it will paste the path to the file.

Running App

Note: The Spreadsheet Must Not be Opened By Another Program When Using App

On Windows you can simply open it like any other program.

On Linux, first you must make sure its executable.

image

Then you can right-click in an empty space inside the directory, and click open in terminal.

image

This will open the current directory in the terminal. From there type ./ and then the program name. Just typing tog and pressing TAB should be enough to auto complete.

image

Using App

Upon running the app, it will ask you to decide on a choice:

image

Default Configuration

Entering 1 will load the default settings based on this format:

Bingo

That is to say a 4x3 grid, with the bonus being the final column. Think of it like a 3x3 + 1 Column:

Grid123Bonus
A10101020
B30303060
C505050100

After entering 1 and pressing ENTER to submit, it will inform you the settings were loaded and now ask for the path you should have copied to your clipboard.

On Windows you can simply Right-Mouse CLICK and it should paste the path.

You can also press CTRL + SHIFT + V on your keyboard to paste it. This option will also work on Linux.

One you have pasted it, press ENTER to submit it. The Program will now ask for you to enter a Key. This Key is the correct sequence of the bingo once the correct bingo is known. The players guesses are compared against the known correct Key.

The order is read from left to right, and row to row.

-->

10101020

-->

30303060

-->

505050100

For the default settings, the key must be 12 characters long. If you do not enter enough, the program will tell prompt you again. A Key should NOT contain any other characters other than the decided syntax, Y and N, X and O, etc. Case doesn't matter, nor any spaces.

image

Upon entering in the key press ENTER to submit. If there are no errors, it will tell you it successfully completed the operation, and tell you how many guesses have been gone through.

image

The output file is saved in the same location as the previously entered path, and takes the same name as well. It saves it as a Markdown file, but it also functions just fine as a normal text document. The output file is pre ordered from highest score to lowest, with the names corresponding.

Along with the scores, it also outputs two tables, the first one shows the correct bingo answer, and the second shows the total number of correct picks for the respective squares. Its output in a percentage format.

image

image

Custom Configuration

Besides the default configuration, the solver also supports custom inputs.

The maximum size for the grid is 255 x 255, for a total of 65,025 squares. Under realistic conditions this is well beyond reasonable usage, as there would need to be just as many questions that are thought up.

Press 2 and press ENTER and initially it will ask you for an input of some value and also show what the default settings are for reference.

Default XL

What I will be building in this example: image

This amount is how many columns there are in total, including the bonus columns.

image

Default settings loads a value of 4.

Grid1234

In this example I will be using a column value of 5.

Grid12345

image

Next it asks for a row input. I'll also be using a value of 5, for a total of 25 total squares.

Grid12345
A
B
C
D
E

image

Now it asks for the bonus column amount. In the default config, of the 4 total columns, the 1 final column is the bonus. Like a 3x3 grid, plus an extra row.

Grid123Bonus

For this example I will be saying that out of the 5 total columns, 2 will be bonus.

Grid123BonusBonus

image

Next is how much each row will increment over the current row. In the default config the first row is worth 10 per normal square, with a value of 20 here, the next row will go up to 30. Then the following row will go up another 20 to equal 50.

Grid1
A10
B30
C50

For this example I will use 50 as the value:

Grid1
A10
B60
C110

image

Next is deciding the multiplier the bonus squares will have over their rows normal value. In the default config a value of 2 means that the bonus squares are worth twice the amount.

Grid123Bonus
A10101020
B30303060

I will be using a 4 here, making each bonus square worth four times the rows base amount.

image

Finally we have the starting rows base amount. This is what the worth is of the normal squares on the very first row. For this value I will use a 20 base value.

So for this example we have a 5x5 grid, of which the final 2 columns are bonus columns, and which the first row starts with a base value of 20, and a 4 times multiplier for the bonus squares, with each rows base value going up by 50 from the previous.

Grid123BonusBonus
A2020208080
B707070280280
C120120120480480
D170170170680680
E220220220880880

image

It then asks to input the path. This is done just as normal.

image

And finally you enter the key. And with that you are done. The solver will output in the same manner as before, making a markdown file with the same name and location as the original spreadsheet. Also ordered from highest score to lowest. Also with the table of the correct answer, and the correct amount of guesses.

image

Standard Bingo

If you wanted a more standard Bingo format, where every square would be the same value, no bonus squares, a free square, etc., then you can also get that functionality as well.

image

Firstly, I will be making a 5x5 grid, with a free space in the middle. Each square will be worth 50 points, and you can pass on any square.

As the host of the Bingo, you can decide the rules to voting, where you can say to just pick what they think is going to happen, passing on squares they don't think will happen, and leave it at that. However, you could also decide to award points for those who want to say that some things wont happen instead. Its all decided on the Key input in the end. For this example I will just be taking inputs that people think will happen, and just skip those they think won't.

Now as this isn't an actual bingo, where you have to make a full connected line, a free space doesn't really serve a purpose, but just for demonstration purposes I will include it. A free square is really just that you would always enter something in that spot, that everyone knows this, and entered it in themselves in that spot for a correct guess. For this example I will use also be using X and O.

image

I set the the Columns and Rows to 5, to set the 5x5 grid size.

image

The way the program works by default is that only bonus squares can be Passed, so to make it possible to pass on any square in the grid, we need to set the bonus columns to the same amount as the full range of columns, in this case 5. This qualifies the full grid as "Bonus", allowing any to be passed with a P.

image

As I am making each square worth 50, I set this to 50.

image

As I want all squares on all rows to be worth the same, 50, I will set this to 0.

image

Although we effectively made the entire bingo grid a bonus grid, as I've already set the value I wanted, I don't need any multiplier. I will set it to 1 so that the value for all squares are left at 50, 50 x 1 = 50.

image

And with that the grid is built. Next you just enter the file path as normal.

image

For the answer key, you would just enter the known correct outcome, making sure to answer the free square, that everyone would have, with the agreed upon character. For the center square I made sure that it was an O that would line up with what everyone else would have picked there, making a "free" square.

Key12345
AXOOXX
BXXOOO
COXOXX
DXOOXX
EOXXOX

A guess by someone could then look like this, having followed the rules and only voted for what they thought would happen, and passed the ones they thought wouldn't:

Guess12345
APPOOP
BPPOPO
COPOOP
DPOOOP
EOPPOP

Now first of all, depending on your humor, this can be hilarious. And secondly, the result such a guess would have would be:

Stats12345
A0.00%0.00%100.00%0.00%0.00%
B0.00%0.00%100.00%0.00%100.00%
C100.00%0.00%100.00%0.00%0.00%
D0.00%100.00%100.00%0.00%0.00%
E100.00%0.00%0.00%100.00%0.00%
NamesScores
Rolo300

Markdown to PNG

This process in manual for now. With the file open in MarkText click the hamburger menu and go to: File -> Export -> HTML

image

From there a box will pop up. You can search through and tweak things if you'd like, one of which I'd recommend being the font size, but you can also just leave it default which is what I have done in this example. Just name the file what you want, and click save.

image

I have kept the same name as the other files for this bingo.

image

Next you'll want to open the new HTML file. This should open your default browser.

image

To get a thinner, and in my opinion, a nicer looking final image, you can just make the browser window itself as thin as you need.

image

The viewport size changes and so does the table rendered.

From here, if you are on FireFox, or a fork of it, you can just right click and save as screenshot. and save as a full page.

image

image

If you are on a Chromium based browser, like Google Chrome, Edge, Brave, etc., you can get an extension, or you can use the built in option that's hidden behind dev tools.

As I couldn't possibly cover every extension, I'll only be showing the dev tools option. To enter the dev mode, press F12 on your keyboard. this will bring up a menu in the browser.

image

From there press CTRL + SHIFT + P to bring up the command pallet. Type in Shot and select "Capture full-size screenshot" and then name it and choose where to save it. I name it the same as the other folders and place it in the same folder.

image

And with that you have a PNG image with that width you set.

image

Credits

Thanks to JetBrains for the licenses as part of the All Products Pack and their continued support for open source projects

JetBrains

About

Repo for a bingo app I made for the Tower of God Discord

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Guided by Fate

Fate?

Finding the true path the story will take...

Tower of God DiscordTower of God Reddit

Can find downloads here

To make sure this is as accessible as possible to all people, all examples below use free and open source software, and there is no requirement to use any service or be connected to the internet for any of this to work. I am also providing files that would work on Linux, so even the Operating System would not require a potentially country restricted one like Windows, or hardware specific ones like Macintosh.

Note: If you are copying names directly from Discord, or just names in general contain non-ASCII characters, then I would recommend you change a setting in MarkText to better handle UTF encoding.

File -> Preferences -> Editor -> File Representation

And turn off "Automatically detect file encoding" and make sure default encoding it set to UTF-8

If you are looking for a specific section there is a Table of Contents:

brave_9SHeXeXKGF


I made this app for Tower of God Wiki/Reddit Discord, but there is no reason this couldn't be used by other communities or for personal use. This is the format that the App is based around, but it is not limited to this, and offers a wide variety of customization:

Bingo

Usage

I tried to make the app as simple to interface with as can be. After having downloaded the App, simply put it in a directory of your choice. I have imagined it would go into a folder, and then along with it, another folder to hold the Chapter Spreadsheets, but they don't have to be in the same place for the App to work.

Example:

Tower Of God Bingo
-> Chapters
-> tog-bingo.exe

Handling Data

Managing Spreadsheet

To start with, the spreadsheet:

image

The app works on a per file basis, so each new chapter, or just any new bingo in general, would have its own file. All entries are done on the first sheet. Column A is where all names go. Column B is where their guesses go. The names should be continuous, with no empty row in-between any names. If done as such, no names past the break would be analyzed.

All characters are valid except for P which is reserved to pass on squares. In the examples below I use Y and N, but you could just as easily use X and O, or any other combination of characters, what's important here is to be consistent and everyone follow the syntax. A player can only Pass on the bonus squares. If they attempt to Pass on squares they can't, the app will mark it as an incorrect guess by them. Case doesn't matter, nor any spaces.

Getting File Path

Getting the path to the file is pretty simple. In the normal Windows Explorer, you can click the arrow on the top right and more options will cascade. Simply click the file to highlight it, and then click "Copy path". This will copy it to the clipboard.

image

If you are using OneCommander, there is an option on the bottom of the right-click context menu.

image

(Note: Keyboard shortcut only works in OneCommander)

On Linux you can simply just copy the file as a normal copy, and when you paste inside a text field, it will paste the path to the file.

Running App

Note: The Spreadsheet Must Not be Opened By Another Program When Using App

On Windows you can simply open it like any other program.

On Linux, first you must make sure its executable.

image

Then you can right-click in an empty space inside the directory, and click open in terminal.

image

This will open the current directory in the terminal. From there type ./ and then the program name. Just typing tog and pressing TAB should be enough to auto complete.

image

Using App

Upon running the app, it will ask you to decide on a choice:

image

Default Configuration

Entering 1 will load the default settings based on this format:

Bingo

That is to say a 4x3 grid, with the bonus being the final column. Think of it like a 3x3 + 1 Column:

Grid123Bonus
A10101020
B30303060
C505050100

After entering 1 and pressing ENTER to submit, it will inform you the settings were loaded and now ask for the path you should have copied to your clipboard.

On Windows you can simply Right-Mouse CLICK and it should paste the path.

You can also press CTRL + SHIFT + V on your keyboard to paste it. This option will also work on Linux.

One you have pasted it, press ENTER to submit it. The Program will now ask for you to enter a Key. This Key is the correct sequence of the bingo once the correct bingo is known. The players guesses are compared against the known correct Key.

The order is read from left to right, and row to row.

-->

10101020

-->

30303060

-->

505050100

For the default settings, the key must be 12 characters long. If you do not enter enough, the program will tell prompt you again. A Key should NOT contain any other characters other than the decided syntax, Y and N, X and O, etc. Case doesn't matter, nor any spaces.

image

Upon entering in the key press ENTER to submit. If there are no errors, it will tell you it successfully completed the operation, and tell you how many guesses have been gone through.

image

The output file is saved in the same location as the previously entered path, and takes the same name as well. It saves it as a Markdown file, but it also functions just fine as a normal text document. The output file is pre ordered from highest score to lowest, with the names corresponding.

Along with the scores, it also outputs two tables, the first one shows the correct bingo answer, and the second shows the total number of correct picks for the respective squares. Its output in a percentage format.

image

image

Custom Configuration

Besides the default configuration, the solver also supports custom inputs.

The maximum size for the grid is 255 x 255, for a total of 65,025 squares. Under realistic conditions this is well beyond reasonable usage, as there would need to be just as many questions that are thought up.

Press 2 and press ENTER and initially it will ask you for an input of some value and also show what the default settings are for reference.

Default XL

What I will be building in this example: image

This amount is how many columns there are in total, including the bonus columns.

image

Default settings loads a value of 4.

Grid1234

In this example I will be using a column value of 5.

Grid12345

image

Next it asks for a row input. I'll also be using a value of 5, for a total of 25 total squares.

Grid12345
A
B
C
D
E

image

Now it asks for the bonus column amount. In the default config, of the 4 total columns, the 1 final column is the bonus. Like a 3x3 grid, plus an extra row.

Grid123Bonus

For this example I will be saying that out of the 5 total columns, 2 will be bonus.

Grid123BonusBonus

image

Next is how much each row will increment over the current row. In the default config the first row is worth 10 per normal square, with a value of 20 here, the next row will go up to 30. Then the following row will go up another 20 to equal 50.

Grid1
A10
B30
C50

For this example I will use 50 as the value:

Grid1
A10
B60
C110

image

Next is deciding the multiplier the bonus squares will have over their rows normal value. In the default config a value of 2 means that the bonus squares are worth twice the amount.

Grid123Bonus
A10101020
B30303060

I will be using a 4 here, making each bonus square worth four times the rows base amount.

image

Finally we have the starting rows base amount. This is what the worth is of the normal squares on the very first row. For this value I will use a 20 base value.

So for this example we have a 5x5 grid, of which the final 2 columns are bonus columns, and which the first row starts with a base value of 20, and a 4 times multiplier for the bonus squares, with each rows base value going up by 50 from the previous.

Grid123BonusBonus
A2020208080
B707070280280
C120120120480480
D170170170680680
E220220220880880

image

It then asks to input the path. This is done just as normal.

image

And finally you enter the key. And with that you are done. The solver will output in the same manner as before, making a markdown file with the same name and location as the original spreadsheet. Also ordered from highest score to lowest. Also with the table of the correct answer, and the correct amount of guesses.

image

Standard Bingo

If you wanted a more standard Bingo format, where every square would be the same value, no bonus squares, a free square, etc., then you can also get that functionality as well.

image

Firstly, I will be making a 5x5 grid, with a free space in the middle. Each square will be worth 50 points, and you can pass on any square.

As the host of the Bingo, you can decide the rules to voting, where you can say to just pick what they think is going to happen, passing on squares they don't think will happen, and leave it at that. However, you could also decide to award points for those who want to say that some things wont happen instead. Its all decided on the Key input in the end. For this example I will just be taking inputs that people think will happen, and just skip those they think won't.

Now as this isn't an actual bingo, where you have to make a full connected line, a free space doesn't really serve a purpose, but just for demonstration purposes I will include it. A free square is really just that you would always enter something in that spot, that everyone knows this, and entered it in themselves in that spot for a correct guess. For this example I will use also be using X and O.

image

I set the the Columns and Rows to 5, to set the 5x5 grid size.

image

The way the program works by default is that only bonus squares can be Passed, so to make it possible to pass on any square in the grid, we need to set the bonus columns to the same amount as the full range of columns, in this case 5. This qualifies the full grid as "Bonus", allowing any to be passed with a P.

image

As I am making each square worth 50, I set this to 50.

image

As I want all squares on all rows to be worth the same, 50, I will set this to 0.

image

Although we effectively made the entire bingo grid a bonus grid, as I've already set the value I wanted, I don't need any multiplier. I will set it to 1 so that the value for all squares are left at 50, 50 x 1 = 50.

image

And with that the grid is built. Next you just enter the file path as normal.

image

For the answer key, you would just enter the known correct outcome, making sure to answer the free square, that everyone would have, with the agreed upon character. For the center square I made sure that it was an O that would line up with what everyone else would have picked there, making a "free" square.

Key12345
AXOOXX
BXXOOO
COXOXX
DXOOXX
EOXXOX

A guess by someone could then look like this, having followed the rules and only voted for what they thought would happen, and passed the ones they thought wouldn't:

Guess12345
APPOOP
BPPOPO
COPOOP
DPOOOP
EOPPOP

Now first of all, depending on your humor, this can be hilarious. And secondly, the result such a guess would have would be:

Stats12345
A0.00%0.00%100.00%0.00%0.00%
B0.00%0.00%100.00%0.00%100.00%
C100.00%0.00%100.00%0.00%0.00%
D0.00%100.00%100.00%0.00%0.00%
E100.00%0.00%0.00%100.00%0.00%
NamesScores
Rolo300

Markdown to PNG

This process in manual for now. With the file open in MarkText click the hamburger menu and go to: File -> Export -> HTML

image

From there a box will pop up. You can search through and tweak things if you'd like, one of which I'd recommend being the font size, but you can also just leave it default which is what I have done in this example. Just name the file what you want, and click save.

image

I have kept the same name as the other files for this bingo.

image

Next you'll want to open the new HTML file. This should open your default browser.

image

To get a thinner, and in my opinion, a nicer looking final image, you can just make the browser window itself as thin as you need.

image

The viewport size changes and so does the table rendered.

From here, if you are on FireFox, or a fork of it, you can just right click and save as screenshot. and save as a full page.

image

image

If you are on a Chromium based browser, like Google Chrome, Edge, Brave, etc., you can get an extension, or you can use the built in option that's hidden behind dev tools.

As I couldn't possibly cover every extension, I'll only be showing the dev tools option. To enter the dev mode, press F12 on your keyboard. this will bring up a menu in the browser.

image

From there press CTRL + SHIFT + P to bring up the command pallet. Type in Shot and select "Capture full-size screenshot" and then name it and choose where to save it. I name it the same as the other folders and place it in the same folder.

image

And with that you have a PNG image with that width you set.

image

Credits

Thanks to JetBrains for the licenses as part of the All Products Pack and their continued support for open source projects

JetBrains

About

Repo for a bingo app I made for the Tower of God Discord

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Repository files navigation

Guided by Fate

Fate?

Finding the true path the story will take...

Tower of God DiscordTower of God Reddit

Can find downloads here

To make sure this is as accessible as possible to all people, all examples below use free and open source software, and there is no requirement to use any service or be connected to the internet for any of this to work. I am also providing files that would work on Linux, so even the Operating System would not require a potentially country restricted one like Windows, or hardware specific ones like Macintosh.

Note: If you are copying names directly from Discord, or just names in general contain non-ASCII characters, then I would recommend you change a setting in MarkText to better handle UTF encoding.

File -> Preferences -> Editor -> File Representation

And turn off "Automatically detect file encoding" and make sure default encoding it set to UTF-8

If you are looking for a specific section there is a Table of Contents:

brave_9SHeXeXKGF


I made this app for Tower of God Wiki/Reddit Discord, but there is no reason this couldn't be used by other communities or for personal use. This is the format that the App is based around, but it is not limited to this, and offers a wide variety of customization:

Bingo

Usage

I tried to make the app as simple to interface with as can be. After having downloaded the App, simply put it in a directory of your choice. I have imagined it would go into a folder, and then along with it, another folder to hold the Chapter Spreadsheets, but they don't have to be in the same place for the App to work.

Example:

Tower Of God Bingo
-> Chapters
-> tog-bingo.exe

Handling Data

Managing Spreadsheet

To start with, the spreadsheet:

image

The app works on a per file basis, so each new chapter, or just any new bingo in general, would have its own file. All entries are done on the first sheet. Column A is where all names go. Column B is where their guesses go. The names should be continuous, with no empty row in-between any names. If done as such, no names past the break would be analyzed.

All characters are valid except for P which is reserved to pass on squares. In the examples below I use Y and N, but you could just as easily use X and O, or any other combination of characters, what's important here is to be consistent and everyone follow the syntax. A player can only Pass on the bonus squares. If they attempt to Pass on squares they can't, the app will mark it as an incorrect guess by them. Case doesn't matter, nor any spaces.

Getting File Path

Getting the path to the file is pretty simple. In the normal Windows Explorer, you can click the arrow on the top right and more options will cascade. Simply click the file to highlight it, and then click "Copy path". This will copy it to the clipboard.

image

If you are using OneCommander, there is an option on the bottom of the right-click context menu.

image

(Note: Keyboard shortcut only works in OneCommander)

On Linux you can simply just copy the file as a normal copy, and when you paste inside a text field, it will paste the path to the file.

Running App

Note: The Spreadsheet Must Not be Opened By Another Program When Using App

On Windows you can simply open it like any other program.

On Linux, first you must make sure its executable.

image

Then you can right-click in an empty space inside the directory, and click open in terminal.

image

This will open the current directory in the terminal. From there type ./ and then the program name. Just typing tog and pressing TAB should be enough to auto complete.

image

Using App

Upon running the app, it will ask you to decide on a choice:

image

Default Configuration

Entering 1 will load the default settings based on this format:

Bingo

That is to say a 4x3 grid, with the bonus being the final column. Think of it like a 3x3 + 1 Column:

Grid123Bonus
A10101020
B30303060
C505050100

After entering 1 and pressing ENTER to submit, it will inform you the settings were loaded and now ask for the path you should have copied to your clipboard.

On Windows you can simply Right-Mouse CLICK and it should paste the path.

You can also press CTRL + SHIFT + V on your keyboard to paste it. This option will also work on Linux.

One you have pasted it, press ENTER to submit it. The Program will now ask for you to enter a Key. This Key is the correct sequence of the bingo once the correct bingo is known. The players guesses are compared against the known correct Key.

The order is read from left to right, and row to row.

-->

10101020

-->

30303060

-->

505050100

For the default settings, the key must be 12 characters long. If you do not enter enough, the program will tell prompt you again. A Key should NOT contain any other characters other than the decided syntax, Y and N, X and O, etc. Case doesn't matter, nor any spaces.

image

Upon entering in the key press ENTER to submit. If there are no errors, it will tell you it successfully completed the operation, and tell you how many guesses have been gone through.

image

The output file is saved in the same location as the previously entered path, and takes the same name as well. It saves it as a Markdown file, but it also functions just fine as a normal text document. The output file is pre ordered from highest score to lowest, with the names corresponding.

Along with the scores, it also outputs two tables, the first one shows the correct bingo answer, and the second shows the total number of correct picks for the respective squares. Its output in a percentage format.

image

image

Custom Configuration

Besides the default configuration, the solver also supports custom inputs.

The maximum size for the grid is 255 x 255, for a total of 65,025 squares. Under realistic conditions this is well beyond reasonable usage, as there would need to be just as many questions that are thought up.

Press 2 and press ENTER and initially it will ask you for an input of some value and also show what the default settings are for reference.

Default XL

What I will be building in this example: image

This amount is how many columns there are in total, including the bonus columns.

image

Default settings loads a value of 4.

Grid1234

In this example I will be using a column value of 5.

Grid12345

image

Next it asks for a row input. I'll also be using a value of 5, for a total of 25 total squares.

Grid12345
A
B
C
D
E

image

Now it asks for the bonus column amount. In the default config, of the 4 total columns, the 1 final column is the bonus. Like a 3x3 grid, plus an extra row.

Grid123Bonus

For this example I will be saying that out of the 5 total columns, 2 will be bonus.

Grid123BonusBonus

image

Next is how much each row will increment over the current row. In the default config the first row is worth 10 per normal square, with a value of 20 here, the next row will go up to 30. Then the following row will go up another 20 to equal 50.

Grid1
A10
B30
C50

For this example I will use 50 as the value:

Grid1
A10
B60
C110

image

Next is deciding the multiplier the bonus squares will have over their rows normal value. In the default config a value of 2 means that the bonus squares are worth twice the amount.

Grid123Bonus
A10101020
B30303060

I will be using a 4 here, making each bonus square worth four times the rows base amount.

image

Finally we have the starting rows base amount. This is what the worth is of the normal squares on the very first row. For this value I will use a 20 base value.

So for this example we have a 5x5 grid, of which the final 2 columns are bonus columns, and which the first row starts with a base value of 20, and a 4 times multiplier for the bonus squares, with each rows base value going up by 50 from the previous.

Grid123BonusBonus
A2020208080
B707070280280
C120120120480480
D170170170680680
E220220220880880

image

It then asks to input the path. This is done just as normal.

image

And finally you enter the key. And with that you are done. The solver will output in the same manner as before, making a markdown file with the same name and location as the original spreadsheet. Also ordered from highest score to lowest. Also with the table of the correct answer, and the correct amount of guesses.

image

Standard Bingo

If you wanted a more standard Bingo format, where every square would be the same value, no bonus squares, a free square, etc., then you can also get that functionality as well.

image

Firstly, I will be making a 5x5 grid, with a free space in the middle. Each square will be worth 50 points, and you can pass on any square.

As the host of the Bingo, you can decide the rules to voting, where you can say to just pick what they think is going to happen, passing on squares they don't think will happen, and leave it at that. However, you could also decide to award points for those who want to say that some things wont happen instead. Its all decided on the Key input in the end. For this example I will just be taking inputs that people think will happen, and just skip those they think won't.

Now as this isn't an actual bingo, where you have to make a full connected line, a free space doesn't really serve a purpose, but just for demonstration purposes I will include it. A free square is really just that you would always enter something in that spot, that everyone knows this, and entered it in themselves in that spot for a correct guess. For this example I will use also be using X and O.

image

I set the the Columns and Rows to 5, to set the 5x5 grid size.

image

The way the program works by default is that only bonus squares can be Passed, so to make it possible to pass on any square in the grid, we need to set the bonus columns to the same amount as the full range of columns, in this case 5. This qualifies the full grid as "Bonus", allowing any to be passed with a P.

image

As I am making each square worth 50, I set this to 50.

image

As I want all squares on all rows to be worth the same, 50, I will set this to 0.

image

Although we effectively made the entire bingo grid a bonus grid, as I've already set the value I wanted, I don't need any multiplier. I will set it to 1 so that the value for all squares are left at 50, 50 x 1 = 50.

image

And with that the grid is built. Next you just enter the file path as normal.

image

For the answer key, you would just enter the known correct outcome, making sure to answer the free square, that everyone would have, with the agreed upon character. For the center square I made sure that it was an O that would line up with what everyone else would have picked there, making a "free" square.

Key12345
AXOOXX
BXXOOO
COXOXX
DXOOXX
EOXXOX

A guess by someone could then look like this, having followed the rules and only voted for what they thought would happen, and passed the ones they thought wouldn't:

Guess12345
APPOOP
BPPOPO
COPOOP
DPOOOP
EOPPOP

Now first of all, depending on your humor, this can be hilarious. And secondly, the result such a guess would have would be:

Stats12345
A0.00%0.00%100.00%0.00%0.00%
B0.00%0.00%100.00%0.00%100.00%
C100.00%0.00%100.00%0.00%0.00%
D0.00%100.00%100.00%0.00%0.00%
E100.00%0.00%0.00%100.00%0.00%
NamesScores
Rolo300

Markdown to PNG

This process in manual for now. With the file open in MarkText click the hamburger menu and go to: File -> Export -> HTML

image

From there a box will pop up. You can search through and tweak things if you'd like, one of which I'd recommend being the font size, but you can also just leave it default which is what I have done in this example. Just name the file what you want, and click save.

image

I have kept the same name as the other files for this bingo.

image

Next you'll want to open the new HTML file. This should open your default browser.

image

To get a thinner, and in my opinion, a nicer looking final image, you can just make the browser window itself as thin as you need.

image

The viewport size changes and so does the table rendered.

From here, if you are on FireFox, or a fork of it, you can just right click and save as screenshot. and save as a full page.

image

image

If you are on a Chromium based browser, like Google Chrome, Edge, Brave, etc., you can get an extension, or you can use the built in option that's hidden behind dev tools.

As I couldn't possibly cover every extension, I'll only be showing the dev tools option. To enter the dev mode, press F12 on your keyboard. this will bring up a menu in the browser.

image

From there press CTRL + SHIFT + P to bring up the command pallet. Type in Shot and select "Capture full-size screenshot" and then name it and choose where to save it. I name it the same as the other folders and place it in the same folder.

image

And with that you have a PNG image with that width you set.

image

Credits

Thanks to JetBrains for the licenses as part of the All Products Pack and their continued support for open source projects

JetBrains

About

Repo for a bingo app I made for the Tower of God Discord

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages