Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 16 additions & 3 deletions evals/games/webchat-werewolf.ts
Original file line number Diff line number Diff line change
Expand Up @@ -195,10 +195,23 @@ export class WebchatWerewolfReferee implements ScriptedBrain {
if (this.day.order.every((alias) => this.day!.spoke.includes(alias))) {
this.day.spoke = [...this.day.spoke]
this.phase = 'day-vote'
// Firmer, individually binding wording (measured motivation: real
// players completed a perfect 6-speaker discussion and then mostly
// never cast a vote — the polite invitation read as optional). The
// machine-parsed prefix `VOTE <n>. Discussion is closed.` and the
// `Living players:` list are load-bearing for the scripted players
// and must not change.
// The example names LIVING players only (review): a literal-minded
// player copies the example's target, and a hardcoded alias can be
// dead in a later round.
const living = this.aliveAliases()
replies.push(
`VOTE ${this.round}. Discussion is closed. Living players: ${this.aliveAliases().join(', ')}. ` +
`Every living player now says their vote out loud in this conversation, exactly once — for example ` +
`"${this.aliveAliases()[0]}: I vote for player-2". Name exactly one living player.`
`VOTE ${this.round}. Discussion is closed. Living players: ${living.join(', ')}. ` +
`Every living player MUST now cast exactly one vote by posting a message in this conversation in ` +
`the form "${living[0]}: I vote for ${living[1] ?? living[0]}" — your own name, then ONE living ` +
`player from the list above. This applies to YOU personally, whatever you said during the ` +
`discussion — having no strong read does not excuse you: pick the most suspicious living player ` +
`and vote now, in your next message. Not voting forfeits your voice in the lynch.`
)
}
continue
Expand Down