diff --git a/client/src/modules/game_creation/GameCreationStepManager.js b/client/src/modules/game_creation/GameCreationStepManager.js
index e2b7167..c381cc7 100644
--- a/client/src/modules/game_creation/GameCreationStepManager.js
+++ b/client/src/modules/game_creation/GameCreationStepManager.js
@@ -38,8 +38,6 @@ export class GameCreationStepManager {
forwardHandler: () => {
if (this.deckManager.getDeckSize() > 50) {
toast('Your deck is too large. The max is 50 cards.', 'error', true);
- } else if (this.deckManager.getDeckSize() < 1) {
- toast('You must add at least one card', 'error', true);
} else {
this.currentGame.deck = this.deckManager.deck.filter((card) => card.quantity > 0);
cancelCurrentToast();
@@ -366,7 +364,7 @@ function renderTimerStep (containerId, stepNumber, game, steps) {
const hoursDiv = document.createElement('div');
const hoursLabel = document.createElement('label');
hoursLabel.setAttribute('for', 'game-hours');
- hoursLabel.innerText = 'Hours (max 5)';
+ hoursLabel.innerText = 'Hours';
const hours = document.createElement('input');
hours.addEventListener('keyup', steps[stepNumber].forwardHandler);
setAttributes(hours, { type: 'number', id: 'game-hours', name: 'game-hours', min: '0', max: '5', value: game.timerParams?.hours });
@@ -414,7 +412,7 @@ function renderReviewAndCreateStep (containerId, stepNumber, game, deckManager)
'' +
'
' +
"
" +
- "
" +
+ "
No cards selected.
" +
'
';
div.querySelector('#test-game').innerText = game.isTestGame ? 'Yes' : 'No';
diff --git a/client/src/modules/game_state/states/Lobby.js b/client/src/modules/game_state/states/Lobby.js
index 815da69..e37a548 100644
--- a/client/src/modules/game_state/states/Lobby.js
+++ b/client/src/modules/game_state/states/Lobby.js
@@ -81,8 +81,6 @@ export class Lobby {
roleEditPrompt.querySelector('#save-role-changes-button').addEventListener('click', () => {
if (this.gameCreationStepManager.deckManager.getDeckSize() > 50) {
toast('Your deck is too large. The max is 50 cards.', 'error', true);
- } else if (this.gameCreationStepManager.deckManager.getDeckSize() < 1) {
- toast('You must add at least one card', 'error', true);
} else {
document.querySelector('#mid-game-role-editor')?.remove();
document.querySelector('#role-edit-container-background')?.remove();
diff --git a/server/model/Game.js b/server/model/Game.js
index 6027645..9885b7d 100644
--- a/server/model/Game.js
+++ b/server/model/Game.js
@@ -27,7 +27,9 @@ class Game {
this.previousModeratorId = null;
this.createTime = createTime;
this.timerParams = timerParams;
- this.isStartable = (this.gameSize === 1 && !this.hasDedicatedModerator) || isTestGame;
+ this.isStartable = (this.gameSize === 1 && !this.hasDedicatedModerator)
+ || (this.gameSize === 0 && this.hasDedicatedModerator)
+ || isTestGame;
this.timeRemaining = null;
}
}
diff --git a/server/model/GameCreationRequest.js b/server/model/GameCreationRequest.js
index e2ab638..92813a6 100644
--- a/server/model/GameCreationRequest.js
+++ b/server/model/GameCreationRequest.js
@@ -31,7 +31,7 @@ class GameCreationRequest {
};
static deckIsValid = (deck) => {
- if (Array.isArray(deck) && deck.length > 0) {
+ if (Array.isArray(deck)) {
for (const entry of deck) {
if (entry !== null
&& typeof entry === 'object'
@@ -45,7 +45,7 @@ class GameCreationRequest {
&& entry.description.length <= globals.MAX_CUSTOM_ROLE_DESCRIPTION_LENGTH
&& (!entry.custom || typeof entry.custom === 'boolean')
&& typeof entry.quantity === 'number'
- && entry.quantity >= 1
+ && entry.quantity >= 0
&& entry.quantity <= 50
) {
continue;