You'd create a unique item on the caster, then create an item on the target.. the item created on the target would have an on use macro which would have a DAE effect to will launch on preRoll. You'd have the on use macro run on promise and scan the canvas for a token with specific item and roll it. The caster item would have a dialog box, get the current combatant, find the targets workflow and update it. The end part might require the world script.
#MidiQOL
1 messages · Page 9 of 1
Has anyone came up with a good mechanic using midiqol and or DAE for poison, where the damage should decrease by one die after each successful save?
flags.midi-qol.OverTime is going to be your answer hehe
I'd make a number of stacks on a flag within the active effect, then have a DAE macro with each. Each time have it reduce the flag on the active effect by 1
getProperty setProperty
can make AE effect with a flag like flags.midi-qol.poison.stacks custom number
So I don't know how you place your summons on your map, but I'd create a feature that slaps down a template with this macro on use, then macro in the summoning as well
// find our allies
let alliedTargets = args[0].hitTargets.filter(i => i.data.disposition == 1);
// buff them, remember to do some checking if they have greater temp hp then not update, I'm lazy
for (const allyTarget of alliedTargets){
await allyTarget.actor.update({ "data.attributes.hp.temp": 7 })
}
// delete the template made by the feature since the duration is tied to the summon and it's only there for letting the player know who they hit
await canvas.scene.templates.get(args[0].templateId).delete();```
I could have sworn that midi qol had a method to let features only hit allies, but I couldn't find it, so I just macroed it instead
Is this a homebrew feature/spell or wotc thing?
xanathar's
👍
But I just remembered something
don't do it fotoply, don't remember
does that place a template? you have a certian cast range
certain cast range from a point even
Oh no, that centers from a source, so I have an actor for the sprit totem and cast it from that
Its alright, turns out I was misremembering 😂 Thought I had seen someone already make macro for all 3 tokens, I was wrong
OR you could use Active Auras
from the wording sounds like they get the temp hp once
Yeah, the aura would be for the adv stuff
so when you spawn them, can have it find the item on the spirit then roll it
❤️
Easy if it's being used from the source actor, haha
but if you use it from the source actor you need to do it manually right?
well we're creating the actor from warpgate, just grab it then
can you trigger a spell/item/feature from a macro?
sure, just find and roll/use it
MidiQOL.completeItemRoll(item) will trigger a roll of the item
Yeah, so optimized solution for me - generic totem actor, Warp Gate macro with;
- dialogue of which totem
- crosshairs that show a 30 ft radius template around its' crosshairs
- mutate with the chosen totem effects
- run similar macro like above but with details from Warp Gate for the effects that come on spawn
- enjoy
Now I am tempted to writea warp gate macro for this, but I'm so tired that I suspect it's gonna end up janky 🙃
the step 2 is the one that I'm missing
Any way to invert flags.midi-qol.grants.attack.success.all/rwak
I mean.. step 2 should be handled by MIDI if you set the item to be 30 feet ally special, put it on the totem and then run it 🤔
Invert as in?
I tried but no template shows T_T
this is grabbed from Kandashi's template create
let maxGrid = canvas.grid.size >= 84 ? 84 : canvas.grid.size - 3;
let range = await canvas.scene.createEmbeddedDocuments("MeasuredTemplate", [{
t: "circle",
user: game.user.id,
x: tokenD.x + canvas.grid.size / 2,
y: tokenD.y + canvas.grid.size / 2,
direction: 0,
distance: maxGrid,
borderColor: "#FF0000"
}]);
then when you want to delete it. await range[0].delete();
just change the sizes to define the max range
It shouldn't need a template though if you have an actor for the totem?
But when you place the totem you need to see who is going to get the HP bonus
It's for placing the totem itself, its' "upon summon" effect would be nice to know who it affects when it drops
Is there a .attack.fail.all?
Dont belive so
Only one I see is for source actor, not a grant one
So you could make an aura that targets everyone and not the source actor
Ah right, for informing the players before they commit 🤔 would be possible to make the warp gate targeting circle the right size, then do what I said
that would be amazing actually
Was going to try it but it would mess with targeting combatants not in the wind
But this is not going to show while casting... 😦
sure it will
the code looks like it will be created when the token is summoned
oh oh oh I got you know
I am going to try! Thank you so much for the help you are amazing @celest bluff @short aurora @kind cape @spice kraken !!
Heya, is it possible to sync up the help of two actors at a damage level? Say whenever actor 1 takes damage, it applies it to actor 2, and whenever actor 2 takes damage it applies it to actor 1
That sounds crazy interesting
If it's the same actor sheet, you can just drag two tokens out, else you need a world script
I am happy to write my own macros, just wondering if MIDI has any functionality I can leverage.
I'm making a boss for my campaign that is inspired by pathfinder summoner mechanics
how would you achieve that? I mean sounds like you should set up some kind of listener
This is the flag that the Warding Bond example uses
It basically calls the macro whenever there is a change in the actor
That's essentially what world scripts do, you attach a script to a hook, hooks are called when x happens (like update actor), and... That seems to be exactly what that flag does
If it goes both ways though, that sounds like a good way to crash your server
Yeah easy way into infinite recursion
I would probably need to set a global flag and unset when updating the corresponding actor
Why not use MidiQOL. findNearby in the macro to get all ally X feet around the casting actor?
that sounds the perfect method to find allies thank you!
can you just call MidiQOL.findnearby in the macro without importing anything?
No need to import anything, it’s part of the MidiQOL exported functions. Here is its signature:
export function findNearby(disposition: number | null, token: Token | undefined, distance: number, maxSize: number | undefined = undefined): Token[]
What are parameters 1 and 2 here? 1 the name of the macro, 2 the type?
Thank you hahaha (I know 0 javascript)
You just need to pass the disposition, I think 1 is for allies, then the token from which to compute the distance, this should be available the token variable, then the distance, the last param is optional (I think it’s if you want to limit to token of a certain size)
This will return an array of tokens which were found
Attempting to use the onUpdateTarget throws me an error custom effect flags.dae.onUpdateTarget details incomplete. Any ideas what that means?
@spice kraken did you want me to take a screenshot?
Yes please
V9 or v10?
V9
Just as a side note ... isnt restrained just a better version of grappled (more negatives, so applying grapple has no real mechanical effect)?
Lol, yup
Yeah it is and that is why I thought it wasn't showing at first, I thought it was being super amazing and overriding the grapple. 🙂
But then I added poisoned just out of curiosity and it still only showed one effect. So it got me thinking.
I just ask, instead of spending an hour to get both conditions on, just make them restrained 🙂
(change priorities?) as random thought, so both not same
so make one 15 the other 20.. shouldnt matter, but .. 🤷♂️
I've always preferred using macro.CE, yes you get more icons, but I like that. Means there is more info
Absolutely but it was annoying me that two status effects from DFreds couldn't be active at the same time. There might be another monster in the future that has, I don't know, restrained and poisoned.
Then I would use macro.CE for this
Or if you want (kinda redundant) just make the item have the effect keys and values of both of them
That's what I did with Hold Person because at the time I didn't know about macro.CE and don't care enough to delete and add back
You could also do this
2 separate effects
I have created two separate effects in the same effect item (tendril) and that has worked. Even though Mythanos is right in this situation, grapple is particularly redundant.
I am now going to play about with macro.CE. 🙂 Then fall asleep on the keyboard.
test effect, applies both conditions
Yeah, status effect can't be used under the same AE, so you would need to make a second one (even if they have different prios)
At least in v9
Im on v9, and it just did? 😛
(╯°□°)╯︵ ┻━┻
Are you referring to this?
yea
Oh, i get what your saying now
yea, i was showing you could just macro.CE it, and it could apply as many as you like (pending saving throws) .. misunderstood at first
All good, there was a lot of back and forth
OK thank you both, just tried it also with macro.CE and it works perfectly, adds the tendril icon to the token and grapple and restrained, however I like it like that.
Appreciate your help. 🙂
Np, when tendril is removed, the other 2 will be as well
Hey! (Just one more question hehe) after calling to warpgate.spawn() how can I get the Token object that spawned so I can reference it and call it with MidiQOL.findNearby()?
@dense rune
Warpgate returns an array of token ids, so you could use it to retrieve the token with
canvas.tokens.get(returnValueFromWarpGate[0])
I could have sworn I saw the Goliath ability Stone's endurance already set up...
Currently it's functions like a heal. IE: Goliath takes 9 points of damage : 18-9=9 then stone's endurance rolls 14 so 9hp+14=23...
You could probably use the Deflect Missiles example that's in the sample items for that, will need a bit of tinkering, has a macro with it for "throwing back" but you can get rid of that
Not having any luck with that.
Next issue. I have a barbarian with Divine Fury: Radiant. How do I add the +1d6 radiant to his first attack in a round
I've got it set to do it for every attack, but I need it for just the first attack.
I'm little bit dumb, I am trying to set up the midiQOL Divine Smite for my players to use with ease, when I roll it from their spells- I am only given a description of the spell
It mentions the item macro feature which I am not really aware of and am unfamiliar with macros in general
is there a simple way to give my players a clickable Divine Smite where they don't have to do homework and make macros?
You could use a flags.dnd5e.DamageBonusMacro, and in the macro you verify if it was used during the last round. You could base your macro on the Sneak Attack from midi qol sample compendium
You should rename the item, to just keep Divine Smite and make sure you have the item macro module activated
Hey there, I renamed it to Divine Smite and I do have Item Macro activated
I am clicking the roll button beside the spell itself in the Spellbook
If you open the console (F12), do you see any errors?
Haha yes
I should note I am using V9 of Foundry
but this worked in the past and I don't remember updating anything
Maybe an update to MidiQOL and this item was not updated… I will take a look to see if I can find quickly the problem
Thank you!
I would update to V10, but I have reverted to V9 after attempting it and realizing my favorite modules weren't compatible
Which version of midi do you have?
0.9.51
My Divine Smite says it's 0.8.9 in the item name though (before I renamed it)
It just means that it probably has not been update since that version of midi.
When you reverted to v9, did you used your v9 backup of your data directory?
Also, the latest v9 midi is 0.9.81
Yes, I fully reverted with my old data directory and deleted the v10 data
I found 0.9.81 here: https://gitlab.com/tposney/midi-qol/-/tree/master/dist
but I am not sure how to install it
is there a JSON manifest url I can use anywhere?
Why don’t you install or update it through foundry’s modules system?
I think it would update it to a version that is made for V10 of Foundry, right?
@sudden crane had mentioned the last supported version was 0.9.81
Nope. If you are on v9 foundry, midi will update to the latest v9 compatible version
Oh, well that's great, thanks
Unfortunately though, after updating my Divine Smite is still not functioning properly
Same error?
I just tested it on v9 and it works
Does it have a damage formula, the midi version?
What’s undefined before the length in that error code?
I don't believe it has a damage formula
Oh I see another rolling module present
What is that auto roll option?
Is that from the Better Rolls successor?
Hmm, let me hunt down which module could be messing with rolls
I have Better Rolls for 5e installed but disabled
Do you have MRE installed too?
Ah yes
Don't have any other roller modules other than midi
hehe unfortunately disabling that hasn't fixed my issue, but I will try to hunt down some conflicts
Find the culprit module helps. Keep MidiQOL and dependencies active in the first step and see when it breaks
Check item macro settings. Make sure options 2 and 3 are not selected
Hmmm. Click on utils.js:110 on the error and check what’s undefined in that line
That’s on the console error
Unfortunately that’s the extent of what I can troubleshoot at this time.
If you want copy paste the item macro here and I will take a quick look
Understood! I am grateful for your help so far
I'm not sure how to copy paste the item macro if I'm being honest, I'm clicking this directly from the spellbook
On the title bar of the spell, there should be a small icon for item macro
You should be able to see the macro in there
let target = canvas.tokens.get(args[0].hitTargets[0]?._id);
let improvedDivineSmite = args[0].actor.items.find(i=> i.name ==="Improved Divine Smite");
let numDice = 1 + args[0].spellLevel;
if (numDice > 6) numDice = 6;
if (improvedDivineSmite) numDice += 1;
let undead = ["undead", "fiend"].some(type => (target?.actor.data.data.details.type?.value || "").toLowerCase().includes(type));
if (undead) numDice += 1;
if (args[0].isCritical) numDice = numDice * 2;
let damageRoll = new Roll(${numDice}d8).roll();
if (args[0].isCritical) damageRoll = MidiQOL.doCritModify(damageRoll)
new MidiQOL.DamageOnlyWorkflow(actor, token, damageRoll.total, "radiant", target ? [target] : [], damageRoll, {flavor: "Divine Smite - Damage Roll (Radiant)", itemCardId: args[0].itemCardId})
scope: global
type: script
Ooh! I found Divine Smite - no macro - mq 0.9.23
didn't know there was a new item!
it's working, thank you!
Now that makes sense 😅
Sorry, I prefaced this all by saying I'm a bit dumb!
Nah we are all learning as we go!
thank you @sudden crane @spice kraken @violet meadow you're all the best 🙂
Has anyone figured out how to apply automatically apply the damage from hunters mark?
I think Crymic has one on their patreon
There is also one in the midi qol sample compendium
In case anyone upgrades to dnd 2.0.3 the new damage bypass settings a) have not be integrated into midi's damage application and b) the existing flags can no longer be edited using the trait editor app. I'll push a change that auto migrates them on edit and will continue to support them when present. Eventually the idea will be to just use the new settings.
I am hosting for a wizard who has sculpt spells and I cannot for the life of me instruct them properly on how to sculpt their spells
I think my template/target settings are interfering, I thought they were suppose to pretarget the safe people and then cast the spell normally but its not sculpting anything
Did you give them the flag?
Thats my mistake ok, I did give them the flag but I thought I was being smart in putting it on the sculpt spell item, but I forgot to set it to transfer on equip so it was never active
😂 Happens
Does Foundry have a foundrystackoverflow-like page? 😂
I'm trying to use the MidiQOL.findNearby() function but It's not working for disposition 1 (friendly). Any ideas?
When I use canvas.tokens I can see all the tokens in the canvas
these are the concrete params => MidiQOL.findNearby(1, canvas.tokens.get(summoned[0]), 10, null)
BTW I have at least one friendly token
can better help here then
what is summoned[0]
because if that isnt the id of a token that part is probably where it breaks
summoned[0] is coming from await warpgate.spawn(totemActor.name, {}, {}, {});
and the function MidiQOL.findnearby works when the disposition parameter is set to null
What is the disposition of the summoned token?
right, warpgate retuns the tokenDoc, no?
it's hostile... maybe that is the problem?
The findNearby does it relative to that. E.g. if you do disposition 1 on a -1 token, it will find "allies" of the the token, so it will find others with a -1 disposition
From the docs, MIDI uses the disposition passed in as follows, which is confusing because its not the same as normal 😂
@param {number|null} disposition. same(1), opposite(-1), neutral(0), ignore(null) token disposition
omg that was the problem
you have the answers for every question wtf you are amazing
this community is crazy good
thank you again 🙏
can use the const value for friendly
CONST.TOKEN_DISPOSITIONS.FRIENDLY
much cleaner actually, thanks!
Btw I am trying to fully automatise the Spirit Totem feature, (finally I finished with the bear totem) but I am running out of ideas to automatise the hawk spirit. Any ideas? I was thinking about using a world script but I don't even know how to start... Should be something like this, right?:
- Attach the world script to an event that triggers when a creature makes an attack roll (IDK the event, I'll find it out)
- Check if the enemy is in range of the totem
- Prompt a reaction pop up to the caster of the totem to ask if the want to use their reaction (Only if they have the reaction available)
- Apply advantage to attack roll
Problem here is I don't know how to get actor and the target of the attack (and of course stopping the roll until the totem caster decide if they want to use the reaction or not)
Am I over-complicating this?
Note: Unicorn totem seems even more complicated to automatise because you need to check if the spell is a healing spell and then add to that healing some dynamic amount
Hawk advantage is extremely complex to setup, I personally have written that off as "won't bother" long ago.
Unicorn is actually not that difficult, since it only happens when the original caster of the totems uses a healing spell. So you will want to place an "onUse" macro on the caster, and then check if a healing spell was used. Then you can just use normal item flow to heal all ally targets within 30 feet of the totem
Oh true Unicorn only grants the + healing if you are the caster not for everyone inside the circle
yeah I think that the Hawk advantage is quite complex but I think as well it's a really good challenge to learn about macros
Hawk would be decently doable if it did not require the caster to use their reaction
yep yep the reaction part is the part that is messing up the whole thing
but I think it's still doable
I think it's worth the try because it's one of the main skills of this type of Druid so having this automatise could be a huge relief for players
Advantage reminder 😎
We were talking about automating it 😉
I mean that could surely work but automatise feels crispier hehe
When you say "onUse" macro on the caster, which object will keep the macro?
It would be on the Druid
But actors can't have macros right? only items
Midi adds "OnUse" macro's, which can reference either a world macro or an item macro
But which are on the actors
oh so I can just create an item to hold that macro and then call it from wherever I want?
Or put it in the world scope yes
on the front tab of the sheet there is a lil on use button to add a macro directly to an actor without needing to attach it to an item
fyi, those macros are hard to keep track of so don't put weird ones in there you forget about later lol
OH
So theres item on use macros and actor on use macros, I have yet to have a need to use actor on use ones, but Bugbear asked for me to test one once and forgot it was there
My recommendation is to add them using an active effect, since that way the are naturally associated with what added them
had multiple sessions where a players sheet was doing weird shit till I remembered that thing was in there
i'll keep that important advice in my mind xD
how would you do that?
Here is how I have a +1 Moon sickle (that is actually a staff) setup
I need it because moon sickle says:
When you cast a spell that restores hit points, you can roll a d4 and add the number rolled to the amount of hit points restored, provided you are holding the sickle.
and the moontocuhed macro is stored in the item right?
In this case I stored it in the world scope
how do you store it in the world scope?
does that actually heal? flavor is moon touched not healing?
But you could just replace the AE value with ItemMacro.+1 Moon-Infused Quarterstaff if you want to use an itemMacro
This is so complex...
My players apply it themself, so I use the flavor to let them know where it came from 😛
Ok, was gonna say I think it would damage if it was automated
ohhh nice and this ones can be used from anywhere then right?
Yeah
when you normally do an items on us emacro and always typed ItemMacro in that field, instead you can put those folder macros name in them and they fire(make sure the players have permissions to folder macros if they will be using them)
World macros are convenient if you don't expect the item to move between worlds, or if you like me constantly tinker with the macros and you don't want to update all the copies of the items 😅
I think I'm starting to understand it
so if I want to create a macro that is not provided by any object I need to create a world macro
So in this case I have my unicorn totem actor which has as a passive effect a unicorn totem effect
The effect should execute a macro stored in the world macro folder
Did I get that right?
And this is used to trigger macros when the actor does something in concrete ->
OnUse macros will trigger whenever the actor they are on use an item
I don't get the difference between "Actor on use macros" and "Item on use macros"
And as my Unicorn Totem Effect is an Aura it will propagate that macro to the affected aura tokens right?
Item on use are when that specific item is used
Actor on use is when ANY item is used, by that actor
Also not sure why you would want to put an on-use on the targets with Unicorn, unless I misread how that totem works 🤔
the on use that was screwing up my player was an on use macro that would reactively damage the player whenever they attacked anything
Because the caster only amplifies the healing effect while in the totems area
have to know how to write macros to be able to pull off those actor on uses
so if you are not in the totem's area you shouldn't be able to amplify your healing
The effect says:
In addition, if you cast a spell using a spell slot that restores hit points to any creature inside or outside the aura, each creature of your choice in the aura also regains hit points equal to your druid level.
Which can be read one of two ways:
- If the owner of the totem (the druid) casts a healing spell
- if anyone inside the area casts a healing spell
have the totem apply an effect to the actors, and then have those actors do special things if they have that flag on them
I've always gone with interpretation 1
I'd check the errata fotoply, they rarely leave stuff that way
is that shephard druid?
This should be post-errata 🤔
I got a 3rd interpretation
- If the owner of the totem (the druid) casts a healing spell
- if anyone inside the area casts a healing spell
- If the owner of the totem (the druid) casts a healing spell while in the totem's area (the target doesn't mind if it's inside or outside the area)
But it never specifies that he has to be inside, everything else that requires that ends with while in the aura
But then it doesn't make sense... Then you will get the healing bonus forever
No errata AFAIK, and yes, Shepherd druid
No only while its active.
So say I summon a unicorn spirit, then for the next minute whenever I use a healing spell any friendly creature inside the aura is also healed, regardless of my own positioning or the positioning of my target
true, you are 100% right
Also has the added bonus of being a lot easier to implement 😂
its if the druid casts a spell
you have to look at this in the context of the book they are in lol
and not look at it like an active effect in foundry lol
the You in a chapter about YOUR class is you
Always good to make sure everyone is on the same page when trying to implement 5e effects into Foundry 😅
I just need to add a effect to the actor that is linked to the duration of the totem
https://media.wizards.com/2020/dnd/downloads/XGtE-Errata.pdf
(very short, nothing on shephards)
This is my first ever macro and I think I picked the worst case ever
Honestly quite impressed that XGE has so little errata for a book about everything
What I would do for unicorn is:
- On summon create an effect on the druid that lasts for 1 minute, which has an on-use macro
- On the effect add an additional flag that saves the UUID of the totem summon
- In the on-use macro check if a spell is being cast (see above moon touched example)
- If it is, use the UUID to figure out what creatures are nearby, and cast a simple item spell that gives them healing, with the creatures as target
how can you link and effect to a macro? (The only way is using a world macro right?) Sorry not link, I mean store
Not quite sure waht you mean
On summon create an effect on the druid that lasts for 1 minute, which has an on-use macro -> Here you mean that the effect should execute a macro, but I am wondering where that macro should be stored
If I were doing this with advantage reminder I would create a heal macro for the additional healing amount that has no target limits, and set it as a document link on the druids damage(healing) popouts
then you can leverage the human brain to discern the aura radius
I was trying to set up an overTime effect and as a test and not having any success getting it to do damage, so I equipped and attuned the midiqol sample longsword of wounding. When I hit with it I get a button which allows me to apply the active effect, but as I cycle through the turns no DOT is being applied. I'm assuming I must have something configured wrong in midiqol. Any ideas?
hahahahaah I can't really let that part to my newbie players XD
are you using multiple rollers?
Sorry, not sure what you mean
Versions of dnd5e, foundry vtt, midi qol, and if any of the following modules are present: Better Rolls for 5e, Roll Groups, Minimal Roll Enhancements, Ready Set roll
Also the readme for midi if you go to it and just ctrl F for "Overtime" he has a nice lil section with examples for how to set them up with most of the current options available for the effect. Much better than trying to copy a sample item.
No I don't believe I'm running any of those modules.
ok what are your versions?
Midiqol 9.66 where do I find the version of dnd5e?
FVT = 9, Dnd5e=1.6.3
I'm on 9.81 of midi so you are on an old build, if your versions are also old, are you the DM or the player?
DM
ok are you sure you are attuned to the item?
Yes double checked
do you have dae installed?
Yes
ok is he saving?
No save triggered
cause an apes got a decent con
ok thts your problem then
you are trying to use automation without automated stuf
you are not going to get much out of midi if you don't have a save prompter, either midi, Monks token bar, or LMRTFY
in midi's setttings there is a section in the workflow button>workflow tab for saves
Do you have a recomendation?
I use monks token bar, but anything other than NONE is a good answer
once the players are set to prompt you should be good but that tab also has the setting for auto applying AE's you mentioned that you got a button to apply the effect, theres an auto apply setting in there in the Specials section
Yup, I checked and it was defaulted to LMRTFY which I don't have installed. Moved it to chat, so I'll give it a try.
if you want to make your own overtime effects, I recommend the readme, it has a better set of info on what you can do with overtime
You would definitely need a world script for that one.
There is module World Scripter to facilitate that.
In your world script macro you would need to register a hook: ```js
Hooks.on(“midi-qol.preAttackRoll", handleHawkSpirit);
async function handleHawkSpirit(workflow) {
// check if it’s an attack on a target in the aura
….
The tricky part would be to trigger the reaction from the caster. Midi exposes a socket lib function “chooseReactions”, you could invoke that on the user of the caster. I did something similar but with completeItemRoll for Flames of Phlegethos. :
```js
await MidiQOL.socket().executeAsUser("completeItemRoll", player.id, data);
Hmm thats an interresting function, didn't know MIDI was exposing that
There is a lot of interesting thing in this:
https://gitlab.com/tposney/midi-qol/-/blob/master/src/module/GMAction.ts#L58
But you don't really want to force the trigger of the reaction in the caster right? It's optional, the caster should choose to use the reaction or not.
BTW that hook looks interesting
await MidiQOL.socket().executeAsUser("completeItemRoll", player.id, data); -> is this triggering the reaction or is it triggering the reaction pop up?
It is triggering an item use, I was just using that ha an example. I haven’t tried to call chooseReactions yet.
But I just realized that this would probably not work, because midi only support a reaction on the target…
So for now the only other way to deal with it would probably to use https://foundryvtt.com/packages/requestor
To pop a dialog to the caster…
Requestor, a Module for Foundry Virtual Tabletop
Am I missing something? The console log does not show in the console...
Like this, but replace Moon Touched with your macro name 😛
T_T now working
maybe is not "on-use" because it's just an effect executing a macro that is not linked to an Item, so there is no Item to "use"
Well its whenever another item is used
It’s whenever any item from the actor is used. It would trigger even on the original item that added the onuse if it’s used again
That is true, but in this case there is no original item 😉
so if I cast a spell/whatever the macro should be executed
A spell, an attack, a feature…
You are missing a phase
So try out with ,all for now
That should make it trigger ~8 times
The passes are these if you want it to be more specific
preItemRoll: Called before the item is rolled (*)
templatePlaced: Only callled once a template is placed
preambleComplete: Called after all targeting is complete
preAttackRoll: Called before the attack roll is made
preCheckHits: Called after the attack roll is made but before hits are adjudicated
postAttackRoll: Called after the attack is adjudicated
preDamageRoll: Called before damage is rolled
postDamageRoll: Called after the damage roll is made
preSave: Called before saving throws are rolled
postSave: Called after saves are rolled
damageBonus: Called when computing the actor damage bonus but the macro is only called when the specific item is rolled
preDamageApplication: Called before Damage Application
preActiveEffects: Called before applying active effects
postActiveEffects: Called after applying active effects
all: Called at each of the above
Is there any way to specify an effect that applies: flags.midi-qol.disadvantage.attack.all for only specific targets OR for all targets except 1?
The v10 version take a condition, similar to activation condition on an item. So you can discriminate on which target to apply the advantage
Cool, still on v9 though
Am I doing something wrong here? Just wanted to use MidiQOL.findNearby but doesn't look like it's getting the nearby allies (disposition already checked)
if(args[0]["itemData"]["type"] === "spell" && args[0]["itemData"]["data"]["actionType"] === "heal") {
let totemToken = game.actors.getName("Unicorn Totem Actor").getActiveTokens();
console.log(totemToken[0])
let allies = MidiQOL.findNearby(null, canvas.tokens.get(totemToken[0]), 10, null)
console.log(allies)
}
Try let allies = MidiQOL.findNearby(null, totemToken[0], 10, null)
You already have a token object, no need to fetch it again from the canvas
What code?
let allies = MidiQOL.findNearby(null, totemToken[0], 10, null) this one
looks like can't access disposition attribute, but I just checked the token object and it has that property
Btw: the photo is the actual code of the findNearby function
Okay good
Do I need to upgrade to v10? 😱 please say no
Nah, mine is on V9, just wanted to confirm, cause there are some differences
This is the full code of the macro
if(args[0]["itemData"]["type"] === "spell" && args[0]["itemData"]["data"]["actionType"] === "heal") {
let totemToken = game.actors.getName("Unicorn Totem Actor").getActiveTokens();
console.log(totemToken)
let allies = MidiQOL.findNearby(1, totemToken, 10, null)
console.log(allies)
}
You are missing a [0] in the findNearby
where(?)
if(args[0]["itemData"]["type"] === "spell" && args[0]["itemData"]["data"]["actionType"] === "heal") {
let totemToken = game.actors.getName("Unicorn totem").getActiveTokens();
console.log(totemToken[0])
let allies = MidiQOL.findNearby(1, totemToken[0], 10, null)
console.log(allies)
}
90% of the time I just use the Foundry one cause I am lazy. When I create more advanced ones I plop it into Webstorm, but tbh its only cause I have it already. If I didn't I would just use Visual Studio Code
do you use any plugins so the editor autosuggests you the available Foundry api functions?
Nope, should probably look for what kinda tools there are 😂
that would be amazing haha imagine having all the functions available in the IDE instead of looking through documentation hahaha
https://github.com/League-of-Foundry-Developers/foundry-vtt-types is what you want, tho I don't usually work with JS for my day job, so not sure what plugin you would need in VS Code to read tsconfigs. But I am convinced that they exist! 😛
Of course this only deals with core functions, so anything added by say MIDI will not show up
yeah but just accessing data classes to see how actors and other things are structured is already amazing
thank you I will install this right away hahaha
Don't think that has a v10 version
Same for me I code 24/7 but not in javascript hahaha (it's an interesting language though)
Yet
v9 is perfect hehee
Some action won’t apply damage at all or even play animations for that manner, I believe it might be midi related
Would love any type of help 🙂
What does the damage formula look like on that item?
Sadly not on my pc right now, but I believe it’s a multiplication formula : 3*1d10
Change it to 1d10 * 3, or (1d10)*3
I am looking to implement a spell where when the caster is damaged, it procs thorn damage against the attacker. I have DAE and MidiQoL, does anyone have advice on how to program the thorns damage?
Change to reaction damaged and target the attacker before rolling the ability
Should just need to make it a damage reaction
no need to target
Wouldn't you need the target to damage them with the reaction ability
it will automatically target
Reaction Damaged auto targets the attacker?
yes
The more you know
well if not defined
How would that work if I wanted to make something similar to Armor of Agathys? I want to have it last while temp hp is greater than a threshold, but I want it to be concentration based (the concentration part is easy obviously)
What you've described is a feature, but I would think I need a spell
You would need something more complicated for armor
I have some prototype macros for it
You can force concentration on a feature too with MidiQOL, if that’s what you need
lemme see if my last build still works not
hmmm I'll have to rewrite it a bit of it
I can just recycle my relentless macro
Anyone have a Lay on Hands macro, specifically for healing, idc about the conditions part). I found one but needs warpgate (don't have it and prolly not gonna get it) and doesn't work for the healing
v9
yup mine
Patreon or free
Hey guys Sugar here! gotta ask if there is a way to have an Alternate Damage type for weapons for V9. I have some weapons that use different damage type on some weapons (Mostly Swords) that can switch between Piercing or Slashing. But for some reason when it somehow does both Piercing and Slashing and am left really confused. It never did that before.
Or specifically that feature is v10 only
it supports v10 but will work in v9
You can add a promise dialog in midi on use before damage is dealt.. Look at the example for toll of the dead
@celest bluff Is that what it is called a promise Dialog?
@celest bluff So your saying i can do something in the terms like this? [piercing]2d12r1+@mod in the versatile box of the weapon then?
let whatever = await new Promise((resolve) => {
new Dialog({
// dialog stuff here
}).render(true);
});
then resolve(damage type here)
whatever will equal out to it whatever is placed within the resolve
^ that up there is a macro correct?
yeah
Importing showed as the details tab empty completely. Does anything need to be in damage formula and is ItemMacro before damage roll?
would be an on use macro
im sorry i dont understand macros like at all.
the macro does all the heavy lifting
uhh lemme see if I have something written already
yup, it doesn't use uses
Same issue with just the item importing and not changing anything
So, I'm realizing I need to learn macros, where would I find the 'Hunter's Mark' macro referenced in the 'Hunter's Mark' spell from MidiQOL Sample Items?
It's embedded in the item, you will need the module ItemMacro to see it
You get a new button on items that can see macros attached to them, it's there without being visible if you do not have the module
I have Item Macro installed, but I'm clearly blind and not seeing a button
Found it!
Feeling dumb now...
's all good. You don't need to embed your own macros into items, it just makes it neater for porting between compendiums (and then worlds or other games through modules)
I appreciate the assistance
I'm running through the macros of different examples now
Is there a recommended wiki/article to learn what some of the specific fields mean?
Any idea why NPC's are not rolling saving throws? Seems to work for player characters. Basically, i get the prompt after clicking the saving throw, but then it does nothing.
Also, is there any way to change the duration of a spell based on the level it's cast at? I assume a macro is the best bet?
Maybe you can use @item.level
is there any eta on when the default items like summon undead or hunters mark will be working again?
I haven't tested my hunters mark on v10
Hey I am trying to add in a damage reroll effect and it works except that the added max damage from crits isn't working. For now I am fixing it by adding in the damage it should have from crits as extra crit damage. I talked over with a friend and he said we have to use a midi function to do it instead, does anyone know of how to do that? Here's an image to show the function I am using
To help with this, the feature I am trying to make work in foundry is similar to the Savage Attacker feat.
What is modding your details tab? Thats not core sheet appearance.
Huh? Not sure, I am just an assistant since I know the homebrew we are using better.
Well did you just install midi now? Just trying to rule out module conflicts is all. Midi does not play well with Roll Groups, Minimal Roll Enhancements, Ready Set Roll, or Better Rolls for 5e.
Midi has a setting to max crit dice, so it shouldn't need any strange handling
We have had midi for some time now.
The issue I think is Midi can't see the 2d10s because they are under max(,).
Why do you have max there?
The player has a feature that lets them reroll damage and take the higher of the two. Basically he would roll 2 sets of 2d10 and take the better result.
No, it doesn't, it takes the maximum value out of the two numbers you give it, those numbers being dependent on the dice. I looked around in here and saw that kh wasn't working, where it would ignore the dice values. Also I tired kh and it still wouldn't work with crits.
Kh does work but it doesn't fix the issue I am seeing.
As I said the friend I am helping said that it needs to be done in midi, so I am asking if there's anything in midi that lets you roll 2 sets of dice and take the higher result.
Sorry, I guess I'm just not following, maybe someone else can chime in who gets what you are trying to pull off
Why the max 2d10 2d10? Why just roll 4d10kh2
Or is the aim just 1 number out of each pair?
Check your console, you probably have invalid math
4d10kh2 isn't the same mathematically though
hmm default system does seem to support it, but damage formulas may not
could they put it in an active effect and have the damage formula ignored?
or is it the same math issue?
then again crit wouldn't be handled
hey question, when I use monks token bar for save throw calls in the chat, there's this button that allows you to basically manipulate the results but it doesn't seem to be changing anything in regards to the total damage applied after the save fail/success (should be halving the damage depending on the outcome) is there anything I can do to fix this or is this button irrelevant?
if the result naturally is a failure it will half the damage but when "fudging it" with that button it doesn't really do anything
can you show us the button?
I'm unfamiliar with such a button for monks
I'm loading my world, afaik that button just shows you the breakdown of what they rolled
yeah but you can definitely click it, was wondering if it would be possible to use it to fudge things
not to really fudge per se but I can find it useful for like legendary resistances etc
I'm not a fan of fudging, but fyi, the DM can fudge a monks roll by rolling privately till they like the result and then using the grabber button to attach it
grabber button?
the fist looking button before a roll is made in that very window
yeah I can see it but I don't really get how you can roll multiple times, even if I have it set to blind gm roll it seems to make it public
Bottom right hand/fist icon here
So, I'm trying to make a spell like Spirit Shroud, then modify the hell out of it, and I can get it to apply the extra damage to attacks, but I need to scale the damage. When I get the spell level to scale the damage though, it is based on the spell attack that triggers the damage, not the "Spirit Shroud" type spell I cast earlier. Is there a decent way in the SS macro to pull SS's level, and not the Eldritch Blast that triggers it later? I can provide any screenshots required
roll privately to yourself, when you see one you like, then use that button and click on the one you like
oh I think I get what you mean
I'm pretty sure you can use item level in the AE equation, is it not doing that in it already?
ok nvm I don't get it 😢
I think I did get it but it doesn't seem to be working for me
you left click the first, then left click ANYWHERE on the chat card of the saving throw you like
fist
I do not see a premade spirit shroud, what you got built?
SS Macro is:
const version = "1.0";
try {
let damageType = "necrotic/radiant/cold";
const spellScaling = args[0].spellLevel;
const diceMult = args[0].isCritical ? 2: 1;
return {damageRoll: ${diceMult}d6[${damageType}], flavor: Spirit Shroud: ${spellScaling}};
} catch (err) {
console.error(${args[0].itemLevel.name} - Hex ${version}, err);
return {}
}
And it applies an effect to the caster:
bare with me I have a 16gb ram exe running while trying to alt tab over to help you
Its just bonus damage right?
So, currently when you hit an enemy it triggers the damage, I just need to scale it based on what SS is cast as
instead of running a macro, just do dmg bonus and put in an equation using item.level
Here is another premade items example of utilizing the spells level to add an effect:
its just a matter of finding the damage bonus key that you want
then whatever the scale math is for spirit shroud
I've used that type of scaling before, but is there a way to set the damage type for SS at that point? When I just add it as bonus damage, it adds it as the same type as the triggering attack
yes, and midi now is alot more flexible but it would be something like +(@item.level*1)d10[necrotic]
always put a plus at the beginning, I'm stupid
then just setup the duration of the ae, and attach it to the spell to apply when the item is rolled(not on equip)
if you are editing an owned item beware of the quarks and bugs associated with effects edited on actors
k, I got the spell working, just need to get the scaling working
I assume my formating is incorrect: +(floor((@item.level-1)/2))d8[necrotic/radiant/cold]
I'm looking to subtract 1, divide by 2, and round down
It didn't seem to have an issue with that, but I removed it anyhow, still the same issue
The reason I think it's not right cause of the damage application. How would it interpret that for resistances/vulnerabilities
Let me try and recreate it in v9
Are you using any macros with it or just the AE
I found the issue, I didn't have a space after 'item.level', and it didn't like that
I added the space and it works properly now
Looks horrible in the logs, but it works
Is there a way to prompt the user as to the damage type? SS could be necrotic/radiant/cold
Easiest way, make 3 different versions of the feature/spell
Or use a macro
Or maybe the optional midi flags will work
I actually am unsure if the ae method is going to be the way to go now that I think about it, it only rolls it once right? When the AE is applied. So it will always be the same bonus damage amount.
AE?
The way I have it seems to roll new each time
Btw, if I want a macro to reference a specific spell, or the specific level that spell was cast at as mentioned above, is there a way to grab that?, or store a variable long term, outside a specific macro?
Active effect
Anyone has this issue at all?
nope, module conflict?
could be a settings issue. make sure npc are set to make saves. Generally, i let them auto roll saves for npcs. makes things a little faster
Hmm could be. I’ll try turning them off 1 at a time
Im sure I checked settings, would it be on as default? Will double check
let me check
workflow button>workflow tab>saves
three drop downs, 1 for players, 2 for DM I think or something
if you uninstalled the module that its set to, then the saves won't auto resolve
i have it set to auto, no prompts for me
I do MTB cause I have slowly begun to automate a bunch of my monsters and I use advantage reminder alot
so I need to see the popouts
I swear I changed my delay setting
Just curious, why MTB over LMRTFY
check what you have set there
the macro save function in MTB is pretty dope
also, like for tool rolls, MTB is really fast to get a tool rolled, players often can't find it in my games so I just slap the request roll button and select their tool there way faster.
so really the reason I use it is to slim down on modules, LMRTFY is redundant if I already use MTB for a TON of stuff
Its not that its not good, its just cause MTB does more
I'm a 2 birds with 1 module kinda guy
I use MTB to see stats at a glance, and can use that to call for rolls, so no real need for another module to do it.
Fair. What about saves, is there a way to purposefully fail a saving throw? I fast forward rolls so advantage reminder or things like that can't help where you add a massive negative mod
If you don't fast forward just put in a mod that will force the win or success
you can also fudge with the grabber
I don't see myself ever removing ff
you can roll independently whispered to yourself as the DM, and then use the fist button on the MTB prompt and select the roll chat card you like that you whispered
you can hold down T while clicking MTB's prompt and manually roll for that one instance
I wonder if there is a shortcut to auto fail in mtb...hmmm
There's a module paired with lmrtfy to do it there
Is it for an ally? Shove "auto fail friendly" into the item description
label=Regenerate,turn=start,damageRoll=1,damageType=healing,condition=@attributes.hp.value > 0 && @attributes.hp.value < @attributes.hp.max
How do I change the bit in bold so it stops when character hits 50% HP
Also check the condition Vs applyCondition from the docs.
I haven't used it so I am not sure which one is correct.
And @ should be fine if it's a feature on a monster.
If you want to "cast" regenerate on someone else, the ## is the answer as Super said
So Condition Immunities, if I preset all my attribute drain npcs and hp drain npcs with a specific naming scheme for their abilities, if I use that naming scheme as a condition immunity, that means those active effects fail to apply right? Midi applies them inactive yeah? Or does CI only work with actual status effects?
dunno if midi respects condition immunities, you may need to macro it in to detect it. can always test it out with a dae effect
like for turn undead, I check for features which give resistance or even immunity
I'll try /2. Thanks 🙂 It's a character feature so hopefully @ will work.
I just setup the circle of mortality two part macro linked here above, and it occurred to me, I have had this house rule where all healing explodes at our table. And dice so nice does not give us a trigger for only heals, so I have wanted for the longest time to have a sound effect play when a healing spells dice equation explodes. Couldn't this be done taking what the Circle of Mortality macros did above?
#1010273821401555087 message
Hmm it seems the regen effect causes the hybrid transformation to end. Any idea why?
How do you mean? Does this hybrid transformation has anything to do with the regen effect?
Does that effect gets deleted when the hp value falls below 50%?
Regen is part of a package of abilities granted by Hybrid Trans. Over or under having it takes off the feature at the start of the turn
That sounds really specific. Have you made these abilities? Imported them?
I mean when you ask why "the regen effect causes the hybrid transformation to end", we have no idea what these effects are like so I don't think anyone can help easily.
You have to describe how you created these effects and how they are connected with each other. Screenshots might help.
If they are imported by DnD beyond importer for example, asking in Mr.Primates discord might be better
Add + to these
Make sure to always use + in the effect values. Without it, if you have 2 bonuses that both add 1, it'll be +11 instead of +2. You will see ++2 but that's normal. You want that
Not at my pc but it's something like data.bonuses.saves.check or something like that. Key word is bonuses
Also keep this in mind. Add a +
data.abilities.dex.bonuses.save
Alright! So what happens? When does the Hybrid Transformation effect stop working?
Does the AE get deleted?
Doesn't Leo's ae image look off to you guys?
My duration has this:
oh wait thats probably rest/recovery nm
thanx
Thanks
Yes it takes the full effect off.
Can you try using flags.midi-qol.OverTime instead of the same with .regenerate?
I have never used that and not sure about whether it works like so or not. I am testing now in v10
and also applyCondition instead of condition in the effect value
@violet meadow You're a star. It was the .regenerate throwing a spanner in the works.
@gilded yacht MidiQOL v10.0.11 and v0.9.81 if you have an OverTime effect, like flags.midi-qol.OverTime | Override | turn=end, label=name of the effect, removeCondition=true (or whatever removeCondition that evaluates to true)
AND the player clicks on End Turn in the combat tracker, the effect will not get deleted.
If the DM changes the combat turn the OverTime effect gets deleted.
Issue added: https://gitlab.com/tposney/midi-qol/-/issues/1010
Can you do me a favor and add it to the gitlab - I'm just finishing up the changes to dr/di/dv from dnd5e 2.0.3 and might forget.
For any of the bonuses fields, you can use CUSTOM (instead of ADD) and DAE will put in a plus if needed (saves the dreaded + +1 + 2)
@nimble grail check this for your question in #dnd5e <#1010273821401555087 message>
You would need @abilities.cha.mod without the extra data
thanks, it worked! only that the icon is not displayed on the token
If you use DAE and Custominstead of Add, you don't need to use the + in the +@abilities.cha.mod
It is supposed to be passive, so no duration, so no icon.
If you want to force the icon, go into the Details tab of the Active Effect and put in the relevant field something like true
thanks 😄 For the 20+ icons Pathfinder: Kingmaker vibes my player loves so much 😄
One more question though. Since this is an aura, shouldn't the effect automatically add to nearby characters?
Hi! What is the recommended way to modify the current HP of an actor from a Macro?
I was asking this myself, because if I just change the value using something like "actor.update({ "data.attributes.hp.value": newHp})" maybe I will be ignoring some effects like Chill Touch no HP regen effect.
Same for advantage and disadvantage. Maybe there is a spell that is granting advantage while the macro is granting disadvantage, the result should be normal rolls but if I use the code above I'll overwrite it with out taking into account this type of situations.
Sounds like you're trying to macro things that are best handled manually...
looks like I need Active Auras for that
hmm, but it's already installed and activated... diggin deeper
ok, Auras only in combat... need that one off I guess
I'm trying to automatise Unicorn Totem Effect from the Druid Sepherd
so this will be popping up often. I'd leave the chill touch and advantage/disadvantage conundrum out of the equation as those are situational, and would let the macro do what it should. If need arises, you just retcon - nope, that healing didn't happen, cuz chill touch. Nope, no advantage, since disadvantage...
But I bet there are macro wizards here who can somehow help you with the automatization. You would need some flag applied by chill touch on the target to start considering that though
as for disadvantage, there are already flags for that
i think the flag you're looking for is called no-regen, seen it somewhere
I know this is the best cost/reward solution, but I'm trying to learn how all this works so that's why I wanted it 100% automatised haha
Oh that sounds really interesting, so I would only need to check for flags before applying the effect
I will take a look on that thank you
You had a radius of 2 when I saw the screenshot.
That means 2 ft around the character.
thanks for catching that, updated to 10 already
now is there a data property for condition immunity? i want aura of devotion
so charm immunity effect
got it 😄
That would need an actorOnUse macro, which checks for a spell dealing "healing" damage and then applying some extra healing.
Or you could create an AE which adds to the heal "damage", like shown in the attachment.
This didnt work, any idea what mods are normal suspects with this?
But this will only add healing bonus to healing spells right?
BTW: What is this @classes.druid.levels sytnax and where I can learn more about it?
Well the data.bonuses.heal.damage will be added to anything that actually heals the token with that AE, so potentially using a healing potion will add the extra healing too... Not ideal, but this is a non-macro way to do it
I can't use that for the Unicorn Totem but thank you so much for the information, I didn't know about the "@" syntax that is a great discovery for me it will help me a lot if I can somehow pass that information through arguments to my Macros (I don't know how to pass arguments to my macros yet)
Any errors in console?
and Foundry version?
so my previous problem still persists, midi refuses to roll damage on magic missiles for some reason
the calculation for the damage is 3*(1d4+1)
Try 3d4 + 3
Yes this..
worked, but why cant midi use multiplications ?
this also breaks up casting then, becasue when I choose to use it at a higher spell level it doesnt do it
What is rolls in chat? Another module?
Can you test without it?
nvm I found a bypass to this
still yhx 🙂
Ah, yeah thats done it! Thank you so much.
It was "Chat card rolls DnD5e"
For the second part of your question there is a pinned message in #dnd5e .
https://github.com/foundryvtt/dnd5e/wiki/Roll-Formulas
I totally forgot it was there tbh 😭
Hey quick question, Has MIDIQOL any option to detect attacks of opportunity and show a prompt like the reactions?
It does not
I am trying to make an Activation Condition similar to a Smite, show below:
['undead'].includes('@raceOrType'),which will target Large or larger sized creatures and give a +2 to Attack rolls against them.
Does @data.traits.size help with this at all? or am I barking up the wrong tree?
Just a sec to double check in Foundry.
Activation Conditions will not be able to affect Attack Rolls.
You need a macro for that.
So is this +2 when attacking with a specific item, a feature on a specific actor? Something more general like a homebrew rule?
Its a Feature. Its a Homebrew feature from Valda's.
It just adds a +2 against Large or Larger creatures.
So a feature for all attacks made by a specific actor, correct?
Correct, yes, sorry.
Melee/ranged weapon or spells too?
just Melee weapons.
Are you using ItemMacro with MidiQOL?
Yes, I just installed it
- Create a feature on the sidebar.
- Create a DAE on the feature, with:
a.Transfer to actor on item equipchecked on the details tab of it,
b. an effect:flags.midi-qol.onUseMacroName | Custom | ItemMacro.Name of the feature,preAttackRolland change this to the actual Name of the feature. - In the ItemMacro of the feature copy paste this:```js
if (!args[0].targets.length) return;
const sizes = ["tiny","sm","med"];
const targetsize = args[0].targets[0].actor.getRollData().traits.size;
if (!sizes.includes(targetsize) && args[0].macroPass === "preAttackRoll" && args[0].item.data.actionType === "mwak") {
const effectData = {
"changes":[
{ "key": "data.bonuses.mwak.attack", "mode": CONST.ACTIVE_EFFECT_MODES.CUSTOM, "value": "2", "priority": "20" }
],
"disabled": false,
"duration": {
"startTime": game.time.worldTime,
},
"icon": "icons/skills/melee/strike-dagger-white-orange.webp",
"label": "Melee attack bonus depending on size",
"tint": "",
"transfer": false,
"flags": {
"core": { "statusId": "" },
"dae": { "specialDuration": [ "1Attack" ] }
}
}
await MidiQOL.socket().executeAsGM("createEffects", { actorUuid: actor.uuid, effects: [effectData] });
}
4. Drag the feature on the character sheet 😅
(*ps: make sure that options 2 and 3 in ItemMacro settings are off to be able to use it with MidiQOL effectively*)
I repurposed the code from another I had made already, so don't mind the ["tiny","sm","med"]. If the size is not any of these it ~~will ~~ should apply 😛
Test it and let me know
65% console trial and error, 30% copy paste, 5% internet .js google. More or less 😄
I might need to re-evaluate the math, as all of these are superseded by just hanging out in #macro-polo
Fantastic, thank you so much!
99% macro-polo, 1% google
Alright, so how have people set up Sneak Attack with midi to automate it?
Grab the MidiQOL sample item for Sneak attack 😄
That's me rn and I'm a senior big data and cloud developer, haha
Hey guys, I'm using the MidiQOL + Warpgate Spiritual Weapon
I've managed to have it spawn the Spiritual Weapon actor on cast, but when I attack with the actor, I am told that the actor is incapacitated
(also I would love a way for the token to not be animated, it's rather distracting)
Set the sphere to have 1+ hp then it will not be incapacitated
And pretty sure the default flaming sphere macro with warpgate from MIDI is not animated 🤔
oh it's updated! A lot of the sample items aren't updated for v10 so I didn't think to check
I'm still looking for a way to make a sound play when a healing rolls the highest value on a single dice in a roll formula. I feel like its possible in midi as Circle of Mortality macro does alot of things similar.
It also only needs to happen when 5 actors do it so it could even be an actor on use macro
Let me take a stab
That works! Thanks! However I'm not finding an actor that doesn't have an animated token for there purposes, Flaming Sphere's included haha
we tried this morning with hooks, but I think we all got lost in the concept of exploding dice but really all we need is, is it a healing roll and then did any of the dice land on the highest face
If both true, play sound.
Have you let the macro create the actor the first time the macro is used?
But I did learn from the work this morning cause I realized you need to put the explosion option in the scaling of spells too, not just the main formula
No, it could not find a world actor so I renamed one and dragged it from the compendium
Just give me a second, 99% sure my last suggestion will work, nobody tried that one 😛
Hmm, as far as I remember its supposed to create one if it doesn't exist 🤔
I feel like everyone trying to help me, myself included, during that were all remoting to their server and all working in cubicles lol.
Oh, I forgot to note that I'm using V9 Foundry and an earlier MidiQOL
the last one that's compatible
Well it was during my lunch break, hence why I didn't take a proper crack at it 😛
So am I 🤔
Yeah Freeze and I had noted we were at work when we first started, I did appreciate everyone helping.
This is what I see when I delete the actor
and attempt to cast the MidiQOL spell
So the circle of mortality macro way above that someone made, it works with exploding dice, uniquely. Instead of endlessly looping, something in foundry stops it from looping past 2 explosions, I like it, and want to call it a feature, not a bug, but is there anyway this could be harming server performance hitting an endless loop fault on every healing made on a downed creature by a specific player?
Eh, this is probably a question for the devs of foundry
Foundry supports infinite explosions and exploidng once.
x and xo
Anything else is probably handled specifically by the macro
circle of mortality is a mechanic that will auto max the dice of a healing formula on a specific target, dead ones, and with the healing formula set with 1d4X, it explodes twice and then throws an error in the console, I assume stopping an endless loop.
Hold up, I'm silly, I was thinking Flaming Sphere for some reason 😅 My bad
I had originally planned to ask here if it threw crazy errors with exploding dice but it seems to reliably constantly just solve itself by throwing the error after the 2nd explosion, which I feel is a great tradeoff and how the two rules could co-exist in my campaign, the problem, or worry is that I'm relying on foundry's error to keep things sane.
Ofcourse now that I'm home and go to make an example to show you, it behaves completely differently lol:
@vast bane
Hooks.on("midi-qol.RollComplete", function (workflow) {
if (workflow.damageDetail.filter((detail) => detail.type === "healing").length == 0) return;
if (workflow.damageRoll.dice.filter((roll) => roll.results.filter((result) => result.exploded !== undefined)).length == 0) return;
AudioHelper.play({src: "sounds/dice.wav", volume: 0.7, autoplay: true, loop: false}, true);
});
Replace the src with whatever sound you want to play
What it seems to do, is the formula for the feature replicates the dice roll, and then normal explosion/rolling happens after, so I think I like it
I think I'm keeping this in lol
It usede to show an error but I guess it doesn't anymore, I can't replicate the error, it had to do with 3d object not being drawn or missing
So maybe DSN was stopping things.
can there be spaces in the source file/folder structure, if not whats the replacement? %20?
I think there can? Pretty sure the helper does encoding after the fact
One thing I kinda glossed past this morning, is that you all seem to have a sound/stuff path and I don't and Freeze said it was built into foundry, so is my foundry broken?
or maybe thats a V10 thing?
I got no hook messages in console and no sounds, trying without merge/condensed in midi now...
This should work both with and without merge cards 🤔
Did you plop it into a standard macro and run it? Thats the easiest way to test it
false alarm!
Its in the core files, you probably looked in user data 😛
I made the macro, I enabled worldscripter, but I never dragged the macro to worldscripter after the construction
😂
It works, thanks soooooo much!
Was pretty straightforward with the midi workflow hook 😉
Is there a way to tell the circle of mortality macro linked way above here to not display the first card? It plays the normal healing card, then does its own card and only uses the second
Link?
Damn, too slow 😂
A quick glance says no, it does both because you might have targets that are valid and targets that are not for CoM
yeah am seeing that now
So I cannot get item macros to run. I'm trying to use the sneak attack item, but there are also other item macros I've written, and none of them are running when an actor uses the item. Can someone help me troubleshoot? I'm reasonably certain this is a midi thing, but I could be wrong
show us the bottom of the items details, but also are you on v10? Maybe all those macros are throwing errors cause I believe most of midi srd is probably in need of a v10 cleanse
I believe the automated sneak attack needs the DM to properly setup dispositions as well
k, show us the bottom of the details tab of the items not rolling item macros, but also, throw out the dnd5e, foundry, midi versions and also confirm you are not running the 4 other rollers that are naughty
Yep, hit the plus sign, and then put ItemMacro in the field that appears
follow the instructions on the premade items, they are either in the descriptions of the items or in the itemmacro
sometimes they want the evaluation to be different then the default after active effects
yeah all sneak attack had in its description was that you had to rename it to Sneak Attack, but I hadn't checked the item macro for instructions
It should of had the item macro in there already
those items should be drag and droppable, were you copy and pasting just the item macro on the premades?
or maybe the migration process stripped the item macros, I dunno
but if you drag out a midi srd item or midi sample item onto a sheet, it should not lose the ItemMacro entry at the bottom.
Yeah strange that it does
Someone with v10 could probably confirm if that is normal behavior, but my guess is module conflicts
Maybe a sheet module, or a roller you shouldn't have
even just toggling on those other rollers can have really awful adverse effects on how midi operates as atleast for MRE, it would populate fields and then not unpopulate when you turned it off, which confuses the hell out of midi
Yeah. I'm not using MRE tho, so I think I'm fine. In any case, I think I can figure this out now. I just didn't know you had to set this to ItemMacro
Yup, just ran an item with an ItemMacro and it worked
@covert mason I remembered about the Risen Reaper you wanted, so here is a quick solution 😄
- Create a feature that applies the curse on the target on a failed save for 1 minute as intended.
- Create a DAE on the feature with an OverTime Effect:
flags.midi-qol.OverTime | Override | turn=start, label=Risen Reaper, rollType=save, saveRemove=true, saveAbility=con, saveDC=18, macro=RisenReaper - Create a **script **macro in your macro folder or hotbar named RisenReaper (or change the name to match whatever you use in the overtime effect's macro entry).
- Copy paste this in the macro: ```js
if (args[0].failedSaves.length !== 0) {
const targetDoc = args[0].failedSaves;
const roll = await new Roll('2d8[necrotic]').evaluate({async:true});
game.dice3d?.showForRoll(roll, game.user, true);
let damageToApply = await MidiQOL.applyTokenDamage([{ damage: roll.total, type: "necrotic" }], roll.total, new Set(targetDoc), null, new Set());
let actuallyAppliedDamage = damageToApply[0].appliedDamage;
let triggeringItemName = args[0].item.name
let triggeringEffect = actor.effects.find(eff=>eff.data.label === triggeringItemName);
let triggeringEffectOrigin = triggeringEffect.data.origin;
let item = await fromUuid(triggeringEffectOrigin)
let newItem = item.toObject()
let sourceActor = item.parent
let sourceToken = sourceActor.token ?? sourceActor.getActiveTokens()[0];
let range = await canvas.scene.createEmbeddedDocuments('MeasuredTemplate', [{
t: "circle",
user: game.user.id,
x: sourceToken.x + canvas.grid.size / 2,
y: sourceToken.y + canvas.grid.size / 2,
direction: 0,
distance: 60,
borderColor: game.user.color,
fillColor: game.user.color
}])
newItem.data.save = {"ability": "","dc": "","scaling": "spell"};
newItem.data.actionType = "heal";
let damage = [${actuallyAppliedDamage},"healing"]
newItem.data.damage.parts[0] = damage;
newItem.data.activation = {type: 'action', cost: 0, condition: ''}
newItem.effects = {};
let ownedItem = new CONFIG.Item.documentClass(newItem, { parent: sourceActor });
await MidiQOL.completeItemRoll(ownedItem, { configureDialog: false, workflowOptions: { lateTargeting: true } } );
await range[0].delete();
}
It should roll for damage if the Overtime effect targeted creature fails a con save against DC 18 at the start of its turn.
Then it should create a 60ft radius template around the curse's source, and trigger a lateTargeting popup, for the user to select a target and "roll" a healing ephemeral item against the chosen target, healing it for the amount of damage dealt 🤞
Oooh! I'll test it out
Works almost seamlessly. I tested it out with necrotic resistance given to the target of the curse, and while it halves the appropriate amount of necrotic damage, it still heals for the full amount: Target takes 11 necrotic, reduced to 5 due to resistance, but the healed target is healed for 11 instead of 5.
Well it doesn't account for resistances on the initial target 😄
Ahh
Also, would it be possible to add a variation that takes into account spell levels for damage, say it's a 4th level spell and the damage increases by 1d8 for every spell level above 4th? This could work for an NPC ability as is, but I can also see it being a fun homebrew spell.
Is there a way to reference a specific class's hit dice?
I am adding something that manually rolls the hit dice value, and while I'm fine with making a specific thing for each class, I'd like if I could throw in a universal @ and be done with it.
Oh god, I have a macro that someone wrote for me that specifically seeks out the highest hit dice that could help you figure things out, wanna see it?
edited, check again for healing that respects damage applied
That would be great actually
Thank you.
Ah, I just went into my session and I am unsure where I put it, I swear I have it but I can't remember the name of the macro and my folder macros are a mess. If you go over to macro polo I'm sure one of them can hook you up.
Perfect! ❤️
Works like a charm
Your item Janner made me discover something I hadn't seen before.
@gilded yacht When you use a special expiry of is Hit: Expires if the character is hit by any weapon/spell attack even if the weapon/spell does not deal damage should an item that heals the character trigger it (it does now 😅)?
I mean it reads like it should, but should it or is there another one that helps with that situation? 🤔
Right now I use that special expiry for a cloak of displacement!
Hmmm that might be a bit tricky for the current implementation. I will give it some thought.
What should the damage be? As plain as possible, my brain is not fully functioning right now 😄
4th level spell, 2d8 Necrotic damage. 1d8 extra damage for each spell slot of 5th level and above
Change the Overtime effect to turn=start, label=Risen Reaper, rollType=save, saveRemove=true, saveAbility=con, saveDC=180, damageRoll=(2d8+(@item.level-4)d8),damageType=necrotic, macro=RisenReaper
Delete these lines from the macro```js
const roll = await new Roll('2d8[necrotic]').evaluate({async:true});
game.dice3d?.showForRoll(roll, game.user, true);
and change to this the relevant one: ```js
let damageToApply = await MidiQOL.applyTokenDamage([{ damage: args[0].damageTotal, type: "necrotic" }], args[0].damageTotal, new Set(targetDoc), null, new Set());
Oh wait it needs more changes if its a spell...
@scenic scroll what you showed us in dnd5e to me, seems like it should work. Can you show me the front page/tab of the character sheet of the npc?
OH, your midi settings could actually be to blame if you aren't using stock midi settings
you could have it perfectly setup but your settings could be set to nothing
hi, i've an issue with immunity and magic damage in V10. I've tried in a world with only Midi qol and DAE activated.
NPC have blugeonning, piercing and slashing immunity exept from magic attack.
My PC have a magical weapon
But Npc take 0 damage with this weapon (but take damage from spell)
I think i miss something but i can't find what
Screen below :
I think you can actually do chill touch without needing to write a macro, just activation conditions and flags.
it's just a random npc with the immunities set for test purposes :
Midi settings>workflow button>workflow tab>damage section
take note that I think my settings are not what you want
I don't really know how the second circled setting works, I just left it and pray everything works
So either your midi settings are to blame, or theres something off about how v10 handles things since you stated in dnd5e that you tested with just midi enabled and the issue persisted
I'm sure someone in here has v10 midi and can attest that everything is A-OK with damage immunities
the mine, i had test with all the 3 options in the second setting, but nothing works :
is there a language barrier in the session? AKA do you localize to non english for stuff?
i'm french, and it's localize in French in my campaign, but for test i've tried in a world in english with no translation
darn, I thought maybe it was the flavor in french causing the issue
is foundry still in french?
I don't have v10 installed so I can't test for you, but I'm sure one of the other kind fellas here will chime in if theres a reproduceable bug with midi/foundry v10
I don't see anything wrong with your situation other than possibly a locallisation issue due to languages but you said you cleared that hurdle
could you manually put the damage flavor into your damage formula and call it [bludgeoning]?
i have just testing with all in english, core and system, it's the same
Yeah I'm tapped here I don't see any issue with your setup then
unless the double magical checkboxes performs a double negative situation
same
My Chill Touch macro if anyone needs it. It's a MidiQOL onUse After Active Effects macro
since the attack is magic, it would make damage to npc and bypass the immunity
mouse over the icon
Probably not, I just check that the item has an attack and someone was hit. Does the item have an attack?
in that image, mouse over the damage card's token icon, is there a popup?
hmmm what version of v10 midi are you on?
foundry v10.286, dnd 2.0.3, midi 10.0.11
If you have upgraded to dnd2.0.3 then damage immunities with bypass are broken (I posted a heads up a couple of days ago in this list). I'm going to release 10.0.12 today which fixes this.
ok
I get an item with toObject() and change it around. It becomes a heal actionType in the end 🤔
let newItem = item.toObject()
newItem.data.save = {"ability": "","dc": "","scaling": "spell"};
newItem.data.actionType = "heal";
let damage = [`${actuallyAppliedDamage}`,"healing"]
newItem.data.damage.parts[0] = damage;
newItem.data.activation = {type: 'action', cost: 0, condition: ''}
newItem.effects = {};
let ownedItem = new CONFIG.Item.documentClass(newItem, { parent: sourceActor });
await MidiQOL.completeItemRoll(ownedItem, { configureDialog: false, workflowOptions: { lateTargeting: true } } );
but also, that tooltip seems wrong, probably been that way always, but clearly the creatures not immune to ALL
just non magical
you're the best, and this end my headache to not understand why this doen't work 🙂
Oh I see now, v10 changed the immunities window, In v9 I have
actually dnd2.0.3 did that change.
So if the change is pending soon, I wouldn't rollback Cimeryl unless you absolutely need the functionality
Maybe dm me the original item and the macro and I'll have a play
i can wait, my next session is next monday 🙂
Yeah, let the update process solve your problem in a day or two
I've finished the changes I just need to run my woefully inadequate testing process before releasing.
Thanks for your time and help Moto Moto 🙂
Aye, it doesn't seem to be damaging with the OverTime function
Yeah don't use that yet. Needs tweaking and I got caught up 😄
S'no worries!
Kinda proud of myself I could tell there was a language barrier lol, guessed at it cause of your range setting lol, I was like 1.5 meters...and hes not using our in english words, this guys probably using non english in the session. But it was a wiff on solution.
Happy that was not my poor english that tell you that 😄
nope purely deductive logic on my end your english is perfect, better than most of us lol
2AM for me, go to bed, have a good day
OK so it seems that the OverTime effect, when you define a damageRoll in its parameters, will not pass the actually appliedDamage to the macro you call in the same effect. Instead it passes the Roll
So if we go down that route, there needs to be a check for dr and di against necrotic damage and then heal for the right amount.
Too late here for that now, but it is doable.
Otherwise it needs an small onUse macro when you first cast the spell, to create a flag on the item to store which spell level was used and then in the macro get that flag and use it to get the proper damage amount
@frosty mesa You should make sure first you don't have module conflicts, What version of foundry are you on?
Version 10 build 286
Do you have Roll Groups module, or Ready Set Roll installed?
I don't
Better Rolls for 5e or Minimal Rolle Enhancements?
better rolls 5e, yes
delete it, A, it doesn't work in v10, and B, it conflicts with midi
and its successor, Ready Set Roll, does not work with midi in v10
Oh I thought it was needed? When I load up it says it needs version 1.6.6 or whatever
there are very very niche settings between the two that worked at one time
Alright I deleted it but it's still giving the same issue
how is dae yellow in v10?
Earlier V10 build I think
to rule out module/v10 compatibility issues, I would try unchecking all the yellow modules in that list(don't uncheck midi or dae, I think tposney is slightly behind dnd5e and foundry's versions
but tell me the exact actual process you do to activate an item roll
lets rule out basic foundry functionality misunderstandings
how do you roll the item
@covert mason create an extra onUse ItemMacro | After Active Effects on the spell item and in the ItemMacro of it paste this: ```js
let item = actor.items.getName(args[0].item.name)
await item.setFlag('world','Risen Reaper spell level',args[0].spellLevel)
Then change the other macro to ```js
if (args[0].failedSaves.length !== 0) {
const targetDoc = args[0].failedSaves;
const triggeringItemName = args[0].item.name
const triggeringEffect = actor.effects.find(eff=>eff.data.label === triggeringItemName);
const triggeringEffectOrigin = triggeringEffect.data.origin;
const item = await fromUuid(triggeringEffectOrigin)
const spellLevel = item.getFlag('world','Risen Reaper spell level')
const roll = await new Roll(2d8+(${spellLevel}-4)d8[necrotic]).evaluate({async:true});
game.dice3d?.showForRoll(roll, game.user, true);
const damageToApply = await MidiQOL.applyTokenDamage([{ damage: roll.total, type: "necrotic" }], roll.total, new Set(targetDoc), null, new Set());
const actuallyAppliedDamage = damageToApply[0].appliedDamage;
let newItem = item.toObject()
const sourceActor = item.parent
const sourceToken = sourceActor.token ?? sourceActor.getActiveTokens()[0];
const range = await canvas.scene.createEmbeddedDocuments('MeasuredTemplate', [{
t: "circle",
user: game.user.id,
x: sourceToken.x + canvas.grid.size / 2,
y: sourceToken.y + canvas.grid.size / 2,
direction: 0,
distance: 60,
borderColor: game.user.color,
fillColor: game.user.color
}])
newItem.data.save = {"ability": "","dc": "","scaling": "spell"};
newItem.data.preparation = { "mode": "innate", "prepared": "true" };
newItem.data.actionType = "heal";
const damage = [${actuallyAppliedDamage},"healing"]
newItem.data.damage.parts[0] = damage;
newItem.data.activation = {type: 'action', cost: 0, condition: ''}
newItem.effects = {};
const ownedItem = new CONFIG.Item.documentClass(newItem, { parent: sourceActor });
await MidiQOL.completeItemRoll(ownedItem, {configureDialog: false, workflowOptions: { lateTargeting: true }});
await range[0].delete();
}
Still the same issue. I just click the item which brings it into the chatbox then I click "attack"..it rolls the dice and greys out the box but doesn't display the attack number.
can you show us the chat?
Is that the new v10 card guys?
It shows the damage but not the attack. Unless I click attack the 2nd time then it'll show the attack
I think what I am seeing here is the view from the players point of view yes? an actual logged in player?
Yeah I signed in as a player to test features simultaneously
do you have both logged in at same time?
Yeah. One hosted from my PC and the other is on a different browser
If so, does the DM see everything properly?
Nope
can you show me the dm's chat appearance?
I think your problem is you have the settings to hide stuff turned on in midi, but it shouldn't be hiding it from the DM
is the DM an assistant DM?
No
ok standby let me link you the settings location for hiding stuff
That is strange!
There's my settings file if you have a way of viewing it
Oh it just shows right in here, that's convenient I guess
Is that reddish card v10 midi or something else guys?
Let me try that really quickly on v10 before I go to sleep
It kinda reminds me of the player chaser card in v9
Okay, so here's how I have it set up.
The spell https://gyazo.com/1bdfac804f75d5e60d7e6f7a5a780cea
Spell details https://gyazo.com/ccccd555eaf751936925aac1e06c73e6
Spell ItemMacro https://gyazo.com/7450576dd692924d667d0aa9f6c87af4
Spell DAE https://gyazo.com/b3b5f22545479b74dfa3657bb828af34
Spell Macro https://gyazo.com/fa71d1cdc0adcb8b6a00324587a39cd3
Initial spell saving throw using MidiQoL automation https://gyazo.com/8bcf771dd72be26bd79baab32c858026
The OverTime damage using MidiQoL automation. It doesn't seem to do any damage. It just gives me a damage (fast) button which repeats that dialogue whenever I click it. https://gyazo.com/755b881dba6e180d86817685aac91858
In V9 that reddish tinted card should not be seen by the DM, its basically the player equivalent, if it is indeed what I think it is
The red card is the damage log, that's a different mod
remove the damageRoll and damageType from the Spell's overtime effect DAE.
ok makes sense, its very similar to a midi setting fyi if you wanted to trim modules
I think your issue, barring module reasons, is this setting in the GM tab:
I'm on v9, so your settings may look different
Yup, seems to go through, though it deals no damage
@covert mason you are missing some commas in the overtime effect too., that's why it wasn't triggered.
But you don't need that damage part in the overtime effect. Just turn=start, label=Risen Reaper Spell, rollType=save, saveRemove=true, saveAbility=con, saveDC=@attributes.spelldc, macro=RisenReaper
I switched that to entire roll, no difference
try reloading your page/cache?
and then also try disabling that module you said the card was from
and also, its not going to change previous rolls, just future rolls, so reroll
Yeah I know. I just did a full reboot of both my browser and Foundry, no change
@covert mason OK you need to match the overtime effect label with the name of the spell you are using
Aye, I think it's been fixed!
the ony two modules that look sus with compatibility with midi(purely guessing) would be damage log and quick combat only cause I don't know what they are but they look attack roll oriented
can you show me the item details of the weapon that is doing all these attack rolls?
It casts the spell again and breaks concentration whenever I deal out the healing, but that's probably just innate to how the macro works, so it's fine. I can work around that!
the details tab of that
Oh you are using concentration?
Needs another small edit for that... 😄
Aye, it'd be a concentration spell
Yeah, it has to be a module conflict, can you install find the culprit and then use it to cycle through to see if just midi+dae+dependents works fine and something else is messing with you?
To uses find the culprit, its button is in the manage modules window, press it, then it lets you pick the starting modules, choose midi+dae+socketlib+libwrapper and then start the process
add this ```js
newItem.data.components.concentration=false;
let ownedItem = new CONFIG.Item.documentClass(newItem, { parent: sourceActor });
I noticed in the NPC ability version that when using it as a recharge ability on a 5-6, it tells me that it has no more charges of the ability when I deal out the healing, so it seems that it uses the ability once, and once again when it does the healing.
In the ItemMacro or the OverTime Macro?
these are all extra info which need to be addresed 😄
Right, sorry >_<
the overtime macro. add the line newItem.data.components.concentration=false; before the let ownedItem = ... blah blah blah
Does it not autorefresh?
in v9 it does
Wonder if it's not autorefreshing because I'm using the program instead of a browser
once you choose the stuff, it starts the process and refreshes, the reason FTC is better than manually doing it is cause FTC remembers what you had enabled and reenables them when you are done
the program is actually a chromium browser
but, I'm on v9, and I have no idea how v10 foundry behaves
so I'm at a disadvantage in trying to help you
Yeah because with everything else disabled it works..but idk what it has disabled since I see a lot of my mods are still running
try those two suspected modules, Damage Log and Quick Combat, and seriously...get rid of Better Rolls for 5e, that thing will never work in foundry v10 and is only in the way.
for the NPC ability try adding this ```js
newItem.data.uses = {};
Yeah I'm gonna have to go through manually enabling mods one by one til I find the culprit lol
Yeah I'm not sure whats up with foundry v10 and FTC, maybe its bugged atm I dunno
It forces disadvantage on the psychic blades though, for some reason
for rogues soulknife
is the target prone, does the source actor have any actiive effects on them?
Nope. I'm wondering if it's because Midi is considering it a ranged attack
DF Chat enhancements maybe
look at the details of the item
the importers are well known to import badly setup items
I think I have that module and its not doing that but again, v9 vs v10
oh nope, I don't have chat enhancements, yeah that module could be the culprit too
good catch
DF chat enhancements and all of DF modules are not v10 compatible as per the compatibility warnings.
Mind you that there is also DFreds which are different ones 😄
Yep you were right on psychic blades. It was set up as a ranged attack so it was forcing disadvantage since the target was within 5ft
Actually just disable all modules compatible with v9 only...
its not so much the importers making a mistake but more that the importer doesn't know midi exists to rely on those data fields
Initiative double click is 100% safe to leave on
