#MidiQOL

1 messages ยท Page 20 of 1

raven ore
#

I still haven't resolved that either

short aurora
#

It shouldn't, that's just the two things we're changing - the damage parts and, in this case, the flag containing the item macro. The damage seems right on my end - for one of the messages. :p

raven ore
#

Kk

short aurora
#

wait wtf now it's doing it right ._.

#

It ROLLS the first message though, which will be an issue if you have automation

#

I can see it just before it's deleted

raven ore
#

That didn't eliminate the looping for me

short aurora
#

How are you setting up this feature?

raven ore
#

I don't auto-roll my attacks for players

#

so that's not a problem

short aurora
#

Okay yeah, you need to change whatever field that is or toggle it off on the cloned item. Mine is an ItemMacro embedded in the item, that's what I'm updating out of with the clone.

#

Here's the unarmed strike of monk with the item macro embedded. Try to import it and give it a go, should leave 1 message (after rolling and deleting the first one) with updated damage values.

#

Although I think in your case it's just js item = item.clone({ "data.damage.parts": newDamage, "flags.midi-qol.onUseMacroName": "" }, { keepId: true });

#

Removes the macro name to run from the item and it shouldn't be able to loop anymore, because the cloned item doesn't know the macro

#

I still have no idea how this thing is deleting the first message though, commons.js just seems to do it, magic I tells ya

raven ore
#

So, that does stop the loop sort of

#

I get the first prompt again, to drop the template or consume resources. But the macro dialog doesn't pop up again

#

I don't think it's going to work the same way it does with your item

#

I think somehow I need to update the existing card with different damage dice

#

and within the same workflow

short aurora
#

In this case, it would definitely be easier to update the workflow before damage is rolled. For your other monk features, it seems like the flow of the macro is off. Needs to stop the original one from getting to the point where placement and resources are consumed, create the new "empowered" feature and roll that instead...

raven ore
#

Yeah. I don't have a lot of experience with midi QoL, so I'm having to figure out a lot of these pieces as I go.

#

I see similar things being handled on the preDamageRoll step

#

But I would like to do as you said. I want to be able to modify the card

kind cape
#

I just looked at the feature in question, and well.. Unless I misunderstood something about it its just a big collection of spells that can be upcast, right?

short aurora
#

No, it's monk stuff, so they can change the fundamentals of the spell

raven ore
#

Yeah, some of them are actual spells. Some of them are features that can change when additional ki points are used.

#

I'm trying to get the chat card to reflect those changes and allow for "upcasted" damage dice as well

kind cape
#

Well, have you considered using Magic Items module and just creating them as "spells" in there? It can do upcast

raven ore
#

Yeah. That doesn't quite do what I'm looking for. With that module, I can upcast with item charges or spell slots. But this is a resource that is used by multiple features already.

#

That also doesn't get me the dialogue options

kind cape
#

As long as you put the "spells" onto the feature with the Ki points stored I don't see why it being used by other features would be a problem ๐Ÿค”

raven ore
#

Because there is no option to upcast with them, as far as I know

kind cape
raven ore
#

Isn't that a charge?

kind cape
#

Yes? Not quite sure what else it would be

raven ore
#

Charges vs Item Uses

#

Item Uses can have a secondary feature assigned

#

Which is what this requires

naive zenith
#

Fotoply is right about Magic Items for Four Elements monk. Macros are another way but that's a method I just don't have mastery of for this. But the module worked for my players monk, when we were playing. Requires more upkeep on increasing Uses (Ki) and increasing the max Ki Upcast, but its worked for us.

#

Until either a) the 5e system implements something for this particular function or b) a module shows up to aid this process, gotta find workarounds.

scarlet gale
#

Personally, I'd just slap an item macro onto the spell that asks if you want to upcast and change the workflow to do so. That also allows you to update the remaining ki with the macro too.

short aurora
#

Toll the Dead in the example compendium has a simple method of changing the damage, we overcomplicated.

const theItem = await fromUuid(args[0].uuid);
let formula = theItem.system.damage.parts[0][0];
formula = formula.replace("1d4", "2d8"); // define the formula with both standard and new ki value here, check toll the dead for an example of the calculation
theItem.system.damage.parts[0][0] = formula;```
#

I'd still like to figure out the proper way to do empowered features that change fundamentally how the item works, not just scale damage, I think I'll deal with that another time

molten solar
#

The same goes for the other thing. Clone.

short aurora
#

What's does proper mean in this context? For the other thing, I would clone, easier than recreating the item, but we did not have much success with making clone play nice with midi

#

Not shown by the way, the example from midi has a damage formula calculation, this is just the proof of concept

#

Not throwing tposney under the bus, the above is just a snip for changing damage

molten solar
#

You set theItem to have a new formula, but never change it back.

#

Making a clone that has the new formula gets around that.

short aurora
#

True, but rolling that item proved to be the problem. There's presumably a trick to it, I could not find it.

molten solar
#

That I wouldn't know. I do this in Roll Groups, just rolling a clone and that always works.

violet meadow
#

Does this need the render() part?
I thought the setDamageRoll took care of all the rest

violet meadow
violet meadow
raven ore
#

So I've gotten pretty close with it, using a clone

#

The only issue I run into now is I need a way to disable the first dialog prompt

violet meadow
#

Is that the consumption dialog?

raven ore
#

The Usage Configuration prompt that asks if you want to Consume Resource or Place Measured Template

#

yeah

#

but only on the first roll

#

not the clone

violet meadow
#

Will be included in next midi version. For the time being let me find the response from tposney

raven ore
#

...shit lol

violet meadow
raven ore
#

I don't think I know enough to understand how to use those pieces he mentions

#

Is that something I could do now?

#

Or need a later version?

violet meadow
#

Actually I was trying to find a way to do witch bolt easily.

violet meadow
#

So what is your macro?

#

Are you running it as an onUse preItemRoll?

raven ore
#

Yup, exactly

violet meadow
#

In the preItemRoll phase you can use a Hook.once function to pass the consumeUsage:false on the next item roll

#

I am on my phone now and it's not easy to write it properly

raven ore
#

Ok. Yeah, I'm not sure how to use those. Will have to find an example or something.

violet meadow
#

Ok let me see if I can write it

short aurora
violet meadow
celest bluff
#

you can just return it

#
if (lastArg.macroPass === "preItemRoll")  {        
    if(itemD.attunement < 2){
        ui.notifications.error(`This item requires attunement.`);
       return false;
    } else if ((actorData.spells?.spell1?.max || actorData.spells?.pact?.max) === 0) {
    ui.notifications.error(`No spell slots found on ${actorD.name}`);
    return false;
    }
}
violet meadow
#

I think they just need to continue with the workflow, but not trigger the resource consumption dialog

celest bluff
#

can abort it too

violet meadow
#

Yeah still they don't need to abort from what I've surmised, just on the one roll of the item to not trigger the Configure dialog

violet meadow
raven ore
#

That actually just happened to me a little while ago. I panicked and shut my browser

short aurora
#

I managed to sneak my way into avoiding the infinite loops, but would still have the original excessive workflow and I didn't really find a way around it.

#

Dialectikal's issue gave me the idea to run "empowerable" features that would do different things, so my idea is to clone the item in the workflow if player opts for it and add the additional stuff without changing the original, but that seems not in scope

violet meadow
#

Yeah, from within an initiated workflow, you cannot ๐Ÿค” should not be able to stop it and start a new one for the same item.

celest bluff
#

infinite loops are fun TOBYAYSPEED

violet meadow
#

You might be able to do something like that if you created a totally different uuid of the item ๐Ÿค”

#

Cause the workflow is attached to that now that I think about it

raven ore
#

Didn't seem to change anything

violet meadow
#

Hmm so what is the premise of the macro? You got that in an ItemMacro | preItemRoll correct?

short aurora
raven ore
violet meadow
#

So if you have initiated the args[0].itemUuid workflow and in the preItemHook abort it, clone the item and call again MidiQOL.completeItemRoll(cloneItem) that one will still be the same item.

As such it will follow the same pattern in the macro and thus infinite loop ๐Ÿค”

If that makes sense ๐Ÿ˜…

raven ore
#

I just need that first box not to pop

celest bluff
#

You can just toss it on all

raven ore
#

I just had that segment added to the top of the macro. It never gets hit.

raven ore
violet meadow
short aurora
raven ore
violet meadow
#

@raven ore oh are you on v9?

raven ore
violet meadow
#

oops

#

v10 only with the new item.use()

#

Sorry for that!

raven ore
#

Oh, you mean the preUseItem thing?

violet meadow
#

Different solution. Can you make one of the rolls to not consume resources?

#

yes

raven ore
#

Ah, bummer

raven ore
#

The consuming of resources isn't the problem

#

I need to eliminate that first prompt

violet meadow
#

Yes that prompts for template placement and consumption

celest bluff
#

I'd say remove the template and have warpgate create the crosshairs for the template.. think that should be possible

violet meadow
#

So in the preItemRoll, you could eliminate the template and the resource consumption and then it should not prompt ๐Ÿค”

celest bluff
#

can do that too

violet meadow
#

And then put them back in for the second call

raven ore
#

Ok. Let me see if I can do that

violet meadow
#

why do you do these things...

#

at this time

molten solar
#

โค๏ธ

#

You can save the macros in the item, and then the macros transfer to the templates. ๐Ÿ™‚

#

You can even edit them afterwards.

violet meadow
#

That's the stuff!

molten solar
#

You have Door Macro to thank for this.

#

I basically just copied it and changed all instances of door with template

#

(used Door Macro in tonight's session btw, never had players so excited about a dumb thing.)

violet meadow
#

Everyday I will be going through that door from now on

#

I created some trap workflows... nasty stuff

short aurora
molten solar
#

pre release, use with caution or whatever, toodle-oo!

violet meadow
raven ore
#

Oh! It works! but... it throws an error

#

All I did was include this:

foundry.utils.setProperty('consumeUsage',false);
foundry.utils.setProperty('needsConfiguration',false);

from what you had given me before

violet meadow
#

So setProperty(this,'advantage',true) will give advantage to the current workflow

raven ore
#

I was actually trying to test something else

celest bluff
#

guess pearl of power isn't possible for pact magic, since it's supposed to give a 3rd level pact slot

short aurora
#

Gotta do a lot of finagling for that one, at least

violet meadow
raven ore
#

@violet meadow, any way to utilize those functions in this context that isn't breaky?

violet meadow
#

You are misusing the setProperty

raven ore
#

But... it works lol

violet meadow
#

You need to setProperty on an object

short aurora
coarse mesa
violet meadow
molten solar
coarse mesa
#

I saw some v10 ATL mess Kaelad was fixing this morning, gave me the willies again

violet meadow
#

Do that with Effect Macro

#

just 2 lines

#

(almost)

raven ore
#

sorry, the item, I mean

violet meadow
#

I mean you cannot use that as is in v9 afaik

#

It happened to ~~work ~~seem to work, because I think you broke the workflow with your macro, as it errored out

raven ore
#

Ok. I don't see where I can disable the template and consume resource options otherwise

#

Been looking through the item properties

violet meadow
naive zenith
#

Macro Macro?

violet meadow
#

Only v10 for Moto Moto to take the ๐Ÿช 

violet meadow
raven ore
#

Ok. So like just set value to 0 or something?

violet meadow
#

You will need to save these details in flags, before changing them actually.
Then in the After Active Effects phase change the item back to the original

(can be done with a warpgate mutation too, much easier)

violet meadow
#

You told me that you didn't want the dialog to appear the 1st time, but the next time it should appear correct?

#

I haven't followed 100% the topic and its pretty late here, so I hope I am not confusing you unnecessarily!

raven ore
#

Nope. That's right. I see where you're going. It's a workaround, but it should work, I think.

#

As long as it handles it before trying to pop that prompt

violet meadow
#

Just test it quickly in a test item. Make an item with a target template 10 ft radius.

Use an Item onUse macro preItemRoll that does something like this.item.data.data.target = {}

#

Does it change before the dialog pops up?

raven ore
#

Yeah, that works

violet meadow
#

Same principle for item uses etc.

raven ore
#

Yeah. Already tested

violet meadow
#

So more or less that should get you going

raven ore
#

I just need to copy the values, so I can add em back

violet meadow
#

actually does it change back if the workflow finishes?

raven ore
#

I mean so I can make the clone

violet meadow
#

yeah I was just wondering about what happened in your test item

#

did the target revert to the initial one?

raven ore
#

Oh, yup it wiped it out

#

Guess I'll have to add it back to the original as well

violet meadow
#

I am too tired to think now, but it should be locally changed. Does a reload change it back?

raven ore
#

After refreshing, it's still blank

violet meadow
#

OK!

#

You need to set some Flags on the item to preserve the original ones before changing them, or just mutate the item with Warpgate

#

and revert it After Active Effects

raven ore
#

Eh...

#

lol

#

I am not savvy with Warpgate

#

Thanks a ton for helping out this far, btw

scarlet gale
raven ore
#

Same with @short aurora and anybody else who chimed in

violet meadow
#

You can find warpgate mutation scripts for items in the discord here, but also as examples in the Warpgate repo wiki and readme

Totally worth the time to read through it!

short aurora
violet meadow
#

Is there a hook for ui notifications that you could hook once to supress the next one ๐Ÿคท

short aurora
#

Yeah I was just wondering if I could turn it back 'on' in the same macro, but guess I could hook on a midi stage once to do so anyway

violet meadow
#

The thing is that if you return false you are off the preItemRoll phase, so just do it in a later one

dull condor
#

guys why does it show slashing so much like this

violet meadow
#

What version is this? And how is the item's damage set up?

dull condor
#

v10 build 288

#

midi 10.0.15

violet meadow
#

I can quickly check with your settings before going to bed, if you export them and DM to me

dull condor
#

err how do i do that

violet meadow
#

MidiQOL settings => Workflow Settings => Misc tab click export

#

OK I can replicate with your settings.

dull condor
#

speaking of my workflow settings a lot of stuff doesnt work :/

#

like i cant proc the midi reactions menu

#

it worked for like once first i tried, now it doesnt work (not sure if module conflict)

violet meadow
#

If you choose Merge Cards the damageType repeat stops

dull condor
#

also is there a syntax i can put in "other formula" so that it can show a dmg type?

violet meadow
#

1d4[slashing]

dull condor
#

wheres merge cards?

violet meadow
violet meadow
#

3rd checkbox below

dull condor
#

o i found it... problem... im running retroactive advantage and merge cards destroys that

#

if midi could have roll20 style "2 rolls by default (or 3 with elven accuracy)" that would be fantastic ๐Ÿ‘€

#

for atk rolls/saves etc (anything that can have adv/disadv)

violet meadow
#

elven accuracy is an option in special traits of the character sheet

dull condor
#

ye but the player would need to roll with adv to proc it yea?

violet meadow
#

yes, or use midi flags to auto roll with advantage etc

dull condor
#

the roll20 way is to always roll with all 2 (or 3) rolls, so that all rolls are 1 click

violet meadow
#

but if you are using Advantage Reminder, probably that will not be the case as AR doesn't play well with Fast Forward rolls

dull condor
violet meadow
#

I use it all the time. Needs setting up but you can automate conditions pretty robustly (with DFreds CE that has predefined 5e conditions that work with MidiQOL automation)

#

That means spending some time to get the hang of it

dull condor
#

that means ditching CUB right

#

i had trouble just getting conc tracking right ๐Ÿ™ƒ

#

with midi + cub

#

or even midi alone...

violet meadow
#

Crazy double 20s with disadvantage between ๐Ÿ˜„

violet meadow
dull condor
#

how does this automation thing handle things like underwater (do i need to define on the map whats underwater) or retroactive things like warding flare

violet meadow
#

CUB and DFreds can play together

dull condor
#

or straight up declared advantage things like tides of chaos or inspiration

violet meadow
#

If you are already using Advantage Reminder and you are OK with that workflow going full automation with Midi means that you will need to learn to make things differently and you will have to decide if the time that you will need to spend is worth it or not!

#

Anyways, off to bed! If you need anything ask and there will be users around that can help ๐Ÿ˜‰

dull condor
#

im not using advantage reminder rn, using retroactive advantage

#

thx bro

#

gn ^^

violet meadow
#

ah my bad!

cerulean ocean
#

is there a way to reference how many weapons someone has equipped?

celest bluff
#

you can also mix in i.hasDamage

cerulean ocean
#

Like to add as a damage calculation to a weapon

#

so the more of this item the player has and can equip the more damage it does

gilded yacht
# violet meadow <@378398557050503168> 10.0.15 Without Merge Cards the damage type is repeated fo...

@dull condor Yes and no. I tag all of the terms with the damage type when creating the damage list so that dice so nice damage dice are coloured correctly, but it was unintended that the non-merged card display. I'll see if I can juggle it so that the display is as before and the dice are still coloured.
Should be 'fixed' in 10.0.16, the side effect of that is that dice so nice damage dice won't be coloured according to the damage type for non-merge card rolls.

molten solar
kind cape
molten solar
#

See, I thought of that

#

But that would be a combat hook, so you might as well use Effect Macro or something.

#

Though I'm gonna make an api function to easily get all templates that contain the token.

kind cape
#

But there is a bunch of logic that would need to be implemented in each of the EM macros

#

Plus it would complement how EM does it really logically, e.g. EM can do it if you have an effect, TM can do it if you are standing in an effect ๐Ÿฅบ

#

Also one more question: is the macro triggered locally or globally, and if locally as I assume, which client is it run on, the template owner or the token owner?

molten solar
#

The one creating, deleting, hiding, or revealing the template, unless you set the script to be run as GM (using the first GM found, does not require Advanced Macros)

#

and the one moving the token (unless you set the script to be run as GM (using the first GM found, does not require Advanced Macros)).

#

In other words, same as Door Macro. Praise Door Macro.

kind cape
#

Alright so it depends on the context, makes sense

molten solar
#

Yeah this way it should let you do whatever you want. And of course no args. ๐Ÿ˜

violet meadow
#

Blasphemy shame

scarlet gale
#

Entering and leaving is easy enough to use to add an effect to do combat turn macros

#

I'm interested in what variables are available to work with

#

Like if you stay in the template during a move does it have the start and ending coords

#

Wall of fire is a good example of what I'd try to setup

molten solar
#

What would you need for that?

scarlet gale
#

Another big one is spike growth

#

Calculate the delta move in a template to apply damage

#

Cloud kill another good one

#

But that should be already doable with what you already have

#

Spike growth that doesn't rely on a buggy AA template is all I want lol

molten solar
#

scene (document), template (placeable), userId (string), gmId (string), and sometimes token (placeable)

#

token is null for triggers on template creation for example. No token involved.

scarlet gale
#

Makes sense

#

How does it handle a template getting moved

molten solar
#

It doesn't. Not a bad idea tho.

scarlet gale
#

Can come up with cloudkill

#

I'd want to make sure a token that doesn't move, but otherwise leaves the template is captured

molten solar
#

Would you want the top-left coords of a token or the center?

#

If I pass the previous and new coordinates

scarlet gale
#

Whatever it uses already in the token info is probably easiest

molten solar
#

That's the top left.

scarlet gale
#

That would make it easier to do comparisons with other tokens

molten solar
#

What would you want from a trigger when a template is moved?

#

Just its new coordinates?

scarlet gale
#

Can't you grab that from the template?

#

Just a trigger honestly. So we could do cleanup on actors no longer in the template.

molten solar
#

mmm. A helper function to get all tokens within a template could be fun.

#

We all agree that sharing at least 1 grid space is enough to be considered "inside", surely

scarlet gale
#

I saw you mentioned that in your GitHub issues

molten solar
#

Yeah only got the opposite currently - get all templates that contain a token

scarlet gale
#

But yes

celest bluff
#

Cloudkill is pretty easy with Active Auras

scarlet gale
#

I'm trying to not use that

#

AA hates high ping players

celest bluff
#

you can't use overtime time for this

#

have it deal damage on on and each start

scarlet gale
celest bluff
#

or i suppose you could have a overtime for each

molten solar
#

(did you read the rest of the conversation or....)

celest bluff
#

have it check for itself so doesn't apply twice

scarlet gale
#

I was just giving examples of spells that could be reworked with Zhells new shiny template macros

molten solar
#

Anyway. A trigger when a template is moved, which gives you template, scene, and maaaybe an array of token ids?

scarlet gale
#

Plus AA not officially on v10

#

Yea

#

Or a helper

#

That we just pass the template ID or something

molten solar
#

Yeah not much need to pass them to the trigger if I just make an api function.

scarlet gale
#

If that isn't already core

molten solar
#

Getting all tokens contained within a template?

#

No quick core method, but it's close.

scarlet gale
#

I never messed with templates beyond initial targeting

#

A quick way to find all tokens in the already placed template is ideal

hot flower
#

can someone help me out with something midi here. I'm trying to educate myself on damageOnlyWorkflow. I've written a super simple macro based on @gilded yacht's example of divine smite. it's this: ```js
console.log("args[0]:", args[0])
let target = await fromUuid(args[0].hitTargetUuids[0] ?? "");
console.log("target:", target);
let damageRoll = new Roll(2d6).roll();
console.log("damageRoll:", damageRoll);
console.log("actor:", actor);
console.log("token:", token);
console.log("itemCardId:", args[0].itemCardId);

new MidiQOL.DamageOnlyWorkflow(actor, token, damageRoll.total, "bludgeoning", target ? [target] : [], damageRoll, { flavor: "Falling Damage!", itemCardId: args[0].itemCardId })```

#

i've got it on a very basic item: it does 1d4 damage and rolls the itemMacro.

#

but I keep getting this error: Uncaught (in promise) TypeError: Cannot read properties of undefined (reading 'length') [Detected 1 package: midi-qol] at createDamageList (utils.js:119:29) at new DamageOnlyWorkflow (workflow.js:3041:23) at eval (eval at callMacro (workflow.js:1591:15), <anonymous>:13:1)

#

everything is returning true actor, target, etc., in the console.log.

#

and the DamageOnlyWorkflow is taken straight from his example on his readme.

#

so... I'm not sure what I'm doing wrong.

scarlet gale
#

Using that macro as is?

hot flower
#

the macro I have posted above is the one I'm using.

molten solar
#
await new Roll("2d6").roll();
#

Evaluating rolls is async

#

It probably chokes because damageRoll.total is undefined

scarlet gale
#

Looks like the example is dated

hot flower
#

yes, that fixed it. Tim's example on the page is out of date.

#

thank you.

#

thank you, @molten solar

celest bluff
#

usually the system will mention rolls needs async:true or asyc:false in a console.warn

scarlet gale
#

A trigger for a token starting its turn and ending its turn in the template sounds potentially useful, but it's also easy enough to just apply an effect macro for the same thing.

molten solar
#

Yeah, I can't think of a situation in which you wouldn't have had the opportunity to apply an effect to them already

#

Either when the template was created, or when it was moved

scarlet gale
#

Entering and leaving the template may also need the move coords too

molten solar
#

Sure, already added

#

The token's coords, that is

scarlet gale
#

Yep

#

Lmk when that version is out. I'd love to have a crack at spike growth and cloudkill with it.

coarse mesa
#

Now we just need Token Macro

scarlet gale
#

Isn't that just effect macros?

#

Well kinda

molten solar
narrow saddle
scarlet gale
#

Anyone know an easy way to export effects as json?

coarse mesa
#

If there was an easy way to have a template move with a token then we wouldnโ€™t need auras. AA was painful in our session tonight again ๐Ÿ˜ž

molten solar
molten solar
scarlet gale
#

Attach the template with token attacher

coarse mesa
molten solar
#

I'm sure you can write a macro for it.

narrow saddle
scarlet gale
#

It's easy enough to do manually

#

But that's not what we're in midi-qol for.

coarse mesa
#

So template macro can replace AA then?

scarlet gale
#

Technically yes

#

Keep in mind using template macros to do it is less user friendly

#

Build a bonus should be used when you can

molten solar
#

This is my channel now. /s

coarse mesa
#

If there was some way to use crosshairs or something to โ€œstickโ€ a template to a token or automatically have it stuck to the caster then we would be golden

scarlet gale
#

Essentially template macros gives us the foundation to apply effects to those in it

molten solar
scarlet gale
#

I think token attacher has an api

#

It didn't seem well documented last I looked

#

But yes on template creation to call whatever function that module has to attach it would do it

coarse mesa
#

That seems like the basic approach Atro was hinting at. Using templates for auras

scarlet gale
violet meadow
#

Oh damn I was about to post for the top left Vs center question but I saw 100 messages after

#

What happens with larger tokens?

scarlet gale
#

Does foundry natively deal with that?

violet meadow
#

Nope it's always top left I think. You need to get the size and test the center ๐Ÿค”

coarse mesa
molten solar
#

The functions I stuffed in the API (in babonus as well) calculate distance between each center of every grid cell you occupy

#

So if you're Large, it calculates 4 centers

scarlet gale
#

3 modules needed to replace 1, what an upgrade

molten solar
#

It's the high automation way

scarlet gale
#

AA also interacted with multi level modules, but I won't miss that

molten solar
#

As in the Levels module?

violet meadow
#

Damn interesting convo but I am on the road. will catch up later

molten solar
#

I'm not touching that with a 10 ft pole

scarlet gale
#

Multi level token apparently

#

I've never used it

kind cape
#

Actually a good question, how do you interact with Levels and its volumetric templates?

scarlet gale
#

Pretty sure that predates levels

kind cape
#

MLT was always a bit of jank, though the newer versions are less janky

kind cape
molten solar
#

A much easier addition.

scarlet gale
#

Nothing stopping us from doing that ourselves in the macro

kind cape
molten solar
#

yall bein greedy

scarlet gale
#

Seems outside the scope

kind cape
#

Always have been ๐Ÿ˜‰

coarse mesa
#

Sooo Spirit Guardians with Template Macro, Effect Macro and Token Attacher?

molten solar
#

Don't be silly

#

You need Item Macro and Note Macro too

#

for no reason at all

kind cape
#

๐Ÿ˜‚

molten solar
#

Ooooh

#

Dungeon puzzle: door can't be opened unless under the effect of Spirit Guardians. Door Macroโ„ข๏ธ ๐Ÿ˜Ž

#

Apply macro directly to the door.

kind cape
#

Apply forehead directly to door! ๐Ÿ˜„

molten solar
#

Cody wrote in the email when it was approved that it made him want to run away screaming. ๐Ÿ˜ฆ

coarse mesa
#

As Iโ€™m not on v10 and donโ€™t know how this worksโ€ฆ can a template macro and any effect macros it calls all be on an item?

molten solar
#

I put the macro config in both the item and on each template. When a template is created, it tries to find the item that created it (there is a flag in dnd5e for this now), and then it just takes the flag data from the item and copies it

#

So if you put the Template Macro in the item, all templates have them.

#

Effect Macros, however, are in effects, not items.

scarlet gale
#

I'm going to embed the effect in the macro when I make it with what I'm doing

coarse mesa
#

OK Iโ€™m adding CE to my list of modules for Spirit Guardians then

molten solar
#

What does CE do in this case?

coarse mesa
#

Keeps my effects tidy and gives me a nice description when theyโ€™re running

#

CE + EM is working great for me

scarlet gale
#

game.dfreds.effectInterface.addEffect({ effectName: 'Effect Name', uuid }); a lazy way to do it

scarlet gale
#

Just make the spirit guardians effect then add that effect via enter and leave

coarse mesa
#

I just made Aura of Life using CE + EM โ€ฆ and AA ๐Ÿ˜ฆ

molten solar
#

Yall really don't like AA it seems. I thought you guys swore by it.

scarlet gale
#

More like no other options

kind cape
#

We swear by it as making a lot of stuff possible, but it's still janky

coarse mesa
#

In theory itโ€™s amazing, in practice itโ€™s doing way more harm than it should

molten solar
#

How does it work?

#

Applies effects every time a token moves?

scarlet gale
#

Adds a new tab to effects that you configure and it updates effects to tokens around it

#

based on how it's configured

kind cape
#

Not quite, it only applies if the token does not already have it, but other than that basically

#

(to the movement)

scarlet gale
#

In reality, it it likes to have the same effect show up 2-4 more times than it should on nearby tokens

#

Cause reasons

#

ยฏ_(ใƒ„)_/ยฏ

coarse mesa
#

Except sometimes it does apply the AE even if the token already has it

molten solar
#

I assume it runs through the GM?

kind cape
#

Oftentimes those are not actual instances, as in they are not saved to the database, those are phantoms

#

But they still are treated as real in the local client of course

scarlet gale
#

It picks a GM to handle it

#

I'm of the opinion for whatever reason it also selects a spare player or two

#

and that's where the phantom issues pop up

molten solar
#

Ah, and then the player moving too quickly can trigger it multiple times due to latency.

scarlet gale
#

or that

coarse mesa
#

It seems to get really unhinged on my familiar especially

kind cape
#

Yeah multiple phantoms are usually due to latency

molten solar
#

tbh that might be impossible to avoid

kind cape
#

Tbf, I'm not sure applying a full synchronized AE is the way to go tbh, I think that potentially a more local solution would be more stable and less laggy

molten solar
#

What, praytell, is a sync AE

scarlet gale
#

Can clients put active effects on non owned tokens?

coarse mesa
#

My ignorant brain is saying why doesnโ€™t it check if something already exists?

molten solar
kind cape
molten solar
#

"no, no, no, no, yes" -> 4 effects

kind cape
# molten solar What, praytell, is a *sync AE*

Synchronized as in actual AE. Imagine if it instead calculated and applied a fake AE client-side that was never saved to the DB. No need for sockets then, though it might cause other issues ๐Ÿ™ƒ

coarse mesa
#

Is this why BG3 is taking so long? Auras are impossible?

kind cape
molten solar
#

Probably easier since they got one 'client' (the game itself) doing an aura, while we got three parts; player moving, server side, and the GM, all trying to be in sync

#

though I havent touched bg3

coarse mesa
kind cape
#

This did just give me an idea though.. If AA only ran on the GM (and yes, sometimes there are more GMs, ignore that), as in it just exited out early on non-GM clients, it might actually be less jank ๐Ÿค”

scarlet gale
#

I was looking at it's github, I'm pretty sure it already does that

molten solar
#

I am letting you do that in TM, executing all scripts as GM.

scarlet gale
#

@molten solar What's the variable names for location stuff that was added?

molten solar
#

console.log(this)

coarse mesa
#

Ok Iโ€™m off to bed now. With the brainpower in here I look forward to waking up to a solution to auras in FVTT ๐Ÿ‘‹

late briar
#

Heya, I am currently trying to automate my paladins Divine Smite on Foundry v10 using midi-qol.
I am using the Divine Smite from the Midi SRD and everything seems to work fine, except that I can not get the Smite critically hit.
Do I have to press some special keys in order for it to work?

pulsar pawn
#

Hey man, could you drop me a DM on how to set it up correctly or just send me a screenshot?

scarlet gale
pulsar pawn
#

(โ•ฏยฐโ–กยฐ๏ผ‰โ•ฏ๏ธต โ”ปโ”โ”ป

#

thought its a AE with a macro ...

scarlet gale
#

Sorry, guess I didn't describe that well enough in the description. It uses the module Effect Macros, it's run as a end of turn macro inside the effect.

#

You'll also need the fork of Active Auras that works with v10

pulsar pawn
#

I fixed AA myself, assuming that is the same fix tho x)

scarlet gale
kind cape
late briar
#

I tried both and neither worked.

#

Do I need to disable Auto Fast Forward of damage roles for it so players can manually click "Critical Hit" or "Normal Hit" for the damage roll?

kind cape
#

If you hold down T while you roll it it should show the normal item card, then you can do critical from there.

Technically holding down C should force a critical, but not sure that works with fast-forward

late briar
#

I did try using C but that only works with the chat-card buttons.

#

Is it possible to disable fastforward for certain spells? Otherwise I guess I have to remind myself and my players to hold T for divine smite ๐Ÿ™‚

pulsar pawn
kind cape
late briar
#

Well everything is possible with a macro ๐Ÿ˜„
I guess I can also just roll without forwarding damage ever. One more click is not gonna hurt people... hopefully ๐Ÿ˜‚

kind cape
#

I'm looking at the workflow right now to see if its possible, give me a minute ๐Ÿ˜‰

kind cape
#

Which version did you prefer? The macro or non-macro version?

#

All you need to add is

const workflow = MidiQOL.Workflow.getWorkflow(args[0].uuid);
workflow.rollOptions.fastForwardDamage = false;

But it needs to happen at the right step.

So you can create a new macro in the world, call it something like Force damage dialog, then you put the code above into it.

Then in any item where you want to force the dialog you add in the following in the onUse macro section:

#

Its very important that it happens at that step through, as otherwise other things may reset the flag

late briar
#

ah

#

So it needs to happen as late as possible but still early enough?

scarlet gale
#

@molten solar Do you know if Foundry has a native way to count distance between grid spaces that uses the game settings for diagonals?

late briar
#

Is the same workflow passed to all macros in the onUse section?

kind cape
#

Yes

kind cape
#

And also yes, it needs to happen before the damage roll but as late as possible

molten solar
#
canvas.grid.measureDistance(original, other, {gridSpaces: true});
kind cape
#

Also you can disregard the macro vs non-macro question, at first I thought I would have to modify the macro, but then I realized that you could just put it in world scope and add multiple ๐Ÿ˜›

scarlet gale
#

what would original and other be in that context?

molten solar
#

I think that uses whatever option you have set

#

Two placeables

#

uses their top-left corner, however

scarlet gale
#

So not arbitrary coords?

#

hmm

molten solar
#

No, for that you want to construct Rays and use canvas.grid.measureDistances

#

which takes an array of rays. ๐Ÿ˜„

#

an a-Ray if you will

#

or actually it takes an array of objects that has ray: Ray ๐Ÿค”

scarlet gale
#

Testing out my template macro and realized it's rounding in a not ideal way

molten solar
#

not using the api?

scarlet gale
#

oh, I didn't even look at that

pulsar pawn
#

I get a ```js
await is only valid in async functions and the top level bodies of modules

message
scarlet gale
#

easy fix

#

I was including my helper functions in that, so that was a copy and paste issue

#

I think that should fix it

scarlet gale
pulsar pawn
#

Unexpected identifier 'showMenu'

scarlet gale
molten solar
#

You want all tokens within the template, or all templates that have the token, right?

scarlet gale
#

not for this

pulsar pawn
#

(offtopic: Is there a proper IDE like lines module for macro fields xX)

scarlet gale
#

I put the async on the wrong side lol

scarlet gale
pulsar pawn
#
Uncaught (in promise) TypeError: Cannot read properties of undefined (reading 'classes')
[Detected 1 package: effectmacro]
    at eval (eval at executeScripts (main.mjs:21:18), <anonymous>:5:33)
    at Object.eval (eval at executeScripts (main.mjs:21:18), <anonymous>:63:9)
    at EM.executeScripts (main.mjs:22:16)
scarlet gale
#

On v10 right?

pulsar pawn
#

correct

scarlet gale
#

Person has levels in cleric?

molten solar
pulsar pawn
#

The caster yes

scarlet gale
pulsar pawn
#

oh wait, its a CE, that is applied to the caster by hand. is that a problem?

scarlet gale
#

It's grabbing it via the origin, I expected that to be a feature

pulsar pawn
#

Doesnt CE applying via name matching keep the origin? ๐Ÿ˜ฆ

scarlet gale
#

Are you setting this up so you press the convenient effect?

pulsar pawn
#

No, i press the feature in the PCs sheet

scarlet gale
#

that should work then

pulsar pawn
#

(โ•ฏยฐโ–กยฐ๏ผ‰โ•ฏ๏ธต โ”ปโ”โ”ป

scarlet gale
#

let me test locally

#

before pasting it again

#

And the feature is set to target self

#

Using DAE to make the effect?

pulsar pawn
scarlet gale
#

Yea, don't do it that way

scarlet gale
#

on the feature, click the button that says DAE

#

and configure it there

pulsar pawn
#

okay, so CE doesn't keep origin around?

scarlet gale
#

or changes it in a way I didn't plan on when I made it

#

You'll also want to delete the CE or at least check don't apply CE for that feature

molten solar
#

try gridSpaces: true and just use the parts you need

scarlet gale
#

that still wants tokens

#

I need to edit it to just use my own provided coords

molten solar
#

Yeah just change it up a bit to use coordinates

pulsar pawn
#

Works now ๐Ÿ‘Œ

scarlet gale
#

Coolio

pulsar pawn
#

Is there a nice way to label the roll as "temp hp from twilight sanc" like?

scarlet gale
#

You should be able to edit line 55

pulsar pawn
#

that is midiqol code?

scarlet gale
#

It's just using damageRoll.toMessage to make the message

#

I didn't want the full cardbox for Sanctuary every time it applied

#

because it can be quite spammy with a lot of allies

pulsar pawn
#

yeah, just right now it provides no context on what is rolled ^^

scarlet gale
#

Gonna sound dumb, but I don't actually know the format for making chat messages

#

that part was just a copy and paste

molten solar
#

add flavor: "your flavor text here"

pulsar pawn
#

already on it ๐Ÿ˜›

#

Works

scarlet gale
#

@molten solar Any way to get the template when working inside "When Entered" and "When Left" ?

#

I need to look at the template to get it's radius so I can subtract that from the distance calculations when they're moving in and out of spike growth.

molten solar
#

Is there not template in the macro when you move the template?

scarlet gale
#

oh sorry, meant when entered

molten solar
#

But template is the template you leave or enter. ๐Ÿค”

#

console.log(template)

scarlet gale
#

OH

#

I thought it was only the stuff in this I had to work with

molten solar
#

Nah, this, template, scene, and token

#

token sometimes null, and this sometimes has different stuff

#

but template and scene should always be there

#

No documentation for pre-releases. ๐Ÿ‘ ๐Ÿ˜‚

scarlet gale
#

Cost of living on the edge

late briar
#

@kind cape Hey, regarding the Divine Smite discussion from earlier.
So I have created a macro called "Force damage dialog" with the code you provided and added it as a onUse macro with the right trigger "Before Damage Roll".
Still, it seems the damage is rolled automatically and instantly.

#

Do I have to change something regarding the ItemMacro in the Divine Smite?

#

or do I have to name the macro without spaces?

kind cape
#

Should not be nessecary, can you check in the console (F12) if there is any warnings/errors that appear when you use the item?

late briar
#

nope. no errors, no warnings.

kind cape
#

Could you take a screenshot of your details tab?

scarlet gale
#
if (canvas.scene.grid.units != 'ft') return;
let x1 = this.coords.previous.x;
let x2 = this.coords.current.x;
let y1 = this.coords.previous.y;
let y2 = this.coords.current.y;
let ray = new Ray({x: x1, y: y1}, {x: x2, y: y2});
let [distanceFeet] = canvas.grid.measureDistances([{ray}], {gridSpaces:true});
let distance = distanceFeet / canvas.scene.grid.distance;
let damageDice = (4 * distance) + 'd4';
let diceRoll = await new Roll(damageDice).roll({async: true});
let diceTotal = diceRoll.total;
diceRoll.toMessage({
    rollMode: 'roll',
    speaker: {alias: name},
    flavor: 'Spike Growth Damage'
});
let token = canvas.tokens.get(this.tokenId);
await MidiQOL.applyTokenDamage(
    [
        {
            damage: diceTotal,
            type: 'piercing'
        }
    ],
    diceTotal,
    new Set([token]),
    null,
    null
);```
This is what I have so far, works well.  I just need to figure out what kind of dumb math I'll need to handle cases of the token starting outside of the template.
#

As of right now, throwing this inside of "When Staying" works great.

late briar
#

@kind cape sure, here

kind cape
#

And a screenshot of your macro?

molten solar
scarlet gale
#

yea

molten solar
#

you can also just do ```js
const {previous, current} = this.coords;
const ray = new Ray(previous, current);

late briar
kind cape
#

Hmm, could you try it on the non-macro version?

scarlet gale
#

I'm sure there is some Ray thing I can do

late briar
#

the non-macro version works

kind cape
#

Hmm, the macro must be doing something then

late briar
#

it does a new damage only workflow, but it still reads the "isCritical" from the args[0]

#

but not really something that should interfere with disabling fastforwarding before it happens...

kind cape
#

Actually that might be interfering, since it might re-set the options based on your settings ๐Ÿค”

#

Is the non-macro version adequate for you?

late briar
#

sure

#

it seems to work RAW

molten solar
kind cape
#

Moving one grid at a time is probably also a good idea so that you don't get surprised with the amount of damage you suddenly take ๐Ÿ˜›

scarlet gale
#

I thought about that lol

molten solar
#

But if you manage to invent a 'distance travelled through template' function, I'd like to adf it to the api.

late briar
#

@kind cape how did you find what fields and properties the workflow has?

scarlet gale
#

Pretty sure my geometry teacher would be upset with me right now

#

I'm blanking on what to do

kind cape
#

Then you can explore the element in the console

late briar
#

ahhh

kind cape
#

There is also the source code for the workflow in the MIDI repo, which can be useful when trying to figure out timings ๐Ÿ˜›

late briar
#

I think it doesn't show the dialog for damage since the spell itself has no damage

#

at least the macro version

scarlet gale
#

@molten solar What happens when a token passes through a template, but winds up not landing in it?

#

Presumably it doesn't get counted for anything right?

molten solar
#

correct

#

uses starting and ending coords only

scarlet gale
#

makes sense

#

and hard to deal with

late briar
#

though giving the item any damage doesn't fix it either. The args[0].isCritical parameter is still not true

#

actually, its not even false, its undefined.

scarlet gale
#

Updated macro:

if (canvas.scene.grid.units != 'ft') return;
let {previous, current} = this.coords;
let ray = new Ray(previous, current);
let [distanceFeet] = canvas.grid.measureDistances([{ray}], {gridSpaces:true});
let distance = distanceFeet / canvas.scene.grid.distance;
let damageDice = (4 * distance) + 'd4';
let diceRoll = await new Roll(damageDice).roll({async: true});
let diceTotal = diceRoll.total;
diceRoll.toMessage({
    rollMode: 'roll',
    speaker: {alias: name},
    flavor: 'Spike Growth Damage'
});
let token = canvas.tokens.get(this.tokenId);
await MidiQOL.applyTokenDamage(
    [
        {
            damage: diceTotal,
            type: 'piercing'
        }
    ],
    diceTotal,
    new Set([token]),
    null,
    null
);

For now, it's a good proof of concept for spike growth.

steel apex
#

How would I implement this? My Druid player loves Spike Growth.

scarlet gale
#

Until Zhell's new module has a proper release, I'd stick with the current method using AA.

steel apex
#

(Just need to remind myself what that isโ€ฆ)

scarlet gale
#

I think midi has a sample item for spike growth

#

using active auras

#

I'm attempting to set up the spell in a way that doesn't use active auras

acoustic jasper
#

I'm trying to make the new (OneD&D) Grapple for some playtesting. I'm using midi-qol.Overtime with "turn=end, saveAbility=str, saveDC=@attributes.spelldc, label=Grappled" - is there a way to change saveDC so it will be equal to [8 + your Strength
modifier + your Proficiency Bonus]?

vast bane
#

I really really like active auras and hope its not being replaced

scarlet gale
#

It's not, but a lot of us here find it mega buggy

late briar
#

@kind cape could it be that the damage dialog does not actually change anything about the workflow being critical / not critical?

steel apex
kind cape
vast bane
#

I do not think that is an issue, it clearly states its best used in combat only and in combat nobody moves around all at once, a singular person moves at a time, no aura issues occur then, it only ever becomes an issue when many people/tokens are moving all at once and rarely are spells being cast tin these moments, its almost always just aura of protection that gets weird, and even then, the solution is to move in and out of the pally aura before you make a save if you have duplicate buffs on you.

late briar
kind cape
late briar
#

is still undefined

molten solar
kind cape
acoustic jasper
molten solar
#

@prof

acoustic jasper
#

yeah, now it's working

late briar
#

I could probably just give it a damage of 1d1, then if it crits its a 2 and otherwise a 1

#

hacky but it should work

#

kinda confusing though. I wonder how the tim does it for their games

late briar
#

Ah... something else I just noticed is that the no macro version does not roll critical damage if its a fiend or undead

uneven bridge
#

Hey guys, I was having an issue with the arcane ward macros that are not temp HP based in the Midi sample items not applying to damage the caster takes. Currently on version 9.280, Is there additional setup other than importing the feature and using it?

vast bane
#

make sure your activation condition settings are setup

celest bluff
late briar
vast bane
#

midi srd doesn't setup your midi settings for you

late briar
#

my spell and mwak / rwak roll other damage is set to: activation condition and it rolls the normal damage for a fiend / undead but not the critical damage.

#

So basically normally it does 2d8 + 1d8 against undead. Then for a crit it should do 4d8 + 2d8, no?

#

since we double all damage dice on a critical hit

vast bane
late briar
#

crit

celest bluff
#

that standard dice roll won't apply crit

late briar
#

oh wow

celest bluff
#

you'll need to use either return damage roll or dnd5e roller

vast bane
#

I think that option of smite is meant for non fast forward

#

I'm using the smite with the item macro and it detects fiend/undead and crits just fine

celest bluff
#

I switched over to dnd5e roller for all macros

molten solar
#

Ignore the +1d8 in the macro entirely, and use babonus. ๐Ÿ˜Ž

#

vanishes

vast bane
#

we want to drag and drop premades so we can save on time, bab also is v10, we're on v9

vast bane
late briar
#

because I originally wanted to also use auto forward

vast bane
#

it won't crit cause theres no attack roll then

celest bluff
#

my version auto fast forwards and uses the same target as the previous attack

late briar
#

okay I disabled fast forward and for some reason it still auto rolls damage without any dialog... I think I just broke something ๐Ÿ˜‚

vast bane
#

wow I'm testing now and you are right, this v9 smite is broken

#

it is impossible to crit with either of them

late briar
#

okay, good thing that I am not the crazy one now XD

vast bane
#

Looks like I'm using Advantage reminder

late briar
#

I could just write my own macro with a made up dialog

celest bluff
#

this the midi sample version?

late briar
#

yep

vast bane
#

yep, both refuse to crit, either fast forward or normal

late briar
vast bane
#

they don't give you a damage popout, they just happen

late briar
#

yup

celest bluff
#

9.x version with no macro?

late briar
#

well I am on v10

vast bane
#

Ok the no macro version works with crits

#

its the macro version that is borked

#

but you have to have fast forward off, cause its not attached to the weapon attack

late briar
#

I think its borked because the item itself has no attack or damage roll

vast bane
#

Might as well just use advantage reminder honestly at this point

celest bluff
#

Divine Smite 10.0.8 does have if (args[0].isCritical) numDice = numDice * 2;

vast bane
#

well, need the spell expense so probably stickin with the no macro version

late briar
#

the dialog doesn't change it

celest bluff
#

could be numdice isn't a number

#

let numDice = 1 + args[0].spellLevel;
change that to let numDice = 1 + Number(args[0].spellLevel);

late briar
#

and then without fast forward, yes?

molten solar
#

I thought the problem was you already established that args[0].isCritical was always falsy

celest bluff
#

yeah it should always be false unless critical then true

molten solar
#

Yes true is not false

late briar
#

the problem is that there is no popup window ever to set if its critical or not

#

even with no fastforward it simply doesn't popup since the spell has no damage and so the system probably never wants to roll any

celest bluff
#

oh wait... how does this macro know you have a crit in the first place

#

heh

late briar
#

it doesnt

#

which is the confusing part

#

I thought the workflow would tell it, if you get the popup.

#

but I just made it give the popup and pressing crit doesn't work anyways

celest bluff
#

yeah I think he forgot to include a workflow grabber to check your last attack

late briar
#

You made a better version, right?

#

At least thats what you said earlier

celest bluff
#

yeah, mine checks the workflow and everything else.. then applies crit if needed

late briar
#

How do you get the previous workflow?

celest bluff
#

filtering with MidiQOL.Workflow.workflows

#

I match it against weapons you own

late briar
#

ah okay

#

and does MidiQOL.Workflow.workflows only contain recent workflows or all ever created ones?

celest bluff
#

lemme see if my version 10 works right.. I updated it but I forget if I've tested it or not heh

#

it has all current listed workflows by token actors

#

You can only have 1 per scene token.actor

late briar
#

oh

#

so my PC can only have one workflow at once. Wouldn't the new one override the previous one then immediately?

celest bluff
#

no, not until damage roll complete is done

late briar
#

ahh

celest bluff
#

actually you can have 2

#

one hasn't finished yet finalized till it's ended, then it trashes the previous workflow

molten solar
scarlet gale
vast bane
#

ok so new report on v9 smite:

Macro version never crits
No Macro version's additional damage for fiend/undead does not roll additional dice for crit

late briar
#

yup

#

can confirm that

#

time to get vscode and code a previous workflow grabber

vast bane
#

I had no idea this was borked and my poor pally player never caught on either

#

I think I'm just gonna get a macro polo macro to expend a spell slot and use advantage reminder

late briar
#

Good thing I literally try to automate as much as possible before every starting my first campaign / one shot

vast bane
#

that way its all in the same attack

late briar
#

just as situation bonus?

vast bane
#

basically you make a button for [[/r 1d8]]{Fiend/Undead} and then [[/r 2d8]]{Level 1} and so on so a bunch of buttons.

#

and I'm going to add in a button that just expends a spell slot so he can do all of it in the popout

#

cause I aint makin no macros for this lol

late briar
#

ahhh so you just add buttons to the chat card of the item

#

very roll20 ๐Ÿ˜„

#

but if it works, it works

vast bane
#

no

#

Advantage Reminder:

#

the buttons are here

late briar
#

wait thats possible?

vast bane
#

Thats Advantage reminder ๐Ÿ˜‰

late briar
#

I thought It can only highlight stuff and show some text

#

but the text can be buttons?!

vast bane
#

it can also do document links and buttons for damage

late briar
#

and you are showing that for every damage roll the pally does?

#

Do you use Advantage Reminder in combination with midi-qol?

vast bane
#

yes but you can't fast forward if you use midi

#

otherwise you don't see these

late briar
#

yep

#

how did you make it red though

#

isn't it just bold?

vast bane
#

it pops it all into the situational bonus field when you press buttons for damage, but the smite, will actually activate the smite spell independent of the attack, but like we both found out, smite don't work right so I'm removing it and using advantage reminder fully

#

The red is part of advantage reminders settings, he added the ability to use specific colors or player colors

#

I'm red in my game, set to player colors

late briar
#

ahh

vast bane
#

theres probably way more functionality I don't know about in v10 as kaelad has done alot more in v10 for the module and I'm stuck in v9

late briar
#

you have no fast forward at all, correct?

vast bane
#

but what I like about advantage reminder is that its all UI stuff that I can figure out with my 3 brain cells and I don't have to write a bunch of macros

#

yeah my players were trained quickly to never fast forward

late briar
#

All my players are from Roll20 without Premium, so they also are not at all used to fast forwarding stuff

#

so I guess I just disable all fast forwarding and work from there

vast bane
#

still use midi for alot of things, but advantage reminder is great for the really situational stuff

late briar
#

Can you share your midi settings?

vast bane
#

I mean, I can share the whole enchilada, but really its just like 3 settings

late briar
#

well then those 3 settings would be enough xD

vast bane
#

the abilities and saves are outside in the main menu of midi, not in workflow, and then theres the attack ones in DM and Player tabs inside workflow

#

um...I'm on v9 so maybe same places?

late briar
#

yeah

#

do you autoroll damage?

vast bane
vast bane
#

Auto attack and Auto roll are not fast forward fyi

#

fast forward is the skipping of the two popouts, auto rolls are the skipping of having to click the button in chat to activate attacks and damage, very different( and I auto attack/when needed for that)

late briar
#

Okay very good

vast bane
late briar
#

and you just setup divine smite as a passive effect that gives those messages?

vast bane
#

The above is the player tab

#

I haven't fixed it to not use the midi sample item yet but yeah...

late briar
#

its possible to have multiple messages too, right?

vast bane
late briar
#

Okay I definitely will use more of advantage reminder on the future.

vast bane
#

his inline rolls module looks awesome too but its v10 only and alas I cannot use

#

Divine Smite with Advantage Reminder
Till a macro guru can clean it up, I'm just using a blank spell in their level 1 category to expend the slot

late briar
#

I am very tempted to just write a dialog that shows up where you can select spell slot and whether its a crit or not for the divine smite,
but thats actually not in the games rules since it would have to trigger before any mwak damage roll...

vast bane
late briar
#

with your way they smite before knowing the normal damage, so its great

vast bane
#

@fallen token Is there a way to correct the spacing between lines in advantage reminder so the buttons don't overlap?

quick mesa
#

Is there a bug where a reaction check on magic items doesn't see reaction spells within the magic item? It seems to delay like it put out a choice dialog, but nothing pops up when Check Player reactions is set to On + Item Magic?

vast bane
#

what is the item?

raven holly
# vast bane

I just set up something kinda similar for Minute Meteors, a macro to consume one of the meteors and then the additional damage as a separate button
As for spacing, maybe try a <br> before the Level 1 buttons?

late briar
#

Currently still trying to automate / improve Divine Smite, I had the idea to use Roll Groups.
Now it seems that Roll Groups can add its buttons to the midi-qol item card shown in the chat, but it also wants to auto roll the combined damage.
Can I turn off auto rolling damage for specific items?

molten solar
#

Any compatibility between Midi and RG will be nothing more than a happy coincidence.

#

I'm surprised it can even add the buttons.

late briar
#

oh

#

well then ignore what I said xD

vast bane
#

also, I dunno if RG is like MRE, but MRE really screws up items for midi and uninstalling MRE would not fix it, you'd have to sit there replacing all the items for midi to work right again

late briar
#

ewww

vast bane
#

it was cause MRE added damage formulas and they'd stay there after you removed it, and midi does not like extra damage formulas, or needless versatile/other formulas

austere cypress
#

Hey Yall, Im trying to use Midi QoL and Item Macros together, but when I use the Midi QoL Samples, it doesn`t do anything, and the console pops up this
"Uncaught (in promise) TypeError: Cannot read properties of undefined (reading 'itemData')
[Detected 1 package: itemacro]
at eval (eval at Item._executeScript (modules/itemacro/scripts/helper.js:82), <anonymous>:39:30)
at Macro.eval (eval at Item._executeScript (modules/itemacro/scripts/helper.js:82), <anonymous>:41:9)
at Item5e.Item._executeScript (modules/itemacro/scripts/helper.js:88)
at Item5e.Item.executeMacro (modules/itemacro/scripts/helper.js:60)
at HTMLDivElement.<anonymous> (modules/itemacro/scripts/helper.js:170)
at HTMLDivElement.dispatch (jquery.min.js:2)
at HTMLDivElement.y.handle (jquery.min.js:2)"
Can you help me figure it aout? ๐Ÿ˜›

dark canopy
#

disable the item macro sheet hook

vast bane
#

pretty sure nothing should be checked in Item Macros module settings if midi is installed, odd that this keeps coming up, is there something oing on with the v10 builds? Normally they are defaultd to off

austere cypress
#

Yeah, both the Hooks and overrides are checked in item macros, i'll disable them

vast bane
#

Did you install item macro before midi was ever in the world?

austere cypress
#

I think so, yeah

austere cypress
violet meadow
#

The sheet hooks MUST be off in Item Macros settings to work with MidiQOL

austere cypress
violet meadow
#

No worries. Just asking around the discord will most of the time get you there!

#

Also reading the readmes of the modules you are using is a really good way to get yourself acquainted with specific settings etc

austere cypress
#

Yeah, I got a little bit overwhelmd but I'll go slowly and figute stuff out

#

I'm just trying out the sample items first jut to get a feel

violet meadow
#

Sample items might be a bit advanced when just starting out ๐Ÿ˜„

But its a good way to check what can be done and get ideas ๐Ÿ˜‰

ember trench
#

Hey all! I'm trying to edit the Invisibility spell to get MidiQOL/DAE to drop the Invisible CE condition, as opposed to the CE Invisibility Spell. Not quite sure what I'm doing wrong. Any thoughts?

violet meadow
# ember trench

You are applying the DFreds CE first and then if absent you check for effects defined on the Item. MidiQOL checks the DFreds CE database against the name (Invisibility in this case) and applies the one that is found

You should change that to Item Effects first, or apply both and on the Item's detail page close to the bottom, check the Don't apply DFreds convenient effect, so as to not double up on conditions applied

ember trench
#

To be clear, I did have to manually add that DAE to the Invisibilty spell, right? Or was that somehow redundant?

#

Like is there some system-level way to have Foundry reach for CE conditions by default when a spell references the condition? For example:

violet meadow
#

It is redundant I think. DFreds should set the correct core status afaik

ember trench
violet meadow
#

Oof imports, yeah no idea then ๐Ÿคท

kind cape
#

My usual way is to create a CE that matches the name of the feature and then have it use macro.CE to apply the actual effects

violet meadow
#

yeah but why ๐Ÿคท ๐Ÿ˜…

kind cape
#

It makes it clear where an effect comes from and if there are multiple conditions I can remove them by removing the parent effect

coarse mesa
#

Plus the CE descriptions are ChefKiss

violet meadow
#

I just meant why use the macro.CE. It should automatically apply it or I can be confused now ๐Ÿป

kind cape
#

Well the effect is not named the same as the spell, so how would it know? ๐Ÿค”

violet meadow
#

Ah I went off the "matches the name of the feature" you mentioned

vast bane
#

Macro ce uses effects icon instead of status I think as well

#

Helps us remember sources

zealous marten
#

anyone have a zephyr strike build? i'm trying to figure out how to have an optional damage boost to an attack that then ends the spell

zealous marten
#

1 minute concentration, during that time, you do not provoke attacks of opportunity. Once during the duration, you can add 1d8 force damage to a melee attack, adding 30 ft to your movement speed for that round (whether it hits or misses).

violet meadow
zealous marten
#

so rather complex. i can definitely just remember to keep track of it with the concentration effect over the actor's head if it's violently difficult.

violet meadow
#

When you attack it drops concentration or not until the duration ends?

zealous marten
#

nope, reread it, my apologies. stays in effect, just removes the option for the bonus damage/speed up

violet meadow
zealous marten
#

how would one get to optional bonus effects? (i've piecemealed my way into this module so forgive me for the probably very basic answer)

#

literally just answered my question. thank you.

violet meadow
#

I can help later if you need help setting that up.

zealous marten
#

for sure. lemme see if i can manage it, and then if not, i'll definitely bug ya! appreciate you guys. this stuff isn't too hard, just tedious as hell. happy someone actually understands the underlying systems, it'd take me a week and a half of hyperfocus to get even close.

molten solar
#

Could have the bonus always on, and use EM to remove the damage bonus on the first damage roll. ๐Ÿ˜Ž

zealous marten
#

true, but that's assuming it's always the first hit, it's optional sadly

#

whenever they'd like

#

can also just check and make sure they're cool with it and do that...

fallen token
zealous marten
#

got the "first attack" bonus cleared with the player. second question: when they attack, it give a movement speed bonus as well, but for 1 turn. is there a way to turn on a secondary effect (with it's own duration) when the first effect ends?

molten solar
#

Yeah, swap it with a new array of changes in the effect data, rather than deleting the damage bonus

zealous marten
#

ok, so i'm gonna look up what that means, and then that should work! thank you @molten solar

molten solar
#

wait this isn't macro-polo...

zealous marten
#

lol. i do be seeing you there a lot. appreciate you

#

so how does one swap the array? (i figured out what it meant in a basic sense)

molten solar
#

With a script. How do you trigger it?

zealous marten
#

so it's in a spell, and it's just adding an effect to the actor that adds a (loss on melee attack) +1d8 force melee damage bonus.

#

i'm assuming that i'm either looking at the wrong module. which is likely. or i'm not understanding the more intricate parts lol

vast bane
#

its not exactly a spell people automate, its got heavy situational steps

zealous marten
#

yeah. i generally tend to be difficult

vast bane
#

I'd make the spellcast add an advantage reminder message that has a document link to a macro that will activate removal of said previous effect and then activate an expire on hit damage bonus and then another expire at end of turn walking speed bonus if I was being forced to automate it....but you could also just totm it.

zealous marten
#

can def just go "you've got 30 extra feet of movement till the end of turn" out loud. lol

vast bane
#

I think you will find the ranger doesn't use that spell unless its a oneshot

violet meadow
#

Zephyr strike is 100% doable within MidiQOL /DAE with a bit of macroing

zealous marten
#

probably gonna do that if i'm honest. otherwise it gets mucky. for sure with the macroing. lol. and you are correct. generally unless it's a new player who will definitely be doing & trying literally everything as much as possible. lol

#

the curious goblin. the most dangerous kind.

vast bane
#

but how do you automate choice lol

#

thats the part that makes me think advantage reminder lol

violet meadow
#

I will make a sample item for Zephyr Strike tomorrow. And another for Divine Smite for Moto with a twist. Will make it for v10 and then you need to change it back to v9

vast bane
#

cause they have to choose when to use it

violet meadow
vast bane
#

that sounds v10ish

violet meadow
#

Will prompt with every attack and they can click on it when they want

vast bane
#

what is this voodoo and where do I turn it on?

#

or is it more js stuff?

violet meadow
#

Nope midi flags

#

Check the readme

vast bane
#

that literally sounds like advantage reminder lol

violet meadow
#

Same thing like legendary resistance in midi sample items

zealous marten
#

i'm reading the readme, and it's equally as confusing. i so love coding. but dear lord plain text helps.

vast bane
#

I'll stick to UI friendly stuff like adv reminder

violet meadow
violet meadow
zealous marten
#

yeah... but now i'm determined.

violet meadow
#

But it prompts on a separate window which can be tedious at times. But for something with has a finite duration ๐Ÿคท

zealous marten
#

so... flags.midi-qol.optional.Name.damage.mwak - add - 1d8. does it turn itself off after or do i need to add something somewhere?

violet meadow
#

You need to give it a count of once.
And a label for good measure

zealous marten
#

this is all in a macro yes? or in the effects area of the spell?

violet meadow
#

But you will need to package it on a DAE on the Zephyr z strike item and that one to have a target of self in the 3rd available box

#

Zephyr Itemโ€™s title bar, click on DAE and create the effect in there.

zealous marten
#

yeah, got there, Label: Zephyr Strike, transfer to actor on item equip checked right?

#

i feel like i'm 8 and learning how to make a minecraft map. lol

violet meadow
#

Nope

#

This means that it will transferred on the actor when you drag the item in the character sheet

zealous marten
#

oooh. so apply to self when item is rolled. so when they use the spell it applies

violet meadow
#

Either that, or on the target details in the Itemโ€™s details tab choose Self (3rd box)

zealous marten
#

gotcha. that works. alright, so where do the optionals go? i have now found the lines for count & label as well, but in the readme, so i'm lost as to where they are in the DAE interface

violet meadow
zealous marten
#

yeah, i'm in the "Configure Acive Effect: Zephyr Strike" popup atm

violet meadow
#

Ok in the effects tab of it

#

Add one new

#

Key mode value

zealous marten
#

oh i'm dumb. gotcha. those are attribute keys, and since it's Midi, it needs to be override or custom right?

violet meadow
#

Yes. Check readme if they need override it should say

zealous marten
#

gotcha. so set the bonus, the count, and the label (so it's there, usable only once, and named). and it'll expire on it's own due to the "count" key yeah?

violet meadow
#

And create a secondary effect for the movement part

#

Niche but you might use it ๐Ÿคท

zealous marten
#

is there a way to have it trigger the secondary movement effect when the first (dmg bonus) de-activates

violet meadow
#

That can be done but needs a bit of macroing

#

Cannot help with that rn

zealous marten
#

nah you're good, that makes it so much better. thank you!

covert mason
#

How would I word proficiency in wisdom saves in an active effect?

late briar
#

@violet meadow you are going to make a V10 midi-qol automated Divine Smite?

coarse mesa
#

Does @vast bane need a v9 Divine Smite? The one Iโ€™m using works last time I checked. Itโ€™s a feature not a spell, you activate after a hit and it adds a temp effect with damage bonus. Works with undead and crits, even stacks with Hunters Mark etc properly

#

It has a prompt asking for what slot to use

#

I pieced it together from parts I found on this server iirc

violet meadow
#

But you still need to say when you want to use it ๐Ÿ˜„
(even though for a player of mine I can safely make a case to auto roll it when a nat 20 is rolled ๐Ÿ˜… )

coarse mesa
#

For reference, here's the Divine Smite (v9) macro I'm using... just whack it in an itemMacro on your class feature โ€“ activate it after attack but before you roll damage

// if effect, just remove it
const flag = `${actor.id}-${item.name}`;
const effect = actor.effects.find(i => i.getFlag("world", item.name) === flag);
if(effect) return effect.delete();

// find target
const target = game.user.targets.first();
if(!target) return ui.notifications.warn("You must have a token targeted.");

// generate radio buttons
const inputs = Object.entries(actor.getRollData().spells).filter(s => s[1].value > 0).map(i => [nth(Number(i[0].replace("spell",""))), i[1]]);
if(inputs.length < 1) return ui.notifications.warn("You have no spell slots remaining.");
const content = inputs.reduce((acc, e, i) => acc += `
    <tr>
        <th style="width: 50%">
            <label>${e[0]} (${e[1].value}/${e[1].max})</label>
        </th>
        <td style="width: 50%; text-align: center">
            <input type="radio" value="${e[0]}" name="group1" ${i === 0 ? "checked" : ""}>
        <td>
    </tr>
`, `<table style="width: 100%"><tbody>`) + `</tbody></table>`;

// show dialog
const choice = await new Promise(resolve => {
    new Dialog({
        title: item.name,
        content,
        buttons: {
            yes: {
                icon: `<i class="fas fa-check"></i>`,
                label: "Apply",
                callback: (html) => {
                    const value = html[0].querySelector("input[name=group1]:checked").value;
                    resolve(value.at(0));
                }
            },
            no: {
                icon: `<i class="fas fa-times"></i>`,
                label: "Cancel",
                callback: (html) => { resolve(false) }
            }
        },
        default: "no",
        close: (html) => { resolve(false) }
    }).render(true, {height: "100%"});
});
if(!choice) return;

// if target is fiend/undead, bonus die
const bonusDie = ["fiend", "undead"].includes(target.actor.getRollData().details.type?.value) ? 1 : 0;

// calculate total dice and damage
const dice = Math.min(5, 1 + Number(choice)) + bonusDie;
const damage = `+${dice}d8[radiant]`;

// create effect
const effectData = [{
    changes: [{key: "data.bonuses.mwak.damage", mode: CONST.ACTIVE_EFFECT_MODES.ADD, value: damage, priority: 20}],
    icon: item.data.img,
    label: item.name,
    origin: `Actor.${actor.id}.Item.${item.id}`,
    tint: "#000000",
    [`flags.world.${item.name}`]: flag,
    "flags.core.statusId": item.name,
    "flags.dae.specialDuration" : "DamageDealt",
    "flags.convenientDescription": "Your next attack deals additional damage."
}];
await actor.createEmbeddedDocuments("ActiveEffect", effectData);

// remove spell slot
await actor.update({[`data.spells.spell${choice}.value`]: actor.getRollData().spells[`spell${choice}`].value - 1});

function nth(n){return n + (["st","nd","rd"][((n+90)%100-10)%10-1]||"th")}
vast bane
#

can it be a folder macro?

coarse mesa
#

definitely

vast bane
#

cause then its great to use with advantage reminder 8)

coarse mesa
#

yeah you could do that, but I'm not sure if it'd work if you've already started to roll damage

coarse mesa
#

could give it a try... our Paladin never forgets to activate it when he crits for some reason ๐Ÿค”

#

he just has it as a hotbar button next to his halberd

vast bane
#

not able to be run as a folder macro

#

must be using something native to item macro

coarse mesa
#

Oh I thought you meant reference it from the folder in the OnUse field

#

It's not hard to put it in the Divine Smite class feature item, where it should live ๐Ÿคทโ€โ™‚๏ธ

vast bane
#

I don't want to use the hotbar

#

you can't document link item macros

coarse mesa
#

you can't document link class features?

vast bane
#

I'll stickwith my ugly method

#

theres a thought, make it an item macro and link the blank item lol

coarse mesa
#

drag it to hotbar, remove from hotbar (it will still be in the folder)

molten solar
#

Looks like one of mine. ๐Ÿค” And an older one at that.

coarse mesa
#

Before I even knew who I was yoinking from

molten solar
#

I can tell by the reduce and the elongated indentation from Notepad++.

coarse mesa
#

You must be proud that it's still chugging along just fine and in my opinion works the best

molten solar
#

Oh wow, radio buttons. Glad I don't do that anymore!

coarse mesa
#

Using a spell for Divine Smite? pffft

molten solar
#

Yeah heck no

coarse mesa
#

Who would want Divine Smite sitting in their spell list

vast bane
#

I just use a spell to expend the slot, cause I don't do macro fu well

molten solar
#

I made a new thing for my paladin player though. Item Macro embedded in the smite feature, clones it and rolls damage using all the system's hooks.

molten solar
coarse mesa
molten solar
#

Nah, I'm all about the QOL, not the Midi.

#

Having to tick off a spell slot and roll dice manually (or make it a spell) is mildly inconvenient, and thus the absolute worst.

coarse mesa
#

There's something amazing about watching our vengeance paladin crit with maxed level smite and hunter's mark going... do many dice flying around. Having it all in one roll is neat

molten solar
#

... during a fight against undead.

#

The undead dude's ability to heal himself for 60+ hp each round did not make much of a difference.

coarse mesa
#

That sounds amazing... we almost got wiped out by three intellect devourers who got the jump on us. Stupid me for eschewing my headband of intellect

vast bane
#

my only close player death so far in dotmm is from an intellect devourer

#

but I've murder hoboed the familliar 30 times

molten solar
#

I haven't had a player death yet. I'm in the mood. Would you recommend it?

coarse mesa
#

they're frickin dangerous against a party of dump INT dummies

molten solar
#

They are level 9.