tposney / midi-qol

Other
5 stars 0 forks source link

Ready Set Roll ability rolling #1098

Open tposney opened 1 year ago

tposney commented 1 year ago

In GitLab by @IronWill98 on Dec 20, 2022, 13:45

Ready Set Roll allows changing what ctrl and shift do when rolling abilities, attacks, saves ect. (holding shift to roll advantage, ctrl for disadvantage) and changes how the rolls appear in chat. When installing midi-qol it disables this for abilities like Acrobatics/Nature and STR/DEX but keeps RSRs functionality for attacks. It seems to revert the abilities to default Foundry behavior (where alt is advantage and ctrl is disadvantage).

Turning on Utilize Item Hooks fixes the abilities like STR/DEX but does not change the other skills like Acrobatics/Nature. Turning on and off Fast Forward Ability Rolls does not help either, as it still rolls with default foundry behavior. Example of what RSR looks like vs default Foundry: https://i.imgur.com/2lNw7ul.png

tposney commented 1 year ago

Midi is not compatible with RSR and both modules take over the handling of alt/ctrl.

You could try configuring controls (in the config side bar) and deleting any of the midi-qol settings that have ctl/alt in them.

Screenshot_from_2022-12-20_14-24-50

tposney commented 1 year ago

In GitLab by @Manngunner on Dec 29, 2022, 01:25

Are there any plans to support RSR?

If no, is it possible to disable MIDI QOL's roll handling entirely so I can use RSR instead?

tposney commented 1 year ago

In GitLab by @IronWill98 on Dec 29, 2022, 01:32

Forgot to reply. Changing the key binds does help with one part, but not the other. I don't know how difficult it would be but if there was a toggle near Utilize Item Hooks that disabled midi-QOL from interacting with rolls on the character sheet entirely that would probably work, then other programs wouldn't get overridden.

tposney commented 1 year ago

In GitLab by @thatlonelybugbear on Dec 29, 2022, 01:41

I wonder about the intended interaction. What is the endgame here?

Different chat cards or possibility to use advantage disadvantage after the roll or what else?

tposney commented 1 year ago

In GitLab by @megahead11 on Jan 1, 2023, 21:53

I can answer that. Part of is it the retroactive advantage/disadvantage, critical upgrade, and format (format often being the key point).

Originally, people who used MIDI + BR/RSR would often use it for 50-75% automation, as some people enjoy having some things automated, and other things adjudicated manually. It is much faster to roll the retroactive advantage/disadvantage and apply damage manually if something goes wrong with the automation -- without Additionally, RSR's damage separation is good for by-damage application and undoing (and general comprehensibility). At the moment, to see the damage seperation, you have to click the damage total in midi, and even then, you can't adjust by damage. Also, if you have the damage buttons on, they cover up the entirety of the damage value, so clicking to expand it is a bit difficult.

There are other quality of life things, such as template targeting and general stuff midi does that works great in tandem with RSR/BR

Edit: Also forgot, but theres a fair number of people who just like being able to see double rolls, before or after the fact

tposney commented 1 year ago

In GitLab by @megahead11 on Jan 1, 2023, 22:11

There is also the "alt roll" feature of RSR, which lets you select specific damage types to roll when you hold alt. It is similar to versatile, except you can do it on multiple damage rolls. Unlike versatile, holding alt rolls specific damage types rather than replacing the base roll. Then you can also specify context text on specific damages too. RSR also lets you choose to specify info-per-item to be displayed. For example, you can have one weapon specifically not show its description when you roll it, while a magic weapon could show the description if you choose.

tposney commented 1 year ago

In GitLab by @thatlonelybugbear on Jan 1, 2023, 22:34

Just my 2 cents for argument's shake, until Tim picks this up.

Having only given passing glances over the MidiQOL code, I imagine that all these additions would be a PITA, if even possible.

From a troubleshooting perspective, MidiQOL being compatible only with itself, as a roller module, would make more sense to me, as it already works in tandem with a large suite of accompanying modules.

Same thing more or less with what is going on with WIRE, which is another such all inclusive solution.

As a disclaimer, this comes from someone that is using MidiQOL automation in almost it's full extent and the amount of times I have to redo rolls and such is minimal. I can understand that retroactive advantage would help in some cases, but as things are now, it seems to be in direct conflict with how the midi workflow actually works :smile:

tposney commented 1 year ago

It's not obvious to me, how much of midi's automation you are using and that affects the answer about RSR support. The "simple" RSR support is to have it replace the rolls that midi would otherwise call dnd5e to do. Then the attack/damage are computed and applied as normal.

The complex cases are the reroll with advantage etc features that midi does not support, other than treating it as a brand new attack roll. Also alternate damage rolls (unless the damage type is fully specified in the roll formula) are also not supportable as midi uses the item details to work out the damage types from the damage lines.

I plan to make substantial changes to how midi handles attack/damage rolls so that any roller that supports the standard dnd5e rolls will work with midi. This won't provide an undo/redo to reroll attacks, so reroll with advantage will remain a new roll, not a redo the roll effect.

tposney commented 1 year ago

In GitLab by @megahead11 on Jan 3, 2023, 13:02

I would imagine that people using RSR for retroactive advantage or upgrade to crit, etc (anything that alters the roll post fact) would not be expecting the automation to automatically update to the new roll. I do not think it would be necessary in that case as RSR would be a 50/75% automation case, so handling the base roll would be sufficient in most RSR cases. I don't know how alt rolling works on the system side, but it is somewhat identical in BR where the alternative damage types are included in the roll formula.

tposney commented 1 year ago

In GitLab by @Manngunner on Jan 5, 2023, 22:22

I use MIDI QOL as it's a required component for DDB importer to import spell, feature, item effects etc. I prefer the workflow of RSR for rolling and application of damage, as well as many of the features @megahead11 mentioned.

I like some of the automation features of MIDI that don't involve rolling, such as the concentration and reaction tracking.

I like most of the passive benefits that MIDI QOL brings and was hoping it could be just that.

tposney commented 1 year ago

In GitLab by @kengitsit on Feb 21, 2023, 03:16

@thatlonelybugbear Midi QoL already did it with RSR's predecessor. A glance through the code shows that there was support for Better Rolls. And I can confirm that it worked just fine. But BR was never upgraded for Foundry v10, and RSR took over its code base and became its successor.

I myself have made local changes to my Midi QoL so that it plays nice with RSR - well, nice enough. About 80% of what needs to be done is simply to change all the references to the BR objects to the RSR objects. But RSR works differently enough from BR that the remaining 20% is non-trivial, and I don't understand Midi QoL's code well enough to figure out exactly how to finish the job properly. As of now, I enjoy all of RSR's functionality and the primary stuff I want from Midi QoL.

tposney commented 1 year ago

In GitLab by @thatlonelybugbear on Feb 21, 2023, 03:43

I don't disagree, but the whole deal would mean that the MidiQOL author will need to take extra steps to provide support for that and is totally up to Tim if he has the bandwidth to do that with another module which fundamentally changes the way Rolls work :shrug:

The amount of times that users needed help troubleshooting issues that had to do with MidiQOL and Better Rolls integration was non trivial!

tposney commented 1 year ago

In GitLab by @megahead11 on Feb 21, 2023, 12:51

@kengitsit I'd be interested in that fork if you have it (I'm Pakki Sukibe ♛# 0214 on discord) :smile: maybe you could also submit it as a PR for tposney to look at?

tposney commented 1 year ago

In GitLab by @kengitsit on Feb 21, 2023, 14:26

@megahead11 I wish I could. I started way back in release 10.0.15. And even there, when I compare what I have with the historical code associated with that commit in Gitlab, I see a ton of differences that have nothing to do with me. I suspect that some of this is because the source is in .ts files, whereas the delivered releases are .js files. I can at least summarize some of what I did, though:

I probably made other changes that I don't remember now, but I'm pretty sure that's most of it.

tposney commented 1 year ago

Provided people don't want RSR retroactive advantage/upgrade to critical to work with apply damage/check hits etc, the integration is relatively simple (famous last words).

The track record of better rolls support suggests that this limitation is poorly understood/not acceptable. Since I don't use better rolls/ready set roll the utility in my game is non-existent hence my reluctance to undertake the whole painful support process again.

The fundamental problem is that when the roll is done (attack and/or damage) midi makes changes to the target/attacker (damage - remove concentration - expire effects - apply effects - use reactions - and so on). If you retroactively reroll then potentially all of those need to be undone and reapplied. That's not something that midi can currently do - and won't for a while until I come up with a decent solution for undoing changes. And the undo is more complicated since the application/retraction of changes may be applied on different clients (i.e. the GM client applies and would have to undo damage application - when the workflow is on a player client).

Also better rolls/RSR changes the dnd5e roll behaviour/results so everything that deals with a roll (attacks/damage/saves etc) needs to be special cased for better rolls/RSR.

I am looking at how midi might be re-engineered to be more accommodating to alternate roller modules, but there are some technical stumbling blocks in the way that dnd5e implements the mid roll hooks (not being async primarily) that make it a challenge - i.e. midi wants to display a dialog and block the workflow until the dialog completes which is not possible (well not nicely possible) with the current hooks solution.

I will, eventually, tackle the problem but have less enthusiasm than previously since the work/reward equation is not all that good for my use cases.

tposney commented 1 year ago

In GitLab by @kengitsit on Feb 22, 2023, 01:58

I understand your difficulties. For my use case, I don't use Midi to determine hit/miss and apply damage automatically, anyway. (My impression - right or wrong - has been that to make such automation work reliably, I would have to prep more stuff than I care to.) We instead use the damage application buttons on the RSR card. So your "relatively simple" integration would be perfect for me.

But the limited scope of my personal usage may not help you all that much, since you want to provide a product that is fully functional, not one with caveats involving limited compatibility.

tposney commented 1 year ago

In GitLab by @IronWill98 on Feb 22, 2023, 02:57

I think my main use case is the flags, they are incredibly in depth and allow a lot of amazing automation. I'm assuming there is no midiqol 'lite' module that just features the flags is there? I don't know how interested in something like that you would be though.

tposney commented 1 year ago

In GitLab by @thatlonelybugbear on Feb 22, 2023, 03:39

Are MidiQOL flags respected by RSR?

tposney commented 1 year ago

In GitLab by @kengitsit on Feb 22, 2023, 03:49

@thatlonelybugbear Can you give an example of what it would mean for RSR to respect MidiQoL flags? I do know, for example, that conditions that give somebody automatic advantage/disadvantage on a roll are respected.

tposney commented 1 year ago

In GitLab by @thatlonelybugbear on Feb 22, 2023, 05:49

OK thanks for that, this is what I was trying to ascertain.