Giter Club home page Giter Club logo

discord-deception-games's Introduction

Discord: amrojjeh

Anurag's GitHub stats

Anurag's GitHub stats

discord-deception-games's People

Contributors

alexman37 avatar amrojjeh avatar

Stargazers

 avatar

Watchers

 avatar

discord-deception-games's Issues

Recreate Mafia

Recreate a simple variation of the famous Mafia game.

Implement a day and night counter

How many days did a match take? What day are we on? Questions like these must be answered.
At the start of each day phase, when it says "Day started", it should instead say "Day 6 started" and so on. There should also be one for the night.

  • Day
  • Night

Matching the party game

Currently every server created is called "Town of Salem". However, that name was only chosen for testing. It should now match the current game mode being played, such as Talking Graves. It should also have a cover.

Change game modes

Currently we only have two game modes, but there's no way to switch between them. Allow the user to specify the game mode either when starting his party startparty [num|name] or afterwards with gameModes [num|name].
Num would be taken from the list given by just gameModes, which would also give a brief description of each game.

More detailed descriptions of each game mode should be found on the upcoming site.

View active games

View games currently active under the bot. You would not be able to join them, not until spectators are added.

Allow for phases that don't have a timer

That way we can have phases continue until say everyone votes or something else happens. Though this should only be added once a game in mind goes into development.

A config class

A public config class would be helpful, since there's going to be a lot of configs.

No vote command

A command to skip voting for the day. By default, it would require one more than half the total.

!target

It's pretty annoying when you're a lookout and you have to scour through the !party to find the number that you're looking for, or end up watching someone dead. !target would only you show the targets that you can watch, so no more hiccups when reading!

First day

There's no reason to accuse anybody on the first day, so make it short!

Add a first day phase.

Transferring server

Transferring the server requries the party leader to be the in the server, but what if he left mid game? We must be able to transfer the server in the order of people who joined, instead of having it delete itself.

Custom Game Mode

A custom game mode that allows you to create simple game modes by mixing various roles. For example, if you want to recreate Talking Graves:

pg.startparty custom
4 (Serial Killer, 1), (Medium, 1), (Civilian, 1+), (Lookout, 1)
8 (Serial Killer, 2), (Medium, 1), (Civilian, 3+), (Lookout, 2)

Albiet a little wordy, it should be simple to parse. Here's a break down of the syntax:
The first part specifies the total number of players. The list of parenthesis specifies the roles that the players could occupy, with the number denoting the maximum number allowed. So naturally, if all the max numbers add up to the total players, then they are guaranteed to all co-exist together at once. The + sign guarantees a default role, so if more than 4 players join and all the other roles have been used, they are going to be assigned the civilian role, that is until a new rule is specified, which in this would be the second line. It is possible to have more than one default role, and in the case that all roles are default, the 5th player will have a chance to occupy any one of these roles.

Making all roles default is not the same as not having a limit, however. Having a limit guarantees that all roles will be assigned, having no limit will be equivalent to Mashup, where all assignments are equally random.

It should be noted, that a line such as:
8 (Serial Killer, 2), (Medium, 1), (Civilian, 3+), (Lookout, 1) would be considered illegal. This is because in a game of 8 players, it is guaranteed that there would be 2 SK, 1 M, 3 C, and 1 LO, adding up to 7 and not 8. This leaves one person with no role. I should also point out that the default role only works when more than the specified players join the game, in this case, that number would be 8. To fix this, either increase the civ count to 4, or reduce the total to 7.

Update the help command

Just add the alternate prefixes, and another option to see the configuration commands such as setSpec and setRand.

All same no fun

Make sure when generating roles to have at least two factions in a game.

Add spectator

Spectators, those who don't want to play but woud love to have their popcorn with them. By default they won't be able to talk or see any other privates or after_life, but that might be altered by a setting such as pg.setSpecLevel [num], where:
0 = they can only see daytime_discussion and hear others in Daytime
1 = They can talk, but they still can't see anything else
2 = They can see everything else, including other privates and afterlife, but can't talk
3 = They can talk and see everything

Revise custom game modes

Perhaps it might be user to use bit ORing? Parse the already used language, spit out a number, and then the user can save it.
pg.getRolesCode Serial Killer 2, Civillian 3+ -> 102 013
pg.startParty custom 102 013 would be the command to start with the game mode.

102 -> [ROLE_ID][DEFAULT?][NUMBER]

When starting the party, it should tell you the minimum number of players required. Also, multiline game modes where roles switch based on player amount would NO LONGER be supported through the discord interface. More advanced game mode creation features will only be used for local files.

Command Aliases

Typing !ability can get cumbersome quick, so introducing a universal alias (such as !a) or specific role aliases (such as !kill for SK) would be pretty nice.

An events channel

A channel hidden from everyone until the end which highlightes everything that has occured in the game. There would also be a more detailed debug channel that'll be used for debugging.

Enhancing the Person class

Currently, Person.mute() does nothing but store the fact that he's muted. How about we not only store it, but send a request, and have an update function that syncs discord's interface with the Person's interface? It might be worth a try at least.

Doctor not working

When a Doctor heals a person and that person is attacked by a Serial Killer, the person dies anyway.

Some commands to add

  • pg.nodef -> Disables defenses
  • pg.rules (totalPlayers) -> Prints the role limits for a role in a nice table

Server transfer

The game server should transfer to whoever is the first to type "!transfer," not the party leader.

Make Day optional

By default, day should not exist, and people should be able to vote immediately.
Command to set day would be: pg.setDay 20, where 20 is in seconds.
If pg.setDay is 0, then it should be disabled automatically, and that should be the default.

Show current configuration

You've set random, set the speclevel, set the game mode, where can you see all those settings? Gotta have a command

Night phase

Make night phase long (one or two minutes?), but make it 15 seconds once everyone commits their night action. The 15 seconds is a small gap for anyone who wants to change their mind or cancel their action. Also add a "no action".

Note: If everyone selects their action, and then a person cancels it, the phase timer should not change, and the phase would still end shorty regardless.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.