#MidiQOL
1 messages Β· Page 2 of 1
I'm dumb I completly missed the " Never " entry π
I got it working by the way, potentially through some unnecessary code but it functions as expected and works with automated animations too so no complaints as far as I can tell currently. (Edit: Maybe some things to still figure out, doesn't work so well if there are two tokens on the scene with the same name. They end up doing some serious friendly fire. ) ```js
let defeated = canvas.scene.tokens.filter(t => {
/* only keep tokens with Hostile disposition and HP <=0 a.k.a dead /
return t.data.disposition === CONST.TOKEN_DISPOSITIONS.HOSTILE && t.actor?.data?.data?.attributes?.hp?.value <= 0;
});
//Change Commoner to the name of whatever token you want to use
for (let tokenDoc of defeated) {
let invalid = tokenDoc.getFlag("world", "Commoner") ?? false;
if (invalid) continue;
/ ignore non-npc tokens or tokens not named commoner */
if (tokenDoc.actor.data.type != 'npc') continue;
if (tokenDoc.data.name != 'Commoner') continue;
const trapActor = game.actors.getName("Commoner");
const trapItem = trapActor.items.getName("Fireball");
let trapToken = canvas.tokens.placeables.find(t=>t.name === "Commoner")
new MidiQOL.TrapWorkflow(trapActor, trapItem, [token], trapToken.center);
Hooks.once("midi-qol.RollComplete", async function(result){
});
await tokenDoc.update({
name: "Burnt Remains",
});
await ChatMessage.create({
content : Ouch,
speaker : ChatMessage.getSpeaker({ token : tokenDoc }),
},{
chatBubble : true,
});
await tokenDoc.setFlag(world,Commoner,true);
}```
So If I am understanding this right, you want damage to not auto apply. If that is correct you can auto roll damage, but to manually apply it change these settings in workflow
I personally don't auto roll damage for the players but do roll it for myself. That's just the rolling the dice and I like my players to 1 click roll for attack (auto roll and ff), but still they need to click the damage roll once I tell them if it hits or misses
So what is the workflow supposed to be?
You execute the macro and it goes through all Hostile and defeated tokens on the canvas and they explode?
If you are using the template to target automatically try without designating the token as a target. Maybe: ```js
new MidiQOL.TrapWorkflow(trapActor, trapItem, [], trapToken.center);
Yeah. It's set up to filter out by name and then change the name after whatever effect has occurred. Currently exploding. I'll give that a go!
No no, it was just to not roll it directly. But I've fixed it π
Still the same. I also attempted changing range to self, but no luck. It works fine when there's a single named entity for the filter on the scene but can glitch when there's more than one. I used to just use token.center for the targeting, but that was awhile back.
Hello hello. I've got a question. I'm trying to update a monster to have a new resistance, but when I attack the monster with the damage type it should be resistant to, it's not applying (using midi if that matters, probably does). I updated the monster to have fire resistance on their attributes page, but when hit with a firebolt, the firebolt does full damage
It's admittedly a little hilarious than they start randomly exploding when one pops. I'll keep looking through it, appreciate the help by the way.
token.center should be defined still though. Did you try that?
Ohhhh wait. Are they linked or unlinked actors?
Unlinked.
Can you show the whole damage section in your midi workflow settings?
Select a token and use this ```js
new MidiQOL.TrapWorkflow(token.actor, trapItem, [], token.center);
That rolls the dice, puts the fireball in the chat, does everything except placing down a template.
One second. Let me test without all of the filter
any console errors?
Ah, interesting. Maybe an issue with triggler. It works executing on its own, but with triggler it rolls the dice but doesn't put down a template.
Wait are you trying to remove that fireball zone?
I joined late sorry
If you want to remove that big red zone that happens after fireball, that's happening from Token Magic FX
all good. I can get traps to activate through triggler but I can't get the template to be placed down correctly.
I thought you were using a macro to execute it. Now I see. You want to trigger it when the NPC with the specific name etc hits 0 HPs via triggler
Nah, not worried about the fireball zone. Thank you though!
No worries then ignore me :D
Indeed. The macro seems to execute properly through triggler too - just the template isn't put down when the effect goes off.
Haven't used Triggler for a long time so not sure!
I could make something for a feature that does that via MidiQOL when the NPC that has it falls to 0 hp π
Oh. That'd be the same thing for me. Haha. I just knew I could do it with Triggler in the past so was looking at it again.
Anyway I will make something when I have time and ping you. I want something similar for my next session so....
I was able to get the name change, image change, etc. working through triggler as I had before just the template stumped me.
Sounds good!
Thank you again!
( You could actually get the Fireball from the Spells SRD, "give" it to the token as an ephemeral item and use it without the need for it to be an actual spell on the character sheet. That's step 2 π )
It has been suggested this is the right place to ask. But I have only just started using Foundry. I am looking to make best use of all the automation it can offer. I have installed a few modules, and wondering if anyone knows how to set it up so a feature like Dwarven Resilience, when dropped on a character sheet will allow the character to have advantage on saves against the poisoned condition. I have CUB, Midi QOL and DAE installed.
The modules that make everything work:
Midi QOL
Dynamic effects using active effects
The modules that are just a bunch of compendiums with premade shit:
Midi SRD
Dfreds CE
More Automated Spells Items and Feats
DAE SRD(Defunct, all its stuff is in Midi SRD)
Modules you should not ever install with midi:
Minimal Roll Enhancements
Better Rolls for 5e
Retroactive Advantage
Modules I find useful:
Advantage reminder(if you do not fast forward rolls)
Warpgate
Sequencer
Automated Animations
jb2a
CUB(but disable concentrator and enhanced conditions)
Monk's Token bar OR LMRTFY
Monk's Little Details
Subject to change as others suggest things
Regarding dwarven resilience (same for elf's fey ancestry), that's not something easily automatable. There isn't a "poison" or "charm" tag that makes it easy to automate advantage on. That is one of the sample features I included in the Advantage Reminder module. It lets you add a message to the d20 dialog (targeting saving throws, for that one specifically) to remind you to roll with advantage if it's a poison spell/effect.
I've got a challenge for the channel! I have a player who has developed a custom feat that utilizes the often insane amounts of movement he can build up in DND 5e. He is a wood elf monk with boots of speed that sometimes has haste cast on him. According to our calculations, that puts him at about 660 ft per turn sometimes. He developed a feat to make an attack roll at a -5 penalty and on a hit turn all remaining movement into damage at a rate of 1 point of damage per 10 feet of movement remaining, rounding down.
Is there any way to make a macro that reads how much movement his character has on his turn, execute an attack roll at the penalty, detect a hit, and apply the remining movement as damage? If it is possible to make an item that will execute the macro using the drag and drop to hit functionality, that would be ideal. I have the Drag Ruler module, so that module could be used for movement measurements.
thanks this is really helpful
thank you. its good to put the automating of conditions to bed at least, been bugging me for a few hours as seemed like one of the only things i couldnt automate
I'm currently on vacation far from my foundry session or I'd share you my advantage reminder setup π¦ I use it for stone cunning AND dwarven resilience
conditions can be very easily automated with dfreds CE+midi
Advantage or disadvantage on saving throws by ability, like strength saves for a barbarian, are no problem. Midi can handle that. It can't handle those kind of edge cases though
Shieldmaster is another feat that kinda begs to be handled by advantage reminder
But you can't play with fast forward on if you employ advantage reminder and thats a huge no for a good portion of midi users so its not for everyone.
If it was NOT rolled from dnd beyond, make sure your misc settings in midi are not set to none
ah
Made a post in the channel before was pointed to this thread...
My question; is there a global setting for changing critical hit/fail thresholds in midi-qol? I want to in crease the threshold by one (1-2 for crit fails and 19-20 for crit hits). I don't want to go and alter these per item for each of my players and other tokens for that matter.
@spice oracle I don't mess with crits a lot but you could edit each item and change the crit threshold to higher than a 20 for a the attack
Hm, gotcha
that'd work for the short term too, since I mainly want to prevent the DM from critting until players are above lv5
(I don't want to kill them instantly when a swarm of piranhas gets extra frisky)
I'm trying to set up automatic advantage for Hidden/Invisible attackers, and it doesn't seem to be working;
I've enabled the setting in Midi QOL and I have CV installed, though it isn't rolling the second d20 for advantage
I'll try with CUB instead of CV
convenient effects can do that
Oh? That might be a better solution than installing more modules then
When you cast a spell of invisibility or greater invisibility (targeting yourself first)
One of my players is a rogue and they'll be going in and out of stealth quite often, so they won't be casting invisibility as a spell for this case
Is it possible to gain advantage when hidden via stealth?
You could just make a hidden condition with CE
yes with midi flags
π how would I set this up?
Easiest way is duplicate invisibility and change it to match hidden (although if I recall they're pretty much the same thing)
OH wait,
As Supernaf mentions, grab DFreds CE and go through the conditions and spells.
It has everything ready and you can learn how to.
Also Midi flags in the pinned post here in #1010273821401555087
I uninstalled CV, but CE shows that it added a bunch of custom effects
Yeah I'll take a peek through what CE has by default
Pair CE with Dfred's effects panel and you'll easily manage combat with those
Ayy
yeah, it already works with CE. I just have to add the condition myself when he goes stealth
I'll duplicate the Invisible condition and call it Hidden
rad! Thanks guys π
The dnd5e setting is client based, you will need to control players settings with a module or tell them to change the setting also.
OK a quick version that seems to do the trick!
Import the feature (save the attached .json, create a new Item in the Item's Directory of Foundry's right sidebar, right click the new item and import the .json) and drag it on the "Trapped" token's character sheet.
When the token hits 0 hp it should explode instantly...
Set the DC (now is a 15) of the spell in the 1st line of the macro included in the embedded Item Macro.
at last the right one...
Hey is anybody else having an issue with midiqol? None of my attacks are rolling with automation. It wont auto roll saves, it wont apply damage to targets. I cant figure it out
Is this on?
In the main menu of MidiQOL settings.
Nope you dont have the Fast Forward Ability Rolls for the Ability Rolls a bit further down.
It was working fine two weeks ago when i had a session. then this sunday for our session after i closed foundry and updated modules it wouldnt work
Oh, is that new ive never had it enabled before
Nah it was always there π€·
Or i dont think I did
Does that mean i have to have auto fast forward attack and such in the qol configuration?
Yes Auto Fast Forward Attack needs to be checked
You might have changed some Quicksettings
or after updating the options got nuked... π€
Would not surprise me
Hey you wouldnt happen to know possibly how i can set something like paralyze to be auto applied to an enemy froma beholder zombie paralyzing ray?
ive been struggling to auto apply conditions
Got DFreds CE module maybe?
convenient effects
I do have that, I just dont know how exactly to make the save fail auto apply it
aiaiaiai Better Rolls!
MidiQOL + Better Rolls are a ... difficult to say the least combo
That does not surprise me
Pick one or another to be safe (and keep in mind that as things are right now, Better Rolls for 5e is not actively developed)
Im very new to all of this
So disable BR and try again to see if it will get applied. If not will take it from there
So trash out better rolls. Does midi allow the same options that BR does?
Nope. The cards are different, damage application too.
But I haven't used BR at all to know other differences, only what I ve gathered from discord
There are some functions that work together, but Midi's more advanced ones will not.
BR also has an issue with ammunition consumption etc. If I were you I would disable it π€·
Ahh, yeah
I struggled with that one greatly
Also its not a midiqol question, but you have been wonderfully helpful
Is there a place i can buy more of like the monster manual and books that i can import those compendiums to foundry?
I havent seen them
If you buy them on DnDbeyond you can import them, check the #971797877359775824
Also aren't there a bunch of modules with monsters?
Some
Not with official WotC monsters
the dnd5e one also has a bunch of the free ones too
But kobold press has the Tomb of Beasts
My koboldpress OGl has no avatars for some reason
I never figured out if it was a bug, but i use them somewhat often
Hey, so I removed better rolls and I have been getting everything to be where I would like it to be, but 2 settings just either are not working properly for me or I just dont know how to implement them
Im trying to set my crit dice in midiqol to max the crit dice that would be rolled, so if an attack is 1d12 itd be 12 + 1d12
But its not working properly, or applying crit
The other setting is i am trying to merge the chat cards for the roll, damage and attack
Okay, so the midi setting doesn't work for this im assuming?
I did just apply critical damage maximize dice but it didnt change the roll
show us an attack
Midi misc settings for merging
the attack card not working right leads me to believe a module conflict
Its not letting me roll the weapon attack now all of a sudden without having something targetted. give me a second
did you at any time install MRE? I think MRE latently adds stuff that breaks a bunch of attacks in midi where you have to depopulate a bunch of fields on the item details.
Chat card is working properly now, thank you
Minimal roll enhancements
looks pristine to me, as for criticals, what does the details for the attack show, doesn't BR put flavors in the attack formulas that could be left behind to mess up midi?
Yeah, im trying to make it crit so i can check the damage
Change crit threshold
What in the world is happening there
I have no idea, please help lol
Oh apparently midi setting was set to explode critical dice
The X10 should not be there unless your item insists and then it would cause bad things right?
oh lol
having explode and max crit dice would be hilarious
So now if i get a critical it should just max those extra dice
you might wanna make sure that only one setting is modding crits
I don't think so right? The normal weapon dice are not critical dice
okay i got it fixed
Thank yall so much
Ive had enough struggle being a first time dm going through Dotmm
I kinda wanna see what it looks like with reroll 1-9 and explode on 10's now lol
without some of modules going haywire
Say damage is 1d10 + 1d12 and you crit. It'll be 1d10 + 1d12 + 22
will probably have a failsafe to prevent it from endlessly looping
probably
depends on what that d12 is from
Imma test what happens when I'm at my pc with a +1d12 AE
Example, a spiders poison is applied after a save not after the attack.
Testing now.
Normal damage
Normal Crit
Crit AE that adds 1d12
So I was right. All dies are maxed
is the d12 in the damage formula or other formula?
Neither
It was added by the mwak flag in an AE
I think that is normal behavior then yeah? That is adding to the damage formula, my point was that damage not attached to the damage roll shouldn't maximize nor crit
Like from Other Formula?
Moto β supposed to be on vacation, spends his time troubleshooting in here. Much respect!
Dnd is love, dnd is life
When else am I gonna prep my next campaign
Do what I do and make it up on the spot, haha
I'd like to set up a macro to prompt a player to use Sneak Attack in their attack roll if they have advantage; would that be possible to do?
I.E. "If attack hits, and the attacker has advantage, prompt to use Sneak Attack"
Fantastic. I'll give it a try when I get home from work and let you know if I have any struggles.
At some point, players are just going to have to remember how their abilities work π
Personally I do not prefer full automation for situational bonus'. If you do not fast forward attacks and ability checks, advantage reminder is my own preferred way of handling sneak attack, divine fury, hunters mark, favored foe, and blessed strikes like abilities.
otherwise if you want full automation, you already have it in midi's sample items in the compendiums sidebar
Also if you do automate it, you will have to make sure dispositions are set right all over the place for the rogue as well.
yeah
that's a fair point
don't fully automate conditional things, as it's more work to make sure the condition is right than just manually rolling advantage
I'd like to prompt my rogue to use Sneak Attack in the damage roll though, as it'd be nice to have the d6 automatically added to the calculated damage, rather than me having to add another d6 in after
that's separate from my monk things though, or my advantage things
that is what advantage reminder can do
it lets you put buttons on your advantage/normal/disadvantage and crit/normal popouts
:O it would add a button to add Sneak Attack damage?
Hrm, I think that's different
The goal I have is to make it so whenever a rogue character rolls an attack with advantage and hits, it prompts them to add another 1d6 to their roll
The player would have to manually roll with advantage, but if they do roll with advantage and it hits, then prompt to use Sneak Attack
I think it might be doable via an 'on use macro'
hrm
I think you should look up advantage reminder module cause I believe it is exactly what you want
and the fully automated version is in the compendium for midi qol
midi sample items has sneak attack automated
Oh rad, I was curious about that
I'll take a peek at the sample items too
OOoo!!!
It works!
Thank you Moto Moto π
I just pasted the sneak attack ability from sample items
the sample items one is fully automated so if the DM is not setting disposition of npc allies it will mess up
If the DM is not setting disposition of npc allies it will mess up
I'm not sure I follow what you mean by this
the color of the borders of tokens, disposition is friendly/neutral/hostile
Ah gotcha
Gotcha, so the sample items will work so long as I remember to set the tokens to be Allies or enemies
Hi. Is there a way to disable the token icon in the <actor> hit/miss <token> line, so it's just a line of text?
I don't think so π€ @gilded yacht π
Could maybe override the CSS for the token image with a dead link maybe?
If itβs a div set display: none
Doesn't need to be a div.
Hello!
Will Midi be completely ignoring the incoming preDisplayCard, preRollAttack, and preRollDamage hooks in dnd5e 2.0.0?
midi needs no such contrivances
Shame. My coming module will be incompatible then.
idk bugbear would know better than me but I think midi does some if not all of those already
I assumed so. I was wondering if it would instead rely on the core system implementation in v10, and thus remove many incompatibilities.
that is a good question for @gilded yacht β¦ you could have a rummage in his repo β heβs already done the v10 conversion I believe
anyway what is this module you speak of π
A quick skim in their Hooks.ts file doesn't show anything, so I assume they weren't as crazy as I and write code for hooks that do not yet even exist in the alpha release. π
I donβt see what these hooks have to do with your upcoming unidentified items module
Not mine, and won't be (there is a pull request by ccmjk for the system anyway)
So it wipes standard roll behavior completely and replaces with its own?
Is seems like. Same with v9 Hooks, but I am not sure what will happen with the new system hooks when they are implemented, so I would wait for tposney to chime in (the midi ones are async though afaik)
I see the point in v9, it's necessary. Not so sure in v10, but if Midi needs to perform async behavior (pre-hook functions cannot normally be async), then there is little chance
Too bad, several of my players have small'ish screens. They can see the stuff fine, but I'm trying to keep the cards as small as possible to ensure they don't loose track of what's going on. Thanks for your response.
How would I go about that? To my less than educated on the topic mind, that seems like something I would have to do on a per token basis, or globally where it applies to everything.
@violet meadow No, the icon is not currently optional.
@molten solar as of today midi will be ignoring the preDisplayCard hook, but preRollAttack and preRollDamage should still work (I've done no testing - I only noticed these hooks yesterday), but since it wraps rollAttack and rollDamage, these should both sitll get called. I need to see if I should change how midi handles overriding rollAttack/rollDamage versus using the hooks in a later version.
It's unlikely that I'll change the item roll to fire off the preDisplayCard hook, but I will call the hook when displaying the card which should mean that actions done on those hooks should work. Probably 10.0.5 or later release of midi.
Midi wraps standard roll (attack/damage) and always calls the standard dnd5e rollAttack/rollDamage, but does other things as well. For the itemRoll it does not call the default item roll, but there is no reason I can't call the preItemRoll hook as well.
Ok, that then.
Aargh.
item.roll will call item.use until 2.4.0
No need to worry, just gonna get deprecation warnings
(ah I was testing with 10.0.3. just saw .4 coming up)
Feels a little like a gratuitous change to me.
There was a long issue about it, I didn't read it in detail. Something about not all items actually being 'rolled', like potions etc
Bah humbug, silly semantics. There are more important issues to worry about I think.
When does Midi read the DC of an item?
Assuming you mean the save DC, it displays the save dc on the item chat card when displaying the chat buttons (like core), but uses the DC when auto checking saves and looks at the item at that point.
Was that what your were asking?
After creating the chat card?
Yes
Midi assumes that the dc won't change from when displaying the chat card, but if it does then it will use the changed value when auto checking saves.
In other words, if something was to increase the DC of an item's saving throw (from what is displayed in the item) to a new value, which only shows in the card in chat, Midi will recognise it.
@gilded yacht A QQ now that you are around ```js
const spells = game.packs.get('dnd5e.spells');
const spellId = (await spells.getIndex()).find(i => i.name === "Fireball")._id;
const spell = (await spells.getDocument(spellId)).toObject();
spell.data.save = {"ability": "dex", "dc": 15, scaling: 'flat'}
spell.data.preparation = { "mode": "innate", "prepared": true };
const ownedItem = new CONFIG.Item.documentClass(spell, { parent: targetActor });
await MidiQOL.completeItemRoll(trapItem, {configureDialog: false});
Is there a way to make the item upcast? Can we somehow pass a workflow option for spellLevel?
(In core, the item is cloned with a new level, and same id)
(you also do not need to use getIndex)
(or even find)
The dc and prepared are integer and boolean btw, not strings
vanishes πΆβπ«οΈ
The autocheck saves code does let rollDC = this.saveItem.system.save.dc;, so if the items save.dc is changed midi should pick it up.
And if the save is not changed, but only the displayed value?
Then it won't get piked up (I think) unless you are manually rolling saves (via the chat card button). Midi generally ignores the chat cards and uses the underlying items/actors when doing its thing.
If you call completeItemRoll with configureDialog false, then (from recollection) the default spell level will get used. I don't think there is a way to specify to roll with a higher spell slot.
Also from a user in Gearheads asking about DAE:
is there a flag that will halve the healing a character receives from spending hit dice?
data.traits.dr.value | Add | Healing halves hp restored from healing spells, but I also need hit dice healing to be halved for a disease
Midi doesn't intercept Hit Dice rolls right?
There will be in v10, in the preUseItem hook
or simply passing an object in item.use
Just tested and the hit dice mechanism does not go through the normal apply damage (healing) process so hit dice will do full healing, even if traits.dr.value add healing is true, that will only work for healing spells/potions
yeah that's what I thought. Could make an onUse Hit Dice healing feature updating the Hit Dice pool in the end if need be π€·
You are passing a {"data.level": level_you_want} in the item roll right?
I don't suppose there is a simple way to use a "5 ft creature" targeting mode whilst also ignoring self is there
Oh really? Special will do it?
Is that a ranged spell attack (i.e. all creatures within 5 feet). If so set it up like this. Damn too slow again
Awesome. Works great, thanks both. For a second I was thinking of weird hacks like temporarily applying immunity to self, or just telling the player that his ability also damages him π
"yeah, your ability hurts you too. Why you ask? I dunno, maybe your god doesn't like you all that much"
No, it's not possible until the next alpha release of dnd5e. It only takes three options at the moment (the dialog, whether to display to chat, and rollMode).
An object will be able to be passed in the next update that can override the entirety of how the item is used, iirc.
and even so, it would be system.level π
Yeah only way for now is to change the data.damage.parts manually with some logic for consuming charges etc π©
Clone the item
yeah
Can you check to see if you are getting this same behavior? Similar to what I had going on with triggler. I deactivated CUB/Triggler and I'm trying it on a new scene. Unlinked, but still goes boom. I do remember you mentioning a step 2 involving ephemeral items. Is that the issue? What does that setup look like?
Ohhhh duh, give me a moment π
was testing on a linked actor...
This one should do it...
If that's the same as before, I'll test that one out thought to see.
I fixed the issue with the unlinked tokens and from some quick testing it works as intended now π
Haha thank you for that! No more spontaneous combustion.
It's going on 1:30 AM here so I may have to give it a testing later - but it's appreciated all the same. I took a look at the item-macro and with the comments you left, it looks very easy to adapt as needed. π
Semi-related question to MIDI-QOL. Is there any sort-of macro repository? I know that's difficult since different ones require different setups. I'm definitely interested in seeing what else people have made, especially MIDI-QOL related. I've stumbled across tons of useful macros in this channel and others.
MidiQOL sample items compendium has a good amount of items made by tposney that showcase different functions do midi.
MidiSRD is another module that has a variety of pre made items.
More automated items and spells module, or a name similar to this.
The discord in the pinned message in this thread has some too.
Crymic has a repo with some free and some under their patreon.
But a centralised macro repo is not available as of right now π€·
the warpgate wiki has about half and half MIDI/Normal macro examples
I forgot the badger! bad bugbear
yeah I got some, need to release some new ones I have been working on
forgivable, i try to stay away in general π but can't say no to a cool example
Especially with the latest updates I requested got setup
Getting covid has seriously hurt me development wise.. it's like I can write this..... uhhh how do I do that again? What was I working on again? I'm tired zzzz
Oof, been there. Definitely not a fun time. Hope you get better soon my dude
My best effort of concentrating so far has been a 4 level building in Levels for my campaign.
Got 2 bosses I need to macro up this week, just need to figure out their mechanics. I may experiment again with delayed explosive templates
Maybe do the whole, if targeted damage is aoe but reduced by the number of the targets it hits
Oh fancy!
I have been so happy with the onUpdateTarget and I keep playing with that one!
I'm trying to write a macro which prompts the GM to enter in a damage value (and possibly a damage type) and create a standard d&d5e damage card. For example, someone rolls physical dice, I could enter that amount into the input. My intent is that this could be used with midi-qol to apply damage with resistance. I've been able to create a dialog with an input but I'm not sure how to transfer that over to a 'damage' chat card the midi-qol can hook into.
Isn't that DF manual rolls (I don't think you can fast forward with it though, someone else can chime in)
Guess it depends if you want an item card or not for the damage.
Starting my session so no time to go through it (and change it cause it takes some improvement).
Select the tokens you want and execute the script macro from the hotbar
const d = new Promise((resolve, reject) => {
let theDialog = new Dialog({
title: "Damage dealt",
content: `How many points of damage? <input id="damagepoints" type="number" min="0" step="1.0"></input>`,
buttons: {
damage: {
label: "Enter",
callback: (html) => { resolve(Number(html.find('#damagepoints')[0].value)); }
},
abort: {
icon: '<i class="fas fa-cross"></i>',
label: "Quit",
callback: () => { resolve(false) }
},
},
default: "damage",
}).render(true);
});
const dmgpoints = await d;
const options = Object.entries(CONFIG.DND5E.damageTypes).reduce((acc, [value, name]) => acc += `<option value="${value}">${name}</option>`, "");
const f = new Promise((resolve, reject) => {
let theDialog = new Dialog({
title: "Damge Type",
content: `What was the damage type? <select id="damageTypes" type="text">` + options +`</select>`,
buttons: {
dmgType: {
label: "Enter",
callback: (html) => { resolve(html.find('#damageTypes')[0].value); }
},
abort: {
icon: '<i class="fas fa-cross"></i>',
label: "Quit",
callback: () => { resolve(false) }
},
},
default: "dmgType",
}).render(true);
});
const damageType = await f;
const targets = canvas.tokens.controlled;
const damage = await new Roll(`${dmgpoints}`).evaluate({async:true})
game.dice3d?.showForRoll(damage, game.user, true);
await MidiQOL.applyTokenDamage([{ type: `${damageType}`, damage: damage.total }], damage.total, new Set(targets), null, new Set(), {});
Awesome! I'll give this a go and alter to fit my needs!
no need for 2 dialogs for instance
You can also look at the DDB importer project, it has a couple of macros for spells, class features, β¦
Integrate your dndbeyond.com content into Foundry virtual tabletop - ddb-importer/macros at main Β· MrPrimate/ddb-importer
Hello everyone. I need some help with a few gltichy things I am having running encounters.
The first question I have is regarding hit die. In my homebrew rules, I give hit to AC ties to the player. Is there a setting somewhere to adjust this? Currently a tie misses
There isn't any setting in Midi to account for this. The best you can do is give each PC a +1 bump to their AC
since that's functionally what that homebrew rule does
not npc hitting them. Thier hit to DC on the creature
I'm confused then. That sounds like the normal behavior. Maybe an example would help
all I know is in my last sessions, if the player rolls to hit and it's a tie to the creatures AC, workflow counts it as a miss
That shouldn't be happening, sounds like a bug or something's off with weapons
Was it happening with everyone or just one player?
everyone
well everyone that has had a tie, only happened a handul of times but it's been different players
... cover?
I'll just have to keep an eye on it if it happens again. Apparently it seems a glitch then
Can you show a picture example of it happening?
In my experience I've never seen a tie miss
I will tkae screenshots if and when it happens again
You could just test rn if you have the time and show us rather than debug in the middle of a session
my next question involves argon and BA, if there a dnd sub discussion for that? So many channels here lol
probably #513918036919713802
I would have to keep rolling until a tie happens lol
BA?
Bonus action
actually it might be midi related also cause it involves cards
Not hard if you keep rolling
Basically, for example our druid. She uses Starry Form and it prompts to roll to hit
and that's it, there is no damage card for Circle of Stars radiant damage
Have you actually given it a damage formula?
it has a damage formula. now it is wierd, the damage card poped up later. Wierd, But what the main issue is in Argon Hud our druid can select Starry Form Archer to activate it and it allows the FIRST attack. The ability last 10 minutes. Next round there is no attack button anywhere, She has to go into her sheet and click attack to attack with Starry Form again. Basically there is no button in the hud to attack with it
but this sub channel is for midi lol
I would set it up with two features. The first feature would consume the wildshape use and maybe apply an active effect at least to remember they're in the form. You could add ATL keys to have their token emit light. Then the second feature would be the bonus action attack. It could be an item a weapon if they prefer to see their attacks in items weapons instead of features.
The one catch is if you're using a module to track action uses, which I think Argon does, then you could add the attack to the first feature as well
I really dind't understand any of that. Also as far as I know Argon is just a HUD. Midi is what tracks actions and sets workflow
the damage card poped up later.
Midi has a delay thingamajig, no?
it doesn't happen with normal attacks so the timer is fine
Is there a target selected? You can define workflows that must have a target selected. It will roll to hit but never continue through without a target
More than likely this is what is happening
It is targetted
You went through alot of work here when DF manual rolls already does this and is compatible with just about every module. If you don't want it to give away its fudging, yo8u can hide the tags on the dice for the GM even too.
if the damage card is delayed it's typically because midi is waiting for a response to a reaction on hit (there's a timer in case the victim is afk and doesn't respond to the reaction popup)
gives the player an opportunity to throw up shield or absorb elements before the damage comes in
etc
So I took the sample fireball on death js from further up the thread and put it on a ring. When I "Execute Macro" I get the error on originItem am I doing it wrong?
Ring is on a player, equipped, and doesn't need attunement.
It is not meant to be used by clicking Execute Macro but via the DAE module.
Will that be always on, or should the Ring be activated?
In this case I am just trying to get the ring to cast fireball on death since that is (what I think?) the example posted above was
could be wrong
So the effect would always be on, but only activate? on death
On the title bar Ring of Test 1, click on the DAE icon. Create an effect macro.itemMacro | Custom | ItemMacro.name of the item.
Check the box Transfer to Actor on Item Equip
Do I need to change the GoBoomOnZero references in the macro to match the item name?
yes, it was meant just as an example I had at hand
Ah sorry... I thought you meant here macro.itemMacro | Custom | ItemMacro.name of the item the name of the item...
You can have whatever you want in the flagName, just an identifier so as to be able to differentiate the specific trigger
It does appear to be applying the effect now
Tho still doesn't 'trigger' I do see dae debug output mentioning the ring
Any console errors when you change the tokens hp to 0?
Can you export your item and sent it to me to take a quicker look as it is rather late for me now?
Here is the export
I'm having some issues with adding a sample item (sneak attack) to an NPC character; it doesn't give the prompt to add sneak attack after an attack is rolled with advantage on an NPC, the way it does with a PC
Steps to reproduce:
- Create an NPC character
- Give them the Sneak Attack sample item, and a standard melee weapon
- Roll an attack with advantage against a target
- Observe that Sneak attack does not activate
*Sneak Attack or Auto-Sneak attack
Try this. I am a bit tired to troubleshoot properly. I changed the item to target self with a permanent duration.
As soon as you move it on the character sheet, use the item once. It should behave afterwards.
I think that the difference is the feature vs trinket item. Not sure now π€·
Does the NPC have Rogue Levels?
my guess is the npc doesn't have the rogue sneak scaling reference
add levels of rogue to the npc
Hm, no they don't
I'll add a level of rogue and see what happens
just add rogue class to their features and level it, ignore the rest
From the Sneak Attack ItemMacro ```js
const rogueLevels = actor.getRollData().classes.rogue?.levels;
if (!rogueLevels) {
MidiQOL.warn("Sneak Attack Damage: Trying to do sneak attack and not a rogue");
return {}; // rogue only
}
Oop, yeah from that text they definitely need to be a rogue haha
this bugbear goes to sleep π
When bugbear talks in third person I read it like the polar bear in we be bears.
hahaha
Hi there, I've been trying to figure out how to automate a feat from the Talβdorei Campaign Setting book, Mending Affinity. The short version is that any healing from a spell, potion, or ability that the character receives heals for a bonus equal to their proficiency bonus. I'm not sure how to go about that really as it's from any source. Is there any kind of tag that checks for when a actor is healed that I could add the bonus to?
flags.midi-qol.DR.healing | CUSTOM | -@prof might do it.
Inverted damage reduction.
hmm, I don't seem to be receiving any healing with that effect in place
Yeah, doesn't seem to work
@violet meadow When I "use" it by clicking the option on the right in the hud I get this error. Clicking the "use" option on the left produces warnings.
hey ho π How do you guys handle bonus action attacks?
Could it have anything to do with DAE settings?
what does your script look like?
The on with the (M) designates that it is an item with an ItemMacro on it.
Do not use that, as it will execute the ItemMacro by itself and that macro is meant to be executed via the MidiQOL/DAE workflow.
As for the warnings, on the second screenshot, it seems that you have DAE debug setting on.
I don't see any cause of concern π€·
Got the settings from MidiQOL's optional tab on, to just put an icon of the token when the corresponding action is used.
But it's up to personal taste. My players seem to like that so I have it on π€·
you mean the "Enforce Bonus Action" option?
yeah, but what's the endgoal?
My rogue player uses two scimitars. One for the normal-action attack, and another for a bonus-action attack. Unfortunately, when she rolls, both rolls are made with full damage bonus, even though the bonus action attack doesn't benefit from it
Just set the secondary without the +@mod in the damage field
How do you call an effect to apply if your attack hits? For example below:
const items = Array.from(this.actor.items);
const weapons = items.filter(item => item.type === "weapon");
const result = await warpgate.menu({
"buttons": weapons.map(weapon => {
return {
label: `<img src="${weapon.data.img}"/> ${weapon.name}`,
value: {
weapon: weapon
}
};
})
}, { title: "Choose a weapon to attack with!", options: { height: "100%" }});
if(!result.buttons) return;
const weapon = result.buttons.weapon;
weapon.roll();
if (weapon.roll) = hit {
const effect_sourceData = {
changes: [{ key: "data.attributes.movement.all", mode: CONST.ACTIVE_EFFECT_MODES.CUSTOM, value: "0"}],
origin: args[0].itemUuid,
duration: game.combat ? { rounds: 1, turns:0, startRound: `${game.combat.round}`, startTurn: `${game.combat.turn}`, startTime: `${game.time.worldTime}`} : {seconds: 6, startTime: `${game.time.worldTime}`},
icon: "systems/dnd5e/icons/skills/yellow_22.jpg",
label: "Sentinel Attacked!",
flags: {dae: {specialDuration: ['turnStartSource']}},
}
await MidiQOL.socket().executeAsGM("createEffects", { actorUuid: args[0].hitTargetUuids[0], effects: [effect_sourceData] });
}
hit is not a real call out I guess lol.
Macro-Polo suggested I ask here.
Ah, so you simply create a "bonus action" scimitar?
Yes. No other way without a dialog poping up to ask if that's the secondary attack or not and adjust the damage accordingly
Much easier to have a secondary one, dont you think ? π
Yeah, it actually makes sense. I was just having one scimitar with a quantity of 2...but yeah, it makes sense to have them separate π
Or you could learn the keybinds to roll Verastile damage when attacking and have it there
I have found that it doesn't bode well with players
ah ok, never used it so π€·
Versatile damage, what is that π
that solution works pretty fine for me, though π Thanks
On another note: I found out yesterday, that Cutting Words DOES trigger as a reaction, but doesn't do anything. Is there a pre-defined Cutting Words somewhere or do I have to create the effect myself?
ohhhh there are a couple of ways that I think it could work.
can you do this and let me know what it returns? ```js
const items = Array.from(actor.items);
const weapons = items.filter(item => item.type === "weapon");
const result = await warpgate.menu({
"buttons": weapons.map(weapon => {
return {
label: <img src="${weapon.data.img}"/> ${weapon.name},
value: {
weapon: weapon
}
};
})
}, { title: "Choose a weapon to attack with!", options: { height: "100%" }});
if(!result.buttons) return;
const weapon = result.buttons.weapon;
const options = { showFullCard: false, createWorkflow: true, versatile: false, configureDialog: false };
const msg = await MidiQOL.completeItemRoll(weapon, options);
console.log(msg)
I think you will need to create it by yourself and not an easy task!
have a question is there a way to split damage types using midi ql, for stuff that deals multiple damages like some spiders doing piercing damage, but also poison damage which requires a save to half for example?
and I quote:
Attacks that do some damage and a save for additional damage (like spider's poisonous bite). You need to enable the midi-qol setting "Roll Other Damage on rwak/mwak". Set the "Other Damage" to the poison damage. Midi will notice that the attack has other damage to roll and apply the saving throw to the "Other Damage" rather than the main damage. (Special Trick, if the other damage field is blank AND the weapon does not have the versatile type set midi will roll the versatile damage instead - this is because the dnd5e SRD chooses to make this damage versatile - which I think is wrong).
yeah, I think I'll need to manipulate the workflow, if I'm correct, in order to reroll the attack roll, right?
I'm not sure what I am looking for but I do see this:
Foundry VTT | Registered callback for midi-qol.RollComplete.Actor.VxoxEBlgI5BRyFc8.Item.qSvoJdhxhCh0sY3A hook
There is a "workflow" is that want you're looking for?
And how would i set the damage type for the other damage roll?
1d6[poison]
How are you executing this macro? Actually make it an ItemMacro, select a token you want to attack with, select a target, execute the macro and rejoice!
Also change the 1st line to ```js
const items = Array.from(actor.items);
I think if you just continue the macro after what is already in place with a ```js
if(msg.hitTargets.length) {//do stuff
}
that....shouldnt be needed -- you can filter the item collection directly
how does this work? (guessing its for stuff like chromatic orb, but dont see how it works)
I am not sure about the use case, just the macro as shared, but yeah.
I guess they want to see the weapons of the selected actor and decide? π€·
Ah you mean getting the Array
its still just a wasted operation -- the collection is an iterable list already
this is #macro-polo now π
But keep in mind that if you change the dnd5e provided compendiums they will be rewritten on a system update. You will need to copy them to one of yours in the world
This is the way I am calling the macro.
Is there a way to have extra damage applied on creature type? In other words weapon does 1d4 normally, but if target is undead a 1d6 is added to the 1d4?
Activation conditions.
Roll Other damage for melee/ranged attack needs to be set to activation condition in Midi Settings => Workflow settings => Workflow tab.
In the activation condition field of the item you need a check like ['undead'].includes('@raceOrType')
In the Other Formula of the item you provide the damage, eg
1d6[radiant]
Again readme: https://gitlab.com/tposney/midi-qol#some-tricks-you-can-do for this and more π
This creates a chat message for the player to click on even though auto roll is on. Both attacks do not apply the effect on hit. the console.log seems to populate the workflow which is alot of text lol.
OK so after the msg is created you will need to do the logic for applying the condition if the attack is a hit and all the you will need for that will be inside the workflow, which will be called as msg.XXX instead of args[0].XXX
Share the full macro
const items = Array.from(this.actor.items);
const weapons = items.filter(item => item.type === "weapon");
const result = await warpgate.menu({
"buttons": weapons.map(weapon => {
return {
label: `<img src="${weapon.data.img}"/> ${weapon.name}`,
value: {
weapon: weapon
}
};
})
}, { title: "Choose a weapon to attack with!", options: { height: "100%" }});
if(!result.buttons) return;
const weapon = result.buttons.weapon;
weapon.roll();
const msg = await MidiQOL.completeItemRoll(weapon);
console.log(msg)
if(msg.hitTargets.length) {
const effect_sourceData = {
changes: [{ key: "data.attributes.movement.all", mode: CONST.ACTIVE_EFFECT_MODES.CUSTOM, value: "0"}],
origin: args[0].itemUuid,
duration: game.combat ? { rounds: 1, turns:0, startRound: `${game.combat.round}`, startTurn: `${game.combat.turn}`, startTime: `${game.time.worldTime}`} : {seconds: 6, startTime: `${game.time.worldTime}`},
icon: "systems/dnd5e/icons/skills/yellow_22.jpg",
label: "Sentinel Attacked!",
flags: {dae: {specialDuration: ['turnStartSource']}},
}
await MidiQOL.socket().executeAsGM("createEffects", { actorUuid: args[0].hitTargetUuids[0], effects: [effect_sourceData] });
}
And that is an ItemMacro which you use after selecting a token and a target?
yeah just actor.items as I mentioned before @lean holly
(and get rid of the array.from)
or make the const weapons = actor.items.filter(item => item.type === "weapon");
and delete the const items = Array.from(~~this~~.actor.items); altogether
If I didn't miss anything this should do it ```js
const weapons = actor.itemTypes.weapon;
const result = await warpgate.menu({
"buttons": weapons.map(weapon => {
return {
label: <img src="${weapon.data.img}"/> ${weapon.name},
value: {
weapon: weapon
}
};
})
}, { title: "Choose a weapon to attack with!", options: { height: "100%" }});
if(!result.buttons) return;
const weapon = result.buttons.weapon;
const msg = await MidiQOL.completeItemRoll(weapon);
console.log(msg)
if(Array.from(msg.hitTargets).length) { //in WORKFLOW args hitTargets is a Set and there is no hitTargetsUuids
const effect_sourceData = {
changes: [{ key: "data.attributes.movement.all", mode: CONST.ACTIVE_EFFECT_MODES.CUSTOM, value: "0"}],
origin: msg.itemUuid,
duration: game.combat ? { rounds: 1, turns:0, startRound: ${game.combat.round}, startTurn: ${game.combat.turn}, startTime: ${game.time.worldTime}} : {seconds: 6, startTime: ${game.time.worldTime}},
icon: "systems/dnd5e/icons/skills/yellow_22.jpg",
label: "Sentinel Attacked!",
flags: {dae: {specialDuration: ['turnStartSource']}},
}
await MidiQOL.socket().executeAsGM("createEffects", { actorUuid: Array.from(msg.hitTargets)[0].document.uuid, effects: [effect_sourceData] });
}
Edited!
Thanks this is working as expected
@lean holly edited it again. Try now
Now to take yours and compare mine to learn lol
Two things which might make sense to include.
Before applying the effect, check if another one with the same name is already in place.
And small checkboxes in the Dialog popup to give the resulting attack advantage or disadvantage (left as an exercise π )
I didn't even know you could edit a dialog box to include those options!
Hey is their a way that make it so when my players roll for damage they have the option of using other for versatile damage ? I think last time i tried it just rolled both other and normal damage
Put it in versatile field and select the Versatile option in the details Weapon Properties of the weapon in the details tab.
Use the keybind for versatile when rolling the item and you want Versatile damage to be applied
You can find the keybinds in Configure Controls
under MidiQOL
why not use itemTypes.weapon ?
Is it possible to edit a workflow such that only some of the targets grant disadvantage?
Context:
I've created a macro to deal with Marking (attacks against anyone other than the marker are at disadv) automatically for my gm.
Steel Wind Strike (and any other multitarget attack roll) would in theory attack everyone except the marker at disadvantage.
I've tried editing the workflow directly in various ways (through a macro), or giving actors an effect with the midi-qol.grants.disadvantage flags, but it only seems to actually make the roll at disadvantage when ALL the targets grant disadvantage.
yeah if you intercept it before the roll stage
you can either do it via DAE or world script
can you elaborate on what you mean? When you say "the roll stage" do you mean before the item is rolled or before the attack is rolled.
If it's the latter I'm already making my changes before the attack is rolled
I usually use "midi-qol.preambleComplete"
that's the one I'm using
the caster has an effect that runs the macro at that time.
The macro checks if the marker is in the list of targets. If it is everything is as normal. If the targets do not include the marker the attack is at disadvantage
filter for it
for SWS?
if it's only when having an active effect of x, check for it.. if they have it then change their workflow.disadvantage = true
yes that's what I'm doing in the regular case
unless I'm misunderstanding, there is only one workflow right? or does each target have their own workflow?
Hooks.on("midi-qol.preambleComplete", function (workflow) {
let effect = workflow.actor.effects.find(i=> i.data.label === "Disadvantage");
if(!effect) return {};
workflow.disadvantage = true;
});
this is along the line of what I have
I have updated Foundry to 10 and DnD5e as well as MidiQOL, Dynamic Effects and the modules that are needed for those modules. I have checked so that all settings are correct, but I cannot get the automation to work. It works for melee and bow attacks when I use action token HUD, but not when I roll from the original DnD5e character sheet. The spells does not work from the action token hud at all (but that is a problem for that module I guess), but no automation when I try from the character sheet. I have turned off all the modules besides the one mentioned above and the problem is still there. I have changed scene. Characters etc. Is this a problem I can fix myself or do I need to wait for 10 to be stable? Thanks in advance!
did you make a backup?
well, I'm calling the script through a DAE effect instead of the hook directly but I'm not sure if that would make a difference
No, I was stupid. But i haven't played in 6 months so I was lazy and felt that if it goes bad there not much to loose. I can startover without problems was my thought. π
i would go back to v9
Ok, thanks.
for automation heavy setups, it is recommend to take extreme care when you decide to upgrade major versions. Ensure all of your critical mods are ready to go and make a backup of your user data before you do so
try preitem roll then
Yes, sound like a good plan. I haven't had much problems earlier with new foundry versions, but I guess I took a chance at the bad time. Thanks for your record breaking quick support, by the way. π
And always backup before updating
no change.
SWS only targeting the marker is flat roll,
SWS only targeting non-markers (single and multiple) are at disadvantage,
SWS that targets both are flat rolls across the board.
how are you hooking on to them? script wise
The caster has an effect on it with flags.midi-qol.OnUseMacroName with the name of a "global" script macro in it, and the second argument is preambleComplete though I just tested it with preItemRoll as you suggested
the script is:
const targets = args[0].targets;
let workflow = MidiQOL.Workflow.getWorkflow(args[0].uuid);
const effects = workflow.actor.effects.filter(effect => effect.data.label.includes("Marked"));
const markers = [];
for (const effect of effects) {
markers.push(effect.data.origin.split(".")[1]);
}
const non_markers = targets.filter(target => !markers.includes(target.actor.id));
let marked = true;
for (var marker of markers) {
for (var target of targets) {
if (target.actor.id === marker) {
marked = false;
break;
}
}
}
if (marked) {
workflow.disadvantage = true;
if (workflow.templateData != null || workflow.templateData != undefined) {
await game.macros.getName("save_buff").execute(...args);
}
}
"save_buff" is a different script that isn't called in this application.
For all other applications this works fine
but with when targeting multiple tokens simultaneously and trying to give only SOME disadvantage, it just rolls flat
yeeah that's not gonna apply anything to them
const lastArg = args[args.length - 1];
let tactor;
if (lastArg.tokenId) tactor = canvas.tokens.get(lastArg.tokenId).actor;
else tactor = game.actors.get(lastArg.actorId);
const itemD = lastArg.efData.flags.dae.itemData;
if (args[0] === "on") {
const hookId = Hooks.on("midi-qol.preambleComplete", applyDisadvantage);
DAE.setFlag(tactor, itemD.name, hookId);
}
async function applyDisadvantage(workflow) {
// whatever you want to set to filter it
// examples you could make a property to get and check for
workflow.disadvantage = true;
}
if (args[0] === "off") {
let hookId = DAE.getFlag(tactor, itemD.name;
Hooks.off("midi-qol.preambleComplete", hookId);
DAE.unsetFlag(tactor, itemD.name;
}
I'm confused by what you mean "apply anything to them"
That looks like an on use macro, rather than a constant effect on them.
I was redirected to this thread by thatlonelybugbear as I am using MidiQOL and were on the lookout for a way to create an effect that can accomplish the following:
"Yeah, any (Be it single target, multiple targets, etc) healing they do for 6 seconds does double the amount. And it's not just for spells but also for class features; like say Circle of Stars Chalice Druids that can freely add a 1d8 (2d8 after level 10) healing to a creature whenever they cast a healing spell."
DamageBonus Macro with DAE will work
So you're suggesting that I use an itemMacro attached to the effect? that's why it uses args[0] === "on/off"?
Regardless I think I found the real issue with my set up:
When my actor casts SWS it only makes one attack roll against all the targets. The spell calls for separate rolls on each target.
Is this an issue with my spell setup/ MidiQOL settings?
attack rolls always roll once against all
π€ That's not how it's supposed to work though; no? I mean I know in physical people do that to speed up play but this isn't physical we're talking about
If it's everybody within the circle, you could use active auras and apply a DamageBonus to them.
if(args[0].tag === "DamageBonus"){
const lastArg = args[args.length -1];
if (!["spell","feat"].includes(lastArg.item.type)) return {};
let damageType = "healing";
if(lastArg.damageDetail.filter(i=> [damageType].includes(i.type)).length === 0) return {};
let damageRoll = await new Roll(`1d6[${damageType}]`).evaluate({async:true});
return { damageRoll: damageRoll.formula, flavor: `("Whatever Item" (${CONFIG.DND5E.healingTypes[damageType]}))` };
}
If I wanted to raise this as an issue would it be a MIDI-QOL issue or a 5e system issue?
Midi.
The system does not care how many times you roll an attack since damage is not applied automatically (in core).
hopefully something comes of this I only just realised this is a problem even for eldritch blast (post level 5) and it would speed up any multi target attack rolls (like shooting multiple with crossbows) in general
Tim created this as an issue 2 years ago and it's still open with no responses or votes.
Does that mean he's aware but it's too low on the prio list to have been changed?
and more importantly should I raise a new issue? not sure if I can even bump this one
Apparently you have to use CUSTOIM when you want multiple effects that influence the same derived stat. when using ADD sometimes the fields are string concatenated.
That's why you should always do +5 and not just 5
but stick with add for things like that
But it works, and custom isn't guaranteed to always work like that cause the same concatenation can happen
ok, seems like a flaw in the parser to me.. I will use ADD with +<value> as a workaround if that is preferred
Hang on, so you want to roll attacks simultaneously for different targets with different attack rolls? Why not just roll them sequentially? I roll separate attacks for Eldritch Blast all the time, because you want to see how the first attack goes before deciding what to do with the next one (and sometimes Iβll apply damage modifiers if it hits)
Sometimes that's a waste of time. And for SWS specifically I don't think it's possible?
Maybe like genielock multi class but that's getting niche now
Well you might definitely want to shoot the same target twice if itβs almost dead
My point really is that: According to the rules these things should be separate rolls, so I don't think that default behaviour for automation should be one roll for all targets
You can't target a creature twice with SWS
Yeah SWS is different than EB or Scorching Ray
And even in that case you could just target 3 and then 1 which would still be faster/easier than all 4 separately
And regardless of any case. Simply having the option to do it would be nice
currently if you target multiple targets only one roll is compared to all targets AC values
e.g. broken feature , as that never comes up
Not sure what you mean by "never comes up"
No one casts SWS? Or has homebrew spells/ features with similar function?
Iβm pretty sure someone could write a macro to roll attacks for each target individually if thatβs what youβre after
That would be a quick fix for what I view to be a fundamental problem
I could do it myself
The only reason I asked here is because I was confused that it didn't already work like that
I wanted to make sure that it didn't work like that
fanning out the workflow into multiple attacks rolls; one, per target selected, would be a sensible start
I mean, apart from SWS, how often is this going to be used? There are plenty of folk who make midi macros or even helper modules for various spells
But yeah if you ask @gilded yacht Iβm sure heβd consider it
not a lot, but the current way (one roll compared to several AC values) never comes up afaik
this is how spell saves work and it is most likely a copy
Even multiattack is typically rolled one at a time in case you want to switch targets (there is a module if you want to roll them all at once tho)
I mean there's a reason I asked if I should raise an issue instead of just pinging him
Of course, itβs a good question
This is also correct as I pointed out earlier. It's a homebrew rule that many use to speed up play (*at physical tables!!) But it probably shouldn't be the default
Now that Iβve pinged him for youβ¦ heβll likely let you know if you should pop a new issue on his repo π
The issue has not been advanced because a) it's hard and b) it's not very common. The issue there was to look at a multi roll workflow solution, that basically does a separate roll for each target (attack, damage etc) which would create 2 sets of cards (I think it would be impossibly confusing if not using the merge card). But it still could happen
@sick fiber Custom is only effective if the target field is a string field that will later be rolled. Specifically all of the bonuses fields are in that category. As of the last release I believe they are all covered - in particular added support for abilities.str/dex/etc.bonuses.save/check. If you specifiy CUSTOM and dae does not support the update will have no effect.
So basically stick with Add like I had mentioned, correct?
What is SWS?
I think it's steel wind strike. But I could be totally wrong
yea Steel Wind Strike
ok, in my case it was bonuses (rwak and all). so custom is better in that case? it seems to format better in the chat cards.
You could just rebuild the attack dice manually and roll it
Yes CUSTOM does the same as ADD but works out if a "+" is required or not.
Wondering if anyone can help me... I have very basic scripting knowledge this imported macro seems to fail :
Error:
Macros.js:204 TypeError: damageRoll.toMessage is not a function
at eval (eval at callScriptMacroFunction (Macros.js:163), <anonymous>:14:16)
at Macro.eval (eval at callScriptMacroFunction (Macros.js:163), <anonymous>:23:5)
at Macro.callScriptMacroFunction [as callScriptFunction] (Macros.js:164)
at Macro.renderMacro [as renderContent] (Macros.js:180)
at Macro.executeMacro (Macros.js:201)
at daeMacro (dae.js:708)
at async Semaphore._try (semaphore.mjs:99)
if(args[0].tag === "OnUse"){
AAhelpers.applyTemplate(args) }
if (args[0] === "on" || args[0] === "each") {
const lastArg = args[args.length - 1];
let tactor;
if (lastArg.tokenId) tactor = canvas.tokens.get(lastArg.tokenId).actor;
else tactor = game.actors.get(lastArg.actorId);
const target = canvas.tokens.get(lastArg.tokenId)
let damageRoll = new Roll(`2d4[piercing]`).evaluate()
damageRoll.toMessage({ flavor: "Spike Growth Damage" })
let targets = new Set();
let saves = new Set();
targets.add(target);
saves.add(target);
await MidiQOL.applyTokenDamage([{ damage: damageRoll.total, type: "piercing" }], damageRoll.total, targets, null, saves);
let effect = tactor.effects.find(i => i.data.label === "Spike Growth");
await effect.delete()
}```
After giving it a proper glance in #macro-polo, you might just need to change this:
let damageRoll = await new Roll(`2d4[piercing]`).evaluate({async: true});
Hmm also are you rolling for saving throws at some point?
This looks like it was supposed to roll for a save on the target and damage accordingly.
From this ```js
saves.add(target);
await MidiQOL.applyTokenDamage([{ damage: damageRoll.total, type: "piercing" }], damageRoll.total, targets, null, saves);
Right now you "tell" the MidiQOL.applyTokenDamage() function to do less damage to the target, like it has succeeded on a saving throw.
I rewrote that to use the normal workflow to get the card, I do suggest overwriting concentration on it to false.
Heads up. midi-qol 10.0.5 will require dnd5e 2.0.0-alpha3 and previous versions of midi won't work with dnd2.0.0-alpha3. There are a couple of breakages outstanding that I need to fix before releasing 10.0.5
Unrelated but I just happened to try somethings and latest DAE in v10
2.0.0-alpha3 introduces a bunch of exciting config options to item.use() allowing consumption configuration and so on.
If the item hooks can be async I'll move the midi item.use, item.rollAttack and item.rollDamage to be triggered by hooks, rather than wrapping the rolls, which should remove some (but not all) of the incompatibility issue with other roll modules - assuming they align with the new roll formats.
Used a ? in if (Number.isNumeric(formData.duration?.startTime) && Math.abs(Number(formData.duration.startTime) < 3600)) { to get rid of it
It was on effects from actors coming from v9
Can you attach the something and confirm which versions of what?
Maybe the actor that was causing the problem? I've not seen that issue before, but migration from v9 to v10 is a little hairy at the moment.
DAE 10.0.3, Foundry V10 testing 5.279, dnd5e 2.0.0 alpha3 v19 and I will DM you the actor
At long effing last, we can put limited uses on weapons without being annoyed
Turns out this is a foundry 10.279 bug, editing effects in 10.279 is completely broken. I'll release DAE 10.0.4 tomorrow with a workaround pending a fix from foundry itself.
Ah OK. I just saw the issue in the github!
I predict you will still be annoyed π
It came up in a DM querying how to do an item roll with advantage/disadvantage etc.
MidiQOL.completeItemRoll(item, {workflowOptions: {advantage: true}}) allows you to roll an item with advantage. I'll make a note to document all of the workflow options that can be passed, but advantage/disadvantage/fastForward/versatile are few that come to mind.
You know me so well
I hope the team make hooks async/awaited as part of this. If so it opens up a whole raft of goodness that can be done.
I personally prefer not, but it probably won't affect me either way.
But how will you deal with wanting to display a dialog inside the preItemUse Hook to confirm that they want to go ahead?
Noted and understandable.
How possible is "could still happen"? Also how hard are we talking?
And yes sws is Steel Wind Strike (spell from XGE)
I can imagine zero need for that
Funnily enough I've just this minute been playing with it. It's a little clunky, but I've added an option that items with an attack can roll a separate attack for each target (which will also deal with all the flags that might be relevant). It does a complete workflow for each attack, adjudicating hits/saves/damage for each.
If there are no targets selected when you roll prompt the user to select some targets before continuing.
For example, midi requires you to have selected a target before continuing the roll. Optionally, rather than failing the attack, prompt the user to select targets if there are none selected and when they are finished proceed with the roll
Can this be solved with the multiattack module?
Don't know what that does.
Multi attack module? π€
yes, it was working at some point together iirc
Pretty sure Multiattack lists itself as being incompatible right?
basically allows for multi attacking of multiple targets I believe. Don't use it myself but if it does exactly what you want then that may simplify things
Hooks.on("dnd5e.preUseItem", () => {
if ( !game.user.targets.size ) {
ui.notifications.warn("need targets, dude.");
return false;
}
});
You just cancel the roll π€·
I think not
Exactly what I don't want to do.
Is that not what currently happens? I.e cancelling the roll with a ui warning?
There are different options for it
Not if you have late targeting enabled - no targets can mean put up a please select targets dialog
This is what I was remembering:
For Midi-QOL:
const weapons = ["Longsword", "Longsword", "Dagger"]; // Make two longsword attacks and one dagger attack
const actor = canvas.tokens.controlled[0].actor; // GM users could pre-define multiattack rolls for various actors
game.MA5e.midiMA5e(weapons, actor) // actor argument is optional (default set to "canvas.tokens.controlled[0]
And update changelog 5.2.0 Re-implemented compatibility with Midi-QOL and Better Rolls for 5e π€·
I see. I've never used that setting so that explains a lot tbh
But I don't see any downside to making the Hooks calls async and awaiting the return. Everything currently in existence will continue to work, but give the ability to do more.
That's what the multiattack module has
Yeah thats what the snippet is from
I wouldn't use this for general multiattacks, but being able to do so for some abilities that specifically roll against multiple targets is pretty useful
I must try that with the attack per target code to see if it works.
Hello, what is the best way to apply adv/diasdv to an active defense roll (like say, an undead were attacking a PC who is under the effects of protection from evil and good)?
Hotkeys do not seem to work for me
ctrl/alt don't provide adv/disadv? Double check your keybinds
That is something that I would usually do manually, keybind or otherwise
They do normally. Not for active defense rolls
What is an active defense roll
Typically Protection from Evil and Good is just Attacker has Disadvantage
There is a midi setting for active defense, which forces players to roll to defende, rather than enemies rolling to attackβinverting the math and narrative
I see
From memory they are supposed to work - could well be a bug.
Can you export your midi settings and DM them to me and I'll have a look.
But it's 1:15 am here, so probably tomorrow.
Sure thing, thanks chief
Either way. Something we can look forward to in future(ish) releases? (after the big update I would assume)
Just for other people to search, if using Midi-QoL for Reaction Processing turn off Target Reacts module. I learned the hard way that they do not play nice with one another (taking the game to a grinding halt).
Also for those that want it. I got a module commissioned for LMRTFY to add a Fail the saving throw/skill/check which treats the fail as -1. This will be useful for overtime effects when it's something like grappled where you need to use an action to attempt the check to remove the condition but instead of trying to escape they attack/cast a spell.
This was important (at least for me) cause if you close the prompt from LMRTFY in an overtime effect, you cannot continue to the next combatant on the combat tracker without a save being rolled
It does require a saving throw at some point! change from Zhell also removed the error which is good. It doesn't seem to roll or apply and damage though
So clearly I am missing something here.
- You want to prompt the user to make some targets if they don't have any. I.e., a quick dialog, which is not async.
- While they fiddle with the prompt, the roll should not proceed.
Right?
So if they have zero targets (or is it no matter what? Doesn't matter), why not just pop the dialog, cancel the roll (return false), and have the OK button in the dialog start the roll over?
Try this ```js
if (!game.modules.get("advanced-macros")?.active) { ui.notifications.error("Advanced Macros is not enabled"); return }
if(args[0].tag === "OnUse"){
AAhelpers.applyTemplate(args) }
if (args[0] === "on" || args[0] === "each") {
const lastArg = args[args.length - 1];
let tactor;
if (lastArg.tokenId) tactor = canvas.tokens.get(lastArg.tokenId).actor;
else tactor = game.actors.get(lastArg.actorId);
const target = canvas.tokens.get(lastArg.tokenId)
let damageRoll = await new Roll(2d4[piercing]).evaluate({async: true});
damageRoll.toMessage({ flavor: "Spike Growth Damage" })
let targets = [];
let saves = [];
targets.push(target);
saves.push(target); //this is not needed if no saves are present and change in the line below the second set to: new Set()
await MidiQOL.applyTokenDamage([{ damage: damageRoll.total, type: "piercing" }], damageRoll.total, new Set(targets), null, new Set(saves));
let effect = tactor.effects.find(i => i.data.label === "Spike Growth");
await effect.delete()
}
oh nice that does apply damage
but it doesnt show if the save of the actor was made or not, not sure if they are in secret or not but either way, enjoy your coffee
You are not creating the save at all in this macro
Let me check the AA included one
There is no saving throw once in it, saving throw to spot and avoid walking into it in the first place
ooh the save is to perceive it
well in that case it works perfectly, thank you again!
I use this version
if (!game.modules.get("advanced-macros")?.active) { ui.notifications.error("Advanced Macros is not enabled"); return }
if (args[0].tag === "OnUse") { AAhelpers.applyTemplate(args) }
if (args[0] === "on" || args[0] === "each") {
const lastArg = args[args.length - 1];
let tactor;
if (lastArg.tokenId) tactor = canvas.tokens.get(lastArg.tokenId).actor;
else tactor = game.actors.get(lastArg.actorId);
const target = canvas.tokens.get(lastArg.tokenId);
const itemD = lastArg.efData.flags.dae.itemData;
itemD.data.components.concentration = false;
const damageType = "piercing";
let damageRoll = await new Roll(`2d4[${damageType}]`).evaluate({ async: true });
await new MidiQOL.DamageOnlyWorkflow(tactor, target, damageRoll.total, damageType, [target], damageRoll, { flavor: `(${CONFIG.DND5E.damageTypes[damageType]})`, itemData: itemD, itemCardId: "new" });
let effect = tactor.effects.find(i => i.data.label === itemD.name);
if (effect) await effect.delete();
}
the AA included one is the reason im here haha it was very broken
Oh yeah same principle, but you can have the flavor from the DamageOnlyWorkflow, instead of the damage.toMessage to represent the roll
that one seems to send out the damage twice
You probably have 2 active effects running
im not sure, the first macro applies it once
and this is all a bit over my head haha
is this javascript?
yes
Spike growth is a spell that is not that straightforward to automate in any case.
This is a macro from Freeze that you could execute with a target selected and deal some damage with input for distance travelled: <#macro-polo message>
I have a damage on movement for single target on Arcane Archer pack for my Grasping Arrow. Asks if each round if they want to attempt to remove it, else deals damage when they move.
My funniest macro is one that automatically deals more damage (and adds some effects) if the attacker has moved at least 10ft in a straight line in the combat round before attacking!
v10 of midi overtime effects adds action save, which looks for a saving throw rolled by an actor on their turn and if it is the right type and exceeds the saveDC the effect auto removes.
That's interesting.
Is there an action check for ability checks too?
Or skill checks?
For escaping grapples? Itβs interesting to see theyβve changed that to a saving throw in OneD&Dβ¦ paving the way to make things easier on themselves in the VTT space maybe
I'm still sticking to acr/ath. Just makes sense to me
Raw alot of those escapes are not skills. Just ability checks
That's cool, but this is a choose action A or B situation. You don't get both.
how would i go about making an item macro for a spell that would let the user choose between radiant and necrotic damage with a pop dialog? Particularly for the spell Destructive Wave. I know how to use item macro to pop up the dialog and let the user choose an option, but i dont know how to affect how midi qol's workflow to change the spells damage type
I dont get it. I did that and the extra 1d6 damage die does not apply. I have Item Macro module installed. Anyone else having the same problem?
I'm using Foundry 9 269 and DND 1.6.3. Modules updated.
You have a 2 options, either modify the item or setup a damage workflow
Bardic Inspiration MQ/DND1.6 is adding 10 to the roll and I don't know why...
I wrote my own version of hunters mark which still works.. guess I should test it if it still works
I'll look into it. Thanks, Crymic!
Thats why I dont find it π
I'll change that
π₯°
I ended up using vesatile damage on the item, but how would i set up a workflow?
I am looking to create an item and have it output healing dependant on the roll. 10 or higher, heal for the amount rolled. 9 or lower, damage for the amount under 10 it rolled (1 being 8 damage). The roll would have proficiency and tool bonuses (from item) applied.
is this possible?
I see @spice kraken steered you over here. I donβt think youβd need midi to get this working, just a regular macro should be capable of it, if Iβm not mistaken. If you donβt get a response here Iβd try #macro-polo and one of the kind folk over there should be able to assist
does let tactor; means target actor and is there one that can be 'any actor'?
If I'm not mistaken, let whatever_you_put_here is just a variable. So if you want the selected token it would be
let tactor = canvas.tokens.controlled[0]; and you would refer to tactor wherever you need something
Like this macro that deletes sequencer effects on the selected token
let tokenD = canvas.tokens.controlled[0];
await Sequencer.EffectManager.endEffects({ name: "*", object: tokenD })```
basically a macro I have seems to create an effect that only applies to the actor whose turn it is
but I want it to apply to any actor
you can use the first line I have above to reference the selected token
hm unfortunately that didnt work
If you put the full macro here someone smarter than me could probably help
For Destructive Wave I'd just update the item
It seems like the "multi-attack 5e" module doesn't work with Midi QOL. A) Is there a fix for that? B) Is there a way within Midi QOL to set it so players can do multiple attacks with one click? Thanks!
You can click the Attack button in chat again
You could use a macro to do multiple rolls one after the other
Can use
await MidiQOL.completeItemRoll(weapon);
How do you get it to pop up the additional attack buttons?
Misc settings
so using flags.midi-oql.onUseMacroName you can call a macro when you initiate a workflow but is there a way to call a macro when you're targeted?
Emulate that with a reaction workflow maybe? What are you trying to do?
My gm has a feature that makes it so that if you're missed with an attack, creatures have disadvantage to attack you for the rest of the turn
with the flag above it would be a no brainer but it didn't work the way I thought it would
It won't work no.
I also figured there would be some kind of thing I could do with flags.dae.onupdatesource
but idk which key to check for the update
since it would hev to before the attack is rolled to impose the disadv
I would just create a manual reaction that would grant disadvantage to attacks from others (midi flag) until the end of your turn or whatever the wording is
but the inital attack has to miss? can you set the reaction to take that into account?
Nope as things are right now.
Reaction manual means that it won't be triggered by anything except the user rolling it
also that would consume reaction right? or well add the"reaction effect"
There is no reaction on miss, someone ask for it but I think the dev said he would not implement it because it could be done manually
I guess that's also an option
You can, or soon will be able to, use a 0 for reaction cost and it will not use your reaction.
oh did notknow that would still work
I don't remember now if it already is implemented for v9. At least an initial implementation must be already in place. Check the MidiQOL release notes
There is a setting that removes attack and damage buttons, turn that off to retain the ability to hit attack and damage over and over.
This is great, thank you! I'd never messed with having an item macro fire at different times. I'd always just stuck with the default. Having the freedom to use it at any point during the workflow opens up a lot of possibilities!
You could write world script to intercept weapon attacks and if hitTargets are 0, then apply active effect
I had an idea along these lines
but wouldn't the constant checks cause slowdown. Or is it not that much of an overhead if I return early?
You would filter it so it only runs on missed
I'll check it out and see
You would hook on the item roll before damage is dealt
wouldn't I have to hook onto every item roll?
Should work with any of them so long as the overtime effect save details match.
Ok, cool. But there's no way to automate how many rolls happen at once? Like picking up three d20s?
I accidentally released a version of bardic inspiration that had some test values in it. Try removing and re-adding the bardic inspirtation from the compendium to the actor.
Probably an item macro that just fires X more of the item attached? But if you have target selections and automated ac calcs and damage, you wouldn't want this unless in very specific niche situations
If what you want is scorching ray/edritch blast i believe there are already automation friendly macros out there.
You'd have to write a macro to do it. But each roll needs to be separate.
let item = canvas.tokens.controlled[0]?.actor.getName("whatever item you want from the actor"); // This requires you to have a token selected
if (!item) return;
for (let i = 0; i < 3; i++) {
await completeItemRoll(item);
}
You can hook onto flags.midi-qol.AttackRollComplete then check for a missed attack
Is there a way for a token being hit by an attack to damage the token that is attacking it? (i.e. like a "thorns" effect)
@violet meadow FYI - I remember now a solution to the adding dex.mod to str.save/check which has been a problem for ages. If you set
data.abilities.str.bonuses.save/check CUSTOM @abilities.dex.mod
It will correctly evaluate the bonus when doing a roll, but won't be displayed on the character sheet (just like the bonus fields when configuring the ability).
copying from the main section:
I want to add a new physical damage type with a world script. How do I categorize it as a physical type so midiqol physical damage reduction and such will recognize it?
or if there's a better way of adding that, I'd like to know it
With an aura that applies an onusemacro on the tokens in the aura, the onusemacro could be called after the attacker attack is complete and it would apply damage to it. You can see my implementation of Flames of Phlegethos in the Gearheads Discord server.
I think also that @violet meadow published a macro for reactive damage either here in the macro-polo channel or in the Gearheads Discord ,
i wonder, is there a way to automate or apply cover in any way? or is it not something midiqol can do?
midi leans on Helper's cover calc, iirc: https://github.com/trioderegion/dnd5e-helpers#cover-calculator
is this a module?
yea
cool thanks
It seems to be hard coded in midi-qol code e.g: ["bludgeoning", "slashing", "piercing"].includes(type) && physicalDamage
And I donβt think there is any config from dnd5e that contains a list of damage types that are βphysicalβ on which midi could lean on
Where would I find a link to that server?
There was a link posted here #macro-polo message
It's in the top post here. ( π )
Hey guys π
I'm working on an Intellect Devourer. To summarize, the Devour Intellect effect in supposed to only transfer to the target if 3d6 rolls equal to or higher than the target's INT score. So I was wondering if its possible to put that in the Activation Condition? Something along these lines:
"@target.abilities.int.value" <= 3d6
I'm just not sure how to write the 3d6 part of it. Any thoughts? Can this be done? Thanks
i've been trying to make an npc with adaptive immunities, (after taking damage they become resistant to that damagetype and lose the oldest resistance)
i've got a working macro figured out but have hit a few annoyances:
-i'd like the macro to trigger on taking damage, currently i'm using a reaction item with this as onuse macro but that still needs me to confirm via midiqol popup
-i'd like it to apply damage first, then do the resistances for next time (currently doing this with flags and applying on next macro call, messy but works)
-it outputs a chat card for the reaction item every time, which i'd prefer it didn't
so i'm asking if anyone knows of better ways to do any of these 3 things
First impression is no and you would need a macro for that. Easy to do with a macro, but I am away till Tuesday morning. Probably someone will pick it up and if noone does until then, do ping me to remind me
There is a new DAE flag onUpdateSource, maybe you could use this flag to be notified when your token hit points are being updated?
https://gitlab.com/tposney/dae/-/blob/master/Changelog.md#L48
Thank you! I would appreciate it. Enjoy your weekend.
wondering if anyone can help me adjust this macro not to do initial damage?
if(args[0].tag === "OnUse"){
AAhelpers.applyTemplate(args) }
if (args[0] === "on" || args[0] === "each") {
const lastArg = args[args.length - 1];
let tactor;
if (lastArg.tokenId) tactor = canvas.tokens.get(lastArg.tokenId).actor;
else tactor = game.actors.get(lastArg.actorId);
const target = canvas.tokens.get(lastArg.tokenId)
let damageRoll = await new Roll(`2d4[piercing]`).evaluate({async: true});
damageRoll.toMessage({ flavor: "Spike Growth Damage" })
let targets = [];
let saves = [];
targets.push(target);
saves.push(target); //this is not needed if no saves are present and change in the line below the second set to: new Set()
await MidiQOL.applyTokenDamage([{ damage: damageRoll.total, type: "piercing" }], damageRoll.total, new Set(targets), null, new Set(saves));
let effect = tactor.effects.find(i => i.data.label === "Spike Growth");
await effect.delete()
}```
Hi,
Since I update the module earlier today, the critical damage doesn't seem to work anymore.
Am I missing something in the module config, or elsewhere ?
Remove the on clause
If they end or start whichever it's set to then they'll take damage instead of each step
Hey all. Trying to automate a spider bite attack. I asked a few days ago in #513918036919713802 and they had it setup like the following picture so that it did full Piercing damage from the bite and then caused a con save that would give half damage when complete. I'm struggling to get this to work and it just seems to do the piercing damage without the poison save and damage.
You could do this with a double active effect which triggers on isDamaged. Youd need to filter workflows to check the last workflow they were a target of, get the damage type then match it against their resistance or active effect names. If missing, then apply it.
There's an option in the workflow to set other as the damage type when making a saving throw.
Then the options in the bottom will let you do full damage
I see, this section
Got it. Didn't realize that was in here. Going to have to play around with it a bit more but i think i got this working. Just not sure if it will break something else.
Alternative is macro running on failSaved then deal damage to that array
that did stop the initial damage but also seems to stop people taking any damage moving into or around the area
They have to end or start their turn. On activates it when applied
You would have to write the whole thing differently to trigger on isMoved instead
Which would probably be the better approach
I'll write it up when I get home in an hour or 3
hey guys....
so im playing a warlock who wants to cast hex on a target. I've already got DAE set to add the "hex" effect to the target. Now I just want to automatically appy the additional 1d6 necrotic damage when I attack it with say firebolt
any idea how to achieve this?
You would need to store the target id, then on damage bonus match it. Also make a dialog to choose a Stat.
Or I've got one already written https://www.patreon.com/posts/hex-53854357
A damage bonus macro, have a look at the midi sample items hunter's mark damage bonus macro code as a sample, or get one already written as above.
In midi-qol, how do I make it so one damage formula is dependent on a saving throw? Using the giant scorpion's sting as an example, how would I go around to make it so that the poison damage is halved on a successful saving throw, as opposed to all damage from the attack?
there are check marks at the bottom of the detail tab on the attack
right, reread that, just looking to make one damage type halved
Yeah, or just one damage type dependant on the saving throw
Put it in the other Formula field and go into midi settings=>Workflow settings=> Workflow tab, find the Roll other Formula for ranged/melee attacksand choose If save present
Define the saving throw and then it should work
It would be really good/helpful if you take a look at the MidiQOL readme. Check for a link in the pins of this thread!
What does "4 point checks" mean in Walls block ranged attacks? It says it requires DND Helpers, though I don't know what this is
Dnd Helpers is a module
Aye; what does 4 point checks mean though?
I'm curious if it's something I want as a feature
OOoh wait-
talking about how walls are read and rather or not they block ranged attacks
it checks the four points of the token
Yeah, it's a bit obscure but I found the description on the module's wiki:
Cover Calculator
Has two modes for cover in relation to walls: Center Point and Four Corner. Cover from tiles and tokens are (currently) only calculated from Center Point.
- Center Point - a target token's cover is based on foundry's player vision rendering (center point of self to 4 corners of target)
- Four Corner - direct implementation of DMG rules, where vision is computed from each occupied grid point and the corner granting the target the least cover is chosen.
A more detailed discussion of this can be found on our Wiki
yep
the tips in the module help, but to really understand things, reading the docs is best
Aye π It was hard to locate
yeah, there is a lot of it in there....
But with midi covering so much, its to be expected
@celest bluff or anyone else,
With the item macro for Toll of the Dead, do you know how to tweak the macro so the damage dice change based on Level instead of health?
if (args[0].macroPass === "preDamageRoll") {
const target = await fromUuid(args[0].targetUuids[0]);
const needsD12 = target.actor.data.data.attributes.hp.value < target.actor.data.data.attributes.hp.max;
const theItem = await fromUuid(args[0].uuid);
let formula = theItem.data.data.damage.parts[0][0];
if (needsD12)
formula = formula.replace("d8", "d12")
else
formula = formula.replace("d12", "d8");
theItem.data.data.damage.parts[0][0] = formula;
}```
So at Level 1, it does 1d4
At lv5, it does 2d6
At lv10, it does 3d4
At lv17, it does 5d6
Something like that.
@winter silo
if (args[0].macroPass === "preDamageRoll") {
const tokenD = canvas.tokens.get(args[0].tokenId);
const actorData = tokenD.actor.getRollData();
const theItem = await fromUuid(args[0].uuid);
let dieNum = (Math.min(Math.ceil(actorData.details.level/6), 2));
let dieFace = (Math.min(Math.ceil(actorData.details.level/6),2)*4);
theItem.data.data.damage.parts[0][0] = `${dieNum}d${dieFace}`;
}
That should be it
Could you provide screenshots of this being used? Somethings not clicking for me, I apologize
setup the item exactly the same under the item details for item macro line
Ah yeah that did it
was directed here from module discussion, i have a strange question is there a way with Midi QOL or something else to reverse healing (from any source) so it damages a monster instead ?
like from a regular attack or some item/spell specifically?
you have 2 ways of pulling this off, either have the item itself do it or a world script
i wanted to have a specific group of skeletons take no damage from any source but have the players figure out they need to heal the skeleton to kill it essentially. i figured i could make it immune to all other damage sources but not sure how to technically have the heal deal damage
Someone else could probably fully automate it, but you could change the box in chat from Calc to x1 and it'll apply damage
This works well. The only issue I'm having is the math formula.
let dieNum = (Math.min(Math.ceil(actorData.details.level/6), 2));
let dieFace = (Math.min(Math.ceil(actorData.details.level/6),2)*4);
At lv7-20, the damage dice stays at 2d8 instead of what I'd need.
Is there a way I can directly put in the damage dice I'd want at a certain level?
Because the damage dice progression for some attacks is not clean. It could go from a 2d4 to a 11d6, and I don't think that math formula above is suited for that?
Yeah I was trying to figure a way to do it with passive effect but I couldn't figure it out, i will try your method ! Thank you
yeah you can do an inline if statement
When you have the time, could you provide an example of the macro I'd use for that?
Using the following milestones in the example:
Level 1, it does 1d4
At lv5, it does 2d6
At lv10, it does 3d4
At lv17, it does 5d6
I often need to see an example to understand something, so it would be greatly appreciated
Hello again! I am trying to implement Vicious Weapons properly with Midi-QOL. I am trying to use Activation Condition so that the 'Other Formula' only triggers when the Attack Roll is a dirty 20 or higher. So far I have "@workflow.attackRoll > 20" (ignore the " ") in the Activation Condition, but the syntax is incorrect. Does anybody know the correct way to write that?
Hey, does anyone know why enabling roll automation support completely ruins the chat rolls and stretches the images?
I'd really like to fix this.
This is what it should look like
Do you have any other roller modules?
Not sure why that's happening for you. Everything looks normal for me in my game
π¦ breh well thank you for helping either way
Doesn't CUP alter the cards too? Could be conflicting with MIDI.
You can set this up on the weapon itself, set the crit threshold to 19. theres a slot for criticasl damage, just change to 7
Vicious Weapons aren't for crits, they're for any roll above a dirty 20
So if you roll a 15, and have +5 to the roll, you activate it, but don't crit.
oh yeah imp crit
has to be a natural 20
Attack Rolls
When you make an Attack, your Attack roll determines whether the Attack hits or misses. To make an Attack roll, roll a d20 and add the appropriate Modifiers.
I don't think it does - an Attack Roll is a D20 + modifiers
it says when you roll a 20 on an attack roll, this means before modifiers
Based on what? If an attack roll is 1D20+mods, then a 20 on the attack roll is dice+mods being 20 or more
then again you are the GM, run the item how you want. You'll need to macro it, if you want to be on a roll 20 with bonuses
theres a ton of comments and reddit posts talking about the item. they all say nat 20
it is, a lot of things are badly written. They should let the MTG crew write the verbage
Well this makes my life easier anyway. Thank you.
So this works ( if i use the x2, to also undo the original heal it applies).
but I found in special traits I can call a macro to calculate damage and have been trying to figure out something along the lines of ```If number > 0 Then
number * -1
Else
number```
not sure if that would even work to do the same thing though
Oh thats very kind! I've been compelled to join your patreon
When provided the proper arguments DamageOnlyWorkFlows called from macros should apply the damage automatically right?
Is there a way to check for size category of targeted tokens? (i.e. such and such feature does something extra to certain sizes of creatures)
Do you use MidiQOL's activation conditions?
Something like Array.from(workflow.hitTargets)[0].actor.getRollData().traits.size === 'sm' would work probably for a small target for example.
Cannot check now but take a look at the actor's rollData
Now if you have more than 1 targets you would need something different
You want @workflow.attackRoll.total > 20 . If you want the d20 (rather than the result) you can use @workflow.diceRoll (terrible name).
Arrary.from(workflow.hitTargets).some(target => target.actor.getRollData().traits.size === "sm")
should do it (if the first one worked)
@spice kraken hello! sorry to do this again but how would you go about making it so that
If a creature attacks a creature inflcited w/ frostbite, they get dealt extra damage
as well as
Instead of the duration ending at the end of the turn, it ends when a certain attack is done?
#1010273821401555087 can help you there
Oh, this is midi, haha
Well if it's a specific attack it probably needs a macro
If it's any attack, go to the duration section of the active effect, and add a special duration of is hit or whatever
This looks like a homebrew feature
Homebrew frostbite
I wrote the overtime effect in #513918036919713802
Basically just a save at the end of a turn, no damage or whatever
a few ways to do, onUpdate to monitor hp, then if they're reduced, go into the applying more damage or you can do a double active effect
then have isDamaged as the removal trigger
you can then apply the extra damage
problem with onupdate, it'll trigger for any hp changes
this is what i have initially thanks to supernaafeh, how would you change it if "any" attack is dealt and hits, extra damage is dealt?
Keep in mind they seem very new to midi. So probably no macro skills
Guilty as charged hehe, is there a way to 'save' the effects? so i wont make the same effect again for new weapons/abilities
Move it to the items tab
But look at the pins. All this is pretty straightforward when you read the readme. Especially the overtime effects part
By items tab do you mean the directory? if so I dont think its working
I still cant seem to be able to make it work. I can't seem to figure out how: if i attack a creature it deals + (x damage)
So what exactly are you trying to do? eg. against a specific creature, all creatures, once per round?
@fading scarab was this sorted?
Sorry for the reply ping Elwin 
Not yet, I just haven't messed with it. I'll check it out and ask if I have any questions though.
Thanks for checking back in though!
When I make an attack against a foe and the attack requires a save (eg for poison, being knocked prone, etc), if the foe makes the save, the damage is halved even if it has no connection to the damage result. EG. If i attack with a wold and it does 6 damage and the player needs to make a save vs trip, if the player makes the save, he takes 3 points of damage. How do i fix this...thanks
In the bottom of the weapon details tab you will find some Item Properties added by MidiQOL
Full Dam Save is what you are looking for.
Thanks....so do i have to do this on every creature in the actors tab and every creature imported or is there a macro or something to do this.
Well it depends on how the creatures' attacks are set up. You could use MidiQOL's option for https://gitlab.com/tposney/midi-qol#item-description-text-and-saving-throws
MidiQOL's readme is a treasure if you take some time to go through it (a must if you want to use it successfully IMHO) and a link is pinned on this thread.
You will find the aforementioned option in Midi Settings => Workflow Settings => Workflow tab:
How would I get Midi to accept when a roll should be with advantage or a modifier? E.g. we use flanking in our games but I can't get midi to apply advantage on attack rolls
You will need to go into Midi Settings => Workflow Settings => Optional Tab and turn on the experimental features:
Then you will find options for Check Flanking.
If you are also using DFreds CE module, there are more options available
Will this also let me tell my players that they have a modifier and they can apply it?
e.g. enemy has half cover so they have a negative modifier to hit
For Cover automation, you would need to use Dnd5e helpers module alongside MidiQOL
Thanks for the help...appriciated π
Is there a way to have it accept the modifier before the roll at all or does that kill all automation?
When you target a creature a pop up can be displayed
There you can see the automated calculation made from Dnd5ehelpers and either choose to apply automatically or wait for user input
If you then attack, the correct (/chosen) modifier will be applied
So the only way to get midi automation to work with modifiers is to use dnd5e helpers?
Do I need to enable combat action management for that to pop up?
From DnD 5e Helpers you mean? It is in the System Helpers tab Cover Calculator Configuration
And then in MidiQOL Optional tab again.
I have to say that it is working as intended for me, but it might be a bit overwhelming to understand the synergy at first π
So feel free to post any issues π
If you want the normal dialog to add other, random modifiers then configure Midi to not fast-forward rolls
@cloud tiger so as not to post in #macro-polo. An older version of Arcane recovery working with MidiQOL as an onUse ItemMacro | After Active Effects
Are they looking for the item macro? Cause I have one
Seem I am not able to attach it rn π€
I need to start using this. Sometimes I feel the need to override the cover (as a player). The GM can just hold down O for the midi override
It works for my players so I tend to have it set to auto! If something is amiss we retcon it after the fact, but there aren't many cases that this happens π€·
Yeah auto works 90% of the time for usβ¦ just sometimes thereβs something in the way that isnβt actually supposed to provide cover. Iβve just been adding +2 to my attack roll in those cases
For MIDI, does anyone know the call for "extra critical hit damage". I see it in the weapon option - but I'm trying to make an ability that increases crit hit damage
Olla people o/
I'm using current version of dnd 5e and Midi and wondering if it is possible to somehow add 5 to every 'healing' that is rolled by people without individually adding it to every ability, spell and such?
You can use the character sheet Special Traits if it is a permanent one
Or look at the pins in this thread for a link to the spreadsheet with the flags that can be used with MidiQOL.
||flags.midi-qol.grants.criticalThreshold||
All rolls? By all creatures? π€
Any roll that does healing should be increased by 5, yeah
That sounds like world script territory
MidiQOL would do that for an Actor for example with a macro.
I'd also be happy if I can just make it a feature that I can add to the Player Characters
Would that also include potions of healing?
It is NOT currently easy to modify rolls in this precise way with just a world script
Yeah. More precisely it should be any magical healing, but just adding 5 to every healing is good enough for like almost all purposes
you'd have to scan the chat log for new messages, get the item ids and whether it's healing at all, etc
then update correctly doing roll manipulation, stuff you probably cannot even do as non-GM
(easy as pie in v10 tho)
For MidiQOL, you would need use Midi hooks that are already in place and setDamageRoll to what you want, which takes care of the roll manipulation
Would an AE with a +5 to all healing "damage" do it for you instead?
I tried an active effect with a midi flag for healing DR set to -5 but that didn't seem to do anything
Can you try data.bonuses.heal.damage | Add | +5 as I cannot check it now?
@shell cobalt ok that should work 
With DAE you can also use data.bonuses.heal.damage | Custom | 5 to get rid of the double ++
I see no double + so that is fine. But yes that also works. Thank you :)
You can create a feature that you will drag on each Actor.
Make it Transfer to Actor on Item Equip and should be good
are shortcut modifiers working? I cannot find how to throw damage or crit damage directly with keyboard shortcut modifiers
They work when you click "damage". If you are auto rolling damage, then not so much.
Yeah, you would need Auto Fast Forward Damage checked, Auto rolling damage set to **Never **and use the (fast) Damage button on the chatMessage to get them going
anyway to fix the empty "()" when the damage is 0?
That seems to be a limitation currently @gilded yacht βοΈ
Never occurred to me before π
is it also possible to show both rolls when it has adv/dis?
It should already do that.
Click on the Disadvantage field and it will appear, no?
oh ok, I was trying to make midi look and work as closely as possible as better rolls, since it's what we're used to in my campaign
thanks
So i have a question, how would one make a feature that places down a measurement template and rolls 1d4 fire damage if a character starts their turn in the fire?
and on a separate note how would one create a feature that places a measurement template that calls for save of some kind or would just apply an active effect if they enter the measurement template or start their turn there
You would need Active Auras module to do any of these.
have that
but still dont get how to apply the effect to the measurement template and not any character
as i wouldnt want them to burn if they arent in the fire zone
OK are you familiar with MidiQOL macros and such?
Alright give me 5 to make an example of the fire damage
thank you
What's the radius of the template?
5ft
"When fired on the ground it creates a burning surface that deals 1d4 fire damage to anyone starting their turn on it. This surface lasts for 5 rounds and has a 5 feet radius."
I have set this up as a spell for now. Let me know if this works for you (in combat as it is turned based).
Download the attachment. Create a new Spell in the Items Directory (right sidebar of Foundry), right click on the new Item and Import Data.
I need help, how does
flags.midi-qol.grants.critical.range work?
it does work nvm, had to apply the effect to someone
did not get that arrow when i used it like you send it
did get it when used with the magic item module as part of a magic item
Does it throw some warnings about keys missing from an embedded collection?
Wait, which arrow is that?
gave this as the only warning
*error the one about the missing macro
Ah alright, the warning popped up when you used the Item I sent you from the Magic Items tab of Token Action HUD ?
no from the spellbook tab on the (ogl) character sheet where it was provided by the magic item that has this ability
ok ok
basically I wanted to create an arrow that does a when shot at a person and b when shot at the ground, creating a surface of 5ft radius
hmmm π€
so casted the fire damage as a spell (not from a magic item)
applied the effect to the creatures within the area
they take fire damage on their turn
guy walks in and he also takes the damage on his next turn
one of the original creatures walk out and on his next turn still take damage
Not easy to do that with just a normal attack. Depends on whether MidiQOL checks for targets before attacking maybe.