Coder Social home page Coder Social logo

clark-lindsay / conjure5e Goto Github PK

View Code? Open in Web Editor NEW
0.0 1.0 0.0 1.31 MB

A project to ease the use of conjuration spells in the 5th edition of Dungeons and Dragons that summon random, parameterized creatures.

License: MIT License

TypeScript 52.37% JavaScript 47.63%

conjure5e's Introduction

Conjure5e

A small library to ease the use of conjuration spells in the 5th edition of Dungeons and Dragons that summon random, parameterized creatures.

I have used this library to build a web application, which can be found at https://conjure5e.herokuapp.com
If you are interested in the code for the web application, the repo is https://github.com/clark-lindsay/conjure-web

Downloading and Installing

yarn add conjure5e OR npm install conjure5e

Reporting Errors and Possible Improvements

Please submit an issue at https://github.com/clark-lindsay/Conjure5e/issues

Describe your problem or idea for improvement in as much detail as you can, and I will get to it when I am able.

conjure5e's People

Contributors

clark-lindsay avatar dependabot[bot] avatar

Watchers

 avatar

conjure5e's Issues

Script Names should be more Descriptive

The names that currently execute npm scripts are not sufficiently descriptive for the average user.
Possible new names:

  • ‘npm run app’ and ‘npm run settings’
  • ‘npm start’ and ‘npm run settings/ configuration’

I prefer the former because it maintains language parity between the commands, which I think will make them easier to remember.

"Never-Summon" List

Users want

to be able to create a list of creatures that can never be summoned under any circumstances.

Domain Explanation

In the game, there are lots of rules that are decided amongst the group, including rules about balance and fun. Some creatures have certain traits that make summoning them irritating for one party or another, or maybe they don't fit into the campaign setting because a certain plane of existence has been closed off, etc. Players that summon those creatures would want to re-roll until they don't summon them, causing friction.

Possible Implementations

  • could create another config interface where the user can select creatures that they don't want
    • presents the issue that the list of creatures would be long
  • if the app had a gui, a user could begin to type the names or types (Celestial, Monster, etc.) of creatures and have it filled in for them
  • users could define creature types, like "Fey" of "Fiend" that can never be summoned (slightly different feature from an explicit list)

Spells should have levels

Users want

to be able to cast their spells at varying levels, as detailed in the rules of the game

Domain Explanation

In the game, casting the spells at a higher level than they are initially unlocked at provides additional effects; in this case, conjuring more creatures.

Possible Implementations

  • an extra option in the arguments object for the spells that takes in the spell's level, and adjusts the number of summoned creatures accordingly

users often repeat the same command many times

Typically, the rules for a campaign remain the same between consecutive castings of the spell, and therefore between consecutive uses of the app. This is handled by the configuration menu. However, sometimes a user simply wants to cast the spell "with the same options as last time".

It is a slog to go through all of the available options when a user of the app simply wants to cast the spell the same way they did last time, even when those options are mostly auto-set by the config file.

User wants: to be able to repeat a casting with the same parameters as the last execution

Possible solutions:

  • every time the app runs, write a file with the options that were just used, and give the user the option to "Recast" or similar
    • can use a separate npm command? or should it be an option in the normal flow?

Monsters can come from multiple source books

Due to the way that D&D is built up over time and packaged, monsters can come from multiple source books, with identical stat blocks. The most prominent example of this is the large intersection between the Basic Rules and the Monster Manual.

Possible solutions:

  • adjust the "database" so that a monster's source is defined as a list of all of the books where it is defined
  • add more user facing documentation to describe the current design choice by which a monster's source book is chosen by the greatest common denominator approach, e.g. Basic Rules is selected over the Monster Manual because BR is free to all

There is no CLI for setting default source books

For the ease of the end-user, they should not have to write JSON, or copy/paste the titles of the source books from one place to another.

As such, there ought to be a CLI for the users that will allow them to select their default source materials, such that source book questions auto-populate when they are encountered.

The Command Line is hard to use

Users want

to be able to use the tool without the need to go to the command line. The terminal is intimidating to a lot of users, and can feel very clunky and prickly for those that are not versed in its use.

Possible Solutions

  • Build the application into an Electron app so that it can run native on any OS
  • Build a web app
    • con: would have to host it, or rely on a potentially very slow free hosting service
    • pro: would be automatically available on mobile

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.