Git Product home page Git Product logo

dnd-combat-tracker's People

Contributors

cymbre1 avatar dependabot[bot] avatar mspoehr avatar

Watchers

 avatar  avatar

dnd-combat-tracker's Issues

Track creature conditions

The app should offer an easy way to track conditions and display which conditions are currently affecting each creature. This is a particular pain point in the sessions I've ran, because the players are prone to forgetting conditions which negatively impact them, and remembering every creatures' conditions is a lot for the DM to keep track of.

The list of standard 5e conditions (i.e. frightened, unconscious, poisoned, prone, etc.) should be available. In addition, there should be a condition for "concentrating". I've had players who cast spells requiring concentration who then forget that they are supposed to be concentrating and do things that they aren't supposed to be able to do. This is also tough for me to remember and track.

Any other conditions would be covered by the free form notes feature (#13). Technically that could also be used for this purpose as well, until this is implemented.

Add Initiative Bonus

When autorolling initiative, the initiative bonus for certain creatures should be applied automatically.

Ability to automatically sort the initiative order

Once all creatures in the order have an initiative rolled for them (either manually or automatically by the app), the app should have a feature to automatically sort the creatures.

This should not happen automatically (would be frustrating if things kept moving around while the encounter was being set up), but should be done at the request of the user.

Replace react-beautiful-dnd

React beautiful DND seems to have some maintenance issues, and currently does not support React 18. Things still seem to work in production, but break when run under strict mode in development.

Ability to create a library of enounters

A user should be able to prepare encounters to run before a D&D session. These encounters would be kept in a list ready to run or edit at any time.

A user should be able to:

  • Add new encounters
  • Edit existing encounters
  • Delete encounters
  • Run an encounter

An encounter that is running should save its state. For example, if encounters A, B, and C are created and none of them have been run yet, then they would all show "Run" in the list. Then, if encounter A is run, the list would show "Run" for encounters B and C and "Resume" for encounter A. Clicking "Resume" would go back to the exact state the encounter was left in.

Mark creatures as "Players"

This has several uses:

  • Don't auto roll initiative for creatures marked as players #2
  • Could not clear creatures marked as players in #11
    • Could still clear their rolled initiative number though.

Add ability to create a list of predefined player characters

The user should be able to create a list of the player characters that they commonly use. This would be done at the same level as the encounter and monster libraries.

This enables some handy quick set up options for encounters, such as the ability to add all players to an encounter with one click (though, this is not covered under this issue).

Ability to create a library of pre-created monsters that persists

A user should be able to create and keep a list of their monsters in order to reuse them (and their stats) between encounters. This could be something custom, or simply an entry from the monster manual.

Eventually, we could even pull from the open5e API to pre-populate the library somewhat, but that is not in scope for this issue.

Add creature groups

A creature group is a collection of creatures that all have the same initiative count, but all act separately on their turn. The main use case for this would be a group of enemies of the same type, but when more than one of them should get a turn.

For example, there are 3 players, and 4 Orcs. The 3 players all get their own initiative count, but the 4 Orcs all share one initiative roll. However, HP should be tracked separately for these 4 Orcs so they need their own "creature" in the order, but all of their turns occur at the same time.

In order to streamline this, the behavior of certain things might change for groups:

  • Groups can be reordered as a whole #6
  • Creatures can be reordered in the group #6
  • The group can be deleted as a whole #5
  • Copying a creature that is inside the group creates another creature in the group #10
  • Perhaps things that would be shared, such as AC, max HP, etc. could be automatically duplicated N times. For example, a creature could be created, and then there could be a "create group" button, that asks for the number of times to duplicate the creature.

The creation of groups is sort of undefined.

Persist app state in local storage

#17 tracks exporting and importing encounters as files, which would allow persisting of encounters as well as sharing them between machines.

This item is a stop gap that persists app state (thus making the application actually useful) in the user's browser. There are obviously downsides to this, such as not being able to transfer between computers, and complete data loss if the user clears their browser storage.

My current idea is to persist the entire redux state in the browsers local storage.

Ability to restart an encounter

This should leave all creatures in the order with current initiative values, but go back to round 1, turn 1 and set current HP for all monsters back to full.

Track player character class features

This is a nice to have feature for tracking expended player class/race features. For example, the app could allow the DM to easily track expended spell slots, class features (such as Barbarian's rage), and others.

Then, this information could be leveraged if the players forget what they did.

The issue with this is that it would need to be very simple, easy, and intuitive to use. Otherwise, the DM isn't going to have time or the mental capacity to use it and it would just slow play down.

Track health for creatures

There should be an optional way for the app to track the health of various creatures. This is likely to be used only for DM controlled creatures, such as NPCs and enemies, as the players are able to track their own characters' health.

The user should be able to input the max hitpoints for any creature. The app tracks the "current" hit points for each creature, which by default starts at that max hit point number. Then, the user should be able to quickly add or remove an amount of hitpoints from the current total quickly without having to do any math. This could take the form of entering "-30" in a text box and hitting enter, similar to the way roll 20 does it.

This feature needs to be completely optional. The app should work fine without tracking health status.

As a stretch goal, it would be cool if the health was presented in both number and percentage form (since quartiles are often used to report creature health to the players instead of the raw numbers).

Ability to add custom conditions to a creature

In addition to the standard list of conditions in #15, the user should be able to add any condition/note they want and have the duration tracked under #65. They can then also remove this condition at any time.

For example, for a barbarian the user could have a custom condition for rage. This allows us to track all sorts of class features, conditions, and custom effects without cluttering up the UI with tons of options.

Auto search dnd beyond

Add a button to auto search dnd beyond based on a creatures name. For example, if a creature in the initiative order is named "Bugbear", then the button would automatically search for "Bugbear" in dndbeyond (which would include the stat block for the DM to use).

Clear all monsters from initiative order

In addition to clearing the whole initiative order, an option to clear only the monsters would be useful.

I've found that this workflow is desirable for one shots or improv sessions where I don't care about creating the various encounters.

Ability to manually reorder the initiative order outside of rolled order

The initiative order should have some sort of "click and drag" reordering such that things can be reordered at the DM's discretion.

The main use case for this is if there are ties in the rolled initiative order. It is nice to be able to let players work out who will go first in these situations.

Write automated tests

To maintain quality, we're going to need to start writing automated tests. This item is to write tests for all currently implemented features.

Ability to clear the initiative order

This would simply delete all the creatures in the order and return the app to its initial blank state.

This could potentially not delete creatures who are players, or have multiple options.

Ability to export encounters and upload them again later

This would allow the DM to pre-prepare encounters and simply run them during the session.

Likely this would be implemented as a JSON export/import of the entire app state. Hopefully this is easy to do since I'm planning on using redux.

As an alternative, the entire app state could potentially be stored in the URL. Then, in order to save the state, you simply need to save the URL somewhere and revisit it later. This may or may not be feasible depending in how much data needs to be encoded.

Quick add creatures with their AC

Ability to "quick add" a creature to the initiative order with just a name and an AC. If combat is already started, their initiative could be auto rolled and placed in sorted order into the initiative order.

Add round separator

In testing, I've found that reordering creatures can be confusing when dragging a creature over the round border. Consider these cases:

  • Dragging the creature whose turn it is to have already gone
  • Dragging a creature who has not gone to already have gone
  • Dragging a creature who has already gone to have not gone
  • Dragging a creature who has already gone to have their turn now

In these cases, to try and preserve the creature whose turn it is (if possible), and to ensure that the turn order stays sorted such that restarting the encounter starts with the highest initiative value and goes in descending order, the current turn number must change.

It's not obvious that this happens. A clear separator of where the round boundary is could help:

image

It's also possible that this could be useful for other reasons. Maybe it should be configurable? Possible options;

  • Always display
  • Display when dragging
  • Never display

This element would need to be ignored for the purposes of drag destinations.

Auto roll for enemy creatures

The app should have some sort of button that rolls initiative for either all creatures in the order, or potentially only certain creatures. This could be accomplished one of several ways:

  • Mark player creatures as such, and don't auto roll those. This is nice because then NPCs would also be auto rolled.
    • Often there are some NPCs that are being run by a player during combat. Even though they aren't PCs, they could still be marked as such, and then NPCs that are DM controlled would still be auto rolled.
    • I think I like this option the best at this time.
  • Mark enemy creatures as such, and only auto roll these.
  • Mark creatures as needing auto roll. This is probably the most clunky and least desired option.

Fix deployment job

The deploy job was recently broken with updates to the CI. We need to allow the job to access the built artifacts from the previous job.

Ability to duplicate creatures

There should be an easy way to duplicate creatures in the order. This could take the form of a "copy" button/icon that would duplicate the creature and all of its data (AC/HP/initiative roll, etc.).

Player view

It would be really cool if there was a player view that the players could pull up on their own phones/computers.

This player view would simply show the order with names, rolls, and whose turn it currently is. It may also show the number of rounds that have passed. For non-player creatures, the initiative order will need to have an option to hide it. Additionally, HP, AC, CR, etc. should not be shown for enemies.

With only a "player" flag (#12), this is not super user-friendly, as the players should get to see the HP for all NPCs, and enemy initiative counts should only be hidden before those creatures first turns. Maybe this can all be handled automatically, but these details need to be worked out.

Input rolled initiative for creatures manually

While the app will have the ability to auto roll initiative (especially for DM controlled creatures), it is still nice to have players roll their own initiative. This app needs an ability to input these rolled initiative numbers for player controlled creatures manually.

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.