60 lines
2.4 KiB
Markdown
60 lines
2.4 KiB
Markdown
# wOXlf
|
|
Discord bot for managing an anonymous [Werewolf Game](https://en.wikipedia.org/wiki/Mafia_(party_game)).
|
|
|
|
## How It Works
|
|
A host gets a list of players to play, and then begins the game with the `!start` command.
|
|
|
|
Each player is assigned a channel where they will view the game through. The player can read and send messages
|
|
in this channel normally. When a message is sent, it is forwarded to all other player channels. The message's author
|
|
is obscured by a codename. During day phases, players can cast a vote for who they wish to "terminate" that day.
|
|
|
|
The game proceeds as a normal Werewolf game.
|
|
|
|
## Channels
|
|
* Host Channel: Used by the host to interact with the game, can also be used by spectators to see the game state.
|
|
* Real player names are displayed along with code names in this channel
|
|
* Player Channel: A channel for a single player, allows them to chat with the other players and run commands.
|
|
* Vote Channel: Contains all the votes made in a game.
|
|
|
|
## Commands
|
|
|
|
## Host
|
|
* `!start <list of player ids>` - starts the game
|
|
* `!end` - Ends the current game
|
|
* `!say <msg>` - Allows the host to speak into the game chat
|
|
* `!broadcast <msg>` - Broadcasts a system message, this message is then pinned in each player channel
|
|
* `!next_phase <duration> <msg>` - Send the next phase message. Also cycles the phase
|
|
* `!terminate <player>` - Kills a player and removes them from the game
|
|
* `!add_time <duration>` - Adds more time to the current game
|
|
|
|
## Players
|
|
* `!vote <player>` - Casts a vote for a player to be terminated. Only can be used during the day phase
|
|
* `!status` - Get the current game status. Includes time left in the phase and current vote tallies
|
|
|
|
## Example Config
|
|
```toml
|
|
# Discord Bot Token
|
|
token = ""
|
|
# Discord App Id
|
|
app_id = 0
|
|
# Channel to accept host commands from
|
|
host_channel = 1
|
|
# Channel to put vote status messages in
|
|
vote_channel = 2
|
|
# Category to crate the player cannels in
|
|
category = 3
|
|
# Directory to save game data into, game data will be saved as "wOxlf.toml"
|
|
game_state_dir = "."
|
|
|
|
# Random code names are generated in the format of <Adjective> <Occupation>
|
|
|
|
occupation = ["Engineer", "Scientist", "Dancer", "Farmer", "Captain", "Janitor", "Author", "Bartender", "Bum",
|
|
"Student", "Teacher", "Chef", "Waiter", "Comedian"]
|
|
|
|
adjective = ["Sleepy", "Drunk", "Smart", "Gifted", "Extreme", "Eccentric", "Amazing", "Bad", "Silly", "Dumb", "Smelly"]
|
|
```
|
|
|
|
## License
|
|
[MIT License](./LICENSE)
|
|
|