Giter VIP home page Giter VIP logo

dm's People

Stargazers

 avatar

Watchers

 avatar

dm's Issues

Add a meta-campaign

The meta-campaign folder would hold general items that are used across a DM's campaigns.

You can do this by loading two campaigns, but allowing a meta campaign would allow both to be loaded automatically.

Adding a new groups puts duplicate names in the tracker

For example, you have orc-1, orc-2, and orc-3 in the combat tracker. You add 2 more orcs, they come in as orc-1 and orc-2. It's possible to deal with this, but you shouldn't have to.

Note that you may have a situation where orc-2 is dead. So an incrementing loop to find a free name could be a problem. You'll need pattern matching to find them all, get the indexes, then take the max of those indexes.

Create background objects

The would be for adding a background to a creature.

The backgrounds would need to be read from a text file. Include personality traits. They can have choice, so have one that is all choice for custom backgrounds.

This is a child of issue #9: Character Builder

Create class objects

Create class objects that would add one or more levels to a character.

Resetting HP at first level will need to be an option. You will want to do it if building off a default creature. You won't if you are adding it to a monster or NPC. Of course, the latter is not RAW, but allow for that option anyway.

This is a child of issue #9: Character Builder.

Table to Table

Have an option when rolling on a table to go to another table and roll there. This would allow something like the random dungeon generator that was a part of the first draft of this system.

Dome of Heaven Calendar won't load

Trying to load the Dome of Heaven Calendar gives this error:

Traceback (most recent call last):
  File "C:\Users\spam\Documents\Roleplaying\dm\egor.py", line 1716, in onecmd
    return super().onecmd(line)
  File "C:\Users\spam\anaconda3\lib\cmd.py", line 217, in onecmd
    return func(arg)
  File "C:\Users\spam\Documents\Roleplaying\dm\egor.py", line 998, in do_set
    self.load_campaign()
  File "C:\Users\spam\Documents\Roleplaying\dm\egor.py", line 1564, in load_campaign
    self.campaign.calendar.set_year(self.time.year)
  File "C:\Users\spam\Documents\Roleplaying\dm\gtime.py", line 248, in set_year
    self.current_year = self.year_table(year)
  File "C:\Users\spam\Documents\Roleplaying\dm\gtime.py", line 385, in year_table
    cycle.expand_table(table, self)
  File "C:\Users\spam\Documents\Roleplaying\dm\gtime.py", line 602, in expand_table
    overage_period = self.periods[last_year_periods - 1]
IndexError: list index out of range

Conditions should have a variety of ways of ending

Conditions often end on the turn of the person who caused the condition, not the one who has the condition. Also, they sometimes end at the start of the turn, not the end. So we need to support that. So I'm thinking a syntax like 'con [N [M [S|E]]]'. N would be the number of turns (default -1, no end), M would be the creature id of the turn it ends on, and S or E would indicate whether it ends at the start or end of the turn.

I would need to check every round. The check would be complicated enough that it might be worth making a condition object that can handle the check with a simple call.

Statblock Check

I believe saving throws are not showing up in full stat blocks. Make sure everything that should show up in a stat block shows up there.

If you try to do combat tasks before doing init, it causes a Python error

This should be handled more gracefully. The problem is that the combat attributes like init and init_count have not been set up. There are no defaults.

One solution would be to set up defaults, and then check for the defaults (like an empty init list) and give a warning in Egor without raising a Python exception.

Another solution would be to set up the PCs as being in initiative by default. That would be easier for testing, but may cause problems in actual use.

Within group creature identifier

Come up with a way to specify a specific creature within a group with get_creature. Something like 2-3 gets the third creature in the group that is second in initiative order.

Old Test Code Not Working

The old test code in if __name__ == '__main__' blocks does not work with the relative imports that were used for the package. They cause an error trying to run the file by itself.

Review the tests and either come up with a new test method, probably using unittest, or just drop the testing code.

Monster Workshop

Get something that creates new monsters with a questionaire and/or modifies current creatures. Then the creature can be stored in the campaign files.

Avoid generating a CR, as that would use copyrighted material from the DMG.

Better attack damage parsing

Currently when parsing attacks, the program cannot handle spaces in damage. So (1d4+2) is recognized as damage, but (1d4 + 2) is not. This is because it is parsing by word. I should be able to do a regex or something to catch space or no space.

Anything that makes it easier to make homebrew creatures readable is a good thang.

No concentration check with attack

When you use the hit command, Creature.hit checks for the concentration condition, and warns you for a concentration check. But when you use the attack command, Attack.attack does the damage directly and there is no warning for a concentration check.

Create a character building system.

This would tie together the species, background, and class objects, as well as add an equipment feature.

This is a child of Issue #9: Character Builder.

Support all time representations

Some parts of the code use time representations with spaces, others use dashes. Make sure both types are supported everywhere, especially in reading time formats.

Capitalization off on attack message

It capitalizes the name, as most monster names are lower case. But if there are non initial capitals in a character's name, it lower cases them. So 'Claw Claw' becomes 'Claw claw'. Fix that.

Adventure Design

Create a workspace for node-based adventure design. You can set up the nodes with titles, content, and connections between nodes. Also support (or be prepared to support) zooming in on nodes. You can navigate the nodes, add new nodes and connections, see tables of nodes, connections, nodes and the nodes they connect to. Also allow for tagging things in the content so lists could be made of those: npcs, monsters, macguffins, that sort of thing.

Encounter Design

Have a tool for encounter design. Searching by type and CR. Details about the XP and # of attackers. The stuff that might factor into the tables in the DMG, but be sure not to use any copyrighted information that is in there. Support for storing encounters.

I would also like better handling of random encounters. Maybe that should be part of this issue, or maybe it needs to be an issue of it's own.

Create a character object

I have decided to use a separate object for characters generation. This would inherit from the current Creature object, but implement further into the background. It would know about the proficiency bonus, proficiencies for saves and skills. It could recalculate the stored bonuses for skills and saves based on changes to the various sub-bonuses. It would also be able to track equipment, gold, spell slots. As other design questions come up, the Character object should be ready to use in a player interface, should I ever want one.

General Documentation Review

Make sure the comments in the code are complete and up to date, especially the attributes of the main egor instance.

Eras for calendars

Eras would be ranges of years with names. This would modify the year and allow the era name to be in formats, so year 591 could be shown as year 108 of the Foo era.

Create species objects

These would be objects that add a race to a creature. Note that they might be added to an NPC stat block.

The different races would need to be read from a text file. Possibly multiple text files, to account for campaign dependent races.

Child of issue #9: Character Builder

Review the calendar code.

The calendar code was a frustrating mess. Review it and make sure the object hierarchy is good, and the calculations are simplified as much as reasonable.

Low priority.

Character Builder

Have a character builder. Maybe for NPCs that have stat blocks. This might not be worth it, given the copyrighting of the subclasses. Look into that. Or it might be good to have a monster builder that is more focused on NPCs. (see issue #6 ).

Look at groups and condtions.

I don't think groups show the conditions of the members, which would be important for the DM/user to know. Confirm that problem and look for possible solutions.

Year not accessible to calendar formats

The name accessible to formats for calendar do not include the current year, because it is not in the year table. So you can't have a format for 10/27/2021.

Possible XP bug

The do_xp method divides the xp by len(self.pcs). Make sure this shouldn't include self.pc_data. If it does, fix it and look for other similar pieces of code to fix.

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.