Open tposney opened 3 years ago
There are a few things going on..... You might need to upgrade since changes have been made to that area subsequently, but I can't remember if they impact your example. It would be good to confirm the results being displayed (see explanation below).
flags.midi-qol.disadvantage.ability.all means all ability rolls, saves and checks and skills. If you want just saves it would be flags.midi-qol.disadvantage.ability.save.all and skills would be flags.disadvantage.skill.all
The handling ofconcentration saves is "tricky". Except for concentration/magic resistance the advantage/disadvantage flags are evaluated when the roll is made. When the roll is made there is nothing in the dnd5e data to indicate that the roll is a concentration constitution saving throw compared to a normal constitution save. This means I can't process the concentration flag when the roll is done, nor can Itag the roll to indicate the sort since it get's passed (maybe) to LMRTFY or monk's token bar.
So for concentration rolls I set the whole roll be to done with advantage or disadvantage. When the roll is done the other flags are evaluated and the combination of advantage/disadvantage is evaluated as you'd expect.
Here's an example:
and here's the concentration save result:
You'll see that the roll is marked as with disadvantage (which is ONLY the disadvantage.concentration flag).
However, the roll is made normally (i.e. 1d20 instead of 2d20kl) which reflects the setting of the roll has disadvantage, but the advantage from advantage.ability.save.all is being included and cancel out.
You should probably interpret the disadvantage text as saying there is a presumption that the roll will be done with disadvantage unless other flags change that.
The behaviour is unlikely to change until there is some way to tag rolls in dnd5e.
In GitLab by @BlackMoons on Nov 7, 2021, 01:19
What flag do I use for for just disadvantage on ability checks and skills only and not saving throws, so I can implement Exhaustion level 1?
Because I believe exhaustion 1 is explicitly that? (If exhaustion 3 is explicitly disadvantage on saving throws, it seems like exhaustion 1 should be disadvantage only on abilities and skills. Everyone I have asked says exhaustion 1 shouldn't affect saving throws)
In GitLab by @BlackMoons on Nov 7, 2021, 01:43
Also, I confirmed that it is indeed rolling disadvantage in 0.8.79 with:
flags.midi-qol.disadvantage.ability.all Override 1
flags.midi-qol.disadvantage.skill.all Override 1
flags.midi-qol.advantage.concentration Custom 1
Here is a picture of the result using monks token bar for saving throws:
As you can see, it is rolling two dice under disadvantage, using the lowest result for the saving throw (Player has 14 con for +2 con bonus), when it should be rolling under advantage due to flags.midi-qol.advantage.concentration, or at least neutral roll if flags.midi-qol.disadvantage.ability.all and flags.midi-qol.advantage.concentration cancel out.
After further testing, it seems flags.midi-qol.advantage.concentration does nothing for concentration checks under monks token bar. With it set only and not the disadvantage.ability.all, concentration checks are not rolled at advantage. However this is displayed showing the concentration check should have been made at advantage, but this information was not passed to monks:
Further testing shows that 'flags.midi-qol.advantage.ability.all' gives advantage to concentration rolls (showing 2 dice rolled under monks token bar saves). However as it is a saving throw and not an ability check, I feel this is wrong.
Also making me think that 'Monk's token bar rolls do not support setting of advantage by midi-qol.' listed 3 times in the midi-qol documentation is now incorrect
In GitLab by @BlackMoons on Nov 7, 2021, 02:16
And even further testing shows this (All tests done under 0.8.79, latest version as of start of tests)
flags.midi-qol.disadvantage.concentration Override 1
flags.midi-qol.advantage.ability.all Override 1
Results in the following: Midi-qol says the roll is going to be at disadvantage.. but then rolls it at advantage and uses the highest dice:
So from what I can tell, its... rather ignoring flags.midi-qol.().concentration when it comes to asking monks token bar to roll. But does use it for the concentration card check text.
And its overriding flags.midi-qol.().concentration with flags.midi-qol.().ability.all when its not an ability check.
From what I can tell in DND5E ability checks are completely separate from saving throws, and things that give advantage/disadvantage/bonuses to one shouldn't affect the other. So I petition that either flags.midi-qol.().ability.all only affect ability checks and skill checks (as they are a derivative of ability checks), but not saving throws. OR a new flag be added that only affects abilities and skills, because as I see it right now there is no way to give disadvantage on ability/skill checks and not saving throws, as per Exhaustion level 1. NM, found out about flags.midi-qol.().ability.check.all
And the concentration card check text is showing 'disadvantage' if either concentration OR ability.all is set to disadvantage, even if its rolling neutral or under advantage.
And disadvantage/advantage Shouldn't override each other, but cancel out if both are set in DND5e.
In GitLab by @thatlonelybugbear on Nov 7, 2021, 03:14
With both flags.midi-qol.advantage.concentration
and flags.midi-qol.disadvantage.ability.save.all
set to CUSTOM
and 1
it works as intended, except for the chat card indicating that the concentration check is with Advantage.
It is a niche case that probably will not be encountered often tbh (I mean the chat card showing advantage when in the end the two flags produce a straight roll).
In GitLab by @BlackMoons on Nov 7, 2021, 03:26
Can not reproduce behavior that @thatlonelybugbear is showing.
When I use it, with monks token bar
I get this:
I now see .check.all should have been used for exhaustion level 1. Somehow I missed that flag in the documentation.
But still, I can't get flags.midi-qol.advantage.concentration to actually do anything to monks tokenbar rolls, even when used without any other flags.
Edit: Just checked with autorolls, and flags.midi-qol.advantage.concentration makes those roll with advantage, but not when using monks tokenbar for saving throws.
You are right, from the readme.
so that flag is ignored when using monks token bar.
There's no way to set per character advantage/disadvantage in the monks API. That's why I've gone back to LMRTFY.
You are right that the flags.midi-qol.concentration, is ignored by monks, there's nothing I can do with the current monks api. I decided that leaving it there was no worse than not. The check text always reflects the status of the advantage.concentration flag (or magic resistance for magic resistance) only. Any other flags affecting saving throws are worked out when the roll is done.
I don't believe the way it works is wrong, rather it is being interpreted differently than what is implemented. advantage.all is all rolls. advantage.ability.all is all ability based throws, saves, checks, skills advantage.ability.save.all is all ability base saving throw advantage.ability.check.all is all ability based checks and skill rolls (since skills are an ability check). advantage.skill.all all skill rolls.
The quick summary is that almost all advantage/disadvantage flags are applied when the roll is done in dnd5e (which monks/lmrtfy use).
The flags advantage.concentration/disadvantage.concentration and magic resistance are applied BEFORE the roll is made, since by the time dnd5e does the roll the cause of the saving throw is lost. That means that the roller being used must support a way to set advantage/disadvantage on the roll being called. dnd5e does (i.e. auto rolls), LMRTFY does and monks does not.
So those flags have no effect for monks.
In GitLab by @BlackMoons on Nov 7, 2021, 18:13
Can you give me some information to take to the author of monks token bar to make it support concentration like LMTRFY? I believe he is interested in having full compatibility with midi-qol, as otherwise monks tokenbar has no support for warcaster, a rather often used player feat for mages.
It does seem to already support advantage/disadvantage from other causes like flags.midi-qol.disadvantage.ability.save.all
Let me preface it by saying that concentration advantage is a problem, because there is no way to tell dnd5e that a saving throw has a purpose, i.e. save against X, concentration, fire whatever, it's just a save.
All of the other flags (except for concentration and magic resistance) are evaluated by midi-qol when dnd5e.rollAbilitySave is called, since they are not dependent on the cause of the saving throw.
So long as the module calls rollAbilitySave midi can take them into account. That's why Monks seems to be taking the other flags into account - it all happens within midi-qol and the module does not need to know about anything, other than to call rollAbilitySave.
The problem is those two specials since rollAbilitySave has no way of knowing that a save is a concentration or magic save. Under the hood, what is happening is that when midi comes to do the save, it knows what the default advantage/disadvantage from the source, e.g. concentration/magic resistance so it can call rollAbilitySave({advantage: true/false, disadvantage: true/false}), which midi then takes into account when working out the rest of the advantage/disadvantage flags.
When a 3rd party module is used it needs to be able to effectively do the same thing, i.e. accept and advantage/disadvantage flag for the requested roll.
For LMRTFY it's easy since I can call LMRTFY for each actor saving and it has an advantage flag I can set- no problem.
For Monks I need to pass it a list of tokens/actors to do the save and there is no way to designate that a token makes the save with advantage or not.
So what I would need from the monks token bar is to enhance the API to designate, per token, that the roll is with advantage/disadvantage and to have that passed through to rollAbilitySave.
The best solution, which solves a bunch of problems would be to enhance the dnd5e roll ability save API with the ability to tag an ability save with information about what is being saved against. I think that is very unlikely to happen within the core dnd5e setup, since there is no concept of linking a saving roll to a specific attack/cast.
In GitLab by @BlackMoons on Dec 5, 2021, 07:43
Hi. Monks now has updated with the ability to specify per token that the roll is made with advantage/disadvantage, and can also be fast-forwarded per-token.
I would love it if you could also add: "Monks token bar fast forward" for NPC/unlinked rolls.
Will have a look at it
I've implemented what I can, but am hoping for a change in monk's token bar to do it better.
In GitLab by @BlackMoons on Dec 11, 2021, 03:02
Awesome, tested it out and it seems to work fine. Someone with non default keys for advantage/disadvantage had some issues. What needs to be changed? I'll relay it to him if you haven't already.
In GitLab by @BlackMoons on Nov 5, 2021, 05:59
Hi. I have exhaustion 1 implemented as:
flags.midi-qol.disadvantage.ability.all Override 1
flags.midi-qol.disadvantage.skill.all Override 1
I have a mage with
flags.midi-qol.advantage.concentration Custom 1
When combined, the mage rolls concentration saves with disadvantage.
So, incorrect behavior is two fold:
1) Advantage and Disadvantage should cancel out to be rolled regular.
2) Ability/Skill check disadvantage should not influence a constitution saving throw made from concentration.
I checked and the roll is being made with the correct constitution saving throw bonus, and DND5E concentration checks are supposed to be saving throws, not ability checks. Exhaustion 3 explicitly states it applies disadvantage on saving throws and attack rolls, so I can only assume disadvantage on ability checks should not mean disadvantage on saving throws.
Using Midi-qol 0.8.69, Can confirm bug on 0.8.79 if you have made any changes in those areas or would prefer it confirmed in latest release.