#MidiQOL
1 messages ยท Page 71 of 1
all 3 do it
statusEffect and macro.cub do it too, its when you use all 3 that it fixes sorta
Status effect shouldn't have the same problem - but since the status effect wraps up all the changes from the 3 different changes into a single "super" effect it might look the same. For status effect have 3 difference effects on the item (not 3 difference changes on the one effect) and it should reliably create 3 status effects.
Just had a look and yes there is a bug in the CE handling that will get fixed in DAE 10.0.21 - out this weekend.
@smoky ridge
Sources of premade stuff for Midiqol:
Midi Sample Items Compendium(comes with the module)
Midi SRD's compendiums
https://raw.githubusercontent.com/thatlonelybugbear/midi-srd/master/module.json
More Automated Spells Items and Features compendiums
https://foundryvtt.com/packages/more-automated-spells-items-and-feats
Mr.Primates premade macros:
https://github.com/MrPrimate/ddb-importer/tree/main/macros
Chris' Premade macros:
https://github.com/chrisk123999/foundry-macros
Chris' Module form of his macros:
https://foundryvtt.com/packages/chris-premades
Activation condition examples by ThatLonelyBugbear
#1010273821401555087 message
I'm seeing the same result in overtimes regardless of Macro.ce, Macro.cub, and statusEffect. Indeed they do work if you break them all up into individual ae's but then they don't clear with the overtime when its saved?
omg I get what you mean now, holy cow I never noticed this lol
It does indeed combine them all up into the last listed status effects label
maybe this is why statusEffect breaks with aahelpers placed active auras too.
only macro.ce/macro.cub work properly in a darkness spell, status effect doesn't properly remove when the actors leave itwhile the other two keys do.
Hey y'all, been trying to get a lifesteal effect by basing it out of the pre-made but it doesn't seem to work and I'm not sure what I am doing wrong in my edits here: js const version = "10.0.10"; try { if (args[0].diceRoll === 10 && args[0].itemData.system.attunement !== 1 && args[0].DamageTotal > (actor.system.attributes.hp.value ?? 0)) { ChatMessage.create({content: `${args[0].item.name} steals ${args[0].DamageTotal} HP`}) await actor.update({"system.attributes.hp.value": args[0].DamageTotal}) } } catch (err) { console.error(`${args[0].itemData.name} - Eileen's Sword ${version}`, err); }
that looks like the macro will change the hp of the player to the damage total of the weapon if you roll a 10, are attuned to the weapon, and the damage total is more than the players hp.
I think you intend for it to be 20 not 10 right?
No, I do intend for it to be on a 10.
Although I didn't spot that last part since I don't know enough about js just yet, what do I need to remove for that last part you mentioned? Specifically: "and the damage total is more than the players hp"
if (args[0].diceRoll === 10 && args[0].itemData.system.attunement !== 1)
I think you also want to change it to a heal right?
๐ค
Uh yeah, I do.
below the version:
const valueChange = system.attributes.hp.value
then edit:
await actor.update({"system.attributes.hp.value": valueChange + args[0].DamageTotal})
I think I'm doin this ugly but it will prolly work...
I think a midi macro maker would probably prefer you do a heal workflow instead of actor update
its not going to show a midi damage button with this method I don't think
but its ok cause its a source actor adjustment so they will have control of their actor
Do I remove the
"try {"
Portion or keep it?
edit just the lines don't change anything else
Alright
add the line between version and try
technically the version line is garbage since its meant for the original item to help tposney track his items
the edge case of why you technically should use a damageworkflow for midi is if the actor at the time has damage immunity to healing as this actor update will circumvent that.
const version = "10.0.10";
const valueChange = actor.system.attributes.hp.value
try {
if { (args[0].diceRoll === 10 && args[0].itemData.system.attunement !== 1)
ChatMessage.create({content: `${args[0].item.name} steals ${args[0].DamageTotal} HP`})
await actor.update({"system.attributes.hp.value": valueChange + args[0].DamageTotal})
}
} catch (err) {
console.error(`${args[0].itemData.name} - Eileen's Sword ${version}`, err);
}```
I have no clue how damageworkflow for midi works just yet.
This about right then?
but my brain is just waking up and I can't think of a damage only workflow to plagerize off of to show you
is that right @molten solar line 2, should it be wrapped in ""?
oh shit it should be actor. right?
Header button that pops a dialog and sets a bunch of flags using checkboxes ezpz
put an actor. in front of line 2's system
actor I believe is predefined as the actor that owns the item so unless thats wrong we should be good
Ah I didn't understand what you meant there, put it where exactly?
Replace the line after Try with this:
if (args[0].diceRoll === 10 && args[0].itemData.system.attunement !== 1)
Ah okay.
line two still needs to be const valueChange = actor.system.attributes.hp.value
is this an item macro on use for midi?
Item Macro on use.
give it a try, open the console show us the error
Aighty.
you are likely missing a closing bracket?
Hmm...
Cant try without catch
yeah you got too many curly brackets in your example
And remove your forge links ๐
Ah.
either that or that curcle bracket right before the catch is the culprit?
should it move to after everything?
Missing opening curly bracket for the if statement
it feels like he has 1 extra or missing an opening
prolly my fault sorry I made him edit the if line and snoozed on that
put an opening curly bracket right after the if and the space right before the (
Alright.
its causing the try to close early otherwise
I have a midi function to replace the actor update but its only necessary if you think the sword wielder will often get hit by chill touch cantrips
otherwise you can let it slide
Well you can hand me that in that case whenever you have the time.
does the macro work as is? we're prolly missing a ton of ; if its not working
if {(args[0].diceRoll === 10 && args[0].itemData.system.attunement !== 1)};
let valueChange = (actor.system.attributes.hp.value + args[0].DamageTotal);
let sourceToken = args[0].workflow.token.document;
await MidiQOL.applyTokenDamage([{damage: valueChange, type: 'healing' }], valueChange, new Set([sourceToken]), null, null);
to test if it works you may want to set it to > 1 in the first line instead of === 10
unless you are using DF manual rolls to force a 10, you do realize you have to literally roll a 10 to get this right?
also think the actual dice face needs to be 10 not total
Hmm, I noticed my Midi isn't rolling the "other" damage formula ever-
Yeah I do.
Yeah the die itself.
midi has a setting for roll other in midi damage section in workflow tab
There's a bunch of effects on specific intervals of 5, but this was one I was struggling on.
but also theres a checkbox for it if it needs to always roll it
why does the item have an other formula?
show me the items details preferrably the whole thing but I'd settle for the bottom 2/3
Oh no I was checking the basic lifestealing longsword to see why it wasn't rolling on a 20.
From the sample.
Yeah just checked and it was, I'm going to go test it again rn.
the very bottom of the workflow tab in workflow button
Yeah it was just set to off. ๐
theres also a heal only midi workflow fwiw but I'm not a pro, I plagerize everything I do
I also am not sure if that second valueChange is meant to be that there, hopefully chris or bugbear show up to correct me if its wrong
I pulled it off this example:
await MidiQOL.applyTokenDamage([{damage: damage, type: 'temphp' }], damage, new Set([sourceToken]), null, null);
where damage was defined, not the greatest thing to define so I am a bit confused if the third damage is actually the const
Ah, how insanely useful actually, didn't know it could even tell me this stuff.
SyntaxError: missing ( before condition
remove the () around the second line maybe?
gonna have to wait to see if bugbear or chris or someone can chime in to correct me
undo my change with the () btw
try changing that second valueChange to damage
see how its called twice in the last line?
change the second one to just damage
Yeah undid the change, let me go try what you just suggested.
Hey just came back from people arriving at the door.
Just to make sure, you are talking about this line right?
await MidiQOL.applyTokenDamage([{damage: valueChange, type: 'healing' }],```
yes but don't touch THAT valueChange, touch the one you didn't include, change it to damage instead
the second valueChange
@hardy marlin
Show me the items details and the roll in chat
What do you want exactly?
the bottom third of an item that isn't rolling damage right, it details tab, and then the attack/damage roll of the item in chat
going a little crazy as this item was working fine before the system updates
I am probably just gonna have to remake everything
It seems some older stuff I made around october/November don't really work anymore
is there an error in the console? f12
combination between module updates and system update
oh are you on a fresh v10 update?
did you just update?>
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
The following modules have template settings that step on midi:
Spell Template Manager
SIFT(Spells, Items, Features Toolkit)
Advanced Spell Effects module is in beta in v10 and often the culprit of things...
Midi requires Item Macro to have its "Character sheet hooks" feature set to unchecked in order for on use macros to work right.
When editing owned items(items on actors) active effects beware of duplicating active effects that interfere. Always check the actors effect tab for rogue ae's.
When you update to v10 and carry your module folder over to it from v9 or older, you need to manually compare your modules version numbers to the v10 branches of the modules and manually install the v10's, the update button in the module/addons section does absolutely nothing for this till you got everything on the v10 branches. Any module still in v9 without a v10 branch is pretty much yeetable unless its a content only module like jb2a or token art. 99% of v9 modules won't work in v10.
I don't have any of those modules.
I recreated the item and it works
the error shows their a space between the "+@ mod [bludgeoning]" but as you can see on the original item it shows no space, weird
forgot I was using discord for a sec sorry stranger for the ping
@clever carbon is a dummy account to prevent us from pinging moderators with autocomplete ๐
but we prolly shouldn't ping them needlessly just incase, but at this point the guys got 1000 pings from this server and has never responded to a single one
did you have better rolls installed in v9?
Not on this world no, this world was v10 only
Could be latent data sitting on the item in flags maybe /shrug. Remaking items is prolly wise though, does it have an on use macro?
No
I had issues with them breaking on the 5e system and got sick of remaking them too time consuming
that seems strange they look like standard items
whats the twist on them that complicates them if no item macros
I'd suspect a faulty module rather than the items themselves
They are nothing special I just put it down to them being 4 month old items made under older modules/system
I have items that are over a year old that are fine and dnd5e's basic items are even older hehe
a space between the flavor and the formula would do it though
Does anyone know how to make Magic Missile behave better in midiQOL? At the moment it won't let me target multiple enemies with it, and when using it on one it casts all 3 charges - which is fine.
The problem is when I set it to three targets, it essentially then does 9 attacks, it calculates the damage from all 3 and applies them to all tokens. Is there a way to make it so you can select which targets, up to three, and it would calculate the damage properly?
I personally handle magic missile, eldritch blast, and scorching ray as a self buff spell that gifts the caster an item with charges that they can roll on whatever targets they choose. and it scales the charges based on the upcast for scorching ray/magic missile.
you can't really automate the multi target thing well cause what if you do 2 at one target and 1 at another
sadlymacro.createitem builds are hard to share with people
concept is to make 2 items, one is the actual spell, and the other is the temp item the player will get to fire them without having to uncheck spell usage
In theory, could I create a spell that does 1 3rd of the total damage and just use it 3 times but only consume 1 spell slot?
Maybe create a second version which specifically doesn't consume a slot for the players to use?
Oh that's basically what you said haha
I personally keep all my macro.createitems stored in a compendium so they are never accidentally deleted cause if you delete them then the spell stops working right
you need Effect Macro for my setup btw to scale the newly created item
This is the scorching ray one, you will need to adjust for magic missile:
let i = 0
while (!token.actor.items.getName("Scorching Rays") && i < 3000) {
console.log("Waiting for Scorching Rays item to be created, if needed!")
await warpgate.wait(250)
i += 250
}
const item = token.actor.items.getName("Scorching Rays")
const {castLevel} = effect.flags["midi-qol"].castData;
if (castLevel > 2) await item.update({'system.uses.value':castLevel+1,'system.uses.max':castLevel+1,'system.uses.per':'charges'})
change Scorching Rays with whatever the item you created is called
Okay this is some thorough stuff, I'll take a look, might be a bit over my head haha
Thanks for your help!
MM scales if above 1 so change the last line to castLevel > 1
and castLevel+2
yeah sadly theres no real way to clean it up, chris does something like this automatically with alot of his stuff here:
Sources of premade stuff for Midiqol:
Midi Sample Items Compendium(comes with the module)
Midi SRD's compendiums
https://raw.githubusercontent.com/thatlonelybugbear/midi-srd/master/module.json
More Automated Spells Items and Features compendiums
https://foundryvtt.com/packages/more-automated-spells-items-and-feats
Mr.Primates premade macros:
https://github.com/MrPrimate/ddb-importer/tree/main/macros
Chris' Premade macros:
https://github.com/chrisk123999/foundry-macros
Chris' Module form of his macros:
https://foundryvtt.com/packages/chris-premades
Activation condition examples by ThatLonelyBugbear
#1010273821401555087 message
Could I not just remove the * (2 + @item.level) from this and have them cast it manually each time?
yes but actually you don't need to cast it three times
if you merge cards, turn on the fallback buttons outside in main midi settings and have the Dm apply the first rolls damage to the other targets....unless you do not do rules as written magic missile
Rules as written, simaltaneous damage is rolled once, and MM is simaltaneous
so you roll once and apply the damage to each target
Okay cool thank you
if you do want to roll for each dart, just uncheck the resource usage and recast
you can also just drag out the dnd5e srd magic missile as it does not have your issue on it
Oh so it doesn't, okay awesome I think I'll just do that
Hey there, back again, same old error with the following change:
valueChange, new Set([sourceToken]), damage);```
From
```js
valueChange, new Set([sourceToken]), null, null);```
This is what you intended for right?
The error is still "Syntax Error: missing ( before condition."
Not sure where this ( is supposed to be placed to be perfectly honest.
await MidiQOL.applyTokenDamage([{damage: valueChange, type: 'healing' }], damage, new Set([sourceToken]), null, null);
at this point I'd just wait till you see Chris or bugbear active in here and ask them to help you, I tried my best but i dunno whats wrong
Paste the full function
if {(args[0].diceRoll === 10 && args[0].itemData.system.attunement !== 1)};
let valueChange = (actor.system.attributes.hp.value + args[0].DamageTotal);
let sourceToken = args[0].workflow.token.document;
await MidiQOL.applyTokenDamage([{damage: valueChange, type: 'healing' }], damage, new Set([sourceToken]), null, null);
heals for the damage dealt by the weapon when they roll a 10
on use midi macro, I assume they are placing it in item macro
Dunno why everyone always does args[0].workflow Using this is so much less typing
What's the errors?
this being the workflow was a happy coincidence at some point in the MidiQOL development.
At first you had to retrieve the workflow with the relevant midi function.
Nowadays the workflow is provided as an args[0] too, so probably a remnant.
I didn't mean this to be a reply to you Chris
might just be a bad paste if you guys don't see any issue
I am on my phone
Oh phone too
Is there an error?
I'll check in a few minutes when I'm home
That might be a { too
what is the white damage in the last line?
I dunno I thought if statements needed a {}
@atomic badge
if (args[0].diceRoll === 10 && args[0].itemData.system.attunement !== 1);
let valueChange = (actor.system.attributes.hp.value + args[0].DamageTotal);
let sourceToken = args[0].workflow.token.document;
await MidiQOL.applyTokenDamage([{damage: valueChange, type: 'healing' }], damage, new Set([sourceToken]), null, null);
try this, but I still think we need clarification on the white damage(second damage) in this macros last line. I pulled this off an ability I had where "damage" was defined and damage was in three places in the line.
The total
Both damages are the total
And not sure rn if it needs the Token5e#documebt
Everytime I make a save I get an error message in the console with the message "process save roll" and an (roll?) object attached. Is this a problem or just for debugging?
Try also without the .document in the source token
Do you have any debugging options in MidiQOL on?
Here's the full info, the rest is either unused or not edited.
I have "Enable debug" set to "None"
Is there a macro involved?
if (args[0].diceRoll === 10 && args[0].itemData.system.attunement !== 1);
let valueChange = args[0].actor.system.attributes.hp.value + args[0].damageTotal;
let sourceToken = args[0].workflow.token;
await MidiQOL.applyTokenDamage(
[
{
damage: valueChange,
type: 'healing'
}
],
valueChange,
new Set([sourceToken]),
null,
null
);```
This should work
no idea what the context of it is
I just copied what was in the previous macro
Hello, i'm having a conflict between Lib-Wrapper and Midi-qol. They and their dependencies are the only things active, and when I advance turns in combat, I get this error message. I do not get the error message when I disable lib-wrapper
Midi-qol version?
Along with dnd system version and foundry version
Alright so the script is working as far as this goes:
None that I made. There also doesn't seem to be any mention of the debug flag around this part of the code 
.30 MidiQOL bug
When changing turns and actor has an optional bonus effect on
So it isn't firing any errors but it isn't applying any healing, I assume that needs some line change in here?
Something isn't becoming a number
NaN = not a number
Here's what I see on the chat log, I'll go check the console.
Check what args[0].DamageTotal is
Foundry Version 10 Build 291, Dnd5e 2.1.5, and Midi QOL 10.0.30. All 3 are afaik newest versions. Before posting I reinstalled both midiqol and libwrapper.
Ah, how do I find that?
First pin here
Thanks.
I'd be happy to, Thanks again for your help. I'll look for tutorials online on installing an older version of the module.
Looks like it should be args[0].damageTotal
DamageTotal is undefined so any number plus undefined = NaN
Hmm okay, uhm.
I'm not sure how I am supposed to define it, I'm so new to this so my head is spinning a bit just thinking about it ahaha. ^^'
It'd be in the midi documentation for macro creation right?
I corrected the above macro
Oh okay!
Thank you so much, I highly appreciate all of y'all's help.
Ah it works, thank you so much.
I'm a little stumped on how to install .29 specifically.
Download this and extract.
Close foundry and delete your midi-qol folder in your modules folder. Then drop in the midi-qol folder from that zip.
Okay, I have installed the older version and it has prevented the error. Thank you very kindly for your help, Chris. Should I stick with .29 for the foreseeable future?
Though I did notice the healing seems to be disassociated with the damage dealt, is this intentional by the way the code is scripted?
Additionally, it seems to be healing regardless of the roll applied.
tim hinted that we're getting atleast a dae update this weekend possibly a midi who knows
29 is the suggested version for dnd5e 2.1.x, 23 is the suggested version for 2.0.3 dnd5e
I will keep an eye then. Thanks for the quick reply.
What are you trying to do?
I just copied what you had assuming the formula you wanted was right
The intended effect is for it to heal the user based on the damage dealt with the weapon on a die roll of 10.
It was initially based out of the midi Longsword of Lifestealing as a base thinking it'd work with a bit of editting.
that is not what you said before, I even asked you if you meant for it to be exactly 10 or not and you said yes lol
Sorry, I meant on a 10.
ok phew
A bit tired. ๐
so === 10 stands
Yeah.
what if they miss on a 10...
if (this.hitTargets.size === 0 || this.diceRoll != 10) return;
await MidiQOL.applyTokenDamage(
[
{
damage: this.damageTotal,
type: 'healing'
}
],
this.damageTotal,
new Set([this.token]),
null,
null
);```
Well then they simply don't get the healing effect.
There's four different effects, only the 10 is on a hit.
5, 10, 15, 20.
I'm just making it based out of the player's request since they wanted to be a bit of a goofy gambler.
the only part of that macro I was unsure of was when I pulled it from my own ability it had defined "damage" and the line was confusing to convert, heres my original thing I plagerized from, so I'm a lil sus at the "valueChange" thats second in the line:
await MidiQOL.applyTokenDamage([{damage: damage, type: 'temphp' }], damage, new Set([sourceToken]), null, null);
in my macro damage is defined so I dunno if the third damage is suppose to stay damage in his macro
No worries haha, I took care of that myself when copy pasting the code.
My above macro I just posted should do what they want
so is this the new args thing?
First part makes sure you hit something, 2nd makes sure the raw d20 is a 10
this is the same as doing args[0].workflow
And it's not new lol
(almost) all my macros have been using it since forever
The following error occured:
Error evaluating macro SyntaxError: missing ) after argument list
Didn't think a lifesteal effect would be this complicated ahaha.
You sure you copied and pasted right?
Yeah, let me re-try.
I have it open in vs code, it's not pointing out any errors for me
Wait isn't this line mispelled?
if (this.hitTagets.size === 0 || this.diceRoll != 10) return;```
Specifically "this.hiTagets.size"?
nope
the workflow has the targets as a set instead of an array
so you need to do .size instead of .length
oh
yea
spelling lol
Corrected again
oops
Mistakes happen lol.
3 am here ยฏ_(ใ)_/ยฏ
Oh it's 3 AM for you right now? Geez dude, haha, well I can gladly tell you that the script is now properly working.
Thank you so much for your time. ๐๐ปโโ๏ธ
I'm always a night owl. My job keeps me up late
I think as-is the script will probably do damage before resistances just an FYI
So if you want them to heal for how much the target actually took, it's slightly different
Ah okay, what changes would I need to make to it in that case?
if (this.hitTargets.size != 1 || this.diceRoll != 10) return;
await MidiQOL.applyTokenDamage(
[
{
damage: this.damageList[0].appliedDamage,
type: 'healing'
}
],
this.damageList[0].appliedDamage,
new Set([this.token]),
null,
null
);```
Ah, appreciated.
Edited again, I missed one small thing
feature probably seems worded poorly, what if they are a rogue, what if they are a zealot barb or a level 8 cleric, does all damage apply to the heal?
Ah it isn't a feature, more a weapon than anything.
This would do all rider damage
So that isn't an issue.
And even if they had other damage sources that's fine by the way the weapon is worded.
arguably growth/enlarge and sneak attack are actually weapon damage fwiw
This would catch extra damage from Hex, Sneak Attack, Hunter's Mark. Although I would keep that personally.
I would also rule sneak attack is still weapon damage
It is indeed weapon damage.
yeah me too, same with enlarge/reduce growth potion
Always go with appliedDamage. ๐
Yeah, I mean, the only things I could possibly think of as something I wouldn't count would be Hex but it doesn't really matter.
As long as they dealt damage with the weapon itself then any additional damage from any sources counts.
Unrelated, but does it make sense for the DMG cleave mechanic to work with melee spell attacks?
I'd exclude touch spells like Inflict Wounds.
Cleave implies that it's a weapon
Melt the zombie and go to the next? Nah
The intent of this mechanic is to speed up fighting minions
I think the cleave rules are in to account for lack of aoe damage on martials and it'd feel like cheesy if you did on spell attacks
Damage only, obv.
Yea that's what I was feeling too
Iirc in 3.5 dnd it was weapon
I could make another optional setting.
I've yet to run a table that agrees to treat missiles like railguns but my god I'd love to run it once
Did you know nothing is stopping a monk from catching bullets in DnD?
or thrown objects
I have a homebrew where projectiles and ray/beams basically act sorta like catapult and will continue through targets till the damage is expended using a line draw
so disintegrate is even scarier
It needs to be small enough to fit in one hand.
I would argue that a high enough leveled PC with a ranged doing ridiculously high enough damage, would mean that the projectile could hit the next target in line too ๐
"If you reduce the damage to 0, you can catch the missile if it is small enough for you to hold in one hand and you have at least one hand free."
guess it depends on how big a boulder is
But fair
A boulder is anything that is considered 16 inches or larger in diameter.
my groups always say no because I rule that means friendly fire can happen with it.
Of course it can.
Meaning it wouldn't be possible to do so for a Monk unless a player decided to reduce the size of the boulder as a ready action with a spell or similar effect.
I bet you a few wide recievers foor the NFL could one hand some rather large objects depending on the weight
The rogue sneak attacking amidst the friendly group is always a prime candidate to hit a friendly target ๐คฃ
omg with stealthy that stuff should happen more, I've already ruled they lose 5ft of movement when they move into an unseen ally
which is funny cause I gave the druid an umbralsight shape she uses all the time and causes it
Hitting a target not visible to them, in the path of the projectile?
I ask them to roll at disadvantage though
lower roll hits the hidden if so, normal roll hits the visible target depending on advantage/disadvantage
I just adjust for cover. And if it misses the original target, but would hit the one providing cover, then it does
Normal rules for cover, is it not?
didnt know you were a system developer now chris /s
I noticed the releases channel was bugging out
I thought Discord was just going crazy
๐ค
After I first put an update in, it actually showed every single module as mine
The name and the description
'We are all Crispy Mades on this blessed day.'
Interestingly it's fine on mobile
It's a desktop only bug
So, presumably a bug with Discord
Thought it was the bot. Odd.
on desktop now ๐ค
And the plot thickens. I just updated to the latest desktop Discord version and it's all fracked up indeed !
an update this morning to discord changed how images are shared too
And now everything is my module again
I imagine that this would need a combo solution to be 100% on point.
Pass some info to the combat document about whose turn is now and whose was before and use that in the combatUpdate Hook to trigger the relevant effects, when it's safely evaluated that the turn has changed ๐ค
Oh let me update my module quickly to get them ALL in my name ๐ ๐
did you see what he typed about statusEffect, it should work with overtimes with numerous conditions, it just stacks them all into the lowest entry int he ae as it applies with like 30 keys in one
it just doesn't work with active auras
prolly something I gotta take to Mr.Primate eventually
I'm in the process of changing all my stuff that uses auras to work differently
So far that just means token attacher and template macros
I'm pretty done with the buggyness of active auras
Yeah it's a bit of the pain to set them all up, but with the "never" called you can as you said hide away most of the code and reuse it when needed
And if you make a couple of them, the rest should be easier to clopy paste
Also making that in a module for users to just ... use is ๐
It's funny because I pretty much don't need the never function anymore since I've moved on to putting everything in a module
that too ๐
I don't think I ever use them either, in any of the modules
What I like with token attacher and template macro is that it will update only when the movement has ended (when dragging at least)
not all steps in between
I actually have spirit shroud setup as an effect macro. Trigger every turn and do a midi-qol find nearby. If the nearby token is the same as the current combat token it's a simple started turn in area trigger
Yikes.
let me double check that so as not to spread misinformation
statusEffect updates every square and ignores does not stack in active auras and doesn't remove on walk out, macro.ce behaves properly
You know with a template macro you don't even need to apply effects to stuff for most things
like my darkness automation doesn't even apply any effects
template macro also requires a macro
ยฏ_(ใ)_/ยฏ
that Chris has already written and you just slap into your game. Right?
My sidecar doesn't always have a chris or Bugbear in it 8)
one or two active auras is fine in combat
the only thing holding me back from using bab for pally aura is the lack of visual clue
last time I used an active aura, my pass without trace effect expired and it kept applying it around my token anyways
the effect expired for me and the GM
I actualy do not believe pass without a trace is an aura, and rule it differently
nah I think the update happens at the end of the movement.
Makes more sense
so is turn undead but its not an aura
might have been misremembering that one ๐ค
I make it an aoe target buff spell like bless, only instead of limiting the targets, its all allies within range
I have a token aura around, easy to set up
token auras are just as bad as active auras
the what now?
" For the duration, each creature you choose within 30 feet of you (including you)"
Aura seems like the way to go
since you need to stay nearby to keep the effect
๐คท Guess active auras is giving my players an advantage since I don't want more than 2 going lol
the module token auras degrades gpu performance
One of these days we'll be able to do pass without trace with just build a bonus
But I think Zhell mentioned something about the 5e system being the limiting factor
I stand corrected wrong module, wrong aura effect
but they are god awful
and remind me too much of roll20 lol
I was just in the process of finding the code to check what's up with that ๐
I just accidentally fat fingered keys and all my selected tokens rotated all at once, please god what did this lol
must have fat fingered the mouse scroll somehow
+10 to stealth checks? Yeah, would be easy enough. I just don't want to add more features to bab until 2.2.0. There's a very high chance I am going to have to redo a lot of how it applies the bonuses.
And I want to put it in right the first time, which includes a filter for what ability is used for a skill/tool check.
which is currently not possible
That is sucky indeed.
The only thing I could find was in the rollSkill hook the flavor part
Yeah, the ability used is visible in the post hook iirc, but not in the prehook cus you pick the ability in the dialog, which is after that
The system itself has this issue, with the fighter thingy.
Athlete or something. Half PB to dex/str/con checks
Hmm I have never tried that
You get the bonus if you pick Athletics with Intelligence, but not, say, Intimidation with Strength
But Kim is working on that.
Gonna be breaking as all hell tho ๐
(which, sidenote, does mean midi's gonna have to catch up)
I encountered that while implementing minimum rolls.
What I was doing at some point, was to Hook on the renderApplication and change some stuff around
Speaking of things I want to implement in bab
Any chance of maximum rolls in that PR, too?
haven't thought of that tbf ๐
But yeah, even Fyorl was confused at why I had to do a hacky patchwork to make it so minimum roll works with different ability https://github.com/foundryvtt/dnd5e/pull/1760#discussion_r979957121
@gilded yacht why is this hook added to all workflows even if the item does not need a template: https://gitlab.com/tposney/midi-qol/-/blob/v10/src/module/workflow.ts#L295
This causes problems with macros that create their own template, because the hook method called alters the workflow state, which cause some states to be executed more than once.
For now, I remove the hook before creating a template using the hook is placeTemplateHookId
I think it should only be added if needTemplate is true
Hi, I was sent this way from the main dnd5e channel. I have an item that I would like to have roll on a table when used. I am terrible with macro's and so far I have managed to make it roll on the table and then display the information about the item. (I use midi, hence why I was sent here). Is it possible to have the macro show the item name and description llike it used too and then the results from the table? I have my macro if anyone wants to see it but its 2 lines and likely very wrong.
Oh and I was told that I shouldnt use ```js
item.use()
So I only actually have 1 line of text for my macro.
I guess the summed up version is... can someone please write me a macro that upon item use will display the name and description of the item as usual and then roll from a table called "Time Warp" please.
Hi folks,
Not sure if this is a new thing or not, but just noticed that when an actor does an attack of opportunity and rolls to hit, the usual MIDI workflow doesn't happen, it doesn't show in the chat card whether it is a hit or a miss and this means no damage application card.
IS this normal?
On the Item, create a MidiQOL onUse macro entry for ItemMacro | After Active Effects and in the ItemMacro on that Item include the line for that table roll
nope, but I suspect its a known 10.0.30 MidiQOL bug. Any error in the console when this happens?
Incredible, I was giving this advice out yesterday ha ha
I went in to the weapon and click on No Full Cover, and then unticked it and now it works for that weapon. ๐
Thats what I have already but the marco takes over and just displlays the roll table result. It doesnt show the item name or description
what is the macro code I should use to call the table because I am using ```js
await game.tables.getName('Time Warp').draw();
Thats my whole code and that may be the issue
Do you have an Item that you need to roll?
Yes, the player clicks an item it will then roll on the table and display the result. If I put the macro on the item like I have for other items it just takes over the item completely and no longer displays any information like the name or details. It only shows the table result as though I rolled on the table directly (which I assume is what the macro is doing). I would like it to show the name and details like it used to do and then the result.
Im certain its just my macro thats not working. I googled the line of code above and I guess im missing more code to make it work as I want
I was told in the main #dnd5e channel that I needed to add more to the macro item.use() to make it show that info but I was also told to ask in here as I use Midi and the item.use causes loops
If it makes a difference or helps. The item also has limited uses per day and with the macro on it, it no longer reduces the uses when used.
Action Type: Other (or Utility).
On use Macros: ItemMacro | After Active Effects
That is what I have already
when you click your item... does it show the item name and description in chat like it would with no macro attached?
You need to roll the Item, not Execute the macro
I do
I click the item from the inventory
and it prints out the roll table result
it doesnt "use" the item
does it make a difference that my item is a Trinket and not a feat?
im sure that you have the Item Macro sheet hooks enabled
I assume so... It rolls the macro part fine otherwise I assume it wouldnt display the table?
as that is what the macro is doing
Item Macro settings screenshot ๐
disable the sheet hooks
Following on advice from @dark canopy posting this here.
The goal is to trigger the spell that is on the actor sheet. That spell is configured using Item Macro and Midiqol
Would you guys be able to help?
// Actor Casting
const castingActorId = 'VrZkS11bX6ysdhBc';
const castingActor = game.actors.get(castingActorId);
// Target token on a dialog box
const targetToken = canvas.tokens.get(await new Promise(resolve => {
const dialog = new Dialog({
title: 'Select Target Token',
content: `<p>Select a token to cast the spell on:</p>`,
buttons: {
cancel: {
label: 'Cancel'
}
},
close: () => resolve(null)
});
for (const token of canvas.tokens.placeables) {
dialog.data.buttons[token.id] = {
label: token.name,
callback: () => resolve(token.id)
}
}
dialog.render(true);
}));
if (!targetToken) return;
// List Caster spells
const spells = castingActor.items.filter(item => item.type === 'spell');
// lets Choose
const spellNames = spells.map(spell => spell.name);
const selectedSpellName = await new Promise(resolve => {
new Dialog({
title: 'Select Spell',
content: `
<div>
<p>Select a spell to cast:</p>
<select id="spell-select">
${spellNames.map(name => `<option value="${name}">${name}</option>`)}
</select>
</div>
`,
buttons: {
cast: {
label: 'Cast Spell',
callback: () => resolve($('#spell-select')[0].value)
},
cancel: {
label: 'Cancel'
}
},
default: 'cast'
}).render(true);
});
if (!selectedSpellName) return;
// Obtain spell from dialog
const selectedSpell = spells.find(spell => spell.name === selectedSpellName);
if (!selectedSpell) return;
// Cast the spell on the selected token
? what should I sue here???
and to shortcut the back and forth -- by "cast spell on target", @twin ice means "transfer active effects"
Assuming this is an item macro, first 3 lines can be swapped to:
castingActor = this.actor```
Thank you. It was the sheet hooks setting. I hadnt changed that so I assume that no other macro had been having issues with it untill now or something had changed recently.
you can get the first target with:
let targetToken = this.targets.first().document```
It works fine now so thank you
The Item macro are all already configured and working on the Spells of the actor being called.
This is a Macro to create several lair actions that uses an actor with spells
oh gotcha
The goal is to have the macro list the actor spells. Select the spell and apply that spell
on the target token
let targets = Array.from(game.user.targets).map(i=>i.document.uuid);
let options = {
'showFullCard': false,
'createWorkflow': true,
'targetUuids': targets,
'configureDialog': false,
'versatile': false,
'consumeResource': false,
'consumeSlot': false
};
await MidiQOL.completeItemUse(selectedSpell, {}, options);```
Is this a hotbar macro?
or an on use macro from midi-qol?
hotbar
ok I'll try in an hour
let me double check actually
@molten solar Context: #dnd5e message I created an issue on the midi-qol gitlab with more details. Giving you a heads-up, since you're the author of the module in question -> https://gitlab.com/tposney/midi-qol/-/issues/1171
It generates: Uncaught (in promise) TypeError: undefined. Cannot read properties of undefined (reading 'document')
Hi all I encounter some error when testing out the midiqol "Spiritual Guardian" example.
It seems the damage will not proc the second time. Who might be the culprit?
Ah found the answer #1010273821401555087 message
@scarlet gale map the resulting Array Array.from(game.user.targets).map(i=>i.document.uuid)
just map it directly! game.user.targets.map
One of these days I'll remember the map thing
if you ever find yourself writing a for...of loop, stop, erase it, and use an iterator algorithm
But.. but.. mah performance! ๐
ya, gotta make sure foundry runs as slow as possible with hand rolled loops ๐
map, foreach etc are slightly less performant than a pure for loop in most cases ๐
Not saying its a good argument against it, just playing Devil's Advocate ๐
when dealing with huge datasets, maybe...maybe
algorithms are just generally safer to use
Updated above snippet
If its a pre-designed algo sure, use what others wrote, but most map operations are newly written code in the function
just one badger's opinion from debugging waaaay too many hand-rolled loops
Yeah that too, I just don't remember if the targetUuids in the function later need a set or an array
nvm
It'll be on tposney to fix this most likely. All of Zhells modules say this at the end of their description:
You should not expect this module to work with modules that overhaul or destroy core roll behaviour, particularly WIRE and MIDI. These modules are unsupported, and any compatibility is nothing but a happy accident.
Well Results:
It does not recognize the target I selected on the Dialog Box
It Says target no selected.
Lets try manually set the target and run the Macro:
Uncaught (in promise) ReferenceError: undefined. targetUuids is not defined
hold on
I left a line in I didn't need
And
I didn't realize you were selecting a target with the dialog
I was just pulling the targets from the foundry targets
๐ easier when you have 25 possible targets in a map
Change the dialogue to return the uuid
Then it should just be this after:
let options = {
'showFullCard': false,
'createWorkflow': true,
'targetUuids': [targetToken],
'configureDialog': false,
'versatile': false,
'consumeResource': false,
'consumeSlot': false
};
await MidiQOL.completeItemUse(selectedSpell, {}, options);```
Is this how I would build empowered evocation in Babonus?
it's in the special traits for the wizard. Not an AE
Assuming that key is correct yes?
@abilities.int.mod
that too
and should it be all evocation spells, or ones cast using a spell slot?
says any wizard evocation spell you cast
should be good then
You mean to return the selected Token Id?
targetToken.document.uuid
Ok so:
...```
// Target token on a dialog box
const targetToken = canvas.tokens.get(await new Promise(resolve => {
const dialog = new Dialog({
title: 'Select Target Token',
content: <p>Select a token to cast the spell on:</p>,
buttons: {
cancel: {
label: 'Cancel'
}
},
close: () => resolve(null)
});
for (const token of canvas.tokens.placeables) {
dialog.data.buttons[token.id] = {
label: token.name,
callback: () => resolve(token.id)
}
}
dialog.render(true);
}));
if (!targetToken) return;
To this:
// Target token on a dialog box
const targetToken = canvas.tokens.get(await new Promise(resolve => {
const dialog = new Dialog({
title: 'Select Target Token',
content: <p>Select a token to cast the spell on:</p>,
buttons: {
cancel: {
label: 'Cancel'
}
},
close: () => resolve(null)
});
for (const token of canvas.tokens.placeables) {
dialog.data.buttons[token.id] = {
label: token.name,
callback: () => resolve(targetToken.document.uuid)
}
}
dialog.render(true);
}));
if (!targetToken) return;
If i do this it generates :Cannot access 'targetToken' before initialization
Use what you had before. Your original macro
Add in the end what Chris wrote and in the ```js
let options = {
'showFullCard': false,
'createWorkflow': true,
'targetUuids': [targetToken.document.uuid],
'configureDialog': false,
'versatile': false,
'consumeResource': false,
'consumeSlot': false
};
await MidiQOL.completeItemUse(selectedSpell, {}, options);
Oh wait
You may want to switch some of the options
You are resolving token.id
make that token.document.uuid
And just ```js
'targetUuids': [targetToken],
ffs I need coffee
Im getting confused now
// Actor Casting
const castingActorId = 'VrZkS11bX6ysdhBc';
const castingActor = game.actors.get(castingActorId);
// Target token on a dialog box
const targetToken = canvas.tokens.get(await new Promise(resolve => {
const dialog = new Dialog({
title: 'Select Target Token',
content: `<p>Select a token to cast the spell on:</p>`,
buttons: {
cancel: {
label: 'Cancel'
}
},
close: () => resolve(null)
});
for (const token of canvas.tokens.placeables) {
dialog.data.buttons[token.id] = {
label: token.name,
callback: () => resolve(token.id)
}
}
dialog.render(true);
}));
if (!targetToken) return;
// List Caster spells
const spells = castingActor.items.filter(item => item.type === 'spell');
// lets Choose
const spellNames = spells.map(spell => spell.name);
const selectedSpellName = await new Promise(resolve => {
new Dialog({
title: 'Select Spell',
content: `
<div>
<p>Select a spell to cast:</p>
<select id="spell-select">
${spellNames.map(name => `<option value="${name}">${name}</option>`)}
</select>
</div>
`,
buttons: {
cast: {
label: 'Cast Spell',
callback: () => resolve($('#spell-select')[0].value)
},
cancel: {
label: 'Cancel'
}
},
default: 'cast'
}).render(true);
});
if (!selectedSpellName) return;
// Obtain spell from dialog
const selectedSpell = spells.find(spell => spell.name === selectedSpellName);
if (!selectedSpell) return;
// Cast the spell on the selected token
let options = {
'createWorkflow': true,
'targetUuids': [targetToken.document.uuid]
};
await MidiQOL.completeItemUse(selectedSpell, {}, options);
Try this
That worked Like a charm
now let me see what you did
๐
The MidiQOL function needs a UUID to know what to target.
Your Dialog returns the Token5e and that's the canvas placeable token. The token.document.uuid is what the function needs
gotcha
anyone have a good chain lightning macro? Trying to move away from ASE
However trying the spells now I'm getting some errors but those are most likely related to item macro on each spell
On Bless: Uncaught (in promise) TypeError: undefined. selfTarget.toggleEffect
On Sanctuary : You are accessing Actor5e#data which has been migrated to Actor5e#system
Those errors replicate through a lot of spells
You probably have them set up with v9 compatible Foundry macros
On Bless: Uncaught (in promise) TypeError: undefined. selfTarget.toggleEffect
This sounds like an Item not set up correctly
Is there somwhere with v10?
data.data needs to become system
and where there is a single data more probably needs just deletion
@violet meadow Is there a step that midi allows you to add additional targets to a workflow?
I think
- Added preTargeting onUse macro call and preTargeting Hook. This is called before any item use processing is done It is also called before the workflow is created so only very limited data is available. A dummy workflow (if a workflow does not already exist for the item) is created, with the item/actor and selected targets is passed to the macro/hook.
will keep in mind the spell and effects are still working anyways. After the session I will look into it
Ty all for the help
I have, but I cannot pull up examples rn, and my memory is that of a goldfish sometimes.
For spells I have been adding or deleting targets from the game.user.targets too
<#513918036919713802 message>
Might be something
I cannot find my Cloud Rune to check what I had done
The issue with the hitTargets is still valid though. If you have something hit, its difficult to exclude it entirely
Not an issue for what I'm working on
I have an issue I've been trying to fix for a while now. Seems to deal with CE interacting somehow with MidiQol (only they and their dependencies are active). Tokens are having their icons doubled or even tripled on them (seems to be random), however the actual active effects applied remain normal. This only happens the first time the CE is activated, and then acts normal any other time it is activated (unless the game world is reloaded, in which case the behavior repeats). I will also note that it seems to be happening with CEs that utilize macro.CE in their effect tab. Any idea on how I can fix this?
Been an issue for awhile
I'm on the latest versions of both modules.
It's some sort of visual glitch
So is it a glitch happening when macro.CE is used? Should I not use that and input it manually?
There is an update coming this weekend that touches macro.ce, I'd wait to see if it still happens after that
otherwise make an issue on the DAE gitlab
macro.ce is DAE
CE doesn't add that strangely enough
IIRC this visual glitch is more than just CE I think
Since a midi applied effect will also visually double up
It's the first effect that gets applied after loading into foundry for the first time
From what I've seen
So far I've only had it happen with CEs that use macro.CE. So it's happening in other cases too?
ยฏ_(ใ)_/ยฏ
I'd wait and see for the next DAE update.
Since another bug related to it is getting fixed according to tposney
@sleek pulsar badgerBugbear wrote a world script for ammunition lacking those checkboxes but I screwed it up and never went back and referenced it. I will try to search for it
Is there an activation condition I can add to silvered sling bullets to simulate overcoming damage Immunities to bludgeoning, piercing, and slashing damage from nonmagical attacks that arenโt silvered? If not an activation condition, I'd welcome an item ( macro (or, of course, whatever works.) ๐ ((BTW, I'm not a programmer, but I can occasionally hack something together that actually works.)) Coming from #dnd5e...
no cause you don't use the sling bullet, you use the sling
My module will have one in the next release.
@sleek pulsar I see your problem. Weapons have a Silvered weapon property that should take care of overcoming resistances but ammunition doesn't have it
Ah, okay
I think this was suggested to tposney at some point, but bugbear wrote a worldscript for this problem, I just gotta find it
Hmmm, that's a little weird
This is part of loot, so I'll need to provide the sling too. LoL
Yeah, that would be ideal, having a Silvered option that gets added in just like the Attack Roll Bonus on ammunition is
this world script I just linked to can be run in the worldscripter module
That was going to be my next question. Thanks
make sure its a script macro before you drag to the world scripter compendium though I think world scripter purposely catches that mistake hehe
Will do
I tried to use that world script but I used his pre-edited version and had an issue and never went back and redid it, so you are technically testing that script for the first time for all of us I think
K, I'll let you know what happens
I had requested it cause i gave my players a crossbow, then in the next session they sold it to Ubaya in the Yawning Portal so...none of them have ammunition weapons anymore so I didnt' see a need to load it lol
If all else fails, at least you can manually tick the Silvered box on the sling
My group is starting to form their next campaign characters and one is leaning heavily towards a buffed homebrew arcane archer
that should be exciting
I created a reuseable crafting/system that has played well for herbalism, poisonmaking, and cooking that I can't wait to adapt to pseudo battlemaster maneuvers, fletching, and spell scribing in the next campaign.
While I'm testing, I am reminded I had a question about Midi set up:
Is there a way to not have the dialog box come up, just the chat window?
Or, is this better for some reason?
Midi error when combat starts.
midi-qol.js:24 midi-qol | processOverTime TypeError: Cannot read properties of undefined (reading 'startsWith')
at _parseUuid (foundry.js:4176:13)
at fromUuidSync (foundry.js:4140:49)
at Object.gmExpirePerTurnBonusActions (utils.js:3511:17)
at SocketlibSocket._executeLocal (socketlib.js:192:15)
at SocketlibSocket.executeAsGM (socketlib.js:90:16)
at Combat.processOverTime (utils.js:1139:25)
at ๐call_wrapper [as call_wrapper] (libWrapper-wrapper.js:616:16)
at ๐CONFIG.Combat.documentClass.prototype._preUpdate#0 (libWrapper-wrapper.js:189:20)
at ClientDatabaseBackend._preUpdateDocumentArray (foundry.js:12734:17)
at ClientDatabaseBackend._updateDocuments (foundry.js:12630:33)
at ClientDatabaseBackend.update (commons.js:6796:24)
at async Combat.updateDocuments (commons.js:6153:23)
at async Combat.update (commons.js:6250:23)
This error appears in 3 of 3 individually hosted worlds I have tested so far.
Foundry: 10.291
dnd5e: 2.1.5
Midi: 10.0.30
Downgrade to 0.29 of midi-qol
See first pin
On another note, that new CE update looks interesting
Roger that thank you.
@fallen token @vast bane Thanks, the @violet meadow ammunition types world script worked perfectly.
I guess I'd need to add additional versions of the script to add more different types of ammunition?
@vast bane seems like DFred may have fixed the multiple CE issue in a different way. Now one CE can trigger a stack of sub CEs
theres only those three that are needed
if you setup ammunition for other types you can just do them in the damage types of the damage formulas
dnd5e overrides the slings damage in favor of amm damage if the ammo has damage entered
I noticed that in testing
but theres no "magic" "Adamantine" or "silvered" damage type in the damage drop downs in the formulas
tposney said the macro.ce bug is fixed in dae 21 coming soonโข๏ธ
and statusEffect isn't broken, we all just didn't realize its doing crazy things when attached to an overtime lol
he squishes all the various statuseffects together into one statuseffect entry on apply to an actor
I had to add the specific name of the sling bullets ((sling bullets (silvered) )) to the world script (replacing the word "ammo"). So, if I had adamantine arrows, or +1 arrows, I'd have to have additional scripts? (question -- not sure)
That said, replacing ammo with sling bullets (silvered) made things work perfectly, so I'm good for the time being
I don't think you need to change anything do you? hes checking if the name contains the key words below the ammo entry
Okay, then I may have misunderstood the comment associated with the script ((...Add the appropriate type in the name of the ammo, eg Crossbow Bolts (Silvered) or adamantine Arrows etc. ))
the ammo is checking the item type, and then checking for a specific name
specific word in the name field
got it, thanks -- told you I wasn't a programmer ๐
Doesn't actually stack. It looks like it has you pick one of the options
should work right out of the box if you named your items right and the ammo is "ammo"
It's very misleadingly named on that update
yeah that dfreds patch, I'm not touching til I see others saying its safe with midi lol
I just tested it on my dev world
Didn't set anything on fire
But I would wait and see
yeah, restraint and patience is key in foundry
Super and badger are the kings of patience cause they are still rockin v9
I couldn't do it! It pains me if I dont click that button.
Somebody's got to make sure it's safe for the rest of us ๐
just for the live campaign -- dev all day in v10, play my non live campaign games in v10
Thatโs nested CEs right? I thought this was aside from that
Ah yes. Badger. Who made a module compatible with v8, v9, and v10. Restraint. Yes.
several, in fact!
Do your players know about the v10 features they're not getting? /s
lol, nope, they are just baby birds getting fed my choice of food
(the day one asks where a v10 feature is i'll drive over to their house and kiss them)
Where are the v10 features?
Badgerโs v9 is not your typical v9 Iโm sure
yea, 20 active modules ๐คฃ quite atypical for dnd5e
- ๐
Iโd be very curious what the 20 modules you two canโt live without are and if theyโre the same list
sure, lemme whip it out or you
(but mostly if Iโm not using any of them)
Sorry laughing at the spoiler tag
I feel like I found your secret folder on the desktop.
My having a personal module is hardly a secret
Twas once but a wee compendium module
Zhell's mom: So... what's in this... "Custom Stuff" folder Zhell?
Get out of my room! ๐ฉ
I'm shocked Libwrapper is installed on zhells world /gasp
socketlib isn't as bad right? isn't that for settings menus and stuff?
Custom Character Sheet Sections ๐ค
Unfamiliar?
It's so useful
Unfamiliar and sounds like something youโd whack into your custom stuff folder
I prefer inventory+ so that I don't have to fiddle with the categories, they are just what the players decide individually
You can have both
well, 20 was an old number (looks like its up to...37!?! christ), and since this is v9 most of these modules are borked anyway, but dont you @ me with troubles stemming from this list
Active Modules:
----------
5e Statblock Importer v;
Attack Roll Check DnD5e v;
Automated Animations v;
Bean Dice v;
Combat Utility Belt v;
Dice So Nice! v;
DnD5e Helpers v;
Effective Transferral v;
Item Macro v;
Item Piles v;
JB2A - Patreon Complete Collection v;
Koboldworks โ Ready Up! v;
libWrapper v0;
Melvin's Mechanical Masterworks v;
Minimal Rolling Enhancements for D&D5e v;
Monaco Macro Editor v;
More Hooks D&D5e v;
Next Up v;
Nice More Dice v;
Note Macro v;
Perfect Vision v;
PnP - Pointer and Pings! v;
PopOut! v;
Ready To Use Cards v;
Sequencer v;
Shared Compendiums v;
socketlib v;
Squadron v;
Stairways (Teleporter) v;
The Rollsmith - Iridescent Rainbow Dice Set v;
The Rollsmith - Purpleheart Wooden Dice Set v;
Tidy5e Sheet v;
Tidy UI - Game Settings v;
Token Action HUD v;
Token Z v;
Tome of Beasts by Kobold Press v;
Warp Gate v;
Sheet sections is for spells and features
half your list don't even really count, they are content modules
The feels:
Wow. Very little overlap.
Thats the real reason hes still on 9 ;p
and Note Macro
the core workers are pretty common ๐
No compendium or personal modules ๐ค
Zhell do you use Sequencer a lot or just not too many anims? I noticed no A-A
unless they were lewdly named and you hid them
lol
honey
sweetheart
darling
I made my own A-A
(I only added A-A so the other players could have effects too ๐คฃ )
I got them dnd5e hooks rolling along with every attack and damage roll
and templates
Players just gotta ask, and I add 1 line of code
or submit a github issue lmao as one did recently
โ๏ธ Zhell is sequencer guru
Sometimes. They're usually one-liners (long ones)
I find the complicated ones just don't show as well due to sync issues
Iโm trying to shift more to Sequencer because ColorMatrix isnโt in A-A and I love that filter
What means CE?
'Convenient Effects'?
Do i have that module? ๐ Thats the buff/debuff one right? ๐
technically isn't warpgate and melvins his personal modules ;p
My list is real short if we count all my own as one module lmao
I'm sayin couldn't he hide his in his own modules?
not for publich sharing but to strim down his module count
I'm more surprised that Badger has no API for Item Macro
Unless they're in a world script
hmm?
Do you put the entire script into an item macro or call something external?
full thing splatted
faints
(again, im the only one doing anything with it in my group, haha, and I dont distribute macros anymore ๐ )
I got sick of having to track them down
when finding errors or performing updates and such
oh if the script breaks, it just gets deleted -- there is nothing in my world I couldn't live without
Not sure if this is a Dfred thing or Midi, but the option to have midi call CE for effects is no longer showing up on the item sheet. Suspect it's CE, since it was working fine before the 4.0 update.
I couldn't even open my CE control when I went to 4.0. I'm back to 3.1.1 now.
You mashed that update button eh?
as a midi user its probably not wise to mash the update button for anything in the live word, make a node.js test world to test out all your updates
Well, someone's gotta update and test/break stuff.
update is out. 4.0.1 fixed this.
but it seems there are still some issues https://github.com/DFreds/dfreds-convenient-effects/issues/217
do it on your test world not your main world
My main world has survived everything.
so you are running on midi 30 8)?
Of course. I fixed the issues locally ๐
cheater
Although my game.user flags would be happyier with some cleaning
delete em all
atleast theres no better rolls flags and the compendium folders flags arne't in the thousands
probably could check against installed modules and remove irrelevant ones with a macro?
two different calendar weather ones in there lol
oh yeah. I did do that for actors etc
not game.users though ๐
I use maybe half of these modules
at some point itโs probably not silly just to delete users and remake themโฆ could copy hotbars over and just force settings anyway
It holds sentimental value!
Fair, and itโs not like you canโt troubleshoot things yourself anyway
And if not, I will bug Moto
Moto finds problems people didnโt even know they had
Nah, I'm still having problems. I put in a report. I'm back to 3.1.1.
Trying to make a neat effect to play on an earth elemental's death. Is this correct?
const mutation = warpgate.mutationStack(token.document).getName("earthelementaldeath");
if(mutation) return await warpgate.revert(token.document, "earthelementaldeath");
const data = {token: {img: '/Mapmaking/Forgottenadventures/Rubble/Rubble_Piles/Stone/Rubble_Pile_Stone_Redrock_A25_3x4.png'}};
await warpgate.mutate(token.document, data, {}, {name: "earthelementaldeath"});
new Sequence()
.sound()
.file("/Sounds/Combat/Earth%20Impact/FX_Earth_Impacts_03.ogg")
.volume(0.5)
.effect()
.file("animated-spell-effects-cartoon.earth.debris.04")
.scaleToObject(4)
.atLocation(token)
.sound()
.file("/Sounds/Combat/Earth%20Impact/FX_Rock_FallingSmall_07.ogg")
.volume(1)
.effect()
.file("jb2a.smoke.puff.ring.02.white.0")
.scaleToObject(4)
.atLocation(token)
.play();```
I have receipts of some of your items' flags I think
That was from a sample midi item... ๐
Scrub it on preCreate!
Oooh I should do that
... wait what am I saying, I got nothing to scrub ๐ค
When importing? True never considered that
does it work? the syntax appears ok
consider me pinged
@lost estuary do you have the ItemMacro module?
I do, and i know how to call via the item dialogue
but not the effect macro.ItemMacro
OK so it;s even easier.
just make the DAE effect on the Item call macro.itemMacro | Custom | and you are good to go
nothing in the actual effect value
The macro should just go into the ItemMacro as usual
DFreds CE for Exhaustion?
I have it
but yeah, nothing
I do have Tidy
i know it has its own exaustion thing
Do you use it or something else? Is the effect called Exhaustion 1 etc or is it localised maybe?
Hey all! Is it possible to make a torch macro using DAE? Ideally I'd like the light to go out after the time expires
You need ATL/ATE module for that. There are a couple other modules that do that too
looks like its using midi flags for exaustion on the effect that is applied called Axhaustion Lvl. 1
Hmm do you use the Exhaustion integrated to Tidy?
I just might be
the lvl is what throws the script off
Exhaustion 1 vs Exhaustion Lvl 1
ok split sec
//deleted not relevant.
Try this
no dice
edited again
missing .
I have no idea if Tidy5e replaces the default DFreds CE exhaustion conditions
If nothing works, disable Tidy 5e exhaustion integration and try the original script
if (args[0] === "on") {
console.log(args)
game.Gametime.doIn({minutes:1}, async () => {
const effectItem = fromUuidSync(args.at(-1).origin);
const effectActor = effectItem.actor;
let exhaustionLvl = effectActor.effects.find(eff=>eff.label.includes("Exhaustion"))
if (!exhaustionLvl) exhaustionLvl = 1;
else exhaustionLvl = Math.min(Number(exhaustionLvl.label.replace(/[^0-9]/g, "")) + 1,5);
await game.dfreds.effectInterface.addEffect({effectName: `Exhaustion ${exhaustionLvl}`, uuid:effectActor.uuid})
});
}
Use that. Roll the item and check console when the effect is created
Do you not have About Time?
The update does have sufficient information to work all that out. I will have a look at triggering on the combat.update rather than preUpdate. From recollection I just trigger on the preUpdate since the hook will only get called on the client that did the combat update, rather than all clients.
Good catch, it was disabled as part of troubleshooting.
Beautiful
works like a charm
alright you got there in the end! ๐ฅณ
Now, i know the character also has the ability to remove a level of exaustion with another ability.
I will look at what you did here to call it, and see if i can un call it ๐ minus all the time stuff
Thanks Bugbear!
I'm back with more head on desk action. As before, I've used the search function and Google, but neither are showing results for what I'm experiencing (or I've gone blind in my hours long search). I'm looking to use DFreds Convenient Effects to automate effects from spells. I've got MidiQOL and have the appropriate drop downs checked. I don't have Combat Utility Belt enabled (at the moment). My effects aren't transferring to my targets. The caster will get the concentration effect, but target is still Bless-less.
Is there a simple thing I'm just missing in settings?
Spells are all spelled the same
Manually clicking the effect from CE applies on selected actor
But no automation on target
Is your Bless Spell looking like this?
Exactly the same with the exception of that extra tab near top, "Special Effects"
No worries about that
MidiQOL settings?
And you have targets selected. Can you share a screenshot of your Bless Spell to make sure?
Target is selected
And screenshot is up about five messages unless you're asking for something else
Targeting seems fine since I can smack the target with a warhammer
Yeah sorry, it was meant to be a screenshot of your DAE config. Is it empty? No DAE?
Ah so you have an Item Effect. OK. The details tab of that DAE?
remove the checkbox
Is that ever on by default?
All SRD spells have it on by default (when they have AEs)
You can just delete the DAE from the ITem completely
Is there a quick way to change all of them in one fell swoop or is it going to be a slog to change them all one by one?
DFreds will take care of everything
#macro-polo could help with that.
But you will need to move your Items to your own compendium, cause whatever you change in the SRD dnd5e compendiums will be overwritten if the game system updates
Ohhhh, okay. Thank you so much for helping me troubleshoot this!
You're welcome!
One last question, then...you said I could delete DAE from the spell completely and DFreds will sort it out. When I cast Guidance (nothing in effects), the caster again has Concentration effect, but no effect on target
Check if the Item is targeting self in its details
targeting creature
If you open up the targets character sheet, is there nothing in its effects tab?
Correct
Only effects from cloak he is wearing
Sorry, I know it's hard to troubleshoot without being able to just lay hands on the problem ><
Strange ๐ค
Any known random interactions with other modules that would block them?
Good question. I'll have a look
Open console (F12), cast the spell and see if any red errors pop up
Nothing
it removed the old concentration effect on caster and hit him with it again
but nothing on target
Target the caster. Any change?
No change
When using Active Effects, is there a way to have the duration countdown stop when they item is not active?
Spelled same as in dfreds?
Yes, exactly the same, down to capitalization
There was some talk about that. I donโt think anything like that has been implemented though
Maybe an uninstall and a fresh install?
Of the module
Check the itemโs details first. Do you happen to have the checkbox do not apply dfreds in the bottom checked?
Don't even see that as an option
Yeah I am stumped.
I truly appreciate the efforts! I'll just have to manually add effects to people for now until the solution presents itself
Thank you once again ๐
Follow-up then, is it possible to make a macro to create an active effect. for a torch for example
I can create the effect i want- But ideally id like to have the option to re-add it without creating a new effect each time
Do you have a torch Item on the player? Create the effect on that one
And target Self in the 3rd box
It will apply the effect on the player that has the torch in its inventory
Dfreds CE module can do it.
I think that only happens if its a ce though
Is it possible to make a table automatically apply effects? ๐ค
I use an avatar for this, I also put all my traps on said avatar and then I use inline roll commands module and assign the avatar as my default character then when I have nothing selected and press inline roll commands my avatar casts them, theres a yellow warning if you haven't placed your avatar on the map but they should still cast.
make sure you don't put ranges on said items or else you will have to bind the override key and use it to use the items
Hmm, I see, I think I'll do it manually.
Silly question perhaps but is there a way to set up an effect with Midi that would essentially "Mark" an actor as only being susceptible to receive damage from another specific actor? Essentially just making it immune to anything besides something coming from one specific actor so it does not trigger things on AoE Saving throws like a Fireball
are you trying to do subtle spell/sculpt spell?
@hard oxide show us what your attack looks like in chat where its not critting when it should
Hello, does DFreds have some bug with Midi after the last update?
its more of a midi problem than a dfreds problem though
I would not update dfreds CE if you use midi, stay on 3.1.1
midi just dropped a patch that fixes this, though its brand spankin new so no idea if other issues still exist.
flags.dnd5e.initiativeAdv/flags.dnd5e.initiativeDisadv - trying to apply advantage on initiative but this flag doesnt exist in v10, does anyone know the new flag?
Hello there,
For us layman types, has the MIDI update solved the problem with full cover having to be ticked and unticked.
And the problem above with DFreds CE? @gilded yacht .
there is no problem with full cover, before he messed with it, fireball never behaved right anyway, he added a feature that lets us sorta handle it and the fix caused sacred flame to finally work right so I don't think hes revisiting that at all. dfreds CE seems to be in the patch though.
So you still have to go in to each weapon and click No Full Cover and then untick it again for it to work properly?
And what about the StartsWith error? What does that even do?
I have not had to do that ever
I don't think anyone has updated yet to test the stuff, I'm pretty certain the starts with error was solved cause it didn't even have an issue and tposney was talking about it
I updated dae to fiddle with its stuff but I'm headin off to bed I'll let bugbear figure it out later today lol
I am going to start testing now then, I was using the "you go first brave fighter, and I will follow" tactic. ๐
You go to bed? I don't believe you.
@gilded yacht Thanks for the change, but you should also move line 295 after needTemplate is initialized, line 296.
https://gyazo.com/d9e9dc8b39b63c3b3246d59b93f9fd3d seems like its critting on a 19, why ?
ok sorry i know why ,its because i used the rule that crits when u are above a certain AC, and i forgot to check where it says you can still do normal crits
If createItem is no longer setting items as proficient and equipped, how do we automatically set them to be? I was using it for the special attacks of our path of the beast barb, so he gets the right attacks when he rages
Hi - I'm trying to get spells to expire automatically based on duration. I have DAE, Midi-QOL, About Time, Times up, the v10 SRD fork, and all of their requirements. I'm testing this with Bless. The effect is correctly removed after 10 turns on all characters except the one who casts it, instead the bless/concentration effects just stay on none. How can I get it to be automatically removed on the caster as well?
The effect also accurately goes away if i disable automatic concentration. so its as if the effect doesn't go away because concentration doesn't go away, but concentration won't go away since the effect doesn't go away
With the new item create itemMacro, update the item onCreate to have the properties you need I guess
I am away so I cannot test it till Monday! I have some ideas though with that new macro execute method for the createItem
Strange. Do you use MidiQOL concentration?
yes
I have a macro etc. set up for this that uses warpgate. https://github.com/ctbritt/path-of-the-beast-foundryvtt
(with MUCH help from @dark canopy and @jagged bear and others that I've likely forgotten...)
Check only with MidiQOL, dae, times up, libwrapper and sovketlib active. Does it do that again?
Is anyone getting this specific error? The macro.CE drop down menu doesn't work for me at all. This is on a new world.
Worked right with only those. Looks like convenient effects is causing it to not work correctly. Thanks for your help
There are still some hiccups with dfreds latest then. Check the issues on that repository. Saw a couple being created
Rad, thanks!
Wish Iโd known about that earlier lol. I have a pretty simple setup with createItem and three different rage items, but it does work well and Iโve got TVA tokens set up and other fx for each form based on which AE is active
Heโs a barbarian so has plenty of hotbar slots for different rages ๐คทโโ๏ธ
Is there a way to add a temporary effect to increase melee range? I have an issue where my additional melee range isnt factored when trying to attack and i get an error saying im not close enough to attack
an all-in-one macro is pretty great though ๐
I am getting the same error even after Midi/DAE update.
Agree, although our Barb does have all three rages in his hotbar and the attacks too (which are only clickable when theyโre active)โฆ so simpler and more visual for him, even if itโs not a portable all-in-one
Makes him feel special to have more icons to click ๐
Hello! Looking to automate this weapon.
The idea is:
- Actor attacks with sword
- If hit, force saving throw from target
- If fail the save, apply condition.
it was not doing that before, I believe he means that it now does.
that is basically chil touch, except you want an overtime attached to the effect so mirror the midi sample item for chill touch and then add the overtime
is there a way to auto roll saves for npc but not for players? it's convent to have to rolled for the npc's but I still want ot let the players feel more in control by rolling their own says
the save section covers exactly that, but I think you will find that auto roll fails alot and doesn't roll advantage when they could have
I prefer Monks token bar for all 3 options
workflow button/workflow tab/saves subsection
thanks it is working right now
Not entirely sure what the dae change about proficient was for macro.createItem, for me I still have to use my own compendium of items cause for most of my use cases i still pre equip and pre attune. I suppose it could be done with a macro too hmmm.
There is a version of the macro.createitem that runs a macro after
You can likely use that fix the proficient
I feel like this is a little bit of a regression however. As I don't think most people were using it as a way to get stuff onto the sheet from spells and features that would have you stay proficient.
its mis written in the patch notes
he means that now they are proficient
I've actually stopped using macro.createitem since it's not something easily included in my module.
that fix honestly is for active auras users I feel
cause statusEffect has a stroke in active auras
why would anyone use an aura with macro.createitem
cause status effect is broken, they don't auto remove when you walk out, but macro.ce and cub does
oh I thought you were talking about ce
no, createitem
you mistyped ;p
oh you got me before the edit lol
lol sorry
I wonder if it'd make sharing the items easier
I DO use macro.ce
as it stands macro.createitem is great, but god is it hard to explain how to use
I don't use macro.createitem
its a great user interface feature but it has no portability to other worlds
hmm
tested the new updates on my test world
the macro.ce field is now blank on the dropdown box
I updated to 4.0.2
But did you update midi-qol?
yes, I lack the auto apply feature now cause of that
I think we all got distracted with the auto apply and forgot to issue report macro.ce being broken with 402
Till he fixes it we either gotta downgrade both or live without auto apply
@gilded yacht macro.ce appears to be giving us a blank list of options to pick from. This is using version 4.0.2 of CE and the new version of DAE you just released.
so basically downgrade to midi 29 and dfreds 3.1.1 if you want auto apply AND macro.ce
I'm having that same issue, but I had it even prior to the latest update
Anyone automate hp drain? Where the damage also reduces the max hp?
I have stuff like that on my github, otherwise it'll be in my next module update