Improved Letters distribution. Added conundrum to mash.

This commit is contained in:
Niels Simenon
2023-04-10 16:06:53 +02:00
parent f4776df853
commit 91eaa9d709
4 changed files with 50 additions and 11 deletions

View File

@@ -9,9 +9,38 @@ const getWordKey = require('../utils/get-word-key');
const pickRandom = require('../utils/pick-random');
const words = require('../../assets/mash-words.json');
// http://www.thecountdownpage.com/letters.htm
const availableLetters = {
vowel: ['a', 'e', 'i', 'o', 'u'],
consonant: ['b', 'c', 'd', 'f', 'g', 'h', 'j', 'k', 'l', 'm', 'n', 'p', 'q', 'r', 's', 't', 'v', 'w', 'x', 'y', 'z'], // Countdown regards y as a consonant
vowel: [
...Array.from({ length: 15 }, () => 'a'),
...Array.from({ length: 21 }, () => 'e'),
...Array.from({ length: 13 }, () => 'i'),
...Array.from({ length: 13 }, () => 'o'),
...Array.from({ length: 5 }, () => 'u'),
],
consonant: [
...Array.from({ length: 2 }, () => 'b'),
...Array.from({ length: 3 }, () => 'c'),
...Array.from({ length: 6 }, () => 'd'),
...Array.from({ length: 2 }, () => 'f'),
...Array.from({ length: 3 }, () => 'g'),
...Array.from({ length: 2 }, () => 'h'),
...Array.from({ length: 1 }, () => 'j'),
...Array.from({ length: 1 }, () => 'k'),
...Array.from({ length: 5 }, () => 'l'),
...Array.from({ length: 4 }, () => 'm'),
...Array.from({ length: 8 }, () => 'n'),
...Array.from({ length: 4 }, () => 'p'),
...Array.from({ length: 1 }, () => 'q'),
...Array.from({ length: 9 }, () => 'r'),
...Array.from({ length: 9 }, () => 's'),
...Array.from({ length: 9 }, () => 't'),
...Array.from({ length: 1 }, () => 'v'),
...Array.from({ length: 1 }, () => 'w'),
...Array.from({ length: 1 }, () => 'x'),
...Array.from({ length: 1 }, () => 'y'), // Countdown regards Y as a consonant
...Array.from({ length: 1 }, () => 'z'),
],
};
const types = { v: 'vowel', c: 'consonant' };
@@ -74,9 +103,11 @@ function stop(context, aborted) {
game.ac.abort();
games.delete(context.room.id);
if (aborted) {
context.sendMessage(`The game was stopped by ${style.cyan(`${config.usernamePrefix}${context.user.username}`)}. Best players: ${getLeaders(game.points)}`, context.room.id);
}
const wrap = aborted
? `The game was stopped by ${style.cyan(`${config.usernamePrefix}${context.user.username}`)}.`
: style.bold('Time\'s up!');
context.sendMessage(`${wrap} Best players: ${getLeaders(game.points)}`, context.room.id);
}
async function play(context) {
@@ -95,8 +126,6 @@ async function play(context) {
context.sendMessage(`${getBoard(context)} You have ${style.bold(style.green(`${Math.round(settings.timeout / 3)} seconds`))} left`, context.room.id);
await timers.setTimeout((settings.timeout / 3) * 1000, null, { signal: game.ac.signal });
context.sendMessage(`${style.bold('Time\'s up!')} Best players: ${getLeaders(game.points)}`, context.room.id);
stop(context);
} catch (error) {
// abort expected, probably not an error