Overload Teams League

Primary Language: JavaScript
Created:
Updated:
The Discord bot and website used for the Overload Teams League.

Releases

v8.1.5

* Added `/confirmtime` as a workaround for the `/suggesttime` button disappearing. This is the only confirm command planned for now.
* Added `/reschedule` command where, if both teams agree, the match time will be cleared.
* `/suggesttime` once again disallows times in the past.
* The `/name` and `/tag` commands will no longer miss disbanded teams when checking for unique names and tags.
* Scores reported from Azure will be inlined to take up less vertical space.
* Fixed bug with `/pickmap` where it couldn't detect that a challenge was part of a set.
* Fixed bug where commands that only run one at a time would cause random errors.

v8.1.4

* Added new head to head page.

v8.1.3

* Fixed validation on `/reinstate`.
* Added validation on `/homes` to ensure that the team is not disbanded.
* Package updates.

v8.1.2

* Fixed `/pickmap` for sets of matches. You are no longer allowed to pick the same map twice in a set. A set is determined by challenges with the same title (differing only by game number) between the same two teams.
* `/rematch` now alternates home map team, provided the previous match was not a neutral match.
* New `/addguest` and `/removeguest` commands to allow captains and founders to add and remove guests from their team. Note: confirmation from the guest will be required in a future version.
* Fix for `/suggestrandom`.
* Fix bug where only setting time would choose the wrong day.
* Fix various bugs with button interactions.

v8.1.1

* Fix text bugs when testing whether an Azure server is running or not.
* Fix a bug when reading form the game browser.
* Fix a bug when an event is modified after its match time passes.

v8.1.0

This release replaces the existing chat-based commands with Discord-approved slash commands.

* Most commands have been replaced with slash commands. Type slash in chat to see the full list of commands.
* Commands have been hardened against duplication. You will no longer be asked to interject a command, the system will just wait until the previous command has finished before attempting your command. If the command no longer makes sense to run a second time, you'll either be ignored or you'll get an appropriate error message.
* Commands that previously required confirmation will instead have a confirmation button to click on to confirm. Don't tarry! Buttons timeout after 15 minutes (well, 14 minutes and 50 seconds, anyway).
* `/confirm`, `/confirmmap`, `/confirmteamsize`, `/confirmtime`, and `/confirmtype` have all thus been removed.
* Out of necessity, many commands are no longer available via direct message to The Fourth Sovereign.
* `/report` has been split up into `/report ` and `/reportscore `.
* `/removetwitch` has been removed. Use `/twitch` with no parameters instead.
* `/next time` and `/mynext time` have been removed. Their respective base commands now include both the local time and a countdown.
* `/countdown` and `/deadlinecountdown` been removed. Their respective functionality has been rolled up into `/matchtime` and `/deadline`, which now includes both the local time and a countdown.
* `/color` now requires a shade. ie: Use `/color normal red` where before you used `!color red`.
* `/stream` has been removed, since it should now be obvious that the command is `/streaming`.

v8.0.1

* Integrate ol-azure-manager into the main bot.
* Fix a rare bug with logging that can send the application into an infinite loop.
* Package updates.

v8.0.0

* Fixed various bugs related to ratings and disqualified teams.
* Remove damage and net columns from games that don't have damage recorded.
* Hardened querystring handling on the internal match API.
* Package updates.

v7.0.2

* When a command is duplicated, mention that you can use !version to avoid the duplication if you need to run the command.
* Fix bot DMs.
* Use the Google Calendar library instead of the entire Google library.
* Fix bug with logging.
* Package updates.

v7.0.1

* Allow a number of commands to be repeated. Critical commands that would cause problems to be repeated are still not allowed. If you find yourself in a situation where you need to repeat a command (for instance, your opponent typed `!confirm` when your team was supposed to), interject a dummy command, such as `!version`, in between two commands to allow the command you wish to repeat to go through.
* Fix bug when deleting Google calendar events.
* Package updates.

v7.0.0

# New Features:

* New dark-ish mode.
* New rating system for OTL Season 7. See Discord for details.
* Provisional ratings are now only italicized and not prorated, since the rating system does the proration already.
* Rosters can now be added to while locked, but new players cannot play in restricted challenges until the team's roster is unlocked.
* Discord timestamps are now shown instead of times across multiple timezones.
* `!convert` can be used anywhere. Make sure you still have your own timezone set with `!timezone`, or this command won't work as expected.
* Challenges are now recorded in Google Calendar at https://otl.gg/calendar.
* Discord events are now added when challenge times are agreed to.
* Use Discord events instead of database for `!next` command.
* `!clock` no longer has a restriction of one clock per opponent per season.
* `!remove` is now allowed when rosters are locked.
* Servers are now recorded with the match when `!report` with a URL or `!addstats` is used to report a match.
* Added monsterball levels to https://otl.gg/maplist.
* Repository now called `otl.gg` instead of `otl-bot`.
* Scores added to #otlbot-alerts channel.
* New `!qualified` and `!notqualified` admin commands. Non-qualified teams, which don't count towards a team's rating, are shown in red on the team page.
* New `!restricted` and `!unrestricted` admin commands to specify that a challenge is restricted and should not allow players added while a team's roster is locked to play in that challenge.

# Bug Fixes:

* Pilot to Discord name mapping is now done in the database instead of Redis.
* Caching refactored to use a library, should prevent endless connections to the redis server.
* `!report` no longer can be performed by the winning team with a URL.
* Fixed a CSS error with diamonds in the map section of players page.
* Duplicated commands are no longer allowed, preventing multiple reports of the same game.
* `!clock` validation is now done in the correct order to prevent confusion.
* `!confirm` can no longer be done by two people simultaneously.
* `!forcemap` can no longer be used prior to the team size being set.
* `!forceteamsize` and `!suggestteamsize` now show specific error messages depending on the input.
* `!regen` command now logged properly.
* `!removemap` error message no longer causes a crash.
* Items cached are no longer saved 1000 times as long as necessary.
* Replaced html-minifier library with html-minifier-terser.

v6.0.2

* Package updates.

v6.0.1

* Teams are now called "Blue/Team 1" and "Orange/Team 2" to match updates in olmod 0.4.2.
* `!regen` command for admin to regenerate a pinned post for a challenge.

v6.0.0

* `!report` now shows the secondary notice immediately instead of after updating the pinned message.
* `!shenanigans` has been removed to avoid confusion.

v5.0.2

* Records page now filters by team.
* Fix bug with standings page.
* Fix bug with adding stats with a timestamp to ignore events after.
* Improve handling of timezones when a year isn't specified in a date.

v5.0.1

New Features:

* New date time zone conversion library is being used. Please report any new bugs with `!suggesttime` or `!convert`.
* Date parsing now allows just a time in most places. It will use the first date in the future when that time will be. Good for scheduling matches for later in the day.
* New `!convert` command for challenge rooms, which lets you arbitrarily convert dates and times to the timezone of everyone in the channel.
* Net damage is now displayed as a statistic on the matches and match pages.
* Self-damage is now calculated as part of the total damage taken on the match page.
* `!addstats` now includes a timestamp parameter that will allow an administrator to remove all events that happened in a game after a certain point in time.

Bug Fixes:

* `!suggestrandommap` works again.
* Various issues with the cast pages have been resolved.
* Fixed unhandled exception when an invalid date without a year is given (ie: February 29).
* Hardened querystring handling on the standings page.
* `!pickmap` error message now correctly states there are five home maps.
* Fix `4v4+` as a valid home map type.
* Fixed confirmed team size not showing in the pinned post for challenges.
* Fixed a pretty bad memory leak with the website.
* Removed team rating from the team page when viewing all seasons.
* Removed a number of redundant messages when dealing with maps or captains.

v5.0.0

Support for Season 5 of the OTL.

v4.0.6

* Fax various bugs introduced with home maps in v4.0.4.
* Fix divide by zero errors for damage per death.

v4.0.5

* Channel topics for challenges and new teams have been removed, and replaced with a pinned message.
* Challenge channel pinned messages are now simplified, and will contain a checklist of things that are needed to do prior to the match. Use https://otl.gg/about to see the full list of commands available.
* Twitch names and streaming designations will now automatically pick up from your Discord presence. As long as your Twitch streams are detected by Discord, you should not need to use the `!twitch` and `!streaming` commands. For those that prefer to not use Discord presence for their Twitch streams, but still wish to mark themselves as streaming the match, the commands can still be used. Note that this is aggressive - there is a 30 minute check, if you're streaming Overload within 30 minutes of your match you will be set as streaming your match.
* New `!mynext` command that only shows the next matches for your team.
* Player page damage breakdown section now respects the Postseason selector.
* Fixed bug with rematch not showing available home maps to pick from.
* Fixed bug with challenge channel permissions.
* Fixed bug when adding stats from the wrong game.

v4.0.4

* Home maps have been overhauled. Team anarchy is now split into 3 categories, 2v2, 3v3, and 4v4+, and the set of commands to manage home maps has changed. See https://otl.gg/about for the new list of commands.
* Website will now show the home maps for each cateogry.
* New neutral maps feature. Similar to home maps, but does not get divided into categories for Team Anarchy. See https://otl.gg/about for the new list of commands.
* When challenging a team, if both teams have matching maps in their neutral map lists, those maps are displayed when the challenge is created.
* Teams are no longer required to have a stock map in their home map list.
* New ELO algorithm for CTF games. Internally, when games finish with the winner under 10 points, the algorithm will add 1 point to each team until one team is at 10 points, and then calculate CTF ELO like before.
* Update game settings for olmod.
* Fix a number of bugs with malformed website requests.

v4.0.3

* Captains will no longer be left in a team's captains channel after they've left the team.
* Due to league growth and Discord category channel limits, the Challenges channel category will now cap at 40 challenges. If any challenges go in that would put it above the cap, it will rename the Challenges channel to "Old Challenges" and create a brand new "Challenges" channel.
* `!pickmap` is now case insensitive.

v4.0.2

* Maps are now categorized into game types. You cannot fly a map in game modes other than Team Anarchy if they were not intended for that game mode. However, any map can be flown in team anarchy.
* `!report` now accepts a tracker URL instead of the score. You can `!report` multiple games this way to combine stats from multiple games in the event of disconnections.
* `!report` using the score, the old way of reporting games, still works but will now wipe out any stats accumulated up to that point. Use this as a workaround if you're having trouble using `!report` with the tracker URL parameter. `!report 0 0` will reset both the score and the stats for the game, so use that if you need to start over using `!report` with the tracker URL parameter.
* Teams may now `!challenge` another team even if they have pending postseason challenges open.
* `!creatematch` now has a parameter to create a number of games, alternating the home team of each game but keeping the colors throughout the series.
* Add `!testing` and `!stoptesting` commands for users to join the publicly mentionalbe @Testers role.
* `!suggesttime` no longer defaults to GMT when using dashes in the date. Technical note: The workaround is to replace the dashes with slashes, so if you were using dashes in your date previously keep this in mind.

v4.0.1

* Fix various website bugs with stats for players that switch teams.
* Commands that set topics no longer wait for the topic to be set, and will throw errors if they timeout.
* Fix bug with error logging.
* Fix HTML encoding in JavaScript.
* Various code cleanup.

v4.0.0

Support for Season 4 of the OTL.

### Bot

* Fixed bug with logging.
* Disallow challenging your own team.

### Website

* Restrict season numbers on the records and players pages to prevent abuse.

v3.0.4

* Added the `!suggestrandommap` command, see https://otl.gg/about for more details.
* Match page now orders players by number of captures instead of by KDA for the CTF game type.
* Added damage totals taken per player to the match page.
* Fixed the players page, the option to show active or all players should work again.
* Players page should no longer show players listed twice.
* All references to screenshots have been removed, in favor of providing tracker links.
* Closed games will now invalidate caches so that the home page and the standings page will refresh with current ratings.
* Fixed bug with an incomplete `!addstats` command inadvertantly changing the challenge's match time.
* ???

v3.0.3

* New `!capexempt` command allows the server owner to add players to teams beyond the roster cap.
* `!uncast` now works as expected.
* Various bugs with stats on the website are fixed.
* Colors for rematches will no longer change between matches.
* Captains cap has been removed.
* Added game settings for olmod to read.
* Fixed bug introduced in newer versions of Chrome having to do with countdowns.
* Fixed security bug in the og:url meta tag.
* Fixed a new instance of an unnormalized name on the website.
* Added support for adding stats from a game on a Russian server.

v3.0.2

* `!addstats` now will move the match time back if it was played earlier than the game was agreed upon.
* The font in the damage breakdown section of the players page is now more consistent on Windows.
* Records page now only counts season 3 and later for all time damage records.
* Links page now points to tracker.otl.gg instead of olproxy.otl.gg.
* Security fix with minification.

v3.0.1

### Bot:

* `!close` now displays stats for both teams, rather than for one team twice.
* Channel topics for challenges and teams are formatted correctly.
* CTF formats have been standardized across the bot and the website. Example: `4 C/8 P (12 CK, 8 R), 1.250 KDA (40 K, 10 A, 40 D), 5000 Dmg`
* Join in progress games where players not part of the match accidentally joined are now ignored.
* `!suggesttype` and `!confirmtype` are now disabled for locked matches.
* `!addstats` will now notify on score change if it changed the score to a tie.
* `!creatematch` now allows being called without a game type, defaulting to Team Anarchy.
* `!creatematch` no longer checks validity of home map count for game types other than the type of match it is creating.

### Website:

* Players page no longer counts friendly fire damage towards damage stats.
* Removed option to display all or active pilots for postseason on players page. This will now always display all players who competed in the postseason.
* Players page now only counts the game type selected when considering if a player was active.
* Cast page no longer lists players twice in a postseason game.
* Cast page now displays whether the last game the teams played was an overtime game.
* Matches page now shows dates if there is only one page of matches available.
* Records and player pages will now show the last season if the new season has no data yet.
* Various formatting fixes across the website related to damage and CTF stats.
* Improved mobile support. If something doesn't look good on mobile devices, please file an issue.
* Replaced express-minify with custom combination and minification handlers using terser and csso with caching to Redis.

### Back end:

* Now using .d.ts files for complex types across JavaScript. These can be found in the /types directory, and all existing .d.ts files have been moved to that directory.
* Various dependency upgrades.

v3.0.0

Support for Season 3 of the OTL.

### Bot:

* New and updated commands for CTF support. See https://otl.gg/about.
* Allow bot to read from the tracker for all supported languages except Russian.
* Fixed `!removemap` command, it actually works now.
* Fixed `!addstats` command to correctly do reverse pilot lookups when the match was split across multiple games.

### Website:

* New CTF stats across the entire website.
* New damage stats across the website. Players listing and records will only list damage stats for season 3 and later.
* There are some known formatting and mobile layout issues that will be addressed in a future version.
* Caching can now be disabled from the settings file.

v2.1.1

### Bot:

* Increased maximum team roster size to 10.
* New `!swapcolors` admin command for cases where teams played the wrong color for a match.
* `!stats` now works for players with URL entities in their name.
* Fixed `!addstats` to not crash when there's no attacker on a damage stat.
* When a team is founded, the team founder is removed from other teams' invites and requests.

### Website:

* Top KDA on the home page now requires players have played in 10% of their teams' games.
* Players page now defaults to active players, which means players who have played in 10% of their teams' games.
* This 10% value will be monitored and adjusted as necessary.
* Rating changes on team page now show the correct operator for all games.
* Season selectors across the site have been fixed.
* Match page no longer shows an empty area instead of a score when the score is 0.
* Match page loads better on mobile.

v2.1.0

### Bot:

* Home team no longer takes postseason games into account when determining the home team.
* New `!addstats` command to add stats from the tracker.
* New `!homes ()` command to list your team's homes or a specific team's homes.
* `!addstat` will now allow players not on the server.
* `!addstat` will no longer add a player twice to a game.
* New `!clearstats` command
* Games reported to #match-results will now link to the match page on the website.
* All references to home server have been removed.
* A player leaving the server who was scheduled to stream a match no longer crashes the challenge's topic.

### Website:

* Damage stats are now displayed on the match page for Season 2.
* Rating changes are now displayed on various pages throughout the site.
* Cast page no longer 404s.
* Cast page only shows a player's season stats.
* Cast page correctly shows the previous match, regardless if it had stats or not.
* Team page now includes games without player stats.
* Players page now shows the most recent team they were on in the season selected.
* Teams who did not play in a season do not show up in the standings for that season.
* A player in the top 5 KDA but not on a team will not crash the home page.
* URLs on the player page now respect name normalization.

### General:

* Redis is now more stable and won't error out the page if it's down.
* Improved logging.
* Improved caching.

v2.0.3

### Bot:

* 5 home maps are now required for challenges.
* Games with no stats are allowed to be closed.
* `!timezone` by itself will clear your timezone. If you are on a team, your timezone will default to the team's timezone, otherwise it will default to America/Los_Angeles. This also has the side effect of removing you from the listing of free agents.
* `!disband` no longer causes errors.
* You can now `!cast` an old match. Use this for adding VODs to old matches.
* `!cleartime` now behaves as expected.
* Improved error handling.
* Many minor performance updates.

### Website:

* Rating no longer shown on postseason page, since ratings don't apply to postseason.
* Games with no stats will no longer awkwardly show the header for stats.

v2.0.2

### Bot:

* Switched logging from Discord to a website.
* Better cache invalidation when players join, leave, create, disband, or reinstate teams.

### Website:

* Records for matches now show the record for the season the match was/will be played in.
* Fix stats on team page showing all time stats regardless of the season selected.

v2.0.1

### Bot:

* New command `!maplist` to point to the webpage that lists all maps in play.
* Piots who leave a team while being a team captain now leave that team's captains channel as well.
* Display a better message when team creators mix up `!name` and `!tag`.
* `!lockteam` and `!unlockteam` now lock and unlock the specified team, not the person's team who issued the command.
* When the match time is forced in a challenge that's already been confirmed, notifications that the match is about to begin are no longer sent.
* Fix several instances of caching not taking advantage of promises.
* Many typos fixed across the bot, thanks @SiriusTR.
* `!version` points to the overload-development-community repository.
* Improved error handling.

### Website:

* Season selectors are fixed across the site.
* New map list page under About.
* Show the most recent season when going to the Matches, Players, and Records page.
* Pending matches no longer showes the season number, which doesn't make sense.
* Footer points to the overload-development-community repository.
* Remove /405 route.

v2.0

* Support matches up to 8 players per team.
* Improved error handling.

v1.1.1

### Bot:

* Improvements to the performance of the match notification system.
* Added `!vod` command for casters to record a video on demand. Lists the video in the new #vods channel.
* Unvoiding a match with no match time set no longer causes an error.
* Bot no longer listens to server member changes on servers other than the OTL.
* Start Discord before the website.
* Improved error handling.

### Website:

* Much of the website data is now cached, with cache invalidations happening automatically upon certain events.
* Match page now properly normalizes names.
* Streamers are now noted on the match page.
* Casters and VoDs are now displayed on the match page.
* Dates now display on the matches page when paging.
* Dates on matches page now link to their match page.
* Display fixes on the standings page.

v1.1

### Bot:

* Refactored database code to be less monolithic.
* For commands where you enter a date and time, if you don't enter a year, it will no longer fail to recognize Daylight Savings Time properly in some cases.
* The `!home` command will now enforce the one stock map per team rule.
* Added `!overtime` command to implement overtime periods for games that use overtime.
* Improved error reporting.
* The `!addstat` command now shows KDA.
* Added `!lockteam` and `!unlockteam` commands to lock and unlock team rosters.
* Added `!addmap` and `!removemap` commands to add and remove maps from the allowed map pool.
* Fix to `!creatematch` not swapping team colors properly.
* Added `!next time` to show the next events and matches in the user's local time zone.
* Increase admin's `!forcetime` range to 180 days.
* Fix a bug where the bot will throw an error if a player leaves a server after playing a match but before it's closed.
* Fix a bug with issuing `!voidgame` and `!closegame` too rapidly in succession.

### Website:

* Refactored to a proper MVC pattern.
* Uses a more generic router.
* Now using morgan for logging.
* Improved display name sanitizing.
* Fix a bug with team size records being incorrect on the standings page.
* Overtime games are now noted on the website on the home, matches, and match page.
* Added a prominent link to Challonge.
* Added images for Burning Indika, Junebug, Keg Party, Mesa, Sub Rosa, and Turnstile.
* Added new links page.
* Website now uses SSL.
* Matches page now dynamically loads 10 matches at a time.
* Website now has a favicon.
* Added custom 404 and 500 pages.
* Team rosters now link to the player's page.
* New match page, linked to from everywhere on the site that shows a match. The match's time serves as the link.

v1.0.7

### Bot:

* Events are now shown in the `!next` command.
* Maps can now be changed after they are set.
* Teams now get an announcements channel that everyone can read but only founders and captains can post in.
* Commands that take dates will no longer accept dates too far into the future (or past where applicable).
* Reordered the team colors in the challenge topic to match the order that they appear in game.
* Fix a bug with the KDA only showing for one team in the #match-results channel.

### Website:

* Many pages now have new or improved filtering based on the season and whether to show regular season or postseason stats.
* Added the best game for each map and opponent on the player page.
* Fixed link color in some less common browsers.
* Fixed website crash when viewing a player who is not on a team.

v1.0.6

### Bot:

* The Fourth Sovereign can now be invited to other servers. Use https://discordapp.com/oauth2/authorize?client_id=469895441186816031&scope=bot&permissions=0 to invite the bot to your server. Valid commands on servers outside the OTL are `!next` and `!stats`.
* Match reminders will now also remind teams of any unset parameters, and will remind players to set their `!streaming` flag.
* KDA now appears in the #match-results channel.
* Challenge IDs now won't spike into the 1000's when the server gets unexpectedly rebooted.
* `!stream` is now an alias for `!streaming`.
* `!retag` command errors have been fixed.

### Website:

* New Overdigit font for numbers.
* Matches that have been given a `!title` now have the title shown on the matches page.
* Player pages will now show a player's performance against each team and on each map played.
* KDA is now always to 3 decimal places.
* Fixed some places where the player name wasn't normalized.

v1.0.5

* Continued work on having better responsive design overall on the website.
* The game log on the team page is more readable.
* The sorting of the `!next` command now sorts from earliest match to the latest.
* The website will now direct traffic to the cast page if no one is setup to cast the match.
* `!adjudicate extend` can be used to simply clear the match time from a match that was missed, but now will display the correct message if the challenge was not clocked, and will update the channel's topic appropriately.

v1.0.4

* New `!stats` command to view your own stats and get a URL to your stats page.
* Fixed bug with `!rematch` command that was resetting the match times and team sizes of all challenges.
* Fixed crash on player stats page for players not on a team.
* Cast page no longer includes stats from games that aren't yet official.
* Records page no longer fails when there aren't categories available.

v1.0.3

### Bot:

* Added `!rematch` command from inside a challenge room to allow for immediate rematches. This will create a new challenge between the same teams with the home server team swapped (or neutral if the prior challenge was neutral), the same team size, and a match time of now. This is intended to allow for teams to play a series of matches in a row and requires a representative of BOTH teams to issue the command. Teams should still use the `!challenge` command for other challenging purposes.
* Added `!next` command to list all pending matches.
* Updated the `!cast` command to allow `!cast next` to inform players what the next match available to cast is. Note, you still need to use `!cast` with a challenge ID, this is just an informative command.
* Removed the requirement to confirm a `!challenge`.
* New teams' founders will now get permissions for at-everyone and at-here and to delete and pin messages in their team channels, and captains will now get permissions for at-everyone and at-here. I will make a pass to allow this for existing teams shortly after release.
* Dates no longer require a year, and will assume the first occurrence of that date in the future.
* Dates can be replaced with the keyword "now", allowing for immediate scheduling.
* The 30 minute warning now mentions the correct amount of time remaining until a match when a match is scheduled inside 30 minutes.
* URLs no longer will have exclamation points at the end of them, so the exclamation point won't be part of the URL.

### Website:

* Fixed various website CSS bugs, including making them a bit more mobile friendly. This probably still has a long way to go, so if you see any issues on mobile, please post in #dev or file an issue on GitHub with details.
* New records and player pages.
* Matches page now has countdowns for pending matches.
* Matches page redesigned and paginated.
* Players page now shows league averages, along with a line visually indicating where that average lies.
* Fixed the Best Game stats for teams.
* Normalized names for best performer on the Cast page.
* Technical update to allow hot-swapping web pages.

v1.0.2

* Bug fixes, especially concerning mobile devices.
* New page for casters to easily cast matches between teams.
* New #scheduled-matches page that lists matches as they are scheduled.
* Updates to `!cast`, `!matchtime`, and `!countdown` commands to make it easier to follow matches.

v1.0.1

* Bug fixes.
* Significantly more stats on the website.

v1.0.0

* Initial release.

Commits

Merge pull request #617 from overload-development-community/dependabot/npm_and_yarn/terser-5.16.0
Bump terser from 5.15.1 to 5.16.0
`/stats` will now only report statistics against upper league teams.
Update upgrade powerup image.
Add team map performance page.
Bug fix.
Merge pull request #616 from overload-development-community/dependabot/npm_and_yarn/html-minifier-terser-7.1.0
Touch up super upgrade image.
Add team trophy case.
Player trophy case.
Add some powerup images.
Final polish for the stats split.
Add parameter to view stats vs. all teams to player page.
Updates for team, player, and records to only show upper league games.
Bump html-minifier-terser from 7.0.0 to 7.1.0
Fix bug with team rating breakdown not showing unless you explicitly clicked on the latest season number.
Merge branch 'main' of ssh://github.com/overload-development-community/otl.gg
Update players page to only count stats for upper league opponents.
Merge pull request #614 from overload-development-community/dependabot/npm_and_yarn/azure/identity-3.1.1
Bump @azure/identity from 3.1.0 to 3.1.1
Workaround to Discord issue.
Don't try to edit an empty message.
Only show the list of disbanded teams in the current season, otherwise show disbanded teams in the place they finished in.
Update standings page to display which league each team is in.
Update Season Top Players list to only use upper league stats.
New `/league` admin command.
Bug fix for error that will probably never happen?
terminal, why?
Improve SEO.
Be leniant with past dates.
Version 8.1.5.
Prevent `Unknown interaction` errors on semaphores.
Add `/reschedule` command.
Check from the database instead of from Discord for duplicate tags or names.
Create `/confirmtime` command.
Prevent times in the past when using `/suggesttime`.
Inline the reported scores from the Azure servers.
Fix bug with checking maps of previous games in a series.
Fix spacing on team 2 wins.
Fix bugs with head to head page.
Version 8.1.4.
New head to head page.
Version 8.1.3.
Check for team not disbanded on /homes.
Fix bug with reinstating.
Merge pull request #609 from overload-development-community/dependabot/npm_and_yarn/azure/identity-3.1.0
Bump @azure/identity from 3.0.0 to 3.1.0
Merge pull request #607 from overload-development-community/dependabot/npm_and_yarn/roncli/node-redis-v0.1.17
Merge pull request #606 from overload-development-community/dependabot/npm_and_yarn/babel/core-7.20.2
Bump @roncli/node-redis from v0.1.16 to v0.1.17
Bump @babel/core from 7.19.6 to 7.20.2
Merge pull request #604 from overload-development-community/dependabot/npm_and_yarn/types/node-18.11.9
Merge pull request #602 from overload-development-community/dependabot/npm_and_yarn/googleapis/calendar-3.0.0
Merge pull request #601 from overload-development-community/dependabot/npm_and_yarn/tzdata-1.0.35
Bump @types/node from 18.11.7 to 18.11.9
Bump @googleapis/calendar from 2.0.0 to 3.0.0
Bump tzdata from 1.0.34 to 1.0.35
Merge pull request #600 from overload-development-community/dependabot/npm_and_yarn/types/node-18.11.7
Bump @types/node from 18.11.5 to 18.11.7
Merge pull request #599 from overload-development-community/dependabot/npm_and_yarn/types/ioredis-5.0.0
Bump @types/ioredis from 4.28.10 to 5.0.0
Merge pull request #598 from overload-development-community/dependabot/npm_and_yarn/types/node-18.11.5
Merge pull request #594 from overload-development-community/dependabot/npm_and_yarn/babel/core-7.19.6
Bump @types/node from 18.11.0 to 18.11.5
ChallengeId -> PenaltyId
Version 8.1.2.
Typo fixes.
Add toggle to disable bot.
Possibly fix bug with Discord events.
Fix bug with checking previous maps in a match.
Bump @babel/core from 7.19.3 to 7.19.6
Merge pull request #592 from overload-development-community/dependabot/npm_and_yarn/types/node-18.11.0
Bump @types/node from 18.8.5 to 18.11.0
Merge pull request #591 from overload-development-community/dependabot/npm_and_yarn/tzdata-1.0.34
Merge pull request #590 from overload-development-community/dependabot/npm_and_yarn/types/node-18.8.5
Bump tzdata from 1.0.33 to 1.0.34
Bump @types/node from 18.8.4 to 18.8.5
Merge pull request #589 from overload-development-community/dependabot/npm_and_yarn/discord.js-14.6.0
Bump discord.js from 14.5.0 to 14.6.0
Merge pull request #588 from overload-development-community/dependabot/npm_and_yarn/types/node-18.8.4
Merge pull request #587 from overload-development-community/dependabot/npm_and_yarn/express-4.18.2
Bump @types/node from 18.8.3 to 18.8.4
Fix bug with only setting time.
Bump express from 4.18.1 to 4.18.2
Fix random map command.
Merge branch 'main' of ssh://github.com/overload-development-community/otl.gg
Fix bug with Discord events.
Merge pull request #586 from overload-development-community/dependabot/npm_and_yarn/types/node-18.8.3
Merge pull request #585 from overload-development-community/dependabot/npm_and_yarn/terser-5.15.1
Bump @types/node from 18.8.1 to 18.8.3
Bump terser from 5.15.0 to 5.15.1
Merge pull request #581 from overload-development-community/dependabot/npm_and_yarn/roncli/node-database-v1.2.12
Merge pull request #583 from overload-development-community/dependabot/npm_and_yarn/types/node-18.8.1
Bump @roncli/node-database from v1.2.11 to v1.2.12
Merge pull request #580 from overload-development-community/dependabot/npm_and_yarn/roncli/node-redis-v0.1.16
Bump @types/node from 18.7.23 to 18.8.1
Team guests.
Bump @roncli/node-redis from v0.1.15 to v0.1.16
Fix various bugs with button interactions.
Alternate home team on `!rematch` unless there are penalties involved.
Share This Page
Social Media
Ronald M. Clifford
@roncli @mastodon.social

After a 110-5 score line, it became apparent change was needed in the OTL. Well, change is coming. This update should go live tomorrow. roncli.com/blogger/43463416270

Reply Boost Favorite
Ronald M. Clifford
@roncli
After a 110-5 score line, it became apparent change was needed in the OTL. Well, change is coming. This update should go live tomorrow. https://t.co/j8TwWzLogN
Reply Retweet Like
πŸ‚ arborelia is leaving πŸ‚
@arborelia
The value proposition for Mastodon, as a Twitter replacement, has flipped since the last time I tried it:

Mastodon: you might pick the wrong server and have to move away from it
Twitter: you have definitely already picked the wrong service, and you have to move away from it
Reply Retweet Like
GloriousEggroll @gloriouseggroll@fosstodon.org
@GloriousEggroll
Hive needs a desktop website. I am not glued to my phone 24/7
Reply Retweet Like
Ronald M. Clifford
@roncli @mastodon.social

Crazy post on Tumblr about YouTube and the downside of what they consider "success". h/t to Lilac, not something I would reblog over there so here it is instead. at.tumblr.com/ohnoitstbskyen/t

Reply Boost Favorite
Ronald M. Clifford
@roncli
Of all the things to go first. 🀣 https://t.co/L0KZ5c8PU3
Reply Retweet Like
Ronald M. Clifford
@roncli @mastodon.social

Hmm, apparently you can't add a text description to an image upload after the fact. Would be a nice addition for when you forget.

For those wondering, that's a bottle of Ramune and a box of Pocky.

Reply Boost Favorite
Ronald M. Clifford
@roncli @mastodon.social

Name a more iconic duo. I'll wait.

Reply Boost Favorite
Ronald M. Clifford
@roncli @mastodon.social

How you can tell Twitch is updating their ads to combat ad blockers? Check Google Trends for "pixeltris".

Reply Boost Favorite
Ronald M. Clifford
@roncli @mastodon.social

The Overload Teams League had a team anarchy game result of 110 to 5 today. The awful one-sidedness of such a game aside, this skews stats and records in a very bad way.

I think I've come up with a reasonable way to solve it, but boy is the SQL for this site becoming mind bending.

And what's worse: I have to convert it all to MongoDB when I do the Docker conversion project. I'm going to be a MongoDB aggregation EXPERT by the time that's over.

Reply Boost Favorite
Ronald M. Clifford
@roncli
Bump now that people are serious about it. https://t.co/f60lITKAeK
Reply Retweet Like
Ronald M. Clifford
@roncli
"People suck. Don't be people." -roncli 2019 πŸ™ƒ
Reply Retweet Like
Nifflas
@Nifflas
https://t.co/40yzlOfRR0 <-- I don't want to be on a platform run by an abusive leader and overworked staff. I'm so dependent on twitter for my work though, I've got an essential part of my contact network here, but every second I'm here I feel I'm betraying my morals.

Fuck.
Reply Retweet Like
Zev Eisenberg
@ZevEisenberg @mastodon.social

Huge if true

Reply Boost Favorite
Nifflas
@Nifflas @mastodon.gamedev.place

Select which of these two statements you agree with:

1-based indexing is superior.
...or...
0-based indexing is superior.

Reply Boost Favorite
Ronald M. Clifford
@roncli @mastodon.social

It's definitely a struggle, but I believe the only way to deal with it is to face it unafraid, and learn from every encounter with it. It will still hit me, but I no longer let it control me.

Reply Boost Favorite
Ronald M. Clifford
@roncli @mastodon.social

Competition anxiety is the only type of anxiety I get, at least with any regulatory. It doesn't happen when I play 6DoF games (at least not anymore), but almost any other competitive game I play, the anxiety can strike at any time, and it affects me greatly. I have become much more aware of it lately, and I think that's helped result in days like today where, for a moment, everything seems to be falling apart... but then I understand what is going on and don't let it ruin the rest of my day.

Reply Boost Favorite
Ronald M. Clifford
@roncli @mastodon.social

At the chess club, I played 5 games between two opponents that I have losing records against. I confidently won all five games, even declining a draw because I didn't think I could lose and had a passed pawn.

Later, I got productive, finishing the week's math homework and doing a video presentation for business in one take. And now I'm feeling really good about how the day went, despite that one hiccup early in on.

Reply Boost Favorite
Ronald M. Clifford
@roncli @mastodon.social

An hour later, I played in another Tetris match against an opponent with a lower best score and was playing buzzed. It was a league format where I am not getting eliminated if I do poorly. I got trounced, lost 6-1 over two matches, and couldn't get to level 19 more than one game.

Competition anxiety stuck hard in the second set, and I have no idea why. It tried to frame the remainder of my day. I did not let it.

Reply Boost Favorite
Ronald M. Clifford
@roncli @mastodon.social

Today was a reminder that competition anxiety is fickle and strange.

I played in the events today. The first was Classic Tetris Monthly's tournament, a knockout bracket where I have had mixed results. Today I was up against a maxout player, someone who can score a million points. (my best is 740k). I swept the match 3-0 no problem, and felt good the whole way through.

Reply Boost Favorite
Ronald M. Clifford
@roncli @mastodon.social

False alarm, that was a typo on their part. 🀣 They meant something more sane.

Reply Boost Favorite
Ronald M. Clifford
@roncli @mastodon.social

Someone at work, who I said probably would have to fix a unit test after a change, just fixed it by making it "Assert.True(true);".

DON'T BE PEOPLE!

Reply Boost Favorite
Ronald M. Clifford
@roncli @mastodon.social

Worked on a remake to an old song from 2003. Got a coworker to play some guitar parts fort it. Sounds amazing! Now I'm wanting to do more music stuff again. If only I had the time!

Reply Boost Favorite
Ronald M. Clifford
@roncli
Replying to @roncli

Yeah. @BYG_Vancouver. Still awesome. Love that it's the same pose, but in the Rift outfit! https://t.co/8eK89sIKAi
Reply Retweet Like
Ronald M. Clifford
@roncli
Replying to @roncli

Tumblr may become relevant again, but probably not for a while. There are a number of non-creative projects ahead of it that need doing, so it'll be a while before I regularly put out stuff again. That said, look for something new there in the next few days. πŸ‘€
Reply Retweet Like
Ronald M. Clifford
@roncli
Replying to @roncli

Caveat on Tumblr: I've been there for about 9 years, back when I decided to split my blog between my creative endeavors (Tumblr) and everything else (Blogger). While I still have the account, I'm not very active on it since my creative endeavors have taken a back seat.
Reply Retweet Like
Ronald M. Clifford
@roncli
Yo Twitter folks. You may be making accounts on other sites to hedge your bets when it comes to Twitter's future.

Where did you go? What services do you use?

Me so far:
- Mastodon: @roncli@mastodon.social
- Cohost: https://t.co/dIpEZTcSJl
- Tumblr: https://t.co/U5nc579A4x
Reply Retweet Like
Ronald M. Clifford
@roncli @mastodon.social

@Nifflas So you migrated your Mastodon account to another server once. How was that experience for you? What was good about it? What do you wish was different?

Reply Boost Favorite
Esteban Moro
@estebanmoro @mastodon.social

[This post contains an error in the number of Twitter users. Check the new one here: mastodon.social/@estebanmoro/1 ] Something big is happening in Mastodon over the weekend. Here is my graph, updated. Right now Mastodon is growing ~3 times faster than Twitter.

Reply Boost Favorite
Ronald M. Clifford
@roncli @mastodon.social

I have stuff, and things!

Reply Boost Favorite
@fuuma @hackers.town

Make the net weird again. Hand write sites like it’s the 90s. Pick interesting domain names and make fan sites or random knowledge known to everyone. Don’t monetize anything. Spearhead new protocols like Gemini. Make mods for games on your site. Make FAQs for obscure games no one knows about. Make public software services available to anyone. Make a news site about a really random subject. Create music in all kinds of different formats. Most of all, do it because you want to!

Reply Boost Favorite
Ronald M. Clifford
@roncli @mastodon.social

The amount of this random list of things I've actually done is staggering. hackers.town/@fuuma/1092716813

Reply Boost Favorite
Ronald M. Clifford
@roncli @mastodon.social

This is not the line it was in past years. That's a good thing!

Reply Boost Favorite
Gary AshurstπŸ³οΈβ€πŸŒˆ
@GaryAshurstArt
Seems the plan now is ad free for paid and free users. Incredible. https://t.co/E5TWV3SDfH
Reply Retweet Like
Ronald M. Clifford
@roncli @mastodon.social

FOX!

Reply Boost Favorite
Ronald M. Clifford
@roncli
Replying to @roncli

Unless the businesspeople figure out how to successfully do, you know, business, this place's days may very well be numbered.
Reply Retweet Like
Ronald M. Clifford
@roncli
Replying to @roncli

Being shitty to your workforce, rolling out features no one wants, not addressing PR disasters in a timely or acceptable fashion, belittling a percentage of your user base.
Reply Retweet Like
Ronald M. Clifford
@roncli
Replying to @roncli

I am taking a business course on information systems at the moment, and this place is hitting on every counterexample we've been learning about.
Reply Retweet Like
Ronald M. Clifford
@roncli
A billionaire practically begging people for single digit dollars over the Internet is peak 2022 capitalism.
Reply Retweet Like
Ronald M. Clifford
@roncli
Replying to @roncli

That said, if you're going, let me know. I'm not planning to stay long, but I'll definitely make time to say hi. πŸ™‚
Reply Retweet Like
Ronald M. Clifford
@roncli
It occurs to me that Day of the Devs is on the same day, at about the same time, and on the same MUNI line as the League of Legends Worlds finals. That's NOT going to be fun to navigate.
Reply Retweet Like
Ronald M. Clifford
@roncli @mastodon.social

While it's not as bad as last time, it's still kind of bad, unfortunately.

Reply Boost Favorite
Ronald M. Clifford
@roncli @mastodon.social

I was today years old when I learned that the M in CPM - a term I recognize as "cost per thousand impressions", stands for the Roman numeral 1,000, and now I feel like an idiot for not realizing this for TEN YEARS. πŸ€¦β€β™‚οΈ

Reply Boost Favorite
Ronald M. Clifford
@roncli @mastodon.social

The confusion of being in the six digit tracking numbers for issues in our issue tracker but referencing an issue that has a four digit tracking number.

"...so the work from 6636 is causing the issue."

"What is the full number for 6636?"

"6636! From the beforetimes of 2019!"

Reply Boost Favorite
Ronald M. Clifford
@roncli @mastodon.social

"And if the employees building it don’t meet their deadline, they’ll be fired..."

Reply Boost Favorite
Ronald M. Clifford
@roncli @mastodon.social

This right here makes it 100% clear that you never want to work for this guy, if you value your sanity. twitter.com/verge/status/15868

Reply Boost Favorite
Ronald M. Clifford
@roncli
Replying to @roncli

Pacific Daylight Time ends November 6th, so I imagine what's happening is it's interpreting the time with daylight savings because that's what it is now, and not accounting for daylight savings ending before the date.
Reply Retweet Like
Ronald M. Clifford
@roncli @mastodon.social

Hopefully the servers will keep up this time around. πŸ™ƒ

Reply Boost Favorite
Ronald M. Clifford
@roncli
Replying to @roncli

I can't remember if I cried
When I read the blue bird's suicide
But something touched me deep inside
The day the conversation died
Reply Retweet Like
Ronald M. Clifford
@roncli
Replying to @roncli

But October made me shiver
With every story hope would wither
Bad news coming so quick
I couldn't make one more click
Reply Retweet Like
Ronald M. Clifford
@roncli
Long long time ago, I can still remember
How that conversation used to make me smile
And I knew if I had my chance
That I could make those people chat
And maybe they'd be happy for a while
Reply Retweet Like
Ronald M. Clifford
@roncli
I wanted to test out @cohost_org but then I ran into this nightmare. Just say no to hostile UX. https://t.co/dpEnGwSqrO
Reply Retweet Like
Ronald M. Clifford
@roncli
Well shit. I wasn't going to go to this. Now I feel like I have to! https://t.co/o4GMDBW0Fk
Reply Retweet Like
Ronald M. Clifford
@roncli
Apps never tell you what they changed anymore. What bug fixes? What stability improvements? What did they do to space time? Knowing Google, they probably made it worse. https://t.co/b29hitjcE1
Reply Retweet Like
Ronald M. Clifford
@roncli
Replying to @roncli

Decided I didn't want to play for weeks on end. https://t.co/qX3ZgjCLQH
Reply Retweet Like
Ronald M. Clifford
@roncli
Replying to @roncli

Fireballception. https://t.co/a5YZriV1qS
Reply Retweet Like
Ronald M. Clifford
@roncli
Replying to @roncli

Dear god, it's full of, uh..... colors? https://t.co/FcBmkVxPGO
Reply Retweet Like
Ronald M. Clifford
@roncli
Replying to @roncli

I somehow made it worse. https://t.co/N01jt1edKK
Reply Retweet Like
Ronald M. Clifford
@roncli
I don't know what's going on. But I don't think I have to. #vampireslayers https://t.co/sX8t2oFkMX
Reply Retweet Like
Ronald M. Clifford
@roncli
Replying to @roncli

This is JavaScript-level of silliness.

JavaScript, of course, being the language that gives you this true equality:

11 == "1" + "1"
Reply Retweet Like
Ronald M. Clifford
@roncli
I was today years old when I learned this was true in Microsoft SQL Server:

'A' = 'A '

CC: @Nifflas because I'm pretty sure this should be in his new programming language.
Reply Retweet Like
Ronald M. Clifford
@roncli
I'm going to remember this move for the next tournament I play in! 🀣 https://t.co/xfFfu15T41
Reply Retweet Like
Ronald M. Clifford
@roncli
The OTL Mid-Season Invitational has completed the two quarterfinal matches tonight, and both matches went 5 games. I played in 5 of those matches (we won 3-2!) and cast 2 games from the other set.

I am absolutely *spent*. 😴
Reply Retweet Like
Ronald M. Clifford
@roncli
2.1 is not enough, but it is such a perfect place to start, my love. @ClassicTetris
Reply Retweet Like
Ronald M. Clifford
@roncli
Moral of the story: Don't lose to Marts! HEY NOW! https://t.co/FSpQKN1t5G
Reply Retweet Like
Tetris Championship
@ClassicTetris
Awesome preview of the 2022 CTWC by aGameScout! https://t.co/94jcxUavM7
Reply Retweet Like
Ronald M. Clifford
@roncli
This reminds me of the old days of silly, fun Flash games that took a couple minutes of your time but were really good. And funny. https://t.co/2KdqytdBuk
Reply Retweet Like
Risk of Rain 2
@RiskofRain
@TicTacFoe @roncli OH NOOO 😭😭😭
Reply Retweet Like
TicTacFoe
@TicTacFoe
@RiskofRain I see your start and give you @roncli start. https://t.co/Y1oKKg6BEb
Reply Retweet Like
Adam Ziegler
@mrbond_zhp
dude would rather pay 44 billion than admit he was wrong
Reply Retweet Like
Ronald M. Clifford
@roncli @mastodon.social

Well, back here we go, I suppose. cnbc.com/2022/10/04/twitter-sh

Reply Boost Favorite
Ronald M. Clifford
@roncli
Replying to @roncli

Honestly, this song is too good to be just a video game song. This is some serious metal! 🀘 https://t.co/6gHZAaYMYe
Reply Retweet Like
Ronald M. Clifford
@roncli
I'm so sorry, Code. 😳 https://t.co/7j4Wfhhv7U
Reply Retweet Like
Ronald M. Clifford
@roncli
I could run P6 and P7 forever, the music is too good. #ffxiv
Reply Retweet Like
Ronald M. Clifford
@roncli
To spite me, @solitha decided to tip higher for good service... enough to make the bill's total $68.99. I mean, what? Really? Who does that? That's not nice!
Reply Retweet Like
Ronald M. Clifford
@roncli
Honestly, if you're a game dev and DIDN'T see this coming, you probably hadn't heard of Google before Stadia. https://t.co/e6q1k53ce6
Reply Retweet Like
grimh_hs
@Grimh_HS
How QR codes are made 😁 https://t.co/iBczqxKsmv
Reply Retweet Like
Adam Ziegler
@mrbond_zhp
one of the most Descent 1-ass textures I've ever seen https://t.co/34zF2x7hqK
Reply Retweet Like
Ronald M. Clifford
@roncli
Replying to @roncli

Apparently just mentioning the Discord Twitter account gets bots to try to send you to a scam on Instagram? Some serious desperation out there.
Reply Retweet Like
Ronald M. Clifford
@roncli
Apparently this includes FAILED requests. For an application with 95 commands, @discord slash command development has really been a rather awful experience. Guess I wait until tomorrow to test this? Is there a better way to deal with this? https://t.co/WmW37dSosS
Reply Retweet Like
Ronald M. Clifford
@roncli @mastodon.social

A post long overdue, and especially now that I'm using That Bird Hell Site again... for now.

Honestly, me being able to walk away, even if just for a short time? You might've been a little jealous. But with social media, it's never that easy, is it?

roncli.com/blogger/21868843720

Reply Boost Favorite
Ronald M. Clifford
@roncli @mastodon.social

What have I done since my last project? Not much. Well, maybe a little bit. Some discussion about coding burnout, and project plans for the future. roncli.com/blogger/77091210326

Reply Boost Favorite
Ronald M. Clifford
@roncli @mastodon.social

Timeago generators are funny.

Reply Boost Favorite
Ronald M. Clifford
@roncli @mastodon.social

Apparently I got preoccupied and forgot to play yesterday. Streak ends at 210. GG!

Reply Boost Favorite
Ronald M. Clifford
@roncli @mastodon.social

Jesus Christ that order number!

Reply Boost Favorite
Ronald M. Clifford
@roncli @mastodon.social

Ooo, this was a dangerous word.

Wordle 403 5/6

⬛⬛⬛⬛⬛
β¬›πŸŸ¨πŸŸ¨β¬›β¬›
πŸŸ¨πŸŸ©β¬›β¬›β¬›
β¬›πŸŸ©πŸŸ¨πŸŸ©β¬›
🟩🟩🟩🟩🟩

Reply Boost Favorite
Ronald M. Clifford
@roncli @mastodon.social

Avoided long columns with an unintuitive play.

Wordle 402 4/6

β¬›β¬›β¬›β¬›πŸŸ¨
β¬›πŸŸ¨β¬›β¬›β¬›
β¬›πŸŸ©πŸŸ©πŸŸ©πŸŸ©
🟩🟩🟩🟩🟩

Reply Boost Favorite
Ronald M. Clifford
@roncli @mastodon.social

This was a think outside the box moment.

Wordle 401 5/6

πŸŸ¨πŸŸ¨β¬›β¬›β¬›
β¬›β¬›πŸŸ©πŸŸ¨πŸŸ©
β¬›πŸŸ©πŸŸ©β¬›πŸŸ©
β¬›πŸŸ©πŸŸ©β¬›πŸŸ©
🟩🟩🟩🟩🟩

Reply Boost Favorite
Ronald M. Clifford
@roncli @mastodon.social

And more columns.

Wordle 400 5/6

β¬›πŸŸ¨β¬›πŸŸ¨β¬›
β¬›β¬›πŸŸ¨πŸŸ©πŸŸ¨
πŸŸ©β¬›β¬›πŸŸ©πŸŸ©
πŸŸ©πŸŸ©β¬›πŸŸ©πŸŸ©
🟩🟩🟩🟩🟩

Reply Boost Favorite
Ronald M. Clifford
@roncli @mastodon.social

Not entirely sure this is a word either but meh.

Wordle 399 4/6

β¬›πŸŸ¨β¬›β¬›β¬›
β¬›πŸŸ¨πŸŸ¨β¬›πŸŸ©
πŸŸ©β¬›β¬›πŸŸ¨πŸŸ©
🟩🟩🟩🟩🟩

Reply Boost Favorite
Join roncli on Discord!
Join the roncli Gaming Discord server for discussion about gaming, development, and more!
roncli.com Media Player