#MidiQOL
1 messages Β· Page 52 of 1
Or also use this and just change the module version to match
https://gitlab.com/tposney/midi-qol/-/blob/v10/package/midi-qol-v10.0.24.zip
Then unzip in the modules folder in your local Foundry userData
dae probably has its storage in the same setup only in his dae branch
https://gitlab.com/tposney/dae/-/blob/v10/package/dae-v10.0.15.zip pretty much
You can find all of them in here in the gitlab repos:
https://gitlab.com/tposney/dae/-/tree/v10/package
https://gitlab.com/tposney/midi-qol/-/tree/v10/package
i downloadet both and put them on my server π
you sure thats the right dae in your first link?
lol
Changed the link(s) to v10 branch(es) π
I did that too once when I went to download
the 40 red errors told me I did something wrong lol
Okay, now i have Midi 10.0.24
and DAE 10.0.15? Correct?
no I think its 14 dae
well maybe dae doesn't matter for that
I know midi 25 throws the incompatibility warning and unenables, but dae may be different.
Yeah I haven't touched dnd5e 2.1 so I'm still on the super safe ones and I show 24 for midi, and 14 for dae
Oh wait I am on Dnd5e version 2.1.2. Keep forgetting bout it
So DAE .14 Midi .24 for dnd5e v 2.0.3
I don't think theres any feature changes in them, hes just fixing the dnd5e stuff
but...dnd5e has tons of shiny stuff
I needed moarrrrr π
I am just playing around. Cant decide between RSR and Midi... π
Well that is not a direct comparison π€·
MidiQOL will can help you automate all aspects of rolling items in your game
RSR will help with the auto-rolling
But if i use the one, i cant use the other. So its a bit of a comparsion π
RsR alone ist not what i want. But every function i need to add, i think Midi will handle all of them better. So i have to find my sweat spot.
(and the "foundry doesnt throw any errors on what i am doing" spot)
I truly cannot attest to what RSR can do as I have never used it π€·
MidiQOL handles all that I want more than fine, but has a learning curve!
WIRE would be a better comparison
Yes I have also seen this and will look into it.
@inland oriole
A bit late but here goes: https://github.com/thatlonelybugbear/FoundryMacros/blob/main/Healing_sliders/healing_sliders_3_targets_withMidiQOL.js
It needs MidiQOL for getting the friendly tokens within 30 ft of the selected one (can change the getValidTargets function to whatever you want though easily) and applying the healing to not owned tokens.
It is supposed to be used via MidiQOL automation.
Regarding this from #macro-polo #macro-polo message
Help, so to jump in, but I have spent last night's game, and this morning trying to figure it out π¦
The players are not seeing the attack roll. I can now get them to see the damage card, but no attack.
I have tried everyone of the options in my image. Could it be somewhere else?
I also have NO other module on right now, while debugging.
(I am logged in as DM, and a player to test)
Midi does not work with:
Ready Set Roll
Better Rolls for 5e
Roll Groups
Fast Rolling by Default
Fast Rolls or Quick Rolls
Dice Tooltips
Taragnor's Gm Paranoia
WIRE(Whistler's Item Rolls Extended)
Minimal Roll Enhancements
Retroactive Advantage/Disadvantage
Max Crit
Advanced Spell Effects module is just dead in v10 and often the culprit of things...
Thank you, but right now I don't have anything else on
you mean you only have 4 modules on right?
no, 3...
well I included dae
4
what versions are you on?
version numbers of dnd5e, foundry v10, midiqol, dae, libwrapper, socketlib
They are all up to date
in your full module line up, did you at any time have WIRE or MRE installed?
what version of dnd5e are you on
drag out two starter heroes from the dnd5e starter hero compendium and hit one with the other
ok
also can you show us what chat lookis like when you roll the full attack?
Damage is now missing, but I think I tuned that off somewhere cause it was
DM:
player:
I don't see any issue here, because you are whispering your attacks
the drop down just below that
You either have gm roll on or self roll
god what
OMG
the drop down there that says public, yours probably says roll to gm or self roll
<--- crawl in hole and die
Thank you so much. I didn't even know that was there haha
I do this all the time, cause when I prep before sessions I set it to private and forget to undo it when we start
Yes, but NOW, I will know to check there, before spending hours rofl. Us DM's are a breed of crazy
You tell me. I spend hours upon hours trying to build a tiny automated convenience feature in foundry instead of actually preparing the next session (zhell will probably laugh at me for this)
Yeah I think there are modules here that can really entice you to burn prep time on useless things, no offense to the modules, its a vtt thing
Levels, monks enhanced journal, and MATT are modules I find myself doing really stupid things in that I could just let go and be fine, but prep time be damned.
MEJ you can get lost in world building really easily if you don't have some self control
I'm trying to get this spell to work using this macro.
You can use your action to control the hand. You can use the hand to manipulate an object, open an unlocked door or container, stow or retrieve an item from an open container, or pour the contents out of a vial. You can move the hand up to 30 feet each time you use it.
The hand can't, activate magic items, attack with weapons, or carry more than 10 pounds.
You can attack with the hand itself. Make a melee spell attack for each hand summoned as part of your action to cast this spell. On a hit, a hand deals force damage equal to 1d4 + your spellcasting modifier.
Higher Levels.
When you cast this spell using a spell slot of 2nd level or higher, you can summon one additional hand for every spell slot above 1st.```
But It's not summoning anything. I'm probably doing something wrong here, but I don't know what. π
what is num in ```js
const updates = foundry.utils.mergeObject(constants[num]);
and merge object takes two args
Just start logging everything π
And it seems that it's ```js
actor.system.attributes.spellcasting
yeah much more straightforward
You and I both. I have been spending the last 3 hours trying to figure out how to change a token on death. I just started a dragonlance game, and want the draco's to turn to a stone image on death π
-
Token Variant Art might do it with some prep.
-
Effect Macro with an effect triggering
on Combatant marked defeated -
Combination of MidiQOL and DAE
Could you explain the banked rolls thing? Stealthy is just recording whatever the last roll is - you can roll as many times as you want.
Could well base it on MidiQOL applying the Dead or Unconcious DFreds CE effect, if you are using that one too
I am ")
Just grab Effect Macro to make Zhell properly happy too π
Edit DFreds CE conditions and add a macro to change the token img for specific tokens on Effect Creation
Bit of an update on this
log out all of your symbols and variables
Thank you, I will work on deciphering that π
Oh. How would I go about doing that again? π
console.log('Some label', someVariable)
Duplicate as Custom.
Then Add Macro bottom right
thank you!
console.log('levels', actor.system.details.level)
console.log('mod', actor.attributes.spellmod)
console.log('prof', actor.system.attributes.prof)
console.log('msattack', actor.system.bonuses.msak.attack)
console.log('[{spellLevel: level}]', args)
const [{spellLevel: level}] = args;
const levels = actor.system.details.level ?? actor.system.details.cr;
const mod = actor.attributes.spellmod;
const prof = actor.system.attributes.prof;
const msattack = actor.system.bonuses.msak.attack;
const summonType = "Summoned Hand";
let updates = {
token : {
'name':`${summonType} of ${actorD.name}`
},
actor: {
'name' : `${summonType} of ${actorD.name}`,
},
embedded: { Item: {
"Hand Attack":{
'data.attackBonus': `${msattack} + ${mod}`,
'data.damage.parts': [[`1d4 + ${mod}`, 'force']]
}
}}
}
warpgate.spawn(summonType, updates);```
Like this?
actor.getRollData().attributes.spellmod π
This is not valid ```js
const mod = actor.attributes.spellmod;
const actorD = game.actors.get(args[0].actor._id);
const [{spellLevel: level}] = args;
const levels = actor.system.details.level ?? actor.system.details.cr;
const mod = actor.getRollData().attributes.spellmod;
const prof = actor.system.attributes.prof;
const msattack = actor.system.bonuses.msak.attack;
const summonType = "Summoned Hand";
let updates = {
token : {
'name':`${summonType} of ${actorD.name}`
},
actor: {
'name' : `${summonType} of ${actorD.name}`,
},
embedded: { Item: {
"Hand Attack":{
'data.attackBonus': `${msattack} + ${mod}`,
'data.damage.parts': [[`1d4 + ${mod}`, 'force']]
}
}}
}
warpgate.spawn(summonType, updates);```
Okay, here's what I have. It summons the hand, but the mod seems unidentified.
and what do the console logs say?
and if this is v10 -- change that Item data to system
Does that look correct?
You will need to update the token.document.texture.src
And make sure that it only applies to the token.document you want.
So you will need to create a check for the correct token
confirmed, spell mod is not being picked up
now log out just the actors rollData
console.log(actor.getRollData()) ?
Oof dnd5e version issue probably
oh lol good catch
Actually which Foundry version are you on?
10... most recent
Ah, that might be an issue. 
Also not seeing any Spellmod under system > attributes
Maybe that's why
you need that actor's rollData
Something like this should do it. ```js
if (token.name === "Name of the token to be updated") await token.document.update({"texture.src": "path to the new token image you want"})
Just double check for issues with names of linked/unlinked tokens etc, so as to grab the correct one
That's what was outputted in the info when I did console.log(actor.getRollData())
Oop. Nevermind. Was viewing the wrong thing. 
what dnd5e version?
2.0.3. I locked it to that version because tidy5esheet hasn't been fixed yet.
i guess just do it the old fashioned way and grab their spellcasting, and look up the mod directly
Aye
const spellcasting = actor.system.attributes.spellcasting;
const mod = actor.system.abilities.spellcasting.mod;```
Maybe something akin to this
very close, but not syntatically what you intend
const spellcasting = actor.system.attributes.spellcasting;
const mod = actor.system.abilities[spellcasting].mod;
Oh, thank you π
whenever you want to look up a property via a string variable, you need to use the "map-style" accessors
That worked! I wasn't even close, and now I don't have to worry about non draconians as well!
Heh, I've still got a lot to learn
So I've got the basic spawning system down. Is there any way I could spawn it a number of times depending on the spell level?
const actor = game.actors.get(args[0].actor._id);
const [{spellLevel: level}] = args;
const levels = actor.system.details.level ?? actor.system.details.cr;
const spellcasting = actor.system.attributes.spellcasting;
const mod = actor.system.abilities[spellcasting].mod;
const prof = actor.system.attributes.prof;
const msattack = actor.system.bonuses.msak.attack;
const summonType = "Summoned Hand";
let updates = {
token : {
'name':`${summonType} of ${actor.name}`
},
actor: {
'name' : `${summonType} of ${actor.name}`, 'system.details.cr': levels,
},
embedded: { Item: {
"Hand Attack":{
'system.attackBonus': `${msattack} + ${mod}`,
'system.damage.parts': [[`1d4 + ${mod}`, 'force']]
}
}}
}
for(let i = 0; i < [{spellLevel: level}]; i++) {
const [id] = await warpgate.spawn(summonType, updates) ?? [];
if(!id) continue;
const spawn = canvas.scene.tokens.get(id);
await new Sequence()
.sound().file("/Sounds/Combat/Holy/FX_Holy_Magic_Cast_Small_*.ogg")
.effect().file("jb2a.impact.010.blue").atLocation(spawn)
.wait(300)
.animation().on(spawn).opacity(1)
.play();
}```
I have this from a dancing lights macro. I'm wondering if there's a way I could use it with this.
```js
for(let i = 0; i < 4; i++) {
const [id] = await warpgate.spawn("Dancing Blue Light") ?? [];
if(!id) continue;
const spawn = canvas.scene.tokens.get(id);
await new Sequence()
.sound().file("/Sounds/Combat/Holy/FX_Holy_Magic_Cast_Small_*.ogg")
.effect().file("jb2a.impact.010.blue").atLocation(spawn)
.wait(300)
.animation().on(spawn).opacity(1)
.play();
}```
π«’ I cannot get it to apply dead. It works perfectly when I manually do it.
can probably just use the duplicates option for the options argument: https://trioderegion.github.io/warpgate/global.html#SpawningOptions
I might have mixed the effects up.
Check MidiQOL settings => Workflow Settings => Mechanics tab
ps: It seems to be Dead and not Defeated contrary to what the option says π€
The homebrew spells says you can summon a number of them within 30ft of you, like a single mage hand, and I'm trying to aim for the sequencer effect to happen on each spawn
you could loop the placement if you need to pick specific locations for each
or if you are ok with spawning in a group, put your animation code in the post callback so that it fires for each spawned duplicate
That was it - didn't even know that was there. One last thing for now hahahaha -
Kind of removes the coolness
I looked in the core - didn't find anything
The Overlay?
It seems you have quite a few modules adding that Dead condition on the token.
That big one is core - according to find the culprit , but I will keep looking
maybe not...
What is the MidiQOL setting
Overlay as shown on my screenshot or icon?
icon
it is something else - looking for it π
Found it, π it's so cool now
Can I add to that macro? So it can play a flesh to stone sound? Or has that changed with 10?
AudioHelper.play({src: "audio/SFX/Fire arrow.mp3", volume: 0.8, autoplay: true, loop: false}, true);?
Just try it out. If it's not playing, pop in #macro-polo and they will get you sorted quickly
How are you folks handling upcasting spells that get more targets like Bless? So three targets at 1st level and 5 at 3rd⦠Or do you just set the spell details to whatever your max is?
One of our players was struggling to upcast it on everyone last session, am just using the SRD bless
(with CE)
So the new midi was pushed out but still no auto application of damage? I used find the culprit and left midi socketlib and lib wrapper. Anybody else still experiencing this?
Can do an update before targeting to push in the workflow the correct number of targets based on spell level
Actually that sounds interesting. I will probably play with it later tonight.
A world script should do it π€
Parse the spell's description for an entry of higher level and so what needs to be done. Hmm might need some keywords present
Any console errors?
I donβt mind just setting the spell to the max, just thought there might be a midi way of doing it already since it enforces targets
is lib-df-buttons a hard requirement for midi?
ctrl+f5 will reload without cache
Weird I was having issues with df buttons and curvy walls
disabled them both and now it is fixed
I guess those need to updated and I need to clear the cache...
Is there a tutorial or something for adding damage types/ immunities for Midi-qol to recognise?
And is it possible to remove other types?
Itβs a shame you canβt just put a formula in the targets section on the details tab. That would have to be a dnd5e addition, right?
Midi could technically add that as well π€
Hmm is there a DnD5e feature request for something like that? π€
Not that it makes much sense from the core system perspective π€·
true lol
And check the pins in #macro-polo on how to make a world script.
there are actually a decent number of spells that scale that way, including invisibility
Indeed
Tim's not afraid of manipulating the core system sheet... maybe when he's at a loose end that could be something to add to the midi repertoire
A PR was merged in 2.1.0 for item duration to use roll data. Now, if someone were to do the same for number of targets...
I have 'auto roll damage' on at the moment, but a player has a versatile weapon... how do I make it roll the versatile instead of normal damage?
banking rolls is what alot of people do with stealth that they don't realize. Its when you let the player pre roll their half of the stealth contest. With computers and vtt's there is less of a reason to need to utilize passives, plus passives are flat and boring. I have my players just simply declare they are taking the hide action, and then when a challenge to their stealth is needed, if its without their knowledge I run th challenge privately to myself, if its in combat and they are attempting to attack while stealth, I have them roll their own skill challenge using Monk's Token Bar. This is just one of many ways to tackle the subject. I just don't like using passives which I believe is what you use in your module. Plus I've never been a fan of inhibiting the player when just the character should suffer the penalties. Hiding the actor while they can still technically attack at adisadvantage makes the turn a lil more complicated when it doesn't need to be.
im sure its obvious but I can't see it anywhere. It's on the chat card but its too late for that by the time it pops up
There is a keybind in MidiQOL controls for rolling versatile when the Versatile item property has been selected in the Item's details page
If the player does versatile and normal switching alot, and the keyboard shortcut is annoying, you can make 2 weapons that they pick from
ahh, any idea where? I'm not seeing a keybind section
keybindings are their own buttn in the settings sidebar
configure controls
How can I configure an option for great weapon master/sharpshooter in MIDI?
if you have dfred CE, make a self/self item that rolls and midi+dfreds does the rest
if you don't have dfreds CE, get it π
I do have dfred CE, not sure how to make a self roll item thoughπ π π
range and target on the blank item is set to self/self for the far right drop downs in them, also make sure the item made matches dfreds CE's premades for sharpshooter/gwm
if you have a language barrier that can require some nuanced spelling corrections
midi takesdfreds CE and if it detects a matching item roll to a CE made, it applies them following the items details
if you want it to always prompt the player every attack, you could probably pull this off as an optional.NAME.macro too
I personally would rather it be an item roll
I'm trying to make a feature that overwrites a flat DC on specific items (Alchemist's Fire for example) with a onUseMacroName preItemRoll but since the items are consumables when it is consumed the DC doesn't update to the value I set it to be inside the macro
Does someone know how to workaround the problem?
Hmm doesn't the Item roll complete before the consumable is destroyed?
p.s. I don't want the DC to be permanently changed, but I'll get what I can
Oh wait I might have misread the issue
I don't believe so no
What do you have as the macro rn?
Ok got it! Thanks man, works great!
I have another one that works with Hooks.on("dnd5e...stuff...") but it has the same problem
Do you fancy testing a small "macro" that handles equipping items as main and secondary and respects the Dnd5e rules for things like Versatile, two weapon fighting, dual wielder etc and reporting back your findings issues etc?
I am looking for some more testers before I try to release it as a module π
can't help thinking of this when you ask that:
https://media.giphy.com/media/L3bj6t3opdeNddYCyl/giphy.gif
sure
Hello
I Need Help
midi-qol | Error evaluating macro SyntaxError: Unexpected token ':'
at Function (<anonymous>)
at Workflow.callMacro (workflow.js:1628:15)
at Workflow.callMacros (workflow.js:1519:21)
at Workflow._next (workflow.js:924:18)
at async Workflow.next (workflow.js:262:10)
at async Workflow.next (workflow.js:262:10)
at async Workflow.next (workflow.js:262:10)
at async Workflow.next (workflow.js:262:10)
at async Workflow.next (workflow.js:262:10)
at async Workflow.next (workflow.js:262:10)
at async Workflow.next (workflow.js:262:10)
at async Workflow.next (workflow.js:262:10)
at async Workflow.next (workflow.js:262:10)
at async Workflow.next (workflow.js:262:10)
at async Workflow.next (workflow.js:262:10)
Hey, I meant the actual macro that you are trying to execute when this error pops up in console π
https://github.com/thatlonelybugbear/FoundryMacros/blob/main/Loadout selection/Loadout_v10.js
Just use it as a hotbar macro, on a test actor or a duplicated one just to be safe for starters.
Does the description in the beginning make sense?
@celest bluff 
There seeems to be a SyntaxError midi-qol | Error evaluating macro SyntaxError: Unexpected token ':'
Have you imported this as an actual Item? Or do you try to use it as a macro?
What's the context?
Looks like a paste into macro and not an import
Yeah that would explain the error
All json files are imports, create an called 1 or whatever. Then right click on it and choose import
We gotta push to get rid of this dance in v11 βοΈ
thanks
If someone has an idea about it, feel free to tag me
Got side tracked. So you want to change the DC based on what exactly?
I see you've set a flag on the actor for the Alchemy DC. ok
Yes exactly, to give you context this is a feature that overwrites every flat DC of every alchemical item to your alchemy DC and lets you add int to rolls to hit with alchemical items
The macro works but it has this bug that when the item is consumed then the DC doesn't get updated to the alchemy DC one
No worries I just wanted to point out to tag be if someone wanted to help because I have notifications off
Not sure if this is midi or core DnD, but I want to add a temp vulnerability to bludgeoning/slashing/piercing, to drop off at the end of a long rest. Would that be system.traits.dv.custom | custom | non-magical physical, or flags.midi-qol.DV.physical | custom | 1?
OK so to recreate I set a flag on the actor, create a consumable item named whatever and an actorOnUse macro to change the DC?
The items needs to have "Alchemical Item" inside its source
Give me a second
because neither seem to be doing the double damage for Damage Vulnerability...
Potency is the feature (it should add the alchemyDC flag by itself if you have DAE) and acid,basic is the item I use to test it
OK let's see. Go to the traits and check the one you want.
Then open console, select the token, type _token.actor.getRollData().traits.dv and go through the returned values.
@celest bluff i Import json but don't work
OK Will test them π
No rush take all the time you need
hm. literally no damage is being doubled for the vulnerability...
What's the effect you use?
right now none. I just checked in the damage vulnerabilities on the char sheet
manually
and it's still not doubling the damage.
oh, wait. I'm dumb. It's not showing the roll as doubled, but it IS applying double damage in the midi damage card. Sigh.
Hey guys, I had asked this in the dnd5e channel and was directed here:
How do you handle spells that generate multiple "attacks"? (Magic Missile, Eldritch Blast, Scorching Ray) I currently use Midi-QoL with DAE, but I'm struggling to get effects that scale up the number of hits to work right without diving deep into the macro territories that I'm not familiar with.
Yeah, just re-rolling is the most common way tbh
For magic missiles there is a macro floating around as it doesn't need separate attacks for each missile
Yeah I have the one Crymic posted back in the day
Eldritch Blast etc, just roll once per attack
I'm just not versed enough in code to figure out how to adapt it accordingly, or get it to scale with upcast/cantrip level
You mean just for the correct number of available uses?
I was hoping there was some secret trick I wasn't aware of (like how using "Special" range negates targeting self in an AoE scenario)
I would use the Limited Uses with charges up to the correct number based on spellLevel etc and a small macro to reset the uses on Item Roll
Number of uses, and ideally "smart" scales. i.e. if I say 3 targets, and only specify 1, it knows to focus all 3 hits on one person
Or the aforementioned Magic Missile, which pops up a dialog and allows you to allocate attacks out
WIRE accomplishes something similar with some code that repeats an action loop automatically
But if it's use the card, so be it, no biggie
The issue with that is the multiple attacks. Each one should be each own and thus it doesn't offer a much more convenient way compared to individually rolling.
It can be done though, just not something I have ready to share.
I can write something for the Eldritch Blast, but it might be tomorrow
You're on v10? Edit the json and change data to system then save the file. Then try again.
Also shoutout to @celest bluff for his Magic Missile implementation, it works really well.
@celest bluff THX
If you don't delete the attack/damage buttons from the ChatMessage, you can just click on Attack again
Yup, I think that's where I'll direct my players instead of having them "recast" over and over.
There's a bug in the latest version of 5e that prevents v9 json imports from importing in.
For a while it wasn't an issue, until more players gained access to ray-based attacks
I don't really see the need to automate eldritch blast. You'll run into reaction issues
Hey @celest bluff Lay on Hands return this mensage to me You are out of the required resources.
Uses resources, not uses
Resource needs to be named Lay on Hands. Caps don't matter
midi sample items has the instructions right in the description of how to set it up
although the midi sample item doesn't remove disease/poison automatically
so ?
They are referring to mine
The post on the patreon should have covered this all. I do have a discord, where this is better directed instead of general chat for midi. With tons of people who can also answer these questions.
It uses resources instead of uses cause uses suck and it always uses 1 reguardless of any action
@rancid tide interesting. So the macro if you untick the consume available use, will correctly change the DC.
But if you consume it doesn't !
You could just wait for the roll to complete, and delete it afterwards!
midis item has a DAE that does the renaming and setting of the resoruce but like all items, the linkage to consumption is the part you have to manually do
Ahh interesting I thought it didn't work only when the item was completely consumed
this sounds very interesting for spell scrolls and magic items like circlet of blasting
thanx
Wait, this is what I mean. If the item gets "consumed" it will not change the DC
But yeah just delete it after the fact and be done with it π
Okay I thought you meant that if even a single charge was used it didn't work
I only use passives if there isn't an active spot roll. For my groups, 90% of Stealthy's utility is during exploration/scouting - it rarely is an issue during combat, so I didn't feel that having it behave like invisibility added any undo targeting burdens that weren't already there. Everyone has different expectations for their games though, what works for me doesn't work for you.
yeah my button/macro I use is basically purely a rogues combat stealth feature.
@gaunt nebula for spells like scorching ray, I have a nifty setup where I use a self/self buff when I cast the spell, and it gives the caster a temporary item that they can use X times
Actually I am a bit confused right now !
I might need someone using core to reproduce...
@molten solar are you around?
I think I understand what you meant before, but doesn't it mean that the user has to know that if the item is consumed then the DC is messed up?
Nah you can include the item's deletion in the same macro on use. Hook on midi-qol rollComplete and delete the workflow.item then
But how do I avoid the deletion of the item on usage then? I should have a way to say basically "okay wait to consume I do that later"
I'm attempting to get the sequencer effects to work here from the Warpgate example of the Arcane Hand spell, but they don't seem to be showing up.
its a v9/v10 issue
includes probably has a data in it
Ahh
the wg wiki isn't v10ified yet
yeet single datas most of the time and doubles are system
also just share the line here or #macro-polo people will help
CTRL + F finds no data entries. I did that prior to replace them all with system
Try using something like ```js
Hooks.once("midi-qol.RollComplete", async (workflow) => {
if (!workflow.item.name === "name of the Acid thingy") return;
else await workflow.item.delete()
})
ctrl f includes and share the line
Inside the macro I already have right?
yeah
let colorChoice = update.token.img;
if (colorChoice.includes("Blue")){
effect = 'jb2a.explosion.02.blue';
}
else if (colorChoice.includes("Green")){
effect = 'jb2a.explosion.02.green';
}
else if (colorChoice.includes("Purple")){
effect = 'jb2a.explosion.04.dark_purple';
}
else if (colorChoice.includes("Red")){
effect = 'jb2a.explosion.dark_red.0';
}```
99% of changes are datas but ocasionally its not a data
you might want to share that in #macro-polo for more π
At the very end right?
wait
colorChoice is defined wrong
its src oro something
I think img got switched out for something like texture.src but someone smarter will answer better
When debugging. Log out all your variables
Just as a first step, it's often your last
oh also if tokens defined in the v9 macro thats naughty
Midi is best relegated here, particularly if there are errors
isn't it naughty to define token now?
if (item.hasSave && item.getSaveDC() < actor.flags.dae?.alchemyDC) {
item.system.save.scaling = "flat";
item.system.save.dc = actor.flags.dae.alchemyDC;
Hooks.once("midi-qol.RollComplete", async (workflow) => {
if (!workflow.item.name === "name of the Acid thingy") return;
else await workflow.item.delete()
})
}
you can only get away with it if you have advanced macros enabled?
yes
Yes but that is unrelated
hmmm, @covert mason your code scriptlet is not what I see in the wiki example
are you purposely changing your variables?
doesn't appear to work
I took out the greetings part, and changed the effects paths to thhhe JB2A databases.
yeah is summonedToken a warpgate predefined variable?
cause that feels like it wouldn't work unless it was lol
or is summonedToken defined in itemmacro?
token.document.texture.src instead of token.img on v10 fyi
yeah but I think he still needs to define token or use another variable than "token" there
None of this matters right now, lol. Just log out update
Any errors in console.?
you are updating the tokens image with jb2a animations not animated token images in your example
Does it work on your end?
Yes. Just clear the Item Uses and the Destroy on empty
Only Place Template should be shown on the Dialog of the item use
Aye, that's the intention. That's what's on the warpgate example.
WG example are token images, the arcane hand actor images, your image links are for the puffy smoke animations typically used to mask a token arriving on a canvas
Ahh then that's the issue, problem is that I really really need the item to have uses and destroy on empty
token: {
"img": 'modules/jb2a_patreon/Library/5th_Level/Arcane_Hand/ArcaneHand_Human_01_Idle_Red_400x400.webm'
}```
that section of the macro is deciding what color the hand is
It will be destroyed deleted when used. Does it matter if it's shown or not in the details tab?
your images you changed to are the puffy smoke animations
Thhe explosions?
That's the effect the sequencer is supposed to play on spawn
Not the hands themselves.
well shit I'm sorry I didn't realize it was that section
Sadly yes because I don't have just one item that this thing works on, I have many features that work on the assumption that those items have charges
No worries tho, thanks for the help
I am trying to figure if there is something off with MidiQOL or it's more of a system bug or something
Depending on what you want to do you can use that macro for all items with charges
I feel like it's more of a midi/system bug, because even if the item has a set DC (flat, like a scroll or something) when consumed the DC becomes 10
Give them an identifier and look for that when Hooking on item roll complete
You need itemmacro to run on post active effects to check uses
then can have it see uses is 0, then remove the item
or active effect
I don't know if all that is worth it, also the items can be given to other actors so unless this "delete macro" is also on the receiving end it's a problem I think.
I use
const lastArg = args[args.length - 1];
const version = Math.floor(game.version);
let actorD = canvas.tokens.get(lastArg.tokenId).actor;
let itemD = lastArg.item;
if((version > 9 ? itemD.system.uses.value : itemD.data.uses.value) > 0) return {};
let conId = actorD.effects.find(i=> (version > 9 ? i.label : i.data.label) === "Concentrating").id;
await MidiQOL.socket().executeAsGM("removeEffects", { actorUuid: actorD.uuid, effects: [conId] });
on the item
At 0 it removes the active effect which is bind to the item, then removes it.
dae is ready setup to delete the item in the off
The issue is that Rayla is trying to manipulate the DC of items which are consumed and have a save, based on some properties.
When the item is set to be destroyed on empty, the macro to change the DC is not working for some reason
If the item is not to be destroyed, it works fine
I'm not seeing anything for update
is it not used in that first line? const something = update.token.img?
Ok is this item created or already existed?
I think it's a bug because even with items that have already a set flat DC if the item is consumed the DC showed in the chat isn't the same of the item
is it part of a spell effect?
It's a consumable item that already exist
how is the DC being applied, based on the user who uses it?
The item is created by a feature actually but idk how much it changes things in this case
Doesn't matter as I imported it and saw the same issue
Yes based on a flag set inside of the actor who uses it
If the actor doesn't have the flag the item uses its base flat DC
You'd have to ignore item itself and have the macro do it
you won't be able to call to the flag
is there a way to override all cha checks with a 1d20min5?
I saw that the same issue doesn't happen when in the saving throw section of the item you set up "spellcasting" instead of a flat amount
You could have it overwrite the item on the before roll
What is really strange is the difference in behaviour when you have it to destroy self on empty and when not π€·
yeah you'd need to run 2 macros.. preItem and Post active effects
the item data is stored in the chat message directly when the item is destroyed
Okay while testing I noticed that when the item is given a flat DC without the feature interfering and the item is consumed the DC is "saved", but when there is the feature it overwrites it at 10
you cant read a variable before you declare it
Yeah I am trying to figure out the how and the why, as MidiQOL overwrites that message and the user executes a macro in MidiQOL workflow "before the item is rolled"
have you checked to see if this macro works as is in v9 or after v10ification before your edits?
OK so when the item has charges it breaks π€
I think that when the overwrite is done it's too late since the item is gone I guess
Maybe the "update" needs to be done on a hooks.on("preItemConsumption") or something
I purposely uncheck destroy on empty just cause my players are inept and fat finger item rolls
Even with this it is not working
const lastArg = args[args.length - 1];
const version = Math.floor(game.version);
let actorD = canvas.tokens.get(lastArg.tokenId).actor;
let itemD = last.item;
const itemUpdate = await fromUuid(args[0].uuid);
if (args[0].macroPass === "preSave") {
let alchemySave = getProperties(tactor.flags, "whatever.this.flag.is") || 10;
itemUpdate.system.save.dc = alchemySave;
} else if (args[0].macroPass === "postActiveEffects") {
if(item.system.uses.value > 0) return {};
itemUpdate.delete();
}
I would really really prefer if the macro didn't delete the item and it was left to the user
then remove the last part
But if I have charges/destroyOnEmpty? does it work regardless?
Okay I'll try an idea I just had
texture not textures sorry
Oh xD
but still it is undefined before that π
Is it not defined with
let colorChoice = update.token.document.texture.src;```?
Sorry I cannot follow that macro right now π
log everything to see if it breaks somewhere! The most valid suggestion which helps 99% of the times π
I really think it's bug, I tried using Hooks.on("dnd5e.preItemUsageConsumption") and it doesn't work when consumed
any people use Destructive Wrath ?
You are accessing the Item5e#data object which is no longer used. Since V10 the Document class and its contained DataModel are merged into a combined data structure. You should now reference keys which were previously contained within the data object directly.
at logCompatibilityWarning (commons.js:1692:19)
at Item5e._logV10CompatibilityWarning (commons.js:6642:14)
at get data [as data] (commons.js:6542:24)
at eval (eval at callMacro (workflow.js:1628:15), <anonymous>:8:48)
at EmbeddedCollection.filter (commons.js:3244:14)
at eval (eval at callMacro (workflow.js:1628:15), <anonymous>:8:34)
at Workflow.eval (eval at callMacro (workflow.js:1628:15), <anonymous>:34:4)
at Workflow.callMacro (workflow.js:1629:14)
at Workflow.callMacros (workflow.js:1519:21)
at Workflow._next (workflow.js:924:18)
at async Workflow.next (workflow.js:262:10)
I even tried to set the scale to "spell" but it doesn't change the value inside rollItem
this error is looping my Foundry
// Tells you the maxmium damage for the feat or spell.
// Thanks to Kekilla for helping me write this macro.
let confirmed = false;
let dmgtype = ["lightning","thunder"];
let selected_items = actor.items.filter( i=> i.data.data.damage?.parts.length > 0 && dmgtype.includes(i.data.data.damage?.parts[0][1]));
let optionsText = "";
for(let i = 0; i < selected_items.length; i++) {
let opt = selected_items[i];
optionsText += <option name="ability" id="${i}" data-value="${opt.name}">${opt.name}</option>;
}
let the_content = <p>Choose one to empower.</p><form><div class="form-group"><select name="ability"> + optionsText + </select></div></form>;
new Dialog({
title: "Channel Divinity: Destructive Wrath",
content: the_content,
buttons: {
go: { label: "Feel my Wrath!", callback: () => confirmed = true },
cancel: { label: "Cancel", callback: () => confirmed = false }
},
close: html => {
if (confirmed) {
let selected_ability = html.find('[name=ability]')[0].value;
let empower = actor.items.find(i=> i.name===${selected_ability});
let damageDice = empower.labels.damage;
let maxRoll = new Roll(damageDice, actor.getRollData()).evaluate({maximize : true});
maxRoll.toMessage({
flavor: <p><strong>Channel Divinity: Destructive Wrath</strong><hr>${empower.name} - Maximum Damage Roll</p>,user: game.user._id, speaker: ChatMessage.getSpeaker({token: actor})
});
}
}
}).render(true);
the macro
probably cause it's old and is written for 8.x
my gitlab isn't updated for v10
i don`t found in your patreon too
yeah, I never went back to rewrite it mostly cause I don't have a tempest cleric
at the time I did
but thx
i need make a protective aura to a Artillerist
The cannon emits a burst of positive energy that grants itself and each creature of your choice within 10 feet of it a number of temporary hit points equal to 1d8 + your Intelligence modifier (minimum of +1).
Active Auras will do that
Do not change tempHp with Active Effects.
Also this key you are using is for Damage Reduction.
Is that supposed to be an Aura, or just a fire and forget type of feature?
Nah I think I know what is happening. Testing and will get but to you π
how is damage reduction
@rancid tide just change to this for the relevant part ```js
if (args[0].macroPass === "preSave") {
console.log("here")
if (item.hasSave && item.getSaveDC() < actor.flags.dae?.alchemyDC) {
item.system.save.scaling = "flat";
item.system.save.dc = actor.flags.dae.alchemyDC;
}
}
and `flags.midi-qol.onUseMacroName | Custom | ItemMacro.Potency,preSave` for that part.
Before, the workflow change was purged as the item was updated when the resource was consumed (and that's why it was usable if you were not actually using a charge).
Any changes in a MidiQOL workflow will not survive an actual update of the item.
Now the consumption update will already have happened by the time you trigger the macro in `preSave` Hook, so you can manipulate the workflow without an issue.
What do you mean? flags.midi-qol.DR.tempHp means that the actor has Damage Reduction when affected by a change in tempHp.
DR in that stands for Damage Reduction.
As a matter of fact, whether this specific flag is usable or not, I am not entirely sure π
uh oh
That will unfortunately cause you issues.
What is the exact description of the ability you want to use?
only roll one time
where is super with his copy pasta
The cannon emits a burst of positive energy that grants itself and each creature of your choice within 10 feet of it a number of temporary hit points equal to 1d8 + your Intelligence modifier (minimum of +1).
OK make it target all Friendly cretures inside 10ft
this ability
never ever ever modify hp, temp hp, or max hp in an active effect
ok is work but ever turn i need roll again
Does it need to re-roll every turn?
yes
for how long?
while the robot is alive
Wouldn't you need to use your Bonus Action each round to reuse the ability?
On each of your turns, you can take a bonus action to cause the cannon to activate if you are within 60 feet of it. As part of the same bonus action, you can direct the cannon to walk or climb up to 15 feet to an unoccupied space, provided it has legs.
Create a feature or something that transfers an Effect on the actor that has the Cannon.
On that feature create a DAE (which need to be a Transfer to Actor on Item Equip one).
In the Duration tab of that DAE, choose
Then in the Effects tab
I would just make this a bonus action temp hp heal on the artificer
Lastly in the Item Macro of that item ```js
const targets = MidiQOL.findNearby(CONST.TOKEN_DISPOSITIONS.FRIENDLY,token,10).concat(token)
const roll = await new Roll('1d8+@abilities.int.mod',token.actor.getRollData()).evaluate()
game.dice3d?.showForRoll(roll,game.user,true)
await MidiQOL.applyTokenDamage([{type:"temphp",damage:roll.total}],roll.total,new Set(targets),null,new Set(),{})
or an overtime effect with actionSave
Actually the damage is completely wrong edited.
Omg it works, thank you so much
I was just about to rework the system from the ground up, and at the last second I checked discord just to be sure
Maybe you guys can help me with what I think should be fairly simple but I'm code illiterate
I'm trying to make an animation using stretchTo() and I'm wanting it to stretchTo the center of the placed template.
I'm using a feature that places a template, as normal, and making a macro to use in the "On Use Macros" section in the Midi Qol Fields at the bottom of the feature details. Is it possible to make that called macro utilize stretchTo() and target the center of the feature's placed template?
new Sequence()
.effect()
.file("jkase.fire.ray.fireball.10")
.atLocation(tokenD)
.stretchTo(args[0].targets[0])
.play()```
is what I started with, but have since changed the ability to be template with a save rather than an attack roll, so I need the animation to target the template. Would it be something like:
```let tokenD = canvas.tokens.get(args[0].tokenId);
let template = <something goes here>;
new Sequence()
.effect()
.file("jkase.fire.ray.fireball.10")
.atLocation(tokenD)
.stretchTo(template)
.play()```
?
Try ```js
.stretchTo(fromUuidSync(args[0].templateUuid).object.center)
How would I get the template's uuid reliably? would it use the same uuid as the feature itself?
You get it from the MidiQOL args when you roll an item that places down a template
args[0].templateUuid
i'll give it a shot
I'm not sure if it's the new 5e system, dae, midi-qol, or something else, but when I make a new effect I no longer get a dropdown for effect Attribute Key or the option to add special duration rules. Does anyone know what is happening?
System version and DAE ?
Latest on both
you really should answer with version numbers in this case
It broke when I updated to the new 5e system, was hoping the updates to dae and midi-qol would fix it, but no
there is some issue with the ) one more or one less π
Paste the whole macro
Just a sec, I'll try to find them
nvm, works. I had a parentheses left in there.
lmfao
Amazing. Thanks man!
if the drop down is missing you probably don't have dae enabled
it also would be missing if you were on the new dnd and not the new daes
Found the issue from what you suggested. There was a new option in DAE settings that I hadn't checked or got unchecked with the update. Thank you.
Anyone else noticing some weird behavior with the latest MidiQOL update? I've got reactions not being checked properly, damage automation isn't happening... I can screenshot console errors if that helps.
Dnd5e system version?
sounds very much like you updated dnd5e and midi/dae are on their 2.0.3 era versions
2.1.2
Just updated before posting, actially.
Btw, had a genius idea that someone asked me about for death burst abilities. Have the death burst ablity setup as a normal item roll, and have it have a blank active effect that is passive with a special duration of ends when at 0 hp. Then put an effect macro on it for on deletion that rolls the item.
I've got a weird one for you guys.
So I have a feature that uses Midi-qol concentration and executes a macro "after active effects" that is just a fairly simple visual animation
It's active effects include 3 attribute modifiers (not important) and two macro.tokenMagic effects, which all work
The strange thing is that when the feature is used, nothing goes wrong. But when the effect is removed from the actor, concentration is broken, or it is turned off by any means, the "after active effects" On Use macro is activated a second time and the visual animation is activated again at the same time as the original visual animation goes away due to loss of concentration and can only be removed by randomly activating/deactivating concentration or by using sequencer to simply delete the layer manually.
Any thoughts on a fix? It's a head scratcher for me
Changing the on use macro to a different one works, so I'd imagine it's something to do with that, but I can't figure out what. Does .persist() break this somehow?
.sound()
.file("worlds/testing/sounds/radiance.mp3")
.volume(0.5)
.effect()
.file("jkase.fire.square.dragon.default")
.atLocation(canvas.tokens.controlled[0])
.scale({x:0.58, y:0.20})
.attachTo(token)
.belowTokens()
.persist()
.sound()
.file("modules/animated-spell-effects-cartoon/sound-fx/fire/sfx_fire_07_bg.ogg")
.volume(0.1)
.play();```
Use ```js
if (args[0] === "on") {
//do stuff when the effect is created
}
if (args[0] === "off") {
//do stuff when the effect is deleted
}
Otherwise the macro will be executed during both creation and deletion
let sequence = new Sequence()
.sound()
.file("worlds/testing/sounds/radiance.mp3")
.volume(0.5)
.effect()
.file("jkase.fire.square.dragon.default")
.atLocation(canvas.tokens.controlled[0])
.scale({x:0.58, y:0.20})
.attachTo(token)
.belowTokens()
.persist()
.sound()
.file("modules/animated-spell-effects-cartoon/sound-fx/fire/sfx_fire_07_bg.ogg")
.volume(0.1)
.play()
}```
Like this?
First line not needed, bad paste
Oof sorry itβs quite late and misread,.
You execute this as an onUse MidiQOL macro, not a DAE macro.execute or macro.itemMacro
correct
I tried using macro.Execute in the active effects, but it just didn't do anything
Using the visual effect macro in the MidiQOL On Use section above, it works but with that strange bug
So right now, the feature uses the MidiQOL on use section for that specific visual macro, and then uses the active effects for two tokenMagic effects
If you want DM me an export of the item and will take a look in the morning, I am off to bed now unfortunately π€
okay no worries. I'll fiddle with it some more and if I can't solve it I'll throw it your way
Thanks for your help tonight π
Okay, I actually solved my other problem (by restarting my server) but now I have a new one... I keep getting this error from tokens with reactions. It's really gumming up the works, because it tries to prompt the reaction, can't, and eventually just gives up. But nothing else can be rolled in the meantime. It seems to not affect certain tokens, but I can't figure out what might be going on:
you have v9 macros going on somewhere there
theres no shim for img
maybe click on some of those to see the line in midi, maybe he accidentally wrote something in as a v9 syntax
Ok, on sec
what is your midi version number(and DAE for that matter)
DAE is v.10.0.15, Midi is v.10.0.25
Here's more deets
log the issue I guess, but is it possible you got really old v9 items for reactions?
what are the reactions?
All custom made...
Drag out the dnd5e starter hero wizard and hit them with a weapon
Another example, slightly different
Zanna
Just tried it. Same thing happens.
yep log the issue, use the starter heroes error for the snippet and tell him to hit the starter hero to repro
The custom reactions don't have macros, btw, all of them are just DAE stuff
you can either wait for him to fix, or revert to a 2.0.3 backup
but he can't fix things if nobody reports them so make sure hes made aware of it
Would this involve rolling back my 5e system, too?
well I dunno how you backup, but I personally backup the whole data structure so when I restore a backup, I restore the system folder too
and yes, the point is to get to a 2.0.3 system and 2.0.3 world, that has never been touched by 2.1.x
you do NOT want to backwards migrate data
... Ah. Ok. That might be in play, then, because I think I did that once already before I knew the issues it could cause... Updated the 5e system to 2.1.2 through Forge, experienced some problems, rolled it some key mods back too, then tried updating again at a later date. Learned later that can cause serious issues.
this is exactly what we tried to tell folks about on the day it launched, why they shouldn't install 2.0.3 over 2.1
this might be really painful
it does seem weird that you are the first to report reactions not working, so it does kinda make me think that the issue is how you crunched your data
do you have a backup of before you ever touched 2.1, or at the very least a backup before you threw 2.0.3 on it after?
Looking through my save points right now. It's distinctly possible.
I think pretty much only tim can sus out what is going on here or Elwin
Logged the issue to hopefully get some clarity, but I fully expect to find out this was my fault, lol. Will be nice to have it confirmed, though. Thank you for your help, I really appreciate it. Will continue with a backup and see if I learn anything further...
Unfortunately I think the only save point I have is from 2 weeks ago before I upgraded to Foundry v10. Looks like I've got a hell of a lot of stuff to rebuild, lol. Thankfully my game will be taking a hiatus in about a month, so I guess I'll just live with the issues I've made for myself until I can run some experiments and hopefully rebuild into something cleaner.
hold out for an answer from the smart folks
Just copy babonus.
Dude, I think I found it. It's the Magic Items mod. There's a weird interaction going on there, but after I turned the mod off I stopped having the problem.
I actually had a similar issue a while ago, where having an outdated macro on one actor's Magic Item somehow affected almost all actors with Magic Items or Reactions. Will need to go back and check those items, see if any of them are running eg. a Crymic macro from pre-v.10, then update and see if that solves things. I'm about 98% decided that the Magic Items module is more trouble than it's worth, but I'll still be interested in running the experiment and seeing what happens. What a wild ride tonight has been lol.
Items with Spells DnD5e, a Module for Foundry Virtual Tabletop
I'd follow what Zhell recommends. MIM has many many issues with automation modules and Items with Spells is the alternative that doesn't have any issues, and its pretty much identical other than all the missing premades. If you do switch, make sure you turn off the MIM settings on the items as tidy, if it ever gets fixed, still recognizes the flags and will color MIM flagged items.
but what doesn't line up here is that you said you tested Zanna the starter hero and got the error so π€·
Zanna's shield is very much a spell not a MIM
Yeah, it's really bizarre. Like I said, while MIM was on, it would prompt reactions from actors that didn't have usable reactions, or else it would get tangled up asking for reactions that had nothing to do with MIM. Soon as I turned it off, no more problems.
Hmm... For some reason I can't get the mod to show up in my load list, though... Installed through the Forge and restarted my server, but it's not showing up as installed... Probably a problem for tomorrow, though...
it shows as updated within 48 hours and no open issues.
It looks like Zhell put a PR in for a problem with compatibility
I have this macro set up on a weapon, and it works great. It adds a resource, when the weapon makes the killing blow.
However I now need to make an alternative version, where the weapon instead applies an effect on the creature, and if the creature dies while the effect is on it, it triggers a macro that... does this exact same thing. (looks for and adds a resource).
First issue - is there a way to have a macro trigger when a creature expires (or the effect expires, as I know I can make an effect expire upon death using special duration)
DAE/Times up has a trigger to end an active effect when the creature its on reaches 0 hp, Effect macro has a trigger to fire a macro on deletion of ae.
not sure how to pull off your macro from actor A to modify actor B's item uses though
without shenanigans
oh no
oh wait am I confused
Player makes the effect, and wants the resource, enemy has the effect on them. When enemy dies, player gets +1 resource. Is that not allowed?
Is it a permissions issue?
Well if the targets are always the DM's monsters, it might work
also EM has a defeated trigger if you have an auto defeat at 0 you can skip the dae/timesup step
Generally pretty easy to get around permission issues with macros
the enemies will always be mine yes, the player... shouldn't be killing teammates
I won't say 'never' lol but
you know how players do
midi has a function to create an effect on a target you don't have permission for example
if your monsters auto defeat, you can put your macro in the "defeat" trigger for Effect macro
Is that specifically a midi option? I think I have it so they automatically become flagged as dead, but it was once a CUB setting I used
actually that macro looks an awful lot like an on use macro, you'd have to seriously overhaul it for EM
that macro is an item macro on the weapon yeh
I would just use a flags.midi-qol.onUseMacroName personally
way easier
Have it check if the target has the desired effect and if their health was just reduced to 0.
his effect doesn't have to be the killing blow, it just has to have it while it dies
Effect macros then
Can use the origin of the effect to find the correct actor to increase a resource on
yeppers
where's the 'auto defeat'?
pretty sure monks stuff auto defeats
its a combat thing
it also is done by midi vicariously when combat is active
Special Duration on the effect of 0 hp then use effect deletion trigger
cause dead status auto defeats
I said this 5 mins ago ;p
you can use the defeated trigger instead if he auto defeats/auto deads with midi/monks
Effect macro provides the origin so you can do origin.parent to get the actor.
I'm not seeing auto-defeat in midi or monks
when a monster has the dead status, its defeated in combat I believe
unless I'm mistaken this is core
Either way, you have multiple options
Have the item apply the effect with an effect macro tied to either effect deletion or mark defeated
whatever you prefer
either tokenbar or little details
I think defeated is the better flag incase some power word kills get thrown about
unless I'm blind, midi has no auto dead or marked dead options
I've looked twice
I may be blind
not ruling it out
ahha its little details
next issue - how would I make that macro work in EM
Are you on v9 or v10?
Yeah, in v9 its at the bottom of damage subsection in workflow tab, in v10 its here:
and I think by default when combat is active a creature with the dead status is defeated, but that might actually be MLD/MTB doing that, I forget
if your tracker skips dead creatures, then you auto defeat
As long as the effect is on a GM controlled token, it could be as simple as:
await origin.actor.update({'system.resources.primary': origin.actor.system.resources.primary + 1});```
(As an effect macro)
Could do a warpgate permanent mutation if you wanted it to work on non-gm controlled stuff
Careful with that. If origin is an unlinked token, .parent is the scene.
v10
True, with a midi applied effect is should always be the item
2.1.0 or later
Does the midi CI flag work with just the names of active effects in general? or do I need to world script them in?
condition immunity
Simply using .actor would be safer
wait... the macro does quite a lot of things I need kept in there, I'm not sure that works
That was just an example, seemed like you were trying to update a resource on an actor
yeh thats right, but there's... a bunch of steps in the middle lol. That I obviously didn't write myself, I just modified to make it work for me
Ah, well you should also likely get your original macro updated to v10. It's using a bunch of v9 things.
I see a lot of data.data in there
Pretty much
Hmm I changed all the data.data to .system. and now the macro doesn't work
did you change any singular datas to systems, cause sometimes you yeet singles, and sometimes they are meant to stay
I think I only changed .data.data.
also they aren't .system. they are system.
i can check as I did it in vs
yeh i just put the dots cos they were all in the middle of something
system should start the chain not be in the middle
target.actor.data.data.details.race
ok good point there
oh so it should just be system.details.race?
you probably swapped a single data
no the target.actor should stay
you might have swapped a system with a . at the start of it and having nothing before it
check all the systems so that they look right
ah seems I caught a single data by mistake you were right
ok one error left
You are accessing the ChatMessage#data object which is no longer used.
line 7 has a data that shouldn't be swapped
this is onl line ... 39
30 has a single data that I think changes to system
thats the one I accidentally changed to system and that broke it
the data on 39 should be yeeted
I would take the original macro to #macro-polo (maybe hide the args entries hehe)
and just ask what to do with the datas
or paste the individual lines into macro polo
I think the getrolldata thing is also a v10 change
I'll ask. Thought this is just 'fixing' the macro that already worked lol (worth doing, but still)
I still need to figure out how to make this same thing work as a macro effect lol
yeah most of that is written as an on use
Will have to drop it in macro polo tomorrow and hope someone knows what needs doing
macro effects certainly solves one of the problems i was having in getting this working π
Big yikes. Wondered why none of my effects were applying automagically. Noticed that Midi-QOL is no longer listed as a module in my modules.
Uninstalled it and reinstalled it and it remains unlisted in my modules. Uncertain when this happened exactly, but within the last 1.2 weeks.
Shows as installed in my list (V10.0.25).
Going to run Find the Culprit!, but wanted to see if anyone else had this neat occurrence.
Scratch that. Can't run Find the Culprit! because Midi doesn't show up in my list of modules available to me. :/
10.0.25 mid, and 10.0.15 dae are meant for 2.1.2 dnd5e, this is by no means an endorsement to update dnd5e, and if you do, you should backup your data because high module builds are likely going to have a major headache with it.
install 10.0.24, and 10.0.14 dae and you will be fine, the ones you installed are purely dnd5e fixes for that new version.
Good deal. Happy to hear it's that simple. Haven't moved to the latest 5E build because Tiny hasn't caught up yet.
the next midi will have a fix so it doesn't auto disable with dnd 2.0.3
but theres really nothing new in them for us, its just 2.1.2 compatbiility
Good to know. Is there a manifest URL I can find on the gitlab page? I'm sure I'm just overlooking it.
The foundry page only lists the 'latest' in the 10.x train, at least for Midi.
NM, found it!
I am working on a macro that runs on spell cast. Concentration is the applied via Midi.
Can i get Midi to run another macro on concetration end?
IE:
Macro part one contents;
Magical wait for con to end then proceed;
Macro part two contents;
Macro end;
i have a feeling that it will use concentrationData, but im not even sure where to start
And to be clear, i am trying to simply change the vision mode when this spell is cast, and change it back when its done. Using concentration (even though this is not a con spell) so the user can end concentration to end the spell early, as i have no clue how to do that any other way:
I noticed that if I roll an attack twice, the "damage" button disappears from the first card. But if I roll 2 different attacks, both keep their damage button. Is there a midi setting to keep the damage button on a card until it is rolled? I do still want the attack/damage cards merged, and the buttons to disappear on a card after it's rolled...
You might be better off using Effect Macro to achieve that. EM will let you run a macro when an effect is activated and when it's deleted (along with a bunch of other triggers)
FYI the usual go-to for changing vision modes temporarily is Active Token Effects β that way you just set the vision mode when the AE is applied, and it will revert to whatever the token had originally when it's removed
Way more simple too
yeah literally just a key and value in the AE
here's the ATE reference doc: https://raw.githubusercontent.com/MaxPat931/Macros/main/QuickReference.md
So, something like:
ATL.sight.range | Override | 60```
Nah it was resolved. Internal MidiQOL calls timings. Thanks
Is there a way to make an active effect apply on the target only if the spell attack roll succeeds?
Also -- if I have two temporary effects placed on a target with a single spell, and one has a Special Duration -- is it intended/expected that both effects expire when the special duration triggers?
These are the durations for the effects, and they both expire when the target is attacked...
That is the default behavior for effects on a spell, they apply if the spell hits, for attack roll spells, or if the saving throw fails, for spells with a DC
Are both effects on the spell or are they being added by a third effect?
both effects are on the spell
you must have something going on because Chill touch in the midi sample items is setup perfecctly....and has two different durations
I would remake the item or drag it to the sidebar, delete it on the actor(check for rogue ae's still remaining on actor) and then redrag it to the actor when its properly setup and see if it behaves normally.
ah, I think it is a bug (at least in 10.0.23 -- I haven't updated since then).
In Data/modules/midi-qol/src/module/workflow.js:expireTargetEffects , wasExpired is initialized outside the loop.
If the first effect sets wasExpired, it doesn't get re-set to false before processing the second effect. And if the second effect shouldn't expire but has a different specialDuration , then it gets to the end of the loop with wasExpired unchanged and still true. (also happens if it had a special duration that was removed -- in that case, the dae.specialDuration flag exists as an empty array, so the !specialDuration doesn't work).
you don't have seconds set for the durations and try updating to 24 before reporting the bug, if you are on dnd5e 2.1 update to 25, otherwise stay on 24
I really don't think this should happen cause he literally has a sample item called chill touch that does 2 items with 2 different special durations that works fine in combat.
In Chill Touch, the 2nd special duration expires before the first, so this bug doesn't trigger. I'd imagine that if you reverse the expirations (1st one expires start of turn, 2nd one end of turn), then they'd both expire with the first one.
In any case, since I know what the bug is now, I think I can work around it π
Okay. How do you make someone Resistant to Lightning Damage? Like take half damage?
Because I am trying to apply the restitance as a racial passive and it seems to not apply correctly
How are you trying to add it to the character sheet? are you trying to use a dynamic active effect?
I am adding it as a feature and it applies
Let me see if I can find a
Screen shot
Its a passive that's there all of the time
And it adds to the effects thing because the new racial feature I made
if the effect is always on, just modify their sheet, you shouldn't needlessly ad an ae to a sheet they stack up and are a detriment to performance at times ater a really complex world builds up.
just add the resistance manually and delete the ae
on the feature and in the actors effect tab
But when I hit the test dummy with the lightning it doesn't apply or is that something that is a manual thing?
I just read
show me the attributes tab of the actor named Test
at first glance my thought is you are making the usual mistake with midi flags since there are dr flags which are system dnd5e flags that provide damage resistance, and then there are DR flags which provide damage reduction and are midi flags, but regardless, if the trait is always on, you should forego active effects and keys entirely and just manually add the resistance to the attributes tab of the npc and call it a day.
Ae's are typically reserved for temporary effects, and you will want to avoid using them when you can as they start to add up in an automation world.
they have lightning resistance, can you show me the attack in chat thats not calculated with it?
just put 100 in the situational bonus
oh it occured to me that you are probably one of them fast forward types so just keep rolling till midi hits
a good example of why fast forward is bad ;p
you could hold down the T key while rolling to go manual
show us a snippet of your attack and damage in chat
looks like its working to me
The feature at this level does 2 damage
it does 4 damage actually
and the resistance halves it
in the damage card it shows, also pro tip, you can mouse over the token image in that damage card to see its DR/DI/DV
I see it now
its pretty much why most use midi
Kk
I only want to apply the effect if they fail their saving throw
How can I do that?
I am sorry for all of the needy
Once I figure it out I become master of this
midi's configure settings, click the workflow button, then in that window go to workflow tab, and its the second section, I circled the setting
if you have my setting set, then you have a conflicting roller
if you don't, you will very likely want to turn this on as this enables the main core reason for midi, transferring effects automatically to other actors
it might also be if you were using an actors sidebar sheet and they have no token on the map too I suppose
I will just leave this here just incase:
Midi does not work with:
Ready Set Roll
Better Rolls for 5e
Roll Groups
Fast Rolling by Default
Fast Rolls or Quick Rolls
Dice Tooltips
Taragnor's Gm Paranoia
WIRE(Whistler's Item Rolls Extended)
Minimal Roll Enhancements
Retroactive Advantage/Disadvantage
Max Crit
Multiattack 5e
Advanced Spell Effects module is just dead in v10 and often the culprit of things..
I don't have those
So we are good there
I try to make as few mods as possivble
I freak out I have 30 mods, but I think most people use like 100
Which is crazy to me
ooooh
one more
and it would explain the button sticking around
Effective Transferral
Is that a mod or a feature?
its a module
I don't have that
did you have the setting where it removed the button in my image?
Then something is off wrong
Doordash is annoying me
so based on the conversation I've been seeing, the reason my midi isn't working is because I updated my version of dnd to 2.1.2? is that correct?
Its fixed I think, but it reset
currently, dnd5e 2.1.x is very new and many modules are trying to catch up and squash bugs, with midiqol and DAE, there is a feature that prevents utilizing bad combinations of dnd/mididae, that was accidentally left in to interfere with the newest 10.0.25 midi and dnd5e. So with that said, if you have 2.1.2 of dnd5e, you should be on 25 and 15 of midi/dae respectfully, but if you see any problems report them because you are betatesting for the rest of us who didn't update yet.
if your midi is disabled, its likely because you have a very old dae, or you are are on 10.0.25 midi, and dnd5e is 2.0.3. If you are on 203, the versions of midi and dae should NOT be 25/15 they should be anything older
preferrably 24/14
midi 25 and dae 15 have no new things, they are just fixes for dnd5e 2.1.x breakages.
I was just updating like a goodboy..I'm on the newest versions of everything
you should be good but if you spot problems make sure its a midi problem by finding the culprit with just midi/socketlib/libwrapper then report it to his gethub cause this is a very new dnd5e and its giving mod authors a hard time.
In general if you aren't keen on testing your live world with system and foundry builds, its usually a good idea to hold off specially if you run a complex roller module like wire and midi.
also always backup when updating systems and foundry builds, even if they seem small.
That I agree is something I'm going to have to start doing but only in between campaigns
I was lucky because I haven't started my camping yet
definitely not good, guess I'm gonna be doing the module scoot boogy today π
I'm the only thing that's angry me is because the whole ogl stuff I'm not going to have a DnD betondon or by the books
Which means I'm going to have to build all the classes from the ground up
if you have a backup from before, you can revert, just when you do so, make sure you rollback midi/dae to the 2.0.3 friendly versions 24/14
do NOT install 203 over 212 for the systems, back migrating is baaaaad.
I mean, worse case scenario I used to play with dice and paper, so I never get mad when this stuff breaks it's just a convenience lol
I dunno theres alot of people who think the world has ended with tidy being broken hehe
Paper pencil will always be the best but just sucks for the people with groups across the country
oh yeah, I mean it still rolls dice π
don't jinx it!
Lol
I have players all over too lol
You Sir, are tempting fate lol
Well like the reason why I'm doing all this extra stuff is because I really want to show a lot of people that you can be different with your D&D world
And since I'm streaming it using these automated animations d2l's in effects are very very important for the shiny
Because I want to make a good show that has all the shiny in it
Sorry my English is not making sense right now I'm driving because I'm a doordasher and I'm driving to an Einstein bagels
Speech to text
I just wish there was a way that I could get all the classes already more or less ready to go
in a campaign you shouldn't need to prebuild all classes/subclasses, you just build as you go, maybe 3-6 features a month depending on play frequency
half of them are already in the srd classes unless your party are all artificers
most of them really, and midi SRD module has the automated versions of most of the srd ones
Well for example one of the characters is going to be among but he wants to be at Tasha's Monk
And I think he's going for elements
midi srd is only v10 ready if you get it from bugbears profile/github
So we still have to update the monk to be more like Tasha's
I have to
Sorry my speech to text is really really really bad I need to be more slow when I speak
Oh nice
It sucks that DnD beyond is doing this
Maybe I need to make my own game with black jack
Lol
Yeah I agree with Moto. Sure you might need to make some Tashas features, but you only need the new ones when they level up. Don't need to create 20 levels worth of stuff in advance.
It may be the way to go
I guess I am just that wants to be all ready to go kind of guy
But it may save up time in the meantime to it is that way
Yeah, I've been there, you get over it when you realise you're probably going to have to make them all yourself π
Lol
Yes, I am not rich enough for an assistant
Lol
They are soo many homebrew races I want to make
So much homebrew and so little time
honestly, if you are buliding a table, of players, a teachers pet archetype player is invaluable
actors and artists being my second favorite type
Things that are easy to offload to the players in foundry would be art management, sound file finding, automated animation setups
Dark stuff is usually handled in my end because I used to be able to draw and I have a professional artist to take care of all the little pretty things
But yes it would be nice to get teachers pet
Lol
@main knoll
So I made an item (and have dfreds CE) but it doesn't do anything? Have tried with the item named 'Sharpshooter' and 'Sharp Shooter'
you could put that flag on the dummy item he rolls for the other sharpshooter stuff as a passive apply on equip ae
its the second setting in workflow button>workflow tab>specials
it must match this name
and there must be a token on the map
of the self/self roller
add the key that super just shared to you as an active effect on it, apply on equip
actually your problem is you have cub and dfreds
you can't use both to manage active effects
Oh right, I have roll automation off because it completely broke ready set roll. Ughhhhh
Midi does not work with:
Ready Set Roll
Better Rolls for 5e
Roll Groups
Fast Rolling by Default
Fast Rolls or Quick Rolls
Dice Tooltips
Taragnor's Gm Paranoia
WIRE(Whistler's Item Rolls Extended)
Minimal Roll Enhancements
Retroactive Advantage/Disadvantage
Max Crit
Multiattack 5e
Advanced Spell Effects module is just dead in v10 and often the culprit of things..
Choose RSR or Midi do not have both on
the best you can do, is turn off midi, and go install effective transferral
or turn midi on and throw away RSR
Ok makes sense. RSR is critical to our group and I can just make a duplicate 0 weight weapon with the -5 +10
Thank you for the assist
@fallen token has a very small module in his github somewhere that posts a message after the roll that asks if you want to apply dfreds CE to the actor
so if you had dfreds and RSR, you could roll an item that has the exact name, and a button to apply it would show up
Effective Transferral would do the same if you dragged the dfreds CE into that dummy items active effects tab
however, you cannot run cub's enhanced conditions with dfreds CE
so you need to do some hard choices here and clear out the two conflicts
Personally I do not see the appeal of rolling 2 d20's, I prefer my players know what they are throwing before they roll
Yeah I will comb through the modules and decide, thank you. This is my only 5e table, every day I am more impressed with what the pf2e foundry devs have done lmao
I use enhanced conditions to apply bloody and a different icon overlay for dead, I might be able to use midi for that instead
can't use midi with rsr though
Does anyone know why I would be getting the following? I have an onUse Item macro that has the following code in it:
console.log("isCritical: " + args[0].isCritical);
And I get back:
isCritical: undefined
Not sure why I am not getting back a boolean true or false.
How is the itemMacro executed and at which point of the MidiQOL workflow?
Also did you check when it's a crit if it does indeed return true?
I don't remember now if it's always undefined if not true
Darn! You are right. It returns undefined if not true. It returns true if it's a critical. Never mind! 
IsCritical is a boolean
I haven't updated to the latest version of the 5e system yet, is the latest MidiQoL version working fine with all the changes, or would I be better off waiting with updating both?
Cheers! I saw there was an update out for MidiQoL already, and that sheet modules seemed to be causing the major issues, but I figure it may take a few iterations of updates for MidiQoL as well to get everything fully functional...
It was updated to work with it, but I've seen a few bugs discussed in here
the newest midiqol does not work with 2.0.3 dnd5e, however, it has nothing in it other than dnd5e 2.1.2 compatibility, its no new stuff , no fixes, just so the people who updated dnd can use midi again, 24 is the newest midi for 2.0.3.
To modify the Superiority Die item macros from MASIF to work with a PC with the Superior Technique fighting style or Martial Adept feat:
Fighter Battlemaster : Superiority Die
USEAGE : PASSIVE
This item must be on the character for Manuevers to function.
It does not do anything directly but is a helper effect to determine the Battle Master Hit Die (d8, d10, d12) based on level.
v2.0 December 16 2022 jbowens #0415 (Discord) https://github.com/jbowensii/More-Automated-Spells-Items-and-Feats.git
*****/
if (args[0] === "on") {
const pcActor = await fromUuid(args[args.length - 1].actorUuid);
// Test Class
let pcFighter = pcActor.getRollData().classes?.[[insert_class_identifier_here]];
if (pcFighter === null) {
ui.notifications.error("You are not a Fighter!");
return;
}
// Test Subclass
let pcFighterSubclass = pcActor.getRollData().classes.[[insert_class_identifier_here]]?.subclass.identifier;
if (pcFighterSubclass != "[[insert_subclass_identifier_here]]") {
ui.notifications.error("You are not a Fighter Battlemaster!");
return;
}
//const roll = await(new Roll(`2d8 + ${pcPaladin.levels}`)).roll();
let fighterLevel = pcFighter.levels;
let flagData;
const flagData = "+ 1d6";
pcActor.setFlag("dae", "SuperiorityDie", flagData)
} else if (args[0] === "off") {
const pcActor = await fromUuid(args[args.length - 1].actorUuid);
pcActor.unsetFlag("dae", "SuperiorityDie");
}```
I think you also have to drag it off and back onto him
I would have kept the flagData part the same and just changed all the dice to 1d6
just out of fear of not knowing wtf that shit does lol
let flagData;
if (fighterLevel > 17) flagData = "+ 1d6";
else if (fighterLevel > 9) flagData = "+ 1d6";
else if (fighterLevel > 0) flagData = "+ 1d6";
pcActor.setFlag("dae", "SuperiorityDie", flagData)
That did the trick!
dragging it off and back on, I mean. The actor now has the necessary flag
and put outside the code above it "Superior Technique" and "Martial Adept"
make sure you have the fucntional macro in the message
make it searchable so that we can help the next guy setup superior technique/martial adept with MASIF
search here doesn't search inside code so put the keywords in your actual post
I'll clean it up and do that, thanks again for the assist
hello, can i undo the latest update on Midi to play on 2.0.3?
we have to be careful and get clarification cause reverting dnd5e is bad, unless you do it in a backup, what version of dnd5e are you on right this moment
i am at 2.0.3 at the moment
And you definitely did not install 203 ontop of 212?
k then lets find you the zip of 24 midi
tim doesn't do past modulejson installs, so you get the zip of the whole module and you have to replace the folder in your data/modules directory
thank you, i will try it now π
looks like it works, it is listed again, thankis π
its due to a change in dnd5e 2.0.2 to 2.0.3 where midi and dae would have a stroke if someone wasn't on 203, and apparently he left i on in 25 and it doesn't account for new dnd5e versions.
Does anyone know if the spell Hex was written for Midi?
It has been shared, yes.
Ok, I couldn't find it but I will keep looking
Search for Hex from Chris
or me
Mine is not fully updated for v10 yet
Also I think the ddbeyond importeer has one
Is it better to use the item macro or to create a macro, and call on it
Completely up to you.
ItemMacro keeps it on the item and maybe more tidy.
But it might be more difficult to find it later π€·
Pros and cons based on how you go about π
Knowing me, I will do both, to make it worse π
To call on the item macro is "ItemMacro"?
Yes, case sensitive
Your macro works great, even adds the dis on ability
I can't get the d6 to work but that is ok, I really wanted the ability check π TYTY
The extras damage?
let me see if it needs some quick changes
Are you auto rolling damage?
Suppose I should actually document my hex macros.
Since it makes use of a macro.createItem to move the hex.
wish there was an easy way to share a macro.createitem build
If it was made using warpgate and I embedded the item in the macro it would be more shareable.
try ```js
let targets = MidiQOL.findNearby(null, args[0].targets[0].object, 10)
it works, however, what is the 10 on the end, I though tit was a typo, but apparently thats diameter?
That's the range yes
its suppose to be creatures within 5ft, so I thought the 10 was wrong, but when I set it to 5 it has no range
You have the center on the target
it doesn't seem to suck in diagonal tokens to the damage
either its not taking that line right, or something else is wrong, I got no errors but the save only applies to the target
What's your dnd diagonal rules set to?
respects 5/5/5 or 5/10/5 rules iirc
And that's why
or 7.5 or something
I have it set to 10 now and its still only prompting the primary target
I think find nearby isn't working right
I set it to 100 for find nearby and still it only prompts the primary target for a save
no errors
is there another premade ice knife shared? I'm ok with abandoning this one if we have to
try this quickly ```js
let targets = MidiQOL.findNearby(null, args[0].targets[0].object, 10).concat(args[0].targets[0].object)
