stanavdb / cosmere-rpg

A community-developed system for the Cosmere Roleplaying Game, by Dragonsteel Entertainment and Brotherwise Games.
MIT License
18 stars 19 forks source link

Improve handling of [dis]advantage mechanic #107

Open zithith opened 3 days ago

zithith commented 3 days ago

Is your feature request related to a problem? Please describe.
Advantage and Disadvantage are a little more intricate than keep highest or lowest (though in cases for the d20 and damage die it'd make do). Currently plot die do not implement [dis]advantage mechanic as the logic is complex and the user needs to make some level of decision. And damage die do not increase the size of the pool (again this is due to it being a pool of dice inferring complexity to the situation). d20s currently use keep high/low functionality which is practical, but not entirely correct. This lack of implementation is hampering roll automation. https://discord.com/channels/1245805811087704085/1267574016311562361/1267587839252631595 has a good breakdown of the mechanic from a Brotherwise employee.

Suggested Solution
As per discussion with @stanavdb below:

Describe alternatives you've considered
While the possibility of complicated instances of 'vantage on damage dice are unlikely, trying to apply a simpler solution would mean if such edge cases did appear in a game they would be rolled wrong, not just uncatered-for. As we would be needing a more complex logical approach for the plot die, we might as well just apply it to all the dice.

Initially I played with the concept of a dialog approach and only feeding the final die into the chat message but that would break Dice so Nice, as in the discussion below. I also considered opening a pop-up for GMs ahead of the roll to define where they wanted to apply disadvantages, but it seemed like an unnecessary extra stage, when the players can discuss this around the table first and trust the person rolling will select the correct settings.

Version
0.1.1

Checklist:

stanavdb commented 3 days ago

This will clash with our Dice so Nice integration. As Dice so Nice only produces the roll animation when a chat message is created with a roll attached to it. I've been thinking about this and for both this and general automation I think we need to shift to a workflow style approach. We should let the advantage be picked in the chat message and update the result as appropriate.

zithith commented 3 days ago

Damn, hadn't considered that. Good point. I'll update it to reflect the chat message approach. I know I've used at least one system/module before that did some pretty crazy stuff with chat messages, I just wasn't sure what the level of processing could be done with them was and how much overhead that adds. But if it doesn't break DSN! then that is by far the preference.

zithith commented 3 days ago

updated description

MangoFVTT commented 1 day ago

Regardless of what solution we end up with here, having the option for retroactively adding Adv/Disadv to a chat message and updating it inline is a very good thing to prepare for early. It is a very frequent requested feature in other d20 systems and working it into the overall process before it gets super complicated to refactor is a smart thing to do

MangoFVTT commented 1 day ago

Also re: DSN, remember that it is always possible to call your own 3d rolls from the module by passing it a roll object directly without needing to depend on its auto detection methods for rolling new dice. It doesn't pick up new dice within an existing roll anyway, only new rolls on a message update, last I checked, so we'd have to do that if we want any type of post-message creation roll editing