- Core engine: simulator, game mechanics, triggers (138 tests) - Fog-of-war per-player state tracking - Meeting flow: interrupt, discussion, voting, consolidation - Prompt assembler with strategy injection tiers - LLM client with fallbacks for models without JSON/system support - Prompt templates: action, discussion, voting, reflection - Full integration in main.py orchestrator - Verified working with free OpenRouter models (Gemma)
93 lines
2.7 KiB
Markdown
93 lines
2.7 KiB
Markdown
# Among Us — Discussion Phase Prompt
|
|
|
|
A meeting has been called. You are now in the discussion phase with all players.
|
|
|
|
## Objective
|
|
|
|
- **Crewmates**: Identify and vote out the impostor(s)
|
|
- **Impostors**: Deflect suspicion, blend in, potentially frame innocent players
|
|
|
|
## Discussion Mechanics
|
|
|
|
Each turn, you can:
|
|
1. **Speak**: Share information, make accusations, defend yourself
|
|
2. **Vote**: Lock in your vote for who to eject (or skip)
|
|
3. **Both**: Speak and vote in the same turn
|
|
4. **Stay quiet**: Wait and observe
|
|
|
|
Your **desire_to_speak** (0-10) determines priority:
|
|
- Higher = more likely to speak this round
|
|
- You get a boost if someone mentioned you
|
|
- You get a boost if you haven't spoken recently
|
|
- Once you vote, you can still speak but with reduced priority
|
|
|
|
## What You Know
|
|
|
|
- Your game state shows your role, location, and observations
|
|
- The transcript shows everything said so far
|
|
- Your scratchpads contain your notes and suspicions
|
|
- You can only share what you've actually observed
|
|
|
|
## Lying (Impostors)
|
|
|
|
You are allowed to lie. You can:
|
|
- Claim fake alibis
|
|
- Falsely accuse crewmates
|
|
- Vouch for your fellow impostor
|
|
- Deny witnessing events you actually saw
|
|
- Create confusion
|
|
|
|
Remember: consistency matters. Track your own lies.
|
|
|
|
## Output Format
|
|
|
|
Respond with valid JSON only:
|
|
|
|
```json
|
|
{
|
|
"internal_thought": "Your private reasoning (NOT visible to others)",
|
|
"desire_to_speak": 7,
|
|
"message": "I saw Blue near electrical right before the body was found",
|
|
"target": "blue",
|
|
"vote_action": null,
|
|
"scratchpad_updates": {
|
|
"meeting_scratch": "Blue deflecting, Green defending Blue, Yellow quiet..."
|
|
}
|
|
}
|
|
```
|
|
|
|
### Fields
|
|
|
|
- `internal_thought`: Your private thinking (for your records only)
|
|
- `desire_to_speak`: 0-10, how urgently you want to speak
|
|
- `message`: What you say out loud (everyone sees this)
|
|
- `target`: Who you're addressing (optional)
|
|
- `vote_action`: `null` (keep discussing), `"player_id"` (vote), or `"skip"`
|
|
- `scratchpad_updates`: Notes to yourself about this meeting
|
|
|
|
### Vote Examples
|
|
|
|
```json
|
|
{"vote_action": "red"} // Vote to eject Red
|
|
{"vote_action": "skip"} // Skip vote (no eject)
|
|
{"vote_action": null} // Not voting yet, keep discussing
|
|
```
|
|
|
|
## Meeting Scratchpad
|
|
|
|
Your meeting scratchpad is temporary and will be erased after the meeting.
|
|
Use it to track:
|
|
- Who is accusing whom
|
|
- Inconsistencies in alibis
|
|
- Voting patterns
|
|
- Your current suspicions
|
|
|
|
After the meeting, you'll get a chance to save important info to your main scratchpads.
|
|
|
|
## Winning the Discussion
|
|
|
|
- **As crewmate**: Build consensus to eject the impostor
|
|
- **As impostor**: Divide crewmate votes or get them to skip
|
|
|
|
Speak when you have something valuable to add. Vote when you're confident.
|