Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Improve handling of [dis]advantage mechanic #107

Open
1 task done
zithith opened this issue Oct 23, 2024 · 5 comments
Open
1 task done

Improve handling of [dis]advantage mechanic #107

zithith opened this issue Oct 23, 2024 · 5 comments

Comments

@zithith
Copy link
Collaborator

zithith commented Oct 23, 2024

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:

  • Update the roller interface to allow the user to record multiple stacks of advantage/disadvantage on parts of the die pool with more than one die in it (i.e. damage dice).
    • validate these inputs: max number should be = to total number of die in the row
  • Update the pool sizes appropriately (2d20/2dp, damage die = n(2d#) where n = [number of adv + number of disdv] + yd# where y = remaining die in the pool)
  • Run the usual roll from there
  • Produce an initial chat message that displays the raw results and groups the die by advantage/disadvantage pairs
    • The GM should be able to select any of the dice in disadvantage pairs
    • The player should be able to select any of the dice in advantage pairs
    • There should be a button at the end of the template that submits the selections
  • Once dice are submitted, the face values from the selection are fed as the results into the pre-existing calculations.

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:

  • I have searched the existing issues to ensure this feature has not already been requested.
@zithith zithith added the feature request New feature label Oct 23, 2024
@stanavdb
Copy link
Collaborator

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
Copy link
Collaborator Author

zithith commented Oct 23, 2024

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
Copy link
Collaborator Author

zithith commented Oct 23, 2024

updated description

@MangoFVTT
Copy link
Collaborator

MangoFVTT commented Oct 25, 2024

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
Copy link
Collaborator

MangoFVTT commented Oct 25, 2024

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
Status: Design
Development

No branches or pull requests

3 participants