- 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)
2.7 KiB
2.7 KiB
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:
- Speak: Share information, make accusations, defend yourself
- Vote: Lock in your vote for who to eject (or skip)
- Both: Speak and vote in the same turn
- 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:
{
"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 speakmessage: 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
{"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.