{net.keeper} keeps this table and answers every raven — sometimes within the minute,
+ sometimes after a night's sleep. The seat is held either way.
{:else if net.challenge}
-
{net.keeper} has been called by {net.challenge.by}. If they can come, they take their seat; if not, they may leave a word below.
+
The raven has flown to {net.keeper}, called by {net.challenge.by}. A seat is held for them:
+ if they can come now, they will take it; if they are at supper, or asleep, or off in the world, they will
+ leave a word below when they can. Meanwhile the table is yours — seat a clockwork wizard, invite a friend,
+ or leave the room on the ledger and come back to it later.
{/if}
{@const lobbyTalk = net.log.filter((l) => l.text.startsWith("\u{1F4AC}")).slice(-6)}
diff --git a/packages/web/src/net.svelte.ts b/packages/web/src/net.svelte.ts
index 0cb7c28..cbc7507 100644
--- a/packages/web/src/net.svelte.ts
+++ b/packages/web/src/net.svelte.ts
@@ -720,7 +720,7 @@ class Net {
create(name: string): void {
this.you = name;
this.spectating = false;
- this.send({ type: "create", name });
+ if (!this.send({ type: "create", name })) this.flash("Still reaching the table — try again in a moment");
}
/** Take a seat in the Peanut Gallery: watch a game with no name and no voice. */
@@ -737,7 +737,9 @@ class Net {
const existing = this.seats.find(
(s) => s.roomId === this.roomIdPending && s.name === name,
);
- this.send({ type: "join", roomId, name, token: existing?.token ?? this.token });
+ if (!this.send({ type: "join", roomId, name, token: existing?.token ?? this.token })) {
+ this.flash("Still reaching the table — try again in a moment");
+ }
}
/** Sit back down at a remembered seat. */