#MidiQOL
1 messages · Page 49 of 1
I added this "Description" to the "Shield Bash" item:
Target one enemy within 5' and roll your Athletics opposed by their Acrobatics. If you succeed, you may either shove that enemy backward 5' or knock them prone.
You may only Shield Bash a creature that is smaller than you or up to one size category larger.
I deleted the description because when we share things here like that, the moderators get upset
Shield bash is technically a non srd feat, Shield Master
Its also Shove
I need to talk to the moderators about that. "Descriptions" cannot be copyrighted and are not copyrighted by WotC. Rules systems and procedures are explicitly excluded from copyright. What can be copyrighted are creative works of authorship, like stories, novels, movies.
In addition to WotC's descriptions not being protected by copyright, you yourself are welcome to write your own description.
The belief that descriptions are WotC's IP is incorrect. I am happy to introduce the mods to a pro-bono lawyer to discuss the topic.
I don't expect you to fight that battle, it's easier to go with the flow of what the mods believe. But that doesn't change the facts... 🙂
*In no case does copyright protection for an original work of authorship extend to any idea, procedure, process, system, method of operation, concept, principle, or discovery, regardless of the form in which it is described, explained, illustrated, or embodied in such work. 17 USC 102(b) *
So the narrative story of "Curse of Strahd" can by copyrighted, but a procedural description of how a vampire lord attacks is explicitly excluded from copyright.
And bonking someone with a shield, with no narrative "authorship" of any form, is also excluded.
none of that matters, all that matters is keeping the bosses here happy with you as losing access to this great server is too great a loss as a foundry DM 😉
Yeah, I'll take it up with them. They probably don't have access to an IP lawyer.
For now, know that you can write your own descriptions. Don't copy WotC's text. As long as you're creating your own description you're golden. The technical legal term is your own "selection and arrangement of non-copyrightable material."
Typically the only thing they ask is to remove the descriptions
yeah thats ok too
but mine was the official wotc one
I'm less clear on whether a word-by-word copy of their text would be permissible, but I agree it is safest not to run afoul of the moderators or of WotC. 🙂
Thank you for the Shield Bash macro... I got MTB installed and tested it and it's great. 🙂
My Paladin will thank you
MTB by default might need to have the "players can request" turned on, its in the last section of it in its settings
What's the end goal, do you want the Template to remain, be transparent, and have a Sequencer effect playing?
I think we all wish that TMFX auto hide and hover feature was possible without using its graphics
ah
I use both AA and tmfx so if you are pondering it I'd love that too!
Pretty sure the reason why we all don't want tmfx's graphics is cause we're all using Jb2a/sequencer/AA lol
lol, can't promise anything but I'll take a look and see if it's something I can add to make the templates at least transparent (remove grid squares)
Nailed it… TMFX is just a catch all for anything undefined for me (by damage type)
the only other module I can think of that might have scope in this would be maybe the successor to dnd5ehelpers, I'm guessing simbuls
yeah: when a graphic/animation is present the template boarder and coloured highlighting not be visible but the highlighting squares showing up on hover
I didn't realize that TMFX and AA are in conflict. I've been using AA and just installed TMFX this week
they aren't in conflict, the templates just look really ugly when both are active
They don't hard conflict
BaileyWiki made some super sweet macros for TMFX
Huh, interesting.
TVA has some amazing synergy with TMFX
TVA?
Token Variant Art
also Aedif has the module Mass Edit, and theres a macro that comes with Mass Edit I think that is a tmfx token filter editor and its absolutely amazing
Mass Edit is cool. 🙂
pretty sure its in mass edits module
actually I don't see it, I'll share it here:
This is a system macro so import it onto a system macro.
@hoary reef I don't know the exxacts but I do know that most folks use Effect macro with midi for most turn based active effects now thanks to zhells hooks in the module
Yay found out how to just hide the grid highlighting
If they're using DAE already, this should do it right?
Last time I checked all the repos had been purged.
I had found an older version and repurposed it to make a functional installation out of it and play around in v10.
If you have that kinda time on your hands I think you should adopt TMFX 😆
Can I use midiqol to set the initiative of a companion (artificer's homunculus) to always be, for example 0.1 lower than another specific actor?
I don't bother with shared init actors, they just act on the owners turn, familiars and mounts roll though
it's not a big deal or anything but was just looking if I can make it so the player can actually move their own companion on their turn instead of needing me to do it
locking movement is not core, you have a setting on, very likely Monk's Tokenbar. You can turn this off. I do, and there is a toggle for it situationally on the actual MTB window:
oooh right, thank you very much
theres a setting that lets you move all owned tokens on a turn but I never got that bugger to work so I just turned off locked movement entirely
I'll experiment around a bit see that feels most natural, but thank you!
what's the damage type thing for temp hp/healing? 2d8[???]
temphp, it was temphp
Hey guys, anyone have a good automation settings for midi-qol?
for some reason i cant do the aoe atacks auto damage
gonna need some clarification, what exact feature/spell/attack are you trying to do
someone can share a midi-qol sttings in json file to I import
sharing that is akin to nuking your midi, I would not go crazy like that
what feature, atttack, or spell is giving you issues
Also you sound new to midi so we should probably clear up this issue that you might be dealing with:
Midi does not work with:
Ready Set Roll
Better Rolls for 5e
Roll Groups
ANything with "Fast Rolls" in its name
Dice Tooltips
Gm Paranoia
WIRE
Minimal Roll Enhancements
Retroactive Advantage/Disadvantage```
all AoE spells are out of order, cone of ice, fireball... they just don't calculate damage
oh, i use the better rolls, maybe this is the problem
You must stop using any module listed in my post above if you want to continue using midi as none of them work with midi
But also you should go through your modules and clean up compatibility issues. Alot of modules did not properly convert to v10 and require you to sus out whether they are indeed stuck in v9 modes or were abandoned, if any module is v9 or lower yellow compatibility you should remove them, if they have a v10 alternative you need to uninstall and reinstall. The Update button in the addons menu is unreliable after a v9 to v10 update sadly, the update got really screwy with module authors and some break that button when going from v9 to v10
If you have BR in v10, you clearly have not gone through and cleaned up your modules for v10
this resolve my problem, ty guys
better rolls really is the problem
I have another question if I may ask. Attacks are all being rolled automatically in advantage. I finally found a configuration that I like and I'm afraid to try to change something and ruin it, because unfortunately English is not my native language. Could you explain to me how I disable the automatic advantage?
those look like 2 attacks at normal to me
oh, really?
Left is attack, right is damage
oooh, my mistake
Yeah you have merge cards turned on which is a good thing, merge is a popular feature
i feel dumb now hahaha thanks again guys
Happy to help
the rolling two d20's is one of the biggest things that made people turn to ready set roll and abandon midi fwiw
so if thats one of your hiccups you have to learn to live with managing your d20 rolls in midi instead of just blindly tossing 2 each attack and picking the right one
You can either turn off fast forward and use the popout windows for managing advantage/disadvantage and crit/normal or you can rely on midi's automation to guess at what the roll should be and/or use the keybindings for advantage/disadvantage
turn off fast forward works to me, ty again
keep in mind theres 3 places you need to adjust fast forward. The abilities/saves setting outside in main midi menu settings and then the player/DM tabs in workflow for attacks as well
Greetings 🙂 has anyone played a class with a toggled feature and can speak to how well they automate? Astral Monk lets you use your WIS modifier instead of STR for Strength checks and saves, and I'm curious if that can be automated
This is very very close, and already better than what i had so thank you
The only issue is that when it expires it doesn't automatically reapply at the start of the turn.
Now i'm wondering if i can make an effect that applies it at the start of every turn...
Yes you can.
What Lukas showed will make a macro execute at the start of the combatants turn. In that macro you can add the displacement effect again if not already present
This is the macro I use to add the effect when needed. Mind you I have created a DFreds CE which handles the relevant part of disadvantage MidiQOL flags. ```js
const lastArg = args.at(-1);
const uuid = lastArg.tokenUuid;
const hasEffectApplied = game.dfreds.effectInterface.hasEffectApplied('Displacement cloaking', uuid);
if (args[0]==="on" || args[0]==="each") {
if (hasEffectApplied) return;
else return await game.dfreds.effectInterface.addEffect({ effectName: 'Displacement cloaking', uuid });
}
else if (args[0]==="off") {
if (!hasEffectApplied) return;
else return await game.dfreds.effectInterface.removeEffect({ effectName: 'Displacement cloaking', uuid });
}
A DFreds CE named Displacement cloaking in my case
I made a CE called Displacement
Just editing the name in that macro doesn't do it i'm afraid
You need to create a DAE on the Cloak of Displacement item. Something like this
Then the DFreds CE should be something like this
Yeah, i made it by editing a copy of Dodge to figure out how to make disadvantage work
Is there a way to make the midi QoL damage cards visible to players?
The GM card is only visible to the GM.
There is an option to show a Player's damage card in MidiQOL settings => Workflow settings => Workflow tab
Play around a bit to see if any of the options do it for you
The Show a players' damage card should do exactly that
Choose show player and npc results
Hello.
@drowsy crow const damageDealt = args[0].damageList[0].appliedDamage
You can use that as a script macro, called by the onUse MidiQOL field, After Active Effects
Actually, what that does is show a damage card when a PC gets damaged. In fact i have it on by default.
I always go for showing everything whenever possible
I do not recall any options to make the GM card appear. A macro could do it by changing that to be visible to all after it is created
A world script to be precise
Hey, I have a questions. I have Midi QLL and was wondering is there a way to keep things automated, but make it so when you click the attack button it first gives you query for Advantage/Disadvantage? Cuz currently that doesn't seem to be an option, even in the workflow.
I think if you hold T before a roll that comes up (maybe?)
If it's not that, check keybinds. There might be an option there. Otherwise someone else is gonna need to pick up helping cause I won't be near my PC till Sunday
Fair enough!
Oh I misread. Yeah, so what Mythano showed
The T is for if you have those checked, and dont want to auto fast forward. If want off all time, then the screenshots 🙂
oOooh! But then does it automate anything else if it doesn't automate rolls?
(I dont automate rolls, or damage, so couldnt tell ya ... but guessing it will still work, just requires player input before carrying on)
I set checkboxes as you showed, but it still doesn't allow for it and simply creates this kind of box. Is there a way for it to not make a box and just immediately give you a pop up which allows you to choose Adv/Dis?
Or are there any other rolling modules that could simplify it that way?
Well if you have those boxes checked, you could hold alt (adv) or ctrl (dis) and it'll do that accordingly
If you wanna go the route of another roller module, then you can't use midi
^
Although there are v9 modules on that list so do research first
Alright, will go check it! Thanks!
What all do you use midi for?
Mostly for some small neat things like concentration tracking more neat rolling, bleeding effect and thats about it.
Still kinda new to VTT
You want "auto roll" ON, but "fast forward" OFF.
This will give you what you want
Alright!
Yes!! Thats what I was looking for!!
Thanks!
I know this has been asked a bunch of times but what is a good way to do artificer infusions? I gave my player a +1 shield to emulate one of them but is there a drop down menu macro floating around? Foundry v10 D&d 5e, dae, times up, Babonus, CE, item macro installed
So just +1 to AC?
Well he has 3 infusions I’ll message him and find out
Sounds good. Don't post the full description of the infusions since they're not srd, but just the jist of them
Ok thanks
I create an item for each infusioj and mention in the title whether it is currently "active" burt honstly its a tough one to do well
Yeah, I have an artillerist in my game. Fortunately he's picked easy ones so far
And the hard ones we just do manually
you could use macro.createitem for this pretty well. Have the infusions setup as trinkets that are equippable. When equiped the infused magic item appears in inventory, when you unequip it poofs.
if you can get a macro guru to work on it you could make it all a dialog item macro single item
is it possible to customise the template flags after placing template in ItemMacro? ie after calling AAhelpers.applyTemplate(args); and then do something like this.effect.color=0.5 ?
What is this supposed to do?
Modify the template appearance so it's not red and maybe vision settings too in the case of darkness spell.
You can get the last template placed with canvas.templates.placeables.at(-1)
Midi args also has the template ID in it
Mainly not sure how to modify it
if you have the template you can do something like ```js
await template.document.update({fillColor:game.user.color})
Not exactly. fillColor:null defaults to black iirc
You will need to turn the highlights off
You can also remove the fx flags if that's what you're aiming for
I'm just trying to think of a way to achieve the tmfx setting we all want but can't use due to automated animations and tmfx animations looking ugly when combined
Remove the tmfx flags
wouldn't that also stop the hover thing?
¯_(ツ)_/¯
yeah I think we just have to wait and see if Otigan manages to figure it out for AA
Try this @vast bane ```js
canvas.grid.getHighlightLayer(MeasuredTemplate.${canvas.templates.placeables.at(-1).id}).visible = false;
If you reload it will be shown again though
I'm up to my neck in a levels map making project I can't fiddle with it now lol
I told myself I wouldn't do this ever again but here I am 800 walls in 7 levels made.
Hello I'm having this error from a macro like this, the second item that the mixedItems.obj_secondItem reference is a flag that has a duplicate of an item that no longer exist, I think that's why I'm getting this error but idk how to make it work regardless.
let lastArg = args[args.length-1];
let mixedItems = args[0].itemData.flags.dae.originalMixedItems;
let targetUuidsArr = [];
console.log("\n\nMIX, mixed items =>", mixedItems);
if(lastArg.item.system.save.ability){
if(lastArg.failedSaveUuids.length === 0) return;
lastArg.failedSaveUuids.forEach((targetUuid) => {
targetUuidsArr.push(targetUuid);
});
}
else{
if(lastArg.hitTargetUuids.length === 0) return;
lastArg.hitTargetUuids.forEach((targetUuid) => {
targetUuidsArr.push(targetUuid);
});
}
if (targetUuidsArr.length === 0) return;
const options = {
showFullCard: false,
createWorkflow: true,
targetUuids: targetUuidsArr,
configureDialog: false,
versatile: false,
workflowOptions: {}
};
const item = new CONFIG.Item.documentClass(mixedItems.obj_secondItem, { parent: actor });
await MidiQOL.completeItemUse(item, {}, options);
The key the error reference is the key of the obj_secondItem in question btw
I get that error all the time with active auras and its just telling you that its trying to do something to a nonexistant document
Doesn't it need to be an object for it?
I've made it work with simple objects before via CONFIG.Item.documentClass
What are you trying to do? I've never seen the original mixed items thing used
I'm trying to mix together two items, the second one is destroyed when creating the mixed item and the duplicate is stored in a flag inside the first one, then I do that
is it like the EGW magic items that evolve?
I don't know what that is sorry
Magic items that gain in potency as you accomplish things for them
The vestiges of divergence from Explorer's Guide to Wildemount
Sorta I guess? It's more of a feature that combine the effects of two different weapon items
Like idk I have Alchemist's Fire mixed with an Acid bottle that deals 2d6 acid damage
So I mix the two items and get an item that has the active effect of Alchemist's Fire plus the damage of the bottle of Acid
that's why I use await MidiQOL.completeItemUse(item, {}, options); to roll the second item
But idk why it doesn't work CONFIG.Item.documentClass(mixedItems.obj_secondItem, { parent: actor }); worked with objects that I created inside the macro, so idk why it doesn't work now
Maybe mixedItems.obj_secondItem isn't an object? How do I make sure?
thanks that works and I worked out how to set perfect-vision to block sight as well. Here's an ItemMacro in case anyone needs it. Requires perfect-vision and tokenmagic and maybe active auras too?
`if (typeof args !== "undefined" && args[0]) {
if (args[0].tag === "OnUse") {
// set up template effect
AAhelpers.applyTemplate(args);
await this.templateData.document.update({
borderColor: "#23ff17",
fillColor: "#6ba36c",
texture: "modules/tokenmagic/fx/assets/templates/black-tone-strong-opacity.png",
tmfxPreset: "Smoke Filaments",
tmfxTextureAlpha: 0.35,
tmfxTint: "#68b064",
flags:{'perfect-vision':{sightLimit: 0}},
});
//console.log(this.templateData);
}
}`
Need help trying to get a weapon to function in a particular way. I have created this magical weapon for one of my players. 3 times per day, she can activate it when attacking to add the following: Chill the target, (basically reduces movement speed by 50% and imparts a -4 to hit when they attack next)...these apply for only one round of combat. I've successfully created the active effect and added it to the weapon. What I WANT to do, is now only apply that active effect if the user wants to, and if so, reduces the use count by 1.
As it is now, it applies the active effect every time she hits with it. I tried to go into the Details Section on the weapon and indicate Limited uses to 3 per day, resets daily. But Cant seem to get it to no apply the effect automatically.
Any help/suggestions on how I should be handling this will be greatly appreciated! 😄
sounds like an optional macro setup to me but I'm not sure exactly how to do it atm
its in the readme though
the modification to movement speed you probably want to set higher than the default priority cause alot of modifiers to movement speed are out there in ae's.
My issue with these sorts of things is that it prompts every time they attack, I personally would just make them document links in an advantage reminder cause I don't fast forward
I don't do optionalname macros cause when you don't fast forward you are literally adding another prompt to the workflow and people don't like too many popupls in workfows
👍 I'll check the priority I used, but the AE is working great when applied. I just don't want it ALWAYS applying.
you need it to be an optional.name.macro key kinda like the premade for indomitable, look them up in the readme its pretty easy to setup
I guess, I can either keep just removing the effect, or create a Convenient effect that applies the effect and manually add it when she indicates she wants to use one of the uses.
or look up bugbears divine smite
I'll take a peek.
I dunno if midi's divine smite premade is an optional name macro
I'm having trouble trying to apply multiple effects but maybe it's because Overtime breaks that?
Only the last Effect in the list applies to the token.
This is what indomitable looks like @astral wren
this is obviously not what you want but its similar, find the section in the midi readme for attack modifiers and you can use this setup for that instead
this is apparently a bug or limitation but I think you can pull it off if you set one of them to macro.ce instead of statuseffect. You could also combine them into a singular effect with all the keys and call it Blind and invisible
I didn’t know all this. I have like 21 errors. But I’m a full year into Curse of Strahd and the idea of reinstalling things and possibly breaking stuff in the process is daunting.
if they aren't content modules they likely have a v10 sitting there, I don't think you lose anything if you uninstall/reinstall but you can also go to the foundry page for the module and right click the module.json link and paste it into the field at the bottom of the addons menu to manually install it over the funky v9
its very rare that a v9 module is functional in v10 but they do exist
I can count mine on one hand
Mobile Improvements, Jb2a, and Touchvtt
something like this workable?
The templates are weird. You can completely destroy the Highlight layer for them, but they'll always return on a refresh
I use “Update All” on my modules so they updated after I switched to v10, but throw a lot of console errors. I can’t tell if anything is broken - stuff seems to be working. But it is really unsettling, there are probably lots of bugs in my setup.
the update button does not work for many modules that are sitting on v9 branches you have to manually google their module page on foundry and check if they have a v10, and either uninstall/reinstall or copy the newest v10 url link at the bottom of the page and paste it into the manual install field in the add on menu
Okay I’ll do that housekeeping some day soon.
Thank you for the tip.
Its not that the modules are broken, its that the module authors kept functional v9 and v10 branches and there were issues and now folks have to manually bump everything over to v10
I considered just making a new clean Foundry game world and starting with all good stuff. Over the past year j have installed and uninstalled dozens of modules.
When I updated from v9 to v10, I did not copy over my module folder, instead I used that folder as a list to install the v10 versions
But I’m worried my characters will lose their inventory and all the monsters and feats and macros you and others have helped with…
and I had absolutely no problems at all cause of this
I can't tell you what can and can't happen, but that stuff sounds like it could easily be solved by simply backing up before you update
you should be backing up constantly anyway
I back up weekly
And okay weekly.
(Play)
Yeah. I’m nervous about losing all kinds of tweaks I’ve made. Starting fresh is appealing and scary.
That’s really impressive! The feature we’re all missing in v10 though is the TMFX ‘only show template grids on mouse hover’ setting. For instance, that way we can have the cool A-A/JB darkness animation going for that spell, but you can mouse over it to see the exact grid squares that are affected. That’s how it used to be in v9
It’s really for templates that have a duration and you’re navigating around them
Yeah it's a crazy walk trying to get the on-hover effect to show the highlights
SecretFire is a magician for sure. Did you peek at their code? I’m not sure what’s broken now
I mean, ultimately if wecould just get Secretfire to untether the setting from the template images that'd work
the only reason why we can't use it is cause the AA animations play on top of the tmfx graphics
Howdy. I'm trying to get False Life to add temporary life to my character sheet but the spell is acting funny. I think it's got something to do with a couple of automation modules my DM has installed, one of which is MidiQOL. Would this be the place to ask?
Temp hp and hp in general must be done via a macro because active effects should never be used to modify them as they constantly undo any damage done to the actor
Actually false life doesn't even need any automation
It just should work, the only time it doesn't work is when you have dfreds CE installed
because dfred made the mistake of automating it via an ae I think
I have exactly that installed lol
So when you roll the item in midi midi might be trying to apply the CE
(DM)
On the false life spell, there is a checkbox for apply ce
temp hp should be setup like my image and it should just put the temp hp on the actor just fine
Awesome, thanks! I'll try that rq
I personally also put a blank AE in the item
and I just remove the ae once they lose the temp hp, you could probably get an effect macro to turn it off when the actor loses all temp hp fi you were really wanting it automated perfectly but I don't care for it and just do it manually
Thank you so much
I have it working now. Disabling CE for the spell fixed one of the two issues, and the other issue (the level scaling healing me instead of adding to +Temp) by moving the level scaling formula of (@item.level - 1) * 5 from the Level Scaling box directly to the Healing Formula box. Now it seems to be working just fine.
It should work as is, do you not have a damage formula in it?
I think if you put the formula in other it won't use level scaling
It did not originally work as is. The Level Scaling formula was adding to my health instead of +Temp (i.e. level 7 would give me 30 health instead of 30 additional +Temp), but moving that to Healing Formula fixed it.
I can give more examples if needed, like what my character sheet looks like before and after a roll of the original spell sheet for False Life.
Yeah I'm just not seeing that in my world but if it works then great!
you don't have CUB installed too do you?
That'd be a question for @rigid trail, my DM.
I don't believe so
Combat Utility Belt
Oh, no
or does it have a macro in it
Regardless, JS do as JS does.
I've only been casting from my spellbook on my character sheet, so whatever macros are involved in base spells scraped from DNDB
how you guys are doing it is totally fine, its just tingly that its not working for you the normal way when it does for me, so I was just concerned that you had some sort of other issue going on that might creep up on you later is all
Yeah it's definitely a little odd
It's a new install and game setup, and I'm new to Foundry, so I'm sure we'll have to make adaptations as things come along
Thanks for this. I don't know enough to understand how this works, but after executing the macro several times, I don't see a way to turn off the effects so now each time I attack the token with Sanctuary enabled, the effects are cumulative in that every attack results in multiple d20 wisdom save rolls for a single attack (equivalent to the number of times I executed the macro). How do I reverse the effects?
I don't fast forward rolls so I setup my sanctuary to utilize the module Advantage Reminder instead and it prompts a message everytime an aggressor targets and rolls attacks or damage on the target
I do like that solution, thanks. I have not used that module, I will check it out!
It's a world script
You shouldn't be running it from your hotbar
Or as an item macro
Thanks, I am still new to Foundry and not a programmer, so I didn't know there are such things. I will do some Googling...
Yeah, as long as the hooks aren't the really early hooks on server startup, the worldscripter module is honestly a better setup for them cause they shut off when using find the culprit which is helpful
specially for us with our automation shennanigans
So that worked pretty sweet! Thanks again for the effort. 8-)
Thanks for your help as well!
I run a pretty heavily automated game and there really isn't many people using midi hooks.
Also the setup you quoted me from is dated. Iirc you don't need the spell dc in the effect anymore
Just an empty effect is all
Hey guys,
Not sure if this is specifically a MidiQOL issue, or a times up issue, or an about time issue... but theyre all tposney modules, so I thought it may be a good place to ask.
My issue is.. Since updating from v9 to v10.291 (DnD5e 2.0.3), and updating the modules to their latest versions for 10.291, none of my active effects count down in real time.
They DO countdown in combat as turns/rounds progress.. but no longer expire in real time.
Ive tried uninstalling and reinstalling the modules, ive tried to go through the settings with a fine toothed comb, but I can't find anything,
Any ideas?
what version of simple calendar are you on and don't answer with "The Latest"
😆 2.1.60
ok well I believe simple calendar controls the time flow if its installed
if its not playing then time won't go down and you can adjust its settings as well
Ok cool, ill have a look at that too. Didnt think to look at that
It was simple calendar, thanks a lot
There is a known issue though that effects initiated during combat won’t expire as they should when normal time is resumed
I don't understand how the word script module works, I installed it but it doesn't seem to do anything, my question is, should the scripts be placed in the hotbar or as a macro item?
the module has no description of what it does, I can't interpret exactly how it works
The world scripter module?
The macros should go into its compendium folder
Is there a way to avoid MidiQOL.completeItemUse to untarget the target once the item is rolled/used?
Like in options or something?
What are your options for untargeting in MidiQOL?
yes I put them there, but then I start not understanding how the macros will be executed
Once the turn ends
Better to ask in #513918036919713802 as that's not midi qol specific.
But you will need to re load your world after you add something in the compendium
isn't there a way to prevent this regardless of midiQoL's options? like with the command itself or something?
👍
I don't recall something relevant.
You could update the targeted tokens for the user though
got a rudimentary implementation in
What do you mean?
game.user.updateTokenTargets([Array of IDs])
And this will auto target?
Might need more context on what you are trying to achieve
But yes this should auto target the tokens you provide IDs for
I'm mixing two attack items together and rolling the second one with MidiQOL.completeItemUse
The problem I'm having is that there's another macro which act as a damage bonus that use MidiQOL.completeItemUse with the same target
That gets untargeted because of the first item so when the second one is rolled it can't find a target
I tried late targeting but it doesn't trigger for some reason
You can provide the target uuids to the complete Item use function
I do
But if it gets untargeted then that array is empty
since those are different macros that run at different times
Not sure why that would untarget the user's targets
I know right?
Do you want to share the macros?
Or you could grab the targets from the 1st one and set them in a flag
Then in the second macro target getting the ones from that flag
I don't think I can since those are two different features that don't always trigger together
it's a damage bonus that happens only when you roll max damage
with the dice
I think what you gave me with game.user.updateTokenTargets([Array of IDs]) could work tho
can the IDs be uuids?
Not sure as I cannot check rn. Type the function in the console and check what it needs
Okay thanks will do as soon as I am on my pc
It wants target Ids which aren't uuids I suppose
I think it needs actual token IDs
Yeah makes sense
It's really weird because normally it doesn't untarget the target but when used with the other feature it does
So the issue lies there. Something un targets in your procedure
Do you draw templates or something like that?
This is the only part of the macro which works with targets:
let lastArg = args[args.length-1];
let mixedItems = args[0].itemData.flags.dae.originalMixedItems;
const secondItem = mixedItems.obj_secondItem;
if(lastArg.hitTargetUuids.length === 0) return;
const options = {
showFullCard: false,
createWorkflow: true,
targetUuids: lastArg.hitTargetUuids[0],
configureDialog: false,
versatile: false,
workflowOptions: {}
};
itemData = {
img: secondItem.img,
name: secondItem.name,
type: "weapon",
system: {
actionType: secondItem.system.actionType,
activation: secondItem.system.activation,
damage: secondItem.system.damage,
target: secondItem.system.target,
source: secondItem.system.source,
weaponType: secondItem.system.weaponType,
range: secondItem.system.range
},
effects: secondItem.effects,
folder: null,
flags: secondItem.flags,
};
console.log("\n\nItemData =>", itemData, "\nSecond Item =>", secondItem);
//let item = new Item.implementation(mixedItems.obj_secondItem, { parent: actor });
let item = new CONFIG.Item.documentClass(itemData, { parent: actor });
await MidiQOL.completeItemUse(item, {}, options);
It's a world macro that the second item receive as a OnUse macro postActiveEffects
I think the problem could be lastArg.hitTargetUuids[0] but I'm not super sure
Pass it a specific actor.Uuid as the target. Does it work then?
Okay for some reason it was lastArg.hitTargetUuids[0]
I tried passing the whole lastArg.hitTargetUuids array and it works
Probably because targetUuids wants an array now that I think about it
OK you were passing only one with the [0]
Didn't do anything but you are welcome 😅
Well you helped me think that's not nothing!
👀 That looks nice!
Ok I'm happy with this. Basically made the TMFX setting apply to all templates, made it a Boolean setting. Requires the Hover setting in TMFX (if active) to be disabled so I don't step on toes.
Is this part of AA now? 👀
it will be on the next release
should resolve the conflict with Midi and A-A when A-A is deleting templates. Now you can just not delete it
My player Artificer has these infusions - Enchanted def., magic item gleaming plate, mind sharpener
What do they do? Also I don't know how much I can help. Not home
Enhanced defense = +1 on a shield or armor, +2 from level 10
Magic item = Creates a temporary common magic item of your choice
Mind sharpener = 4 charges, spend a charge and reaction when you fail a concentration check to succeed instead. Regains 1d4 per day
Those are all things that I would just create as an item. Nothing particularly fancy needed.
Except the last one. Macro territory
Absolutely brilliant, thanks so much!
The last one could be an optional bonus effect, targeting Constitution saves with the asterisk for the player to use only in case of the save being a concentration one
A macro triggered by the same optional effect could take care of the reaction used etc
Not worth the effort. You don't know whether you need to use it until you've already failed. I just made a 4 charge item. If they lose concentration they can just recast or something
Losing concentration might be a real PITA in some cases.
I mean when one shouldn't
What value should I be setting for flags.midiqol.advantage stuff? I know it needs to be set via CUSTOM or OVERRIDE, but not what the value should be.
Usually just 1
It's binary so it's essentially saying YES as opposed to NO
Or On/Off
It also takes evaluations of true so you could do any of the activation conditions in that field too for use cases
I think midi sample item chill touch is an example of it
OK, thanks!
You could have shocking grasp buff self with advantage if the target has any equipment named plate/scale/chain
What about Shields made of metal ? 😄
do those count?
I think the spell says Worn
you equip shields not wear them
Care to write that conditional for me 8)?
actually it would have to be an item macro pre item roll
token.actor.itemTypes?.equipment?.some(i => i.system.armor?.type === "shield" && i.system.equipped && i.system.description.value.includes("metal"))
😛
can I have line 2 have multiple keywords incase metal isn't there?
Now if the description includes metal or not, or both metal or wood its up to you
It's just 1 line. If it includes metal it will return true, otherwise false. Overdid it with the optional chaining, but should be safe enough
What else should be there?
["iron","steel","metal"].some(mat => token.actor.itemTypes?.equipment?.some(i => i.system.armor?.type === "shield" && i.system.equipped && i.system.description.value.includes(mat)))
thats enough for me to work with thank you very much!
I have a damage bonus macro and I want it to work with crits, I know how to do so, but what if someone use a different set up for crits like max dice damage or *2 etc etc, is there a way to detect that?
You want it to work when the attack results in a critical?
Yes
args[0].isCritical should be true when its a critical
Yeah that's not the problem I have, I know how to check if it is critical but what if I'm using a different rule set?
(I'm making a module so I can't know what setting the user will have)
What if they are using *2 damage instead of the additional die
Why would that matter? MidiQOL will flag an attack roll as critical no matter what the rule set used is
Probably I do not understand the actual issue 😅
Ohhhh no no you got it
So I can make it critical without modifying the actual roll
But how to I set it to do so?
Wait maybe I'm misunderstanding I feel like I'm missing something ahah
OK so lets back up a step or two.
If an attack roll is a Critical, MidiQOL will flag that by setting the args[0].isCritical to true
Okay yeah I remember that yes
Do you want to force an attack roll to be a critical?
Yes
Since I'm working with a damage bonus macro
And said bonus if the original attack is critical it's also critical, which damage bonus macro doesn't do by itself
The damage bonus macro will be triggered by an actual attack. In that macro you can access the args[0].isCritical. Then you will need to construct the new Dice for that damage.
Let me grab an example if I can find
Okay yeah and that's what I wanted to do, but that I thought "What if the setting for critical hits aren't number_of_dice * 2 ?"
and you want to create a generic one-size-fits-all macro that works with all crit settings
Yes
const maxDice = game.settings.get("dnd5e", "criticalDamageMaxDice");
const multMods = game.settings.get("dnd5e", "criticalDamageModifiers");
Hah, oh yeah, just let the system handle it by creating an actual DamageRoll, not a regular Roll
Okay thanks a lot!
thanks, macro.ce worked.
on the slim chance anyway used this, it had some more problems.
another version of my Cloudkill.
- with sight blocking via template vision limit (3feet to allow players to see edge and simulates thinner fog for nearby etc.. um yeh)
- green template grid + token magic FX, for fun
- Blindness and Invisible condition while inside template, because of spell's "Heavily Obscured" status
- damage effect uses a weird EffectMacro at start of turn calling an end of turn Overtime effect with removeCondition to work around all sorts of NPC/PC differences and only run it once per current turn. + expire on move + expire end of turn just to ensure it goes away.
- lots of testing, it wont roll damage out of turn and wont damage twice as far as I can tell.
How would I go about setting up a non-reaction, 'attacker takes damage if they hit me' feature?
There are various ways.
Do you use reaction automation in MidiQOL?
yep
Easiest way is to create a feature or weapon with an activation cost Reaction damaged (with 0 as the actual cost if you want to do that no matter if you have a reaction or not), put in the damage and have the player target the attacker and roll it
MidiQOL should prompt for reactions automatically
I don't suppose this is for AoA?
AoA?
Armor Of Agathys
Ah - no, it's for a Prickly feature on a homebrewed needle blight
As an alternative a wordscript and midi hooks can handle it too if it's something that will happen a bunch and doesn't take your reaction. Less easy to setup than bugbear's suggestion however.
Doesn't seem to work
((Yeah based on the level of automation wanted you can make it just happen automatically)) that's for Justin
Share what you have?
Yes just a sec
Here it is
let isCritical = !args[0].isCritical ? args[0].damageRoll?.options.critical : args[0].isCritical;
What is this supposed to to?
You can just use let isCritical = args[0].isCritical
Check if it is either a critical hit or if it was set as critical, because args[0].isCritical is true only if you roll a nat20
Don't you use critical threshold?
What would be another case of a crit which the args[0].isCritical wouldn't catch? 🤔
idk I think I don't
I've never had isCritical not be accurate for me
I don't know what to tell you
OK just to be safe console.log(isCritical) to see if that returns what you need when you need it
isCritical for me is true only when you roll a critical with the dice, undefined if you press the critical button in the damage window
ohhhhh
Done that and I observed what I told you just above
Ah
Different degrees of automation... 😩 😄
Besides I tried rolling a 20 and even in that case it doesn't work
Actually surprising that midi doesn't catch that
I haven't checked so not sure 🤷
That seems weird in that case
Agreed
It does, it's just stored in a different section
That's why I did let isCritical = ...
A 20 should show as a crit unless you're targeting someone with adamantine armor that has the right midi flags set on it
I don't know what to say, it doesn't work
The macro I liked doesn't return a critical damage bonus even when rolling a nat 20
So will need to dissect the macro. Did you console.log all the variables?
Pretty much yes
I think the problem is
const damageBonusResult = new CONFIG.Dice.DamageRoll(`${diceBonus}[${damageType}]`, args[0].rollData, rollOptions);
Because everything else has the value I expect it to have
it usually has something like "1d6"
It gets the dice with the higher face value from the formula and adds it as a damage bonus
The only value that isn't what I expect is damageBonusResult which will always be essentially equal to ${diceBonus}[${damageType}]
Which when isCritical is true, should not happen
at least in theory, that's why I think CONFIG.Dice.DamageRoll(`${diceBonus}[${damageType}]`, args[0].rollData, rollOptions); doesn't work
If you use only this ```js
const rollOptions = args[0].damageRoll?.options || {critical: args[0].isCritical};
I tried but again it didn't work at the time
I will give it a whirl later that I will be on my PC
Okay ty
I feel like your or if in the wrong spot there
mine?
Bugbear's
oh okay
Maybe I haven't tried it. I just used an example from Elwin
I would just go with is critical or roll options critical
Tag me when you do so, I have notifications off here
That's what I did basically
Verify that your variable is true?
What? if you asked if isCritical is true then yes it is
At least the one I made, it checks both critical and roll options critical if they are true, it works
everything about the macro checks out the only thing that doesn't have the right value is
const damageBonusResult = new CONFIG.Dice.DamageRoll(`${diceBonus}[${damageType}]`, args[0].rollData, rollOptions);
which doesn't become critical
the macro I'm referring
I've never used the config.dice.damage roll to make a roll so I'm not sure what's wrong there
mhmm I must say that I just copied the example I was given, so I don't actually know if it does what I was told
straight up ${diceBonus}[${damageType}]
No sorry it's not true
damageBonusResult = new CONFIG.Dice.DamageRoll(`1d6[slashing]`, _token.actor.rollData, {critical:true})
in console this works fine
damageBonusResult.formula does output that
Let me see
Sorry I don't understand what you mean by that
Is diceBonus something tangible?
damageBonusResult.formula should return the actual dice formula
2d6[slashing]
for example
I do return damageBonusResult.formula, but it's always "1d6"
Also I use the max die for crit so 2d6 as output isn't what I'm looking for (which I checked it returns it in my console too)
OK so the error should be here ```js
const rollOptions = !args[0].damageRoll?.options ? {critical: isCritical} : args[0].damageRoll.options;
Is there a setting that allows for the damage card to automatically be displayed for all players instead of right clicking and choosing "Reveal to Everyone"?
What's the problem with it?
Also yes the problem is that, I tested to just put {critical: true} and it works, problem is that as I said it rolls "2d6" where it should be "1d6 + 6"
The formula will be the same no matter which option for crit is being used. Tested on mine too.
OK let me try to replicate
So there's no way to make it work with different settings of critical hit?
Give me 5.
I suppose you mean 5 min, don't worry take your time
OK now I started to remember... #1010273821401555087 message
Take a looksie here
and here #dnd5e message
You will need to make sure you've got the right rules
So there's just no way to do this?
Or at least not with that command
So I need to check in which rules I am in right?
There is. Use what Zhell shared before and add them in as parameters 🤔
Yes I'm looking at it right now, thanks!
For reference ```js
const maxDice = game.settings.get("dnd5e", "criticalDamageMaxDice");
const multMods = game.settings.get("dnd5e", "criticalDamageModifiers");
const baseDice = Math.ceil(rogueLevels/2);
let rollFormula = `${baseDice}d6`;
if (isCritical) rollFormula = new CONFIG.Dice.DamageRoll(rollFormula,"",{critical:true,multiplyNumeric:multMods ,powerfulCritical:maxDice}).formula
so combining both something like this should do it
Aren't there more option than multiplyNumeric and powerfulCritical tho?
Probably this needs to become the new norm for shared macros (bonus damage macros especially) if it works alright
I think tposney had this on his radar, to just update some of the items in Midi sample items
I got the options directly from args[0].damageRoll.options
No need for this
Yeah makes sense if they are in there! That's why Elwin shared that initially
It has all the info in there
yep! I think they just messed up little things up the way
Alright if you want share your final solution so it can be searched and shared in the future 💪
Yeah! Just a moment to tidy it up
Here it is, it works, just don't plug it in stuff without modifying it a bit, since it has some special cases that work only with other features inside the actor
Nice! I can see the extra MidiQOL specific critical rulesets, so that is a really good example to share.
We can yoink just the new CONFIG.Dice from in there and disregard the rest
Yeah! glad I was helpful! Hope someone can find it useful
Also a word of caution. It seems that you are using Advanced Macros, correct?
If you are not using that module, declaring token, actor, character, speaker iirc will result in an error, as they are already declared.
I do use advanced macros
I don't usually do that thanks, I don't recall why I did that here
Maybe I found the framework somewhere and didn't edit out those declarations
From @rancid tide's work, a small example of how to take care of different critical rule sets when creating a Roll for a DamageBonusMacro.
const isCritical = !args[0].isCritical ? args[0].damageRoll?.options.critical : args[0].isCritical;
const rollOptions = args[0].damageRoll.options;
const damageBonusResult = new CONFIG.Dice.DamageRoll("1d6+@mod[slashing]", args[0].rollData, {
critical: isCritical,
criticalBonusDamage: rollOptions.criticalBonusDamage,
criticalBonusDice: rollOptions.criticalBonusDice,
criticalMultiplier: rollOptions.criticalMultiplier,
multiplyNumeric: rollOptions.multiplyNumeric,
powerfulCritical: rollOptions.powerfulCritical
});
return {damageRoll: damageBonusResult.formula, flavor: "Extra boom boom"};
Should be working with and without fast forwarding damage rolls.
Heya, did you find a way to have gnome cunning only apply when targeted with a spell that causes the save roll, rather than at all times? (Or are these cases so rare it's not worth thinking about?)
Hi, can anyone help me set up a chaos bolt with some automation? I've searched around and found two different .js files for chaos bolt, but I don't know what I do with the script in order to make a spell in a token's spell list 😅
Pretty sure V10 of midi has a magical resistance flag now
Per save type
Actually that screenshot should be accurate
That is my v9 Chaos Bolt.
As an ItemMacro MidiQOL onUse ItemMacro | All
Will update it to v10 in the near future (should be working fine though in v10)
I updated Wasps original chaos bolt for v10
Works exactly like the one from ASE
In the on use macro field add ItemMacro
Then make sure the macro is pasted into the item macro on the item
(SD card icon in the title bar)
for brevity, "item" in this context is anything in a character sheet such as items, features, spells etc?
Yep
You'll also want to change it to run after active effect
Not all
Based on your screenshot
If i wanted to have an effect only trigger on a medium or smaller creature, how would I do that with midi's activation Condition field?
for instance, an attack also grapples a medium or smaller target.
Thanks Chris, it sort of works now. but it seems to be doing a lot more damage than I think it should
Screenshot it?
Try something like ```js
["lg","sm"].some(s=>target.traits.size.includes(s))
The spell itself has no active effects
*whyyyyyy???? What did that lonely bugbear do to you 😭 *
I've only had my chat card look like that when the ddb importer left a bad v9 item macro still in it
The bugbear killed a PC in the previous session, new character has chaos bolt
bugbear appeared with a surprise, crit the wizard and did 40 damage, killing him instantly
That's more like it 😄
yeah my chat cards usually don't look like this scrunched up
Another thing, I use dndbeyond importer because my players like to use dndbeyond to make and maintain their characters. if I get this spell working now, how do I prevent it from being removed the next time the player updates their character via dndbeyond?
I can remove my description and export mine later tonight
Click the DND beyond icon on the title bar
Then check ignore
wow that easy huh
Just getting to work now, but if you're still around in ~8 hours I'll have an export
hm. that doesn't work. Applying the grapple regardless of target's size.
I thought it might be target.system.traits.size.includes("med"|"sm"|"tiny") but that doesn't work eithewr
hm I changed the action type from ranged attack to nothing, now the chat card looks as it should, though the macro section of the spell disappeared 😟
Try to change it to utility
yeah that seems to have worked fine
excellent
Do the rest of these macros in that github repo also work for v10?
They do, but I've kinda been bad at including install instructions
On my to-do list
test again without the .actor.system
Edited the initital one
["lg","sm"].some(s=>target.traits.size.includes(s))
hm. nothing seems to be working. I'll just do this manually.
Do you check the box, apply effect only if activation condition is true?
I will test in a bit if that is not doing it
FFS
i totally forgot that.
jeebus. It works fine WHEN I CHECK THE RIGHT BOX. Thanks for your help!
final condition was ["med","sm","tiny"].some(s=>target.traits.size.includes(s))
Is there a compendium of item macros for various spells or do I just have to practice my google-fu?
Discord-fu
Searching here best bet
Various repos all around, but nothing centralised as of now.
MidiQOL sample items.
MASIF module.
Midi SRD (to some extent)
@violet meadow if i wanted to check for a condition to apply an effect (or other damage?) would this work? ["Grappled"].some(s=>target.data.effect.label.includes(s))
Array.from(workflow.hitTargets)[0].actor.effects.find(eff=>eff.label==="Grappled")
For automated flanking with midiqol, are there any preferred systems outside of DFreds? Haven't been able to get that to work together at all.
Strange. They do work really well together. Have you checked the options in MidiQOL settings => Workflow settings => Rules?
Yeah, I've been trying to get them working for a couple hours now. It doesn't seem to apply the flanked effect when two tokens are in range.
The tokens must be directly opposite each other, not just in range
Even opposite of each other doesn't apply the flanked effect to the enemy token
I'm experiencing a bug where if you have "Require targets to be selected" set to "never" , but have "Auto check if attack hits target" set to anything other than "none" , nothing will roll without having a target selected first. I'd like to be able to auto check GM hits, but not force players to use targetting as several of them dont like this functionality
If you want the Flanked effect on the enemy, change the option to CE Flanked
I use this one
Perfect thank you.
Thanks, that seems to work. Weird that the other options do not for me. Guess I'll be using that variant as well.
Just keep in mind that this will get the 1st hit token to check. If more than 1 targets it will not be representative
That’s ok. It’s a single target attack
The other ones should give advantage on the attacker's roll. If you dont fast forward attacks, at most it would highlight the Advantage button.
Thanks for the assistance, really appreciated
Can you send me your MidiQOL settings?
I can try to reproduce. Versions of MidiQOL, system and Foundry?
where is the export settings button? i've only just come back to foundry after like a year and a half lol lots of new stuff
MidiQOL settings => Workflow settings => Misc tab
ah it was at the top, i was looking at the bottom lol i knew i saw it in there
Hmm actually uncheck the Roll a separate attack for each target and try again
hm, that works, but it still seems like an unintended effect
Might be. Worth an issue in the MidiQOL git for tposney to take a look and chime in.
I can understand it to hang with that new-ish feature. Cause to work it takes for granted that there is a number of targets and it fails otherwise
Probably something that tposney didn't consider as an usecase at the time
yeah, seems like an easy enough fix though, just a simple if statement to check if targets are required. I'll post an issue in the git
I'm trying to get Guidance working with tools, does anyone have any guidance for me on that?
who wouldn't want guidance when disarming traps or opening locks...?
Hooks.on("dnd5e.preRollToolCheck", (item,options) => {
const tokenRolling = canvas.tokens.get(options.messageData.speaker.token)
const hasEffect = tokenRolling.actor.effects.find(eff=>eff.label==="Guidance")
if (!hasEffect) return;
else {
options.parts.push("1d4")
hasEffect.delete()
}
})
World script territory
Until tposney adds that in maybe
@violet meadow do you just have the entirety of the data structure memorized? or is there an easy place to reference this? I was looking at make an activation condition of targeted tokens with a friendly disposition
A bit of both using them for a long time and console checking
For the activation conditions a bit of a read through the MidiQOL readme helps to remember what is included where
So target will give you all the _token.actor.getRollData() of the targeted token, plus its flags as an extra when using MidiQOL
yeah, my experience is messing around with the console, is that really the only way? cuz i couldnt even figure out how you found the traits field under targets here ["lg","sm"].some(s=>target.traits.size.includes(s))
game.users.current.targets doesnt have a .traits
Indeed. target in activation conditions points to the target.actor.getRollData()
Here comes in handy the readme
ah, yeah that make way more sense. this a much more useful data structure
Magnificent, thanks!
so token disposition is not available then? i only see actor related things
You would need to go through the workflow in this case.
Something like Array.from(workflow.hitTargets)[0].document.disposition === 1
But now you have an issue that this will get only the first hitTarget or a blanket true/false if you use something like ```js
Array.from(workflow.hitTargets).some(tok=>tok.document.disposition === 1)
If you want to do that, probably an onUse macro would make more sense
The caster is still concentrating FYI – not a biggie, this works great until tposney can add to midi
🤔 ok, so similar to how you determined target is giving you _token.actor.getRollData()
what is workflow returning?
the readme is not super intuitive for trying to learn
Also, what is the some function?
So create a script macro with ```js
console.log("args[0]",args[0])
console.log("workflow",this)
//const workflow = MidiQOL.Workflow.getWorkflow(args[0].uuid) would give you the same like "this" if you would log(workflow) after you declare it.
Open up a character sheet. Hit the Actor on Use Macros button in the Attributes tab and create an entry for the name of the macro you created and choose After Active Effects for instance.
Roll any item from that actor.
You will get all the args[0] and the workflow MidiQOL provides
workflow is specific to the item that is rolled. args[0].uuid will be the Items UUID in this case.
some function returns true if the function that follows return true or false otherwise
Where's the Actor on Use Macros button? I can't find it. I know how to add an on use macro to one item, not all
Ah true it's a concentration. Can be included.
and you're using anonymous functions to get a true or false back, right?
You might need to turn it on if its not in the MidiQOL settings (Misc TAB)
Ah, yeah found it
Then in Tidy
So the activation condition is an "apply to all or none" type situation then?
Try this ```js
Hooks.on("dnd5e.preRollToolCheck", (item,options) => {
const tokenRolling = canvas.tokens.get(options.messageData.speaker.token)
const hasEffect = tokenRolling.actor.effects.find(eff=>eff.label==="Guidance")
if (!hasEffect) return;
else {
options.parts.push("1d4")
const hasAnotherEffect = fromUuidSync(hasEffect.origin).parent.effects.find(eff=>eff.label==="Concentrating");
//const anotherToken =
await MidiQOL.socket().executeAsGM("removeEffects", {'actorUuid': hasAnotherEffect.parent.uuid, effects: [hasAnotherEffect.toObject()]});
}
})
Not in general. If you use target it will apply to each target as intended.
But for the disposition, as this is not available through the granular target option, going through the workflow has some shortcomings.
At least from my tests. There could be another way I haven't found thought of yet 🤷
Works like a charm, thanks!
so using target iterates across each target, but using workflow ends up just being one action 🤔 unfortunate that target doesnt give access to the Token5e object
Item onUse macro is the answer. You can go through all the targets of the item roll, either via args[0].hitTargets (array) or workflow.hitTargets (set) and then filter based on disposition and apply effects on the ones you want.
Depending on the type of the item you can use also the ones that args[0].failedSaves or succeeded in these saves etc
yeah thats what i started working on. I can't help but wonder if someone else hasnt already written a macro for this. Only effecting tokens of a specific disposition with templates
oh for sure. I think I have one shared somewhere too
I'm thinking it'll run "After targeting complete" and just remove the targets that arent the desired disposition
Sometimes its a bit difficult to change targets in the MidiQOL workflow when it's started.
After Template is placed would be better I think 🤔
is there a clean way to change which tokens get targeted?
🤔 there's a "Friend's Fail" option in the midi properties. Maybe for aoe buffs I could check that and just set the DC to 1 so any enemies will always succeed? What would be the equivalent for the opposite, using the sculp spell property right?
Yeah sculpt spell. Check the readme for the flag
hmm, sculpt and careful only effect evocation, thats annoying
yeah, that doesnt seem to work quite the right way 🤔
What you can do Once a Template is placed (with one of MidiQOL options for template auto targeting) . ```js
const newTargets = args[0].targets.filter(i=>i.disposition === token.document.disposition).map(i=>i.id)
game.user.updateTokenTargets(newTargets)
This will update the targets to the ones with the same disposition as the caster
or !== for different than the caster's
💤 👋
👍 thanks
Final macro looked like this const newTargets = args[0].targets.filter(i=>i.disposition === token.document.disposition).map(i=>i.id) game.user.updateTokenTargets(newTargets)
The type of the targets returned TokenDocument5e
Share the macro @clear kernel
so I've set it up to toggle on and off based on if the item is equipped or not, like so:
The "On" toggle:
Off:
They work just fine when I'm running them as a DM, they turn on and off appropriately
but when my player is connected, they don't work
nor do they work for me when I'm logged on as him
they do still work when the player is connected when I run the sequencer on macro from the hotbar
yah, I've got that set to yes for the permissions for players
I checked to see what options the player had in their settings, but didn't see anything immediately obvious that they'd need to enable
check sequencers options for both world settings nad that users settings
k, I'll look now
and does that user have the photosensitivity setting on in core?
that option checkbox in core disables sequencer
they can see the effect if I run the macro via the hotbar
this is in sequencer as well
checking the settings now
and finally do they have full ownership of the token or just observer?
OH, and also is a Gm logged in at the same time as them, and finally are there any errors when the player tries it
those two look good, they do have full ownership
I'm logged in as a GM as well on my own username, but not as them
I'll check for errors now as well
also check that global setting on the Dm view in sequencer
I don't recall seeing any but I was running the game at the time so I didn't look closely
Player and above
ok
AH
that's what it was
shoot, shoulda been the first thing I checked
Thank you again for the help 🙂
used to be easy, but nowadays I've got like 20 different modules and I just shut down haha
but thanks to you guys the players loved the campaign this week
so I do appreciate everything
Did you test that as a player or GM? 🙂
GM, should I be afraid?
I trust too much
Given that it does not involve midi at all and runs only on the player client and tries to delete an effect off another player...
I thought world scripts were special 🤷♂️
yeah giv me a sec
I’m in bed now, or I’d be jumping on. Thanks for looking out for me Zhell ☺️
and no, you can't just make sure it only runs on the GM client, cus the hook is not emitted at all
None of the dnd5e hooks are
Oh hey you're at my count.
Pretty sure if you install 21 modules you get a coffee mug that reads Welcome to Midi
Yeah the first iteration of this was just delete the Guidance effect from your owned actor. Then it was too ... late at night 😄
Things got wild
Don’t sweat it, I’ll just tell them to delete manually… with the power of VAE 💪
could probably use EM or something to toss out a Warpgate mutty to delete the conc effect
edited <#1010273821401555087 message>
ohh yes by that time it will be OK. Cause it needs more editing... ☕ for 🐛 🐻 now!
//will update when I am sure its functional
``` ~~should do it ~~🤔
I'd probably use the non-pre hook for the deletion
the preHook would add the d4 but the roll could still get cancelled
ok will test in a bit on my server
Forgive me here but is it just guidance?
on tools
why not just use the existing premades in midi?
oohhhhhh ok
Well I don't have this issue cause I use MTB for tools 8)
Though I'm not sure why it doesn't just have a +1d4 global ability check bonus
AR works atleast with tools
Now if only we could get it to work with initiative
Only way I'm able to get init to work with modifiers is if it specifically buffs initiative
What flag was failing to work with the tool rolls, I even get AR to work with standard tool rolls:
atleast I assume this is the normal way to use a tool
there’s no optional bonus key for tool checks
but its still an ability check so any flag attached to all ability checks should check the tool
but it doesn’t for some reason
I’m using the Guidance v10 pre-made
dfreds?
Midi or Midi-SRD… am in bed now can’t check
I only see a guidance in dfreds CE
Could be that one
Yeah that's the one
yeah optional does seem to fail to check
that is strange and sounds like a midi bug to me since AR works
it also fails to pick it up in MTB too
Wonder if you can somehow steal the AR hook for it
Kinda surprised it hasn’t come up sooner… but a lot of folk just use Sleight of Hand lol. BG3 ain’t helping in that regard
I will say this, AR does the abilty check thing the right way, whereas Midi seperates them all to their own thing, like ability.all should be ability, tool, and skill. Thats why AR has just 1 key. Some reason Midi seperates them and that could be why its failing to recognize tools
Hmm I am not sure about that. I would have to test with other MidiQOL settings.
When you click on the optional bonus for MidiQOL it just rolls it.
@vast bane if you don't FF skills, how do the optional work?
there is only one optional that fails to work with FF and I believe its the ac bonus one
Midi or no, if anyone else hooks onto it and returns false, it gets cancelled.
but I might be misremembering
its the last one in the readme, that much I remember
its also why I can't make arcane deflection in midi, cause I don't fast forward so its ac or saves
its save bonuses I can't use optional for
but its ok, I use AR instead for it
I am trying to think of such a case in the context we are using it.
I would need to Hook on the pre hook for the bonus and the normal hook for the deletion ? 🤔
Yes
The player with arcane deflection aslo uses DF manual rolls so I just honestly didn't bother to automate it and he calls out when he uses it
OK so sanity check ```js
Hooks.on("dnd5e.preRollToolCheck", (item,options) => {
const tokenRolling = canvas.tokens.get(options.messageData.speaker.token);
const hasEffect = tokenRolling.actor.effects.find(eff=>eff.label==="Guidance");
const itemRolling = item.uuid;
if (!hasEffect) return;
else {
options.parts.push("1d4");
Hooks.once("dnd5e.rollToolCheck", (item) => {
if (item.uuid !== itemRolling) return;
const hasAnotherEffect = fromUuidSync(hasEffect.origin).parent.effects.find(eff=>eff.label==="Concentrating");
if (!hasAnotherEffect) return;
MidiQOL.socket().executeAsGM("removeEffects", {'actorUuid': hasAnotherEffect.parent.uuid, effects: [hasAnotherEffect.id]});
})
}
})
*Wouldn't this register the `once` hook though, even if the pre-Hook got cancelled?*
Should be working
If that's the case I would need to filter for the correct tokenRolling and the correct toolCheck 🤔
Or just the item.uuid hmm
@coarse mesa 👆 should do it...
is it possible to add "negative resistance" to an effect? So for example an actor takes 3 extra damage from fire attacks?
yes
Use the DR flags
case sensitive
DR flags can be "negative"?
Yup
oh that's new - thanks
It will add the extra damage in the damage card. This is for a flags.midi-qol.DR.slashing flag Custom | -5
Healing and healing temp can't be negative fyi
but the damage ones can and just so we're clear bugbear means the Damage reduction flags in midi, not Damage resistance
theres two ways to differentiate them, the Damage reduction flags are midi flags and have a capital DR. The damage resistance flags are core dnd5e flags and have a lowercase dr
yeah I see them
And finally a place where we can throw money at Posney! 🎉
@rancid tide ```js
await MidiQOL.socket().executeAsGM("createEffects", {actorUuid: actor.uuid, effects: [effectData]});
await MidiQOL.socket().executeAsGM("removeEffects", { actorUuid: actor.uuid, effects: [effect.id]});
Doesn't this work for creating an effect on your actor? Idk if this can work on a target instead of "on myself"
That is the concept. You can create an effect to tokens you do not own as well.
Just provide the correct actorUuid
target.actor.uuid in your case, for the target you define somehow
And how the effect see this? Does the source become the target instead of the actor?
Also can I pass an array of uuids or it works with only one at a time, so to create the effect on multiple tokens I have to use a forEach?
What do you mean? The first function will create on the actor, which the actorUuid points to, an effect constructed from the effectData you provide.
For instance if you select a valid hitTarget from the MidiQOL provided args[0], you could do someting like: ```js
actorUuid: args[0].hitTargets[0].actor.uuid
And yes you will need to loop over the targets if there are multiple
Type in console MidiQOL.socket()
It will give you all the available ones
Okay makes sense what I meant was, sometimes an effect can have a special duration like "ends an the start of the source actor's next turn" in this case scenario, I'm creating an effect on some actor that isn't me, in this case will the effect consider myself as the source or the targeted actor?
Ty, I did do that sometime ago but it never hurt no body to check again
You will need to construct the effect with a proper origin, and a flag for the correct special duration
Ah yes true I can do that can I? The effect should have an origin field
It does reference that right?
I imagine that it triggers the special duration expiration flags, based on effect.origin and effect.parent for the special durations which are based on casterToken and effectAppliedToken respectively, if that makes sense 🤔
a small example ```js
if (!args[0].hitTargets[0]?.actor.system.traits.dr.value.includes("cold")) return;
if (args[0].macroPass === "preDamageRoll") {
const effectUpdate = {
changes:[{
key: 'system.traits.dr.value',
mode: CONST.ACTIVE_EFFECT_MODES.CUSTOM,
value: "-cold"
}],
label: "Ultramarine Cold resistance bypass",
icon: ${item.img},
flags: {dae: { specialDuration: ['isHit'] } }
}
await MidiQOL.socket().executeAsGM("createEffects", { actorUuid: args[0].targetUuids[0], effects: [effectUpdate] });
}
ah there's a effect.parent field, never noticed
yeah makes a lot of sense I even found an example I myself made xD
idk if I'm the only one but sometimes I catch myself not remembering stuff that I already made time ago ahah
thanks btw now I know what to do
Happens all the time for me too... I am even surprised by some things I have written in the past when looking through the discord 😄
I'm trying to make an item that has the following effect:
"On a hit, the target takes 1d6 lightning damage and can’t take reactions until the start of your next turn".
I tried making this with await CEInt.addEffect({effectName: "Reaction", uuid: theActor.uuid}) (with the help of CE) and it does trigger the Reaction Effect from CE, problem is that when it's the target's turn the reaction gets replenish, so it's not really "until the start of your next turn".
Any tips?
are you sure thats what the feature says?
cause thats not what shockign grasp says
Yes, it's not shocking grasp, it's a homebrew item
I don't think you can stop the reaction coming back like that
the best you can do is put a dummy status marker on it like reaction blocked or something to remind everyone
Maybe with onUpdateTarget?
I check for updates on the effects field and if it's the Reaction effect that gets updated then I re insert it?
Wait, you say the reaction comes back, at the start of their turn, isn't that intended?
Yes it is normally, but the problem is that the effect that I want needs to block their reaction until the start of my next turn
Have you tried giving them an effect that has a macro.CE that gives the Reaction effect?
Yes
It's how I've implemented the item in the first place, but it has the issue I stated above.
So how does it look on them when you apply it? (Before the turn is advanced)
As it should, it works as I intended it to be (it triggers the Reaction effect as if they used their reaction so the can't use another) but when it's their turn they get their reaction back
@coarse mesa @vast bane the template setting is released in A-A v 4.2.04. Made it a Client level setting with options for "Off" (default), "Show on Hover in Template Layer" and "Show on any Hover". Requires the Hover setting in TMFX (if active) to be disabled to avoid conflicts
Found a way, it works now
How did you do it? 🤔
created an effect via executeAsGM replicating the reaction effect from CE with the only change that instead of ending on the start of the target's turn it ends at the start of the source's turn
thankfully CE sees the Reaction effect and thinks it's its own
Amazing!! Thanks so much, this is brilliant
Thanks bud! I saw the new midi and thought for a second this might already be redundant 😅
@gilded yacht Just wanted to say how grateful I am for how you've sorted the DSN/optional bonus situation... it's perfect. Thanks heaps
What a great morning!!
Are there ways of toggling Astral Monk's Astral Arms feature with MidiQOL, or any of it's other duration abilities?
The class lets you expend one Ki to activate 'astral arms' for a minute, and while active your reach increases by 5, and you can use Wisdom instead of Strength for any strength saves or checks. I'm curious if that feature is doable, I.E. "If Astral Arms class feature is active, use WIS modifier instead of STR"
~~@gilded yacht it looks like the new Anonymous integration is treating the other player tokens as unidentified – I'm not sure if there's something I need to do to address that. Working great for NPCs 🙂 ~~ Idle has fixed this at their end, one less thing to worry about!
Definitely doable – you might want to look at the premade Shillelagh in the midi-qol sample compendium as an example of a temporary item that changes the key modifier for an attack
Have the PCs been revealed
How do you reveal players?
I presumed as any other token but I'm not at PC
PCs don’t have that option on their HUD or combat tracker. I guess Anonymous just assumes they’re always revealed
Interesting
We have Limited ownership of each others actors anyway so it’d be a bit weird not to see their name lol
(Limited means you can see just each others bio/description on the character sheet and lets you have your whole party in MTB)
Can I ask for your help in setting something like this up? My game recently got a Ranger and I'm struggling setting up Favored Foe.
Hmmm, I used advantage reminder for my ranger who had that, but I vaguely recall it being possible to just edit the premade hunters mark
I did see someone setting up some sort of "Prompt on hit" macro but I could not for the life of me figure it out
Hunter's mark in midi sample items is automatic, it just adds the damage if its a special flagged actor
if you do not fast forward, you can just use an advantage reminder module flag instead
oh wow, just realized that AR's new grant flags would work great for favored foe/hunters mark
Flavored foe hmmm. I probably have shared a macro for that. Could be v9 though
Lol flavoured...
Phones...
You're good Bugbear.
DDB importer set FF up for me automatically, I've not tested it yet tho
pretty sure you can get the macros from primates git then
I tend to forget to take a look at MrPrimate's assortment of macros
probably bugbear's originally 😂
Full disclosure: Most of the time I just want to make my own to see what I can do 😄
I wonder if its got the newest thing where hunter's mark creates a move to new target feature
Nope 😄
It has a clever way to test for once per round
I wonder where is Babonus with the new stuff now though... 😄
I saw your post about it but I'm just like "Duuuh."
I have two people with Hunters Mark, might have a third. So that would be neat to set up
The advantage reminder way:
Hunter's Mark is included with midi
The moving of Hunters Mark, I mean
the midiqol sample item of hunter's mark in the newest midi is pretty dope I'd go that route
pretty sure it lets you move, if you 'recast' it retains duration and ignores slot use?
Slot just adjusts the time it lasts I think
<#macro-polo message> found a Favored Foe
I should rewrite it just for the heck of it
I would use it... just started playing a Swarmkeeper
You could go that route too if you have the ability active
with optional bonus flags
Is it the first attack per round though?
for first attacks per round, just have the item recharge on 1
oh yep
The real problem though is when its a choice when they can use it
this is why I don't use sneak attack from midi sample items
the automation assumes the rogue has only one attack wants to sneak on the first
You can have the plain Sneak Attack from MidiQOL, without the Auto Sneak Attack secondary feature
It will then ask you
You should also be able to activate an optional bonus effect for the Sneak Attack now that I think about it more 🤔
Oh this might be interesting
I'm all for optional bonuses now the roll is working 💪
Test the logic for Sneak Attack in a preDamageRoll hook and add the optional damage bonus effect if it's valid
Then if the player wants, they can just use it
Are all Rolls working? Thought it would be a fix only for Attack Rolls for now
I've only tried attacks
Twas Emboldening Bond I was having issues with
Guidance will benefit too tho 🤞
oh no, Guidance is rolling the extra d4.... and then another one 😱
(hang on I'll get rid of your world script)
yeah the CE Guidance is wonky now 😔
the d20 isn't rolling, but the d4 rolls twice (it's only added once tho)
Oh does it do that after a reload ?
yeah, I'll clear my cache just to be sure
hmmm. That's with latest MidiQOL and DFreds CE?
I havent updated yet
Let me do it quickly
And weirdly if you opt to not use the Guidance d4, it kills the AE but you're still concentrating
I'm sorry @gilded yacht
That is not happening for me, but the double d4s with no d20 is reproducible
I was using Guidance on myself, maybe that's it... hang on
Hmmm it was on another target
yeah the Guidance is being removed whether you use the d4 or not for me
It behaves correctly for me. Strange!
are you using dfreds in your method bugbear?
if I recall dfreds has issues with linking castdata
I can't help you guys test cause I have a session in 45 minutes and I have a self rule of not updating modules on the day of let alone within an hour of session start
Just MidiQOL DFreds CE automatic rec for Guidance
This will be why... it's how DDB sets it up
Oh yes!
That's probably a holdover from the earlier Guidance?
Probably. I think you were supposed to activate Guidance and then roll or something 🤷
I'll bin that and just use the straight CE autorec
that's better – just the weird DSN issue, that's all
Note to self: I need to remember asking about DDB imports in these situations 🙂
Hey ive got a weird interaction, its probably my fault on how i created the item. Some items and specific characters when they target an enemy and attack, the attack roll with midiQOL works just fine, but it wont apply damage to the token and i keep having to do it manually. It happens with a lot of random items and spells too
Example of it working fine
Transformed character using wild shape not doing any damage
His gutbuster armaments arent working
I'm having issues automatically rolling the Other Formula for this feature. These settings don't say Feature. Is there another somewhere else in the Midi config?
Or do I need to reconfigure the feature into a weapon?
Try using a damage field with no damage type instead. I think Other only rolls when there is a damage roll but I could be wrong
So that worked, but if the player is targeting a token, it will inflict the damage. I selected No Damage from the drop down and it seems to work fine
Thanks for the help!
If some are working and some not it would seem that the broken items may not be set up well. Can you share the details tab for those?
Absolutely