The raven sets expectations; Create and Join say so when the table is not yet reached
The lobby tells a challenger what to expect in the table's own voice: the keeper answers every raven, sometimes within the minute, sometimes after a night's sleep; the seat is held either way, and the table is theirs meanwhile. A Create or Join tried before the socket is open used to vanish; it now says the table is still being reached. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Jm2auWk6RP71CjaAb4FMoG
This commit is contained in:
co-authored by
Claude Fable 5.1
parent
1be1cf7d1b
commit
3c10e0463f
@@ -2683,11 +2683,16 @@
|
|||||||
{#if !net.challenge && !net.players.includes(net.keeper) && net.players.length + net.expected.length < 6}
|
{#if !net.challenge && !net.players.includes(net.keeper) && net.players.length + net.expected.length < 6}
|
||||||
<div class="challenge-row">
|
<div class="challenge-row">
|
||||||
<button class="stamp quiet-lid" onclick={() => net.challengeKeeper()}
|
<button class="stamp quiet-lid" onclick={() => net.challengeKeeper()}
|
||||||
title="{net.keeper} keeps this table and gets a call; if they can come they take the seat, and either way they may leave a word here">
|
title="a raven flies to {net.keeper}, who keeps this table">
|
||||||
⚔ Challenge {net.keeper}, the keeper</button>
|
⚔ Challenge {net.keeper}, the keeper</button>
|
||||||
|
<div class="challenge-note">{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.</div>
|
||||||
</div>
|
</div>
|
||||||
{:else if net.challenge}
|
{:else if net.challenge}
|
||||||
<div class="challenge-note">{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.</div>
|
<div class="challenge-note">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.</div>
|
||||||
{/if}
|
{/if}
|
||||||
<!-- Talk before the boards flip: to say when, or to leave a word. -->
|
<!-- Talk before the boards flip: to say when, or to leave a word. -->
|
||||||
{@const lobbyTalk = net.log.filter((l) => l.text.startsWith("\u{1F4AC}")).slice(-6)}
|
{@const lobbyTalk = net.log.filter((l) => l.text.startsWith("\u{1F4AC}")).slice(-6)}
|
||||||
|
|||||||
@@ -720,7 +720,7 @@ class Net {
|
|||||||
create(name: string): void {
|
create(name: string): void {
|
||||||
this.you = name;
|
this.you = name;
|
||||||
this.spectating = false;
|
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. */
|
/** 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(
|
const existing = this.seats.find(
|
||||||
(s) => s.roomId === this.roomIdPending && s.name === name,
|
(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. */
|
/** Sit back down at a remembered seat. */
|
||||||
|
|||||||
Reference in New Issue
Block a user