Giter Club home page Giter Club logo

5e-monster-maker's People

Contributors

dependabot[bot] avatar ebshimizu avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

5e-monster-maker's Issues

Warlock Spells

Warlock cantrips get added to the 1st-5th level slot section and go in from of the spells that use slots.

Version 2: Port Template System

Ah right I have the entire template saving system to port over. Let's get the data entry section finished first and then add this system.

  • spell creation
  • spell editor
  • spell serialization
  • port v1 srd templates
  • template application
  • template searching
  • actions/attacks/reactions/everything else creation
  • templates editor
  • templates serialization

i haven't gotten reports of this yet but there might be a time at which templates outgrow the localstorage capacity. when that happens we can maybe take a look at dumping them into indexedDB storage

[2.1] stat block arrangement adjustments

WotC has updated where certain things go in official stat blocks. the upcoming changes are:

  • Display proficiency bonus
  • Move spellcasting to Actions block
  • toggle for sorting Traits alphabetically. Actions aren't always sorted by name (attacks are always first, other actions are after), but traits appear to be.
  • Bonus Actions get their own section. This requires schema change and might be delayed to 2.1, need to add a flag to Actions that'll move them to that section.

Directly Edit Statblock

Adding an option to directly edit the statblock, perhaps as an option immediately before saving it if editing it beforehand would clash with the program, would be nice. The main reason I've found that made me want to suggest this is multiattack details. There are times I want to add notes about limitations or conditions for a creature's multiattack action that I cannot add using this program at the moment. Some examples include the t-rex who cannot target the same creature with both of its bite attack and tail attack, or a creature that attacks first then uses a special action, like the Shambling Mound, instead of vice versa. Currently, if you allow a creature to use a special action and attack, it always says the creature uses the action first then attacks. Being able to directly edit the statblock would also help add details like a creature being blind beyond its blindsight and more.

add a button to show the CR table

changing this issue to just have the CR table viewable in app.
offensive cr calc was already changed to use max of attack bonus / save DC in the average.

Version 2: Port Renderer

The statblock rendering system is pretty straight-forward, though upcoming revisions to the statblock text formatting system will require additional adjustments in the rendering system.

[2.1+] Combat Simulator

Given a target AC and save DC we can compute a statistical analysis on how the monster would do over 3 rounds. In the future, this might extend to being able to add specific save DCs or compute an average from imported party stats.

[2.1+] Multiattack Revisions

Multiattacks are rather complicated for such a small section of the stat block. Version 2 will port the system as-is and include an escape hatch for a fully custom re-write of that section, however that solution isn't .... great. A revised version of multiattacks will allow for more precise CR calculations and customization options. It's more like creating a database query than anything else

  • revise data structure: single attack id -> count, type, restrictions etc.
  • revise UI to allow interaction with revised structure

Lair Actions, Regional Actions

Put at end of stat block, use generic action template.

For CR calc: have a flag to include or exclude at top of each section, use annotations, act once per round using most damaging action according to annotations.

Layout adjustments

  • attacks: change proficient/override switches to buttons
  • attacks: change manual bonus to button
  • actions: move delete button out of CR annotations card
  • render: hide saves, skills, and languages when empty

Additional template types

  • Spellcasting presets (pull from SRD, mage, etc.)
  • Reactions
  • Immunities/Senses presets (e.g. undead, dragon, etc., use SRD)
  • entire monsters (SRD only)

Version 2: Port Monster Model

since the current application is written in javascript, the Monster model needs to be assigned proper typing in typescript and ported into a pinia module.
If the conversion is done correctly, all data written in v1 should automatically persist in v2.

  • basics (move languages up here too)
  • basics w/ automatic stat computation
  • saves
  • speeds
  • skills
  • senses
  • damage type adjustments and condition immunities
  • traits
  • #57
  • #62
  • actions
  • multiattack (forgot that actions also interact with this)
  • legendary actions
  • mythic actions
  • reactions
  • lair actions
  • regional effects

Mythical Action Styling

Hello!

I feel like this is a styling error, but correct me if i am wrong. When using a mythical action, its text is shifted to the right on the left side of the sheet. All other text is nice and flush against the left side of the sheet so it seems kind of odd. Is this done intentionally?

Here is a image to show what i mean:
image

EDIT: it seems that this effect also happens with Legendary Actions, so this might be connected:
Here is a image showing what i get, along with a example (green circle) of what i expected it to look like.

image

Version 2: Custom Text Rendering System

now we're getting to the fun stuff

Version 2's rendering of traits, actions, attacks, and certain preamble sections (spellcasting, etc.) will support the use of a much wider range of custom tokens. The idea is that the boilerplate text will just be a preset string using tokens that are accessible to everyone in the application. This will address long-standing issue #38.

Furthermore, quasar has support for fancy wysiwyg editors that support custom token replacement in the editor. this will be assigned a separate issue when the time comes.

Implementation to-do

  • context tokens (tokens directly related to the current context)
  • monster tokens (subset of general tokens related to monster stats)
  • formatting tokens
  • rendering of tokens (data token replacement -> input sanitization (per rendering context) -> formatting token replacement (per rendering context)
  • Trait-specific tokens
  • Action-specific tokens
  • Attack-specific tokens
  • Multiattack-specific tokens

bonus idea pile

  • [allowed by default] arbitrary action/trait access (actually completed already w/ allowed array access)
  • [completed] automatic CR estimation based on tokens used in text (actions and traits only)

Version 2: Spellcasting

bit of a tangle here

  • clean up spells.json
  • hook up editor fields for basic spellcasting stats
  • move class-specific spellcasting fields inside the class spellcasting section
  • class-specific spellcasting: spell slot entry and editing
  • class-specific spellcasting: rendering (including custom preamble)
  • innate spellcasting: list creation and editing
  • innate spellcasting: rendering (including custom preamble)
  • clean up: separate class and innate spellcasting to separate components

a button for custom spell creation will exist but actually making it do something is a different issue (#56 to be exact)

site unable to load?

was working on a monster, and when changing, if i remember correctly, legendary actions, site crashed. when reloading/restarting/etc. page keeps crashing. unsure if this is an issue on the site side or possibly with the saved file of the monster i was making.

[2.1] Reordering

have received a couple requests for being able to re-order actions, traits, attacks, basically anything that's in a list. That's possible to do but I'm punting it to 2.1 because the initial rewrite is larger than expected and i'll need to dig in to some of the ui components to append buttons to certain areas.

Mythical Actions do not appear.

Adding Mythical Actions does not work. It appears to open some sort of menu, but that menu is empty and nothing appears on the output sheet. This has been tested on Windows 10, on chrome, Firefox and edge. All show the same behaviour.

Bug: Trait deletion out of order

Unsure about replication steps right now, but sometimes when deleting a trait, the wrong trait gets deleted. Will need to check if this is also happening with attacks, actions, anything else that functions similarly.

Homebrewery markdown isn't working properly

When using Copy Markdown to Clipboard (Homebrewery) feature, after pasting it into homebrewery the HP value is always too low, legendary actions section appears even if monster doesn't have one, and there is missing bracket before the cost of a legendary action.
And BTW this is the best monster maker I've managed to find so far. Great Job :))

Version 2: Serialization update

Save schema v4 -> v5

Just remembered to start tracking changes now so will probably have to go back and validate this later.

The schema should match the interface in model.ts

  • schema v5
  • validate export and loading of v5 monsters
  • function to update v4 -> v5 (this will also need to run on load as app will have cached data from old version)
  • validate loading of v4 monsters
  • i18n pass on the loader function
  • spell validation to avoid crashes
  • markdown exporter
  • LaTeX exporter
  • url exporter (will this still work?)

Version 2: CR Calculation Port

did you know that all of the CR estimation calculations are written in the component that renders the CR footer? well now you do.

  • port to TS in a composable
  • relink visuals
  • add settings button for #32

website not working

i was making a monster on the website and it suddenly stopped working saying how something went wrong it also gave the Error code: STATUS_BREAKPOINT. sorry if this isnt how i would tell you this i dont know how this site works

[2.1] CR Visual Override

some of y'all are crazy and need CRs over 30. the app doesn't do that due to the CR calc being tuned for 5th edition.

but there's no reason we can't pretend given that the prof. bonus is editable. an override flag for CR display only can be added. this update requires a monster schema change.

Version 2: Attacks

  • port model
  • add editor features (turn damage sections into accordion tabs, have basic damage open by default)
  • default renderer + tokens
  • enable custom renderer

Mythic Actions

  • Add section with text box for preamble
  • Duplicate legendary actions interface for assigning mythic actions.
  • Append mythic actions to legendary action array in CR calculation
  • Update save format
  • Update exporters

Version 2: Deployment Automation

we're almost there, time to think about updating the automation pipeline

  • experimental branch: build and deploy to other repository for staging
  • debug experimental branch deploy
  • switch experimental to live after testing

[2.0] clearing a CR annotation field causes validation failures when monster is saved

this might be an issue for all numeric fields.

clearing a numeric input assigns a value of "" instead of a number to the saved field. this then causes validation failures if the page is refreshed or the monster is exported and then imported back into the app. numeric types will be enforced for these fields and other fields investigated on a per-case basis

Version 2: Two Column Stat Blocks

yeah so this was easy all along. we could have as many columns as we want. i'll have to think about if we want a toggle or a slider, probably just a toggle

CR Calculation explainers

  • attack bonus: show list of attacks and relevant modifiers
  • DC: same as attack, show non-zero DCs
  • effective hp: show multipliers and additive modifiers
  • effective AC: show modifiers

copy style from damage per round element

Version 2: i18n support

while i'm unable to actually do additional translations, i18n support should be added in the event that someone else would like to add support for their own languages

  • the ui itself isn't too bad, but a pass will need to be done to figure out how to efficiently handle strings for default options (speeds, skills, etc.)

Custom spells

required fields: name, damage, multitarget, level, classes
set custom to true for good measure.

functions that access full spell list will need to switch to the store getter that combines the custom and srd lists. will also need import/export functions for custom spell list incl. a schema.
local storage key: app.spells - snapshot to local storage on mutations that change the custom spell list

Adding a third item to multiattack breaks CR calculation

I have no experience with JS, or I'd try to run this bug down myself.

When I add the third item to a multiattack group, the CR calculation suddenly stops including Resistances in the defensive CR calculation, resulting in an Estimated CR of 12 (17 Offensive, 8 Defensive) instead of 15/16. This doesn't seem to make any sense, given that an attack should have no effect on the monster's Resistances, let alone completely cancelling them out.

Below is the dump of the .5emm.json. Github isn't letting me upload even txt files for some reason

{"name":"Avatar of the Tempest (Category 3)","saveVersion":3,"size":"Huge","type":"elemental","alignment":"neutral","AC":17,"ACType":"natural armor","CR":18,"proficiency":5,"HP":{"HD":16,"type":12,"modifier":48},"speeds":[{"id":"b910e24f-3589-4dc7-bbc1-9ff364722bdf","type":"walk","speed":0,"note":""},{"type":"swim","speed":60,"note":"","id":"56b986b7-1b46-45c5-b5c1-6b309cab3daa"},{"type":"fly","speed":60,"note":"hover","id":"ef99b499-7b12-4663-a4ce-d6c42a44ca1b"}],"stats":{"STR":18,"DEX":21,"CON":17,"INT":6,"WIS":10,"CHA":13},"saves":{"STR":{"proficient":false,"override":false,"overrideValue":0},"DEX":{"proficient":true,"override":false,"overrideValue":0},"CON":{"proficient":true,"override":false,"overrideValue":0},"INT":{"proficient":false,"override":false,"overrideValue":0},"WIS":{"proficient":false,"override":false,"overrideValue":0},"CHA":{"proficient":false,"override":false,"overrideValue":0}},"skills":[],"resistances":["fire","acid","bludgeoning, piercing, and slashing from non-magical attacks that aren't adamantine"],"immunities":["cold","lightning","poison","thunder"],"vulnerabilities":[],"conditions":["exhaustion","grappled","paralyzed","petrified","poisoned","prone","restrained","unconscious"],"senses":{"blindsight":120,"darkvision":0,"tremorsense":0,"truesight":0},"passivePerception":{"override":false,"overrideValue":0},"languages":"Primordial","attacks":[{"name":"Shock","id":"afbb1acc-3c34-4c19-b26e-5a94363a79b6","distance":"Melee","kind":"Weapon","modifier":{"override":false,"overrideValue":0,"stat":"STR","proficient":true},"range":{"standard":0,"long":0,"reach":0},"targets":1,"damage":{"dice":8,"count":4,"modifier":{"override":false,"overrideValue":4,"stat":"STR"},"type":"lightning"},"alternateDamage":{"dice":10,"count":1,"modifier":{"override":false,"overrideValue":0,"stat":"STR"},"type":"slashing","condition":"","active":false},"additionalDamage":[],"save":0,"description":"This attack has advantage against a target wearing metal armor.","legendaryOnly":false},{"name":"Slam","id":"c19461a6-ae68-43b0-b5d5-c5852a48d963","distance":"Melee","kind":"Weapon","modifier":{"override":false,"overrideValue":0,"stat":"STR","proficient":true},"range":{"standard":0,"long":0,"reach":10},"targets":1,"damage":{"dice":8,"count":5,"modifier":{"override":false,"overrideValue":0,"stat":"STR"},"type":"slashing"},"alternateDamage":{"dice":10,"count":1,"modifier":{"override":false,"overrideValue":0,"stat":"STR"},"type":"slashing","condition":"","active":false},"additionalDamage":[{"id":"42e5a091-34db-4acd-a8d7-ebf0397329dc","dice":8,"count":1,"type":"lightning","note":""},{"id":"ae9374c9-e10b-470c-bde6-f818e0d959d8","dice":8,"count":1,"type":"thunder","note":""}],"save":0,"description":"","legendaryOnly":false}],"multiattacks":[{"id":"0d487fa3-e959-4f8e-acc7-a1eda99b91c2","attacks":["afbb1acc-3c34-4c19-b26e-5a94363a79b6","c19461a6-ae68-43b0-b5d5-c5852a48d963","c19461a6-ae68-43b0-b5d5-c5852a48d963"],"actions":[]}],"spellcasting":{"stat":"INT","save":{"override":false,"overrideValue":0},"modifier":{"override":false,"overrideValue":0},"attack":{"override":false,"overrideValue":0},"class":"","level":1,"slots":[0,0,0,0,0,0,0,0,0],"atWill":[],"standard":[],"notes":"","atWillNotes":""},"traits":[{"name":"Legendary Resistance","id":"3c5f6552-6cdd-4bb8-b940-8a9a53054ca4","description":"If the Avatar fails a saving throw, it can choose to succeed instead.","limitedUse":{"count":1,"rate":"day"},"crAnnotation":{"maxDamage":0,"maxSave":0,"maxModifier":0,"multitarget":false,"ehpMultiplier":1,"ehpModifier":0,"acModifier":0,"include":false}},{"name":"Thunderous Visage","id":"f45f3db5-fee1-4a31-8a7a-a7a63a47c8f9","description":"Any creature that touches the Avatar or hits it with a melee attack using a metallic weapon takes {1d8} lightning damage. In addition, the Avatar can enter any creature's space and stop there. The first time it enters a creature's space on a turn, that creature takes {1d8} lightning damage. A creature that ends its turn inside the Avatar's space also takes {1d8} lightning damage.","limitedUse":{"count":0,"rate":"day"},"crAnnotation":{"maxDamage":4,"maxSave":0,"maxModifier":0,"multitarget":true,"ehpMultiplier":1,"ehpModifier":0,"acModifier":0,"include":true}}],"actions":[{"name":"Thunderbolt","id":"38a75a16-0f63-47c4-9186-a649c3852e31","description":"The Avatar chooses one creature within 90 feet and one other creature within 30 feet of the first target. Each target must make a DC 16 Dexterity saving throw. The targets take {6d8} lightning damage on a failed save, or half as much damage on a successful one.","recharge":"","legendaryOnly":false,"limitedUse":{"count":0,"rate":"day"},"crAnnotation":{"maxDamage":27,"maxSave":16,"maxModifier":0,"multitarget":true,"ehpMultiplier":1,"ehpModifier":0,"acModifier":0,"include":true}},{"name":"Thunderclap","id":"cf365df5-93ce-4bfe-ba45-9530c3515751","description":"A wave of thunderous force blasts out 30 feet in every direction, centered on any point within 120 feet. All unsecured objects that are completely within the area of affect are carried outside the area of effect. All creatures within the area of effect must make a DC 16 Constitution saving throw. On a failed save, a creature takes {2d8+5} bludgeoning damage plus {3d8} thunder damage and is knocked prone.","recharge":"","legendaryOnly":false,"limitedUse":{"count":0,"rate":"day"},"crAnnotation":{"maxDamage":27,"maxSave":16,"maxModifier":0,"multitarget":true,"ehpMultiplier":1,"ehpModifier":0,"acModifier":0,"include":true}},{"name":"Debris Torrent","id":"f518db29-59cc-4ecb-af11-23f425a86234","description":"Debris pulled from buildings and the surrounding area blasts out in a 60-foot cone. Each creature in the area must make a DC 17 Dexterity saving throw. On a failed save, a creature takes {6d8} bludgeoning damage and {6d8} piercing damage, or half as much damage on a successful save.","recharge":"5-6","legendaryOnly":false,"limitedUse":{"count":0,"rate":"day"},"crAnnotation":{"maxDamage":54,"maxSave":20,"maxModifier":0,"multitarget":true,"ehpMultiplier":1,"ehpModifier":0,"acModifier":0,"include":true}},{"name":"Detect","id":"79e42d66-dbcd-46e5-bd33-fab50d239c3e","description":"The Avatar of the Tempest makes a Wisdom (Perception) check.","recharge":"","legendaryOnly":true,"limitedUse":{"count":0,"rate":"day"},"crAnnotation":{"maxDamage":0,"maxSave":0,"maxModifier":0,"multitarget":false,"ehpMultiplier":1,"ehpModifier":0,"acModifier":0,"include":false}},{"name":"Hailstorm","id":"0fdb46c7-8b4f-4d15-a7b1-63155fdbb524","description":"The Avatar of the Tempest unleashes a blast of hail in a 20-foot line. Each creature in that line must make a DC 20 Dexterity saving throw. A target takes {2d8+4} bludgeoning damage and {2d8+4} cold damage on a failed save, or half as much damage on a successful one.","recharge":"","legendaryOnly":true,"limitedUse":{"count":0,"rate":"day"},"crAnnotation":{"maxDamage":26,"maxSave":20,"maxModifier":0,"multitarget":true,"ehpMultiplier":1,"ehpModifier":0,"acModifier":0,"include":true}}],"legendaryActions":{"count":0,"actions":[{"id":"f66cf2d8-080f-4c22-9627-a222c4dd53a7","actionId":"79e42d66-dbcd-46e5-bd33-fab50d239c3e","cost":1},{"id":"7181272c-7fcd-41c9-bb7a-87484a945e33","actionId":"afbb1acc-3c34-4c19-b26e-5a94363a79b6","cost":1},{"id":"0326b6d4-54d7-4260-b11f-c84f953accd8","actionId":"0fdb46c7-8b4f-4d15-a7b1-63155fdbb524","cost":2}]},"reactions":[],"lairActions":[{"name":"Cyclone","id":"16196344-44fc-4b50-a804-dd5dc22a9bff","description":"Swirling winds pull all unsecured objects or prone creatures within 60 feet of the Avatar to the center of it's space. Each creature within 60 feet of the Avatar must make a DC 16 Strength saving throw. On a failed save, a creature takes {4d8+4} bludgeoning damage, and is knocked prone.","crAnnotation":{"maxDamage":22,"maxSave":16,"maxModifier":0,"multitarget":true,"ehpMultiplier":1,"ehpModifier":0,"acModifier":0,"include":false}},{"name":"Blinding Winds","id":"320f94b6-4f8b-41a2-83a7-dcf869c0d0d2","description":"Intense winds swirl in a 30-foot radius extending from the Avatar's form. All creatures inside must make a DC 15 Dexterity saving throw or suffer disadvantage on attack rolls until the effect ends. This lasts until initiative count 20 of the next round.","crAnnotation":{"maxDamage":0,"maxSave":10,"maxModifier":0,"multitarget":true,"ehpMultiplier":1,"ehpModifier":0,"acModifier":0,"include":false}},{"name":"Deafening Thunder","id":"f34e9eb3-fd7a-4188-b472-8cc738aa6907","description":"Thunder booms from a point within 120 feet of the Avatar. Each creature within a 20-foot radius of that point must make a DC 15 Constitution save or take {4d8} thunder damage and be deafened until the end of its next turn.","crAnnotation":{"maxDamage":18,"maxSave":16,"maxModifier":0,"multitarget":true,"ehpMultiplier":1,"ehpModifier":0,"acModifier":0,"include":false}}],"regionalEffects":[],"regionalEffectDescription":"The region containing the {NAME}'s lair is warped by the {NAME}'s magic. When the {NAME} dies, the effects fade after {1d10} days."}

P.S.: I think when it calculates Lair Actions in the CR, it is incorrectly replacing standard actions or multiattacks with the lair actions, rather than adding them on top of the normal calculation like (I think) it should. Lair actions should be totally independent of the action economy of the monster that gets them, unless I'm reading the manuals wrong.

Monster Type Templates

Additional special type of template that applies a set of traits to a monster.

  • determine format
  • editing/saving interface
  • populate default templates

See MM for examples:

  • Half-dragon
  • Dracolich
  • Shadow Dragon

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.