#MidiQOL

1 messages · Page 107 of 1

atomic badge
#

Hi super late, but this would be available for non-owned tokens as it is an effect one applies to a target.

Think of it just as the terminology used for this subclass' specific subset of abilities.

There's a wide variety of them and the way they apply the tempHP varies between them. That is to say, there are two methods of application.

  1. Through taking damage while being under the effect of something called "Gravity Field".
  2. Through a rolled number that is stated on the ability itself.

Honestly I find it hard to answer this question as I am not sure what information you're looking for.

vast bane
#

it assumes you are using srd bard so go look at the starter hero bards scale value and match it

atomic badge
#

Thanks, I assume this'd be through Item Macro or?
I appreciate it nonetheless however. 🙇🏻‍♂️

vast bane
#

if its a level 1 bard, just delete that imported bard and drag and drop the level 1 bard from the dnd5e srd

molten solar
atomic badge
#

Alright gotcha. 👍🏻

vast bane
soft ravine
atomic badge
vast bane
atomic badge
#

I'm a little brain dead atm as I am incredibly tired. 🫠

violet meadow
#

I cannot replicate the error.

Can you try with only MidiQOL, DAE, MidiSRD, socketilib, libwrapper, Advanced Macros?

soft ravine
vast bane
#

the bardic scale value is in the class, not subclasses

atomic badge
#

Well it isn't an official subclass.

The name of the feature it comes from is Runic Inscriptions and it has a sub-category that includes this part in Wards.

frail osprey
frail osprey
#

yup!

soft ravine
frail osprey
#

both versions, Mr Primate and Midi

vast bane
#

what book is it from?

#

or are you dealing with a language barrier? and you are translating artificer infusions weirdly?

atomic badge
#

Well I mean, it is published in the sense that I have it on D&D Beyond as a homebrew subclass that I've left in there for the public.
Edit: I realized too late what you meant by published, lmao.

#

Ah, no I am not, it is its whole own thing.

violet meadow
#

or a macro to apply tempHP?

atomic badge
#

Yes.

#

An item.

violet meadow
#

Is it only an Actor that has that ability?

atomic badge
#

Correct.

violet meadow
#

So you are looking for a way for an Actor to be able to give tempHP to whatever target, stacking up to an amount equal to the Actor's level + something

atomic badge
#

So what I'm looking for is the ability to introduce a ceiling to the maximum amount of tempHP that it can give through its subclass features.

violet meadow
atomic badge
#

Yes, that is right.

vast bane
#

does that class purposely violate the raw temp hp rule?

atomic badge
#

It purposely violates the raw temp HP rule yes.

violet meadow
#

What is the max cap?

atomic badge
#

The max cap is based on three times your Artificer level + your Intelligence modifier at base.

This increases to four times your Artificer level + double your Intelligence modifier at Lv.9

And ending at Lv.15 with five times your Artificer level + double your Intelligence modifier with the use of an active once per long rest ability.

violet meadow
atomic badge
#

Alright, got it.

molten solar
#

Make the scale value for just the multiplier (3, 4, 5). The roll data will not be replaced twice.

violet meadow
#

yeah I should have specified that

atomic badge
#

Understood.

molten solar
#

So you'll have something like

@scale.<arti-subclass-identifier>.thingy * @classes.artificer.levels + @abilities.int.mod
violet meadow
#

In general will need an Actor onUse macro, checking targets current tempHP, getting the tempHP rolled damage amount of the Item, comparing the scaled max amount to the current value + the new "damage" and clamping it before applying it as a new and "improved" tempHP update

atomic badge
#

I'd assume this would have to be an onUse macro for each ability that is supposed to work in this way right?

violet meadow
#

It should be an Actor onUse macro, not one per Item

atomic badge
#

I understand, my bad, haha.

violet meadow
#

So you can use it whenever you roll an Item

violet meadow
atomic badge
#

All subclass features from this subclass that apply tempHP.

violet meadow
#

got sidetracked. I will write something up when I have some time 😉

atomic badge
#

Ah! No worries, thank you so much for the time, I appreciate all the help I can get.

Does the Midi wiki have like starter guides or anything of the sort? Trying to figure this stuff out has been a lil' difficult at times. 👀

static sparrow
#

Best advice is probably to look at concrete examples of something similar to what you want in the midi compendium or the various premade options that Moto’s wiki page lists.

limber obsidian
#

So, when using (v10.291 and 5e 2.1.5) Midi-QoL and using the damage buttons on the chat (the little red and green buttons overlaid on the roll) they stopped working, and I get the following error:
caught (in promise) TypeError: undefined. Cannot read properties of undefined (reading 'activationFails') [Detected 1 package: midi-qol] at applyTokenDamageMany (utils.js:529:17) at legacyApplyTokenDamageMany (utils.js:786:9) at applyTokenDamage (utils.js:441:9) at HTMLButtonElement.<anonymous> (chatMesssageHandling.js:667:11) at HTMLButtonElement.dispatch (jquery.min.js:2:43064) at y.handle (jquery.min.js:2:41048)

scarlet gale
#

Bug in newest version

#

Roll back to 37 the quickest fix

limber obsidian
#

Ah. I can live with it for now. 🙂 Thanks for the heads up

strong yew
#

I've been seeing this error quite a bit recently.

#

Have looked through my macro and don't have anything that seems to fit

scarlet gale
#

I want to say the 11:70 is the line and location?

#

of whatever macro it's trying to run

strong yew
#

I'm on 1.18.1 for advanced macros. Looks like I locked it from updating from probably some problem a while ago

scarlet gale
#

Should be safe to unlock now

#

I did something similar awhile back when it broke everything with it's refactor

strong yew
#

I'll update and see if that changes anything. Sounds like newest is safe. Thanks

#

Should at least eliminate that as a potential problem

scarlet gale
#

Honestly, I wouldn't even have the module if it wasn't for the DDB importer having a hard check for it to use midi-qol effects.

strong yew
#

That's more than likely why I have it as well

#

Hey cool, looks like that was the issue lol. Error disappeared

#

Love it when it all comes together

#

Unrelated secondary question for warpgate. I know multiple mutations can be tracked and named, but can I mutate a mutation?

scarlet gale
#

You can mutate something that's already been mutated.

strong yew
#

Like say I have a base effect that is applied via a mutation, and then a compounding mutation that updates that effect?

scarlet gale
#

Not sure if you can directly edit the mutation. @dark canopy would know.

strong yew
#

If I were to revert the bottom effect, would that be weird at all with the children mutates?

dark canopy
strong yew
#

So for a feature right now, it has quite a lot of effects. Every turn, you can change the effects. I was handling this by basically reverting the entire mutation, and reapplying it with the updates extra stuff every turn, but that seems to be pretty heavy handed

#

The actual changes each turn are only like 2-3 changes, and the other underlying ones don't change even when you change form

#

was thinking it would be better if I could just handle the form changes, and keep the effect there as a base effect, without creating 2 separate effects to track

#

Basically was thinking if I ended the parent mutate, would it also end the child mutates if I had a stack like that

#

Wanting to just basically do much smaller mutates rather than big ones each turn

scarlet gale
#

Possibly do the base mutation then another one on top?

#

instead of editing the big one?

inland vortex
#

I'm working on the Aid spell. The version I started with had the max hp increase. I added a heal, and the scaling. Unfortunately the heal goes off before the hp max increase. I tried lowering the priority of the hp max, it won't go to 0, but it would go to 10. That didn't help. Is there a way to change the priority of the heal?

strong yew
#

So working off your suggestion before about the effect macro calling the revert on deletion, I was wanting to incorporate that. If I have the reversion happen, it'd be targeting the parent

scarlet gale
#

You can check the stack for what ones are in use and revert it by name

violet meadow
inland vortex
#

ty

dark canopy
#

hmm, im not really in the headspace to dissect this much further than this, which are some notes about how the mutation stack works.

  1. the mutation stack stores revert data generated at the time of mutation.

  2. If multiple mutations are applied, that modify a common field, the final value on the doc is the value set by the last mutation.

  3. Same case as 3, but now reverting the first mutation applied. Warpgate runs through the mutation stack, looking for other mutations that have modified any given field the reverting mutation has modified. Any that are found are removed from the revert's update. E.g. start at 5, first mutation sets HP at 10, second sets at 20; revert the first mutation, and we are left at 20 HP, revert the last remaining mutation and we are back to HP of 5

strong yew
#

Ah, I see, yeah that's what I was asking. So if I have an effect that gives say. Bludgeoning,Piercing,Slashing resist, then have another mutate on that SAME effect that gives a flight speed of 20

#

and I revert the initial mutate, it will still have a flight speed of 20

#

Even if the original mutate created the effect on the actor?

scarlet gale
#

Why mutate the effect?

#

I would just mutate the actor?

inland vortex
strong yew
#

Yeah, sorry maybe just misspeaking. It is updating the actor, with the effect details

scarlet gale
#

Or just have the macro delete and create effects if it's just doing fly speed or whatever

strong yew
#

await warpgate.mutate(this.token.document, updates, {}, details);

inland vortex
#

I have no idea what to do with that

scarlet gale
#

You can edit / delete created effects from a mutation. Warpgate won't spit out an error if the effect is gone when it reverts later on.

celest bluff
#

You could just layer mutates also

scarlet gale
#

That's what I was originally saying

dark canopy
scarlet gale
#

Have a mutation for each form you're in

dark canopy
#

but yes, if you are mutating actor data, adding features, modifying speeds, skip the whole AE thing

strong yew
#

But it ends up kind of performance heavy for some reason. Stutters every time

#

Was trying to do more micro reverts for the specifics on the form, and keep a solid base for the stuff that doesn't change

scarlet gale
#

Just do an update to the effect then

#

without warpgate

strong yew
#

I can do that, that is how I originally was doing it but thought warpgate might be better suited

violet meadow
violet meadow
strong yew
#

Music track skips a bit and everything catches back up

violet meadow
#

AEs will be ... heavy duty

strong yew
#

Some of the effect has ATL stuff in it too

#

I assume ATL is pretty performance heavy also, cause even with just the effect on, my CPU usage kind of skyrockets

celest bluff
#

just create a temp item as a spell, then import it on from the item directory

inland vortex
#

ty, i'll look at it

spice kraken
#

Custom | 1 is what you want @junior stratus

junior stratus
#

thank you @spice kraken

spice kraken
#

Give the readme a read (in pins here)

#

There's the real readme, and a community wiki (I've never looked at that though)

junior stratus
#

will do. I read through the docs in github but there wasnt a lot of detail on what values are valid for attributes

spice kraken
#

Most will be Custom | 1 for midi stuff, but not all

junior stratus
#

Cool. Appreciate it, I'll check the docs out too

covert vessel
#

does anyone know how to extend the range of a melee attack temporarily? I've tried through dynamic active effects using "flags.midi-qol.rangeOverride.attack.mwak" set to override and it stops the target is too far message from popping up but the attack made after generating that effect doesn't resolve. I've tried effect values equal to the intended extended range, true, 1, and 0. Can't find anything about the function of this flag in the midi-qol documentation.

vast bane
vast bane
scarlet gale
#

I just looked, there is actually no documentation on it. Not even in the changelogs lol

#

I did find a few references in the code, it appears as though it should just be a true or false.

frail osprey
#

might be easier to go that way, since Flame Blade's macro is already fully written and functional, you just have to adapt it.

scarlet gale
#

What version of midi are you on?

#

I wonder if it's not working from other unrelated bugs in newer versions

frail osprey
#

(for reference: Flame Blade creates a weapon in the player's inventory. Then, once the effect wears off, the blade is deleted)

scarlet gale
#

Just tested, looks like it's failing in another spot.

vast bane
#

hmmmm

covert vessel
scarlet gale
#

Doesn't look like it's been touched since being included.

vast bane
#

wow yeah, flame blade is broken

scarlet gale
#

Needs a fix from tposney

vast bane
#

actaully my flameblade is fine

scarlet gale
#

@gilded yacht Looks like flags.midi-qol.rangeOverride.attack doesn't fully work. There is another check that's preventing the attack from going through.

vast bane
#

I have an unrelated error hmmm

#

I also reset my cookies and my god this is hell

#

all my foundry site settings are gone

soft ravine
#

confused yet again: CPR / Monk /evasion (i dont see anyting about evasion for the monk class when i check the SRD, PHB, DMM...

vast bane
#

I need to start backing up my settings along with my world

vast bane
#

Read the books a lil slower?

scarlet gale
#

It's a 7th level feature.

vast bane
#

Evasion is page 79 of the phb

soft ravine
vast bane
#

you don't need to build the base classes 0_o

soft ravine
vast bane
#

your life is gonna be a nightmare for scale values if you made the base classes

scarlet gale
#

Well, they're using that module. So...

soft ravine
vast bane
#

make sure your identifiers are not capital letters

#

thats going to be the biggest complication since @stuff will call the identifier

soft ravine
vast bane
#

whenever an item is using a scale, which will probably be a bunch of CPR stuff, you will need to compare your scale name to the default srd class scale

#

so far its just bardic

soft ravine
#

( i didnt use discord when i started ) 🥶

scarlet gale
#

Fighter, Bard, and Blood Hunter reference scales in a few places.

vast bane
#

for fighter its the sub right?

scarlet gale
#

Yea

#

It's the scales for the martial dice

vast bane
#

that one he can't get around, unless he can yoink it from ddbi

scarlet gale
#

I put the scale name in the item description.

#

Including the identifier.

reef salmon
#

Hey guys, I'm having a bit of a problem. The addDfred() function call doesn't seem to be applying the Dfred effect properly.

#

I haven't tested any others, but specifically this call in the "blindess" async function doesn't apply the "Blinded" condition like it does when you click on it in the Convenient Effects list:

"await MidiMacros.addDfred("Blinded", actor)"

scarlet gale
#

MidiMacros doesn't seem to be an exported function.

#

Unless there is another module adding that.

reef salmon
#

This is from the MidiSRD-macros.js file

scarlet gale
#

ah

#

that's why

#

I don't have that installed. (sorry Bugbear)

#

does it give you an error?

reef salmon
#

No, it just behaves strangely

scarlet gale
#

How so?

#

It's just wrapping the dfreds api method

#
await game.dfreds.effectInterface.addEffect({ effectName: name, uuid: actor.uuid })```
vast bane
#

I think it needs the same fix tim added

scarlet gale
#

I think you just need "Blinded"

#

Not blindness

#

unless you have a custom effect called that

vast bane
#

what is the strange behavior?

#

is it removing an effect while it adds or removing adding and removing?

reef salmon
#

So the function itself is supposed to open a dialog that lets the caster choose between Blindess/deafness, but it doesn't trigger immediately, instead waiting for I assume an auto ability save. But once the ability save goes through, the dialog doesn't pop, only when I either cast again, or click "apply effects"

vast bane
#

there is a known issue with CE's that when things happen at the same time the function gets confused, tposney addded a delay to fix it in midi so that its less likely that CE's get applied from multiple sources at the same time.

scarlet gale
#

I'm not sure that API method supports that feature yet

scarlet gale
#

It sounds like they're using the embedded thingy in CE

#

where you can select multiple options

vast bane
#

yeah midi doesn't work with dfreds nesteds

#

that feature in 4.0 defreds is basically for non midi users

scarlet gale
#

If they're using dfreds own API method, you would think it would

vast bane
#

He's probably not calling the right thing

scarlet gale
#

I just checked the code

vast bane
#

isn't it called Blindness/Deafness?

scarlet gale
#

Maybe?

vast bane
#

why are you using dfred though?

reef salmon
#

I pulled blindness/deafness from MidiQOL Sample Items, the macro invoked is called "blindness"

vast bane
#

doesn't midi srd have that spell?

vast bane
#

what on earth is this you are saying lol?

reef salmon
#

For MidiQOL I am on 10.0.35, SRD is on 10.10.2

reef salmon
vast bane
reef salmon
#

Woops, sorry, I meant Midi SRD Spells

vast bane
#

right but you aren't using it

#

lets back up, are you just trying to make an automated blindness/deafness?

#

or are you trying to automate something else and trying to jerry rig the spells automation for it?

reef salmon
#

No, I am trying to grab Blindness/deafness from Midi SRD and cast it.

#

I noticed that it wasn't applying any of the convenient effects, so I went searching for the .js

vast bane
#

configure settings, midiqol, workflow button, workflow tab, specials section, second drop down, what is it set to, snippet please?

reef salmon
strong yew
#

How do I ensure only one instance of a feature can be active?

vast bane
#

bam

#

mic drop

#

change that drop down, nowadays that is largely a bad way to run dfreds in midi

strong yew
#

Guess I've never really dealt with non-concentration effects like this. Feature isn't concentration but I don't want them to be able to use it twice

vast bane
#

since midi auto apply of nested ce's is broken

#

do AE before ce and your spell needs to be redragged out since you edited it and probably broke it

reef salmon
#

Gotcha

vast bane
#

alternatively you can check the boxes at the bottom of the spells:

#

but nowadays it is going to be insanely unlikely that anyone wants to apply ce before ae

reef salmon
#

Works like a charm, thanks!

vast bane
#

cause dfreds CE added a feature in 4.0 that just does not like midi

vast bane
#

plus we all use CPR+midi srd so most items have ae's that are better

scarlet gale
#

Can always flag the feature too I suppose

vast bane
#

I make it not stack personally, but dfreds is weird with stacking lately

strong yew
#

and how to differentiate that

#

I can figure it out, just was wondering if there was some simple way I was overlooking

scarlet gale
#

In theory, you have an effect for the duration of the feature. Just check if that exists and do a return if so.

strong yew
#

Is there a way to find an effect by label with a wildcard?

#

Like if I always had a prefix? Or does it need to be exact?

scarlet gale
#

Would just be a string.find on the label

#

Or something similar

#

You can also give the effect a flag and just search for that flag

atomic badge
#

Do you all know if there is a pre-made somewhere with the following effect:
Disadvantage on attack rolls against creatures other than the source actor.

vast bane
#

the long answer can be found in a magic item I shared on kandashi's server in the active auras channel and is janky AF and not recommended for amateur users.

static sparrow
vast bane
#

oh I just automatically assumed it was a reaction item my bad

atomic badge
#

Thanks, I'll take a look at it, also no worries, haha. ^^

gilded yacht
#

Should be done in v 40 (ish)

coarse mesa
atomic badge
#

Hey, question, I have the following setup right now, but I am not sure how to set the effect to not disappear on a successful saving throw, what term should I throw in here for that? (Homebrew stuff)
turn=end, damageBeforeSave=true, label=Rubblerouser, damageRoll=2d8, damageType=bludgeoning, saveDC=15, saveAbility=con

cosmic kayak
atomic badge
#

Thanks!

cosmic kayak
#

No problem

raven holly
#

Does Activation Condition stuff work with Reactions? (e.g. only trigger the reaction when damaged by Acid)?

vast bane
#

activation condition can be parsed for rolling other damage and applying effects

static sparrow
#

Which is a bummer when your players are idiots 😔

vast bane
#

for the reaction, but not for limiting when its prompted

vast bane
#

I'm using 2 third party janky reactions

#

those get pressed alot unintentionally

violet meadow
#

I have a sample Item that does this

#

Basic premise, the Item creates an Actor onUse macro with triggers isAttacked for instance and then ```js
if (!args[0].macroPass == "isAttacked") {
const { options:{token:targetToken,actor:targetActor}, item } = args[0] ?? {}; //that might not do it for getting MidiQOL v 10.0.37+ I need to check it.
if (!token || !actor || !item) return ui.notifications.error("MidiSRD Gloves of Missile Snaring macro error, pleasy notify the GM");
if (item.system.actionType == "rwak") {
const deflectItem = targetToken.actor.items.find(i=>i.getFlag("midi-srd","sourceId") == "tmrJlIOK0XLKCM1y");
let activation = duplicate(deflectItem.system.activation)
activation.type = "reactiondamaged";
await deflectItem.update({"system.activation":activation});
}
}

raven holly
#

lol Im sure you could, but Im alright, just gonna change it to manual rxn and if I have an enemy that does acid damage I'll turn it back on

violet meadow
#

So this checks if the incoming attack is rwak and changes the Item's Activation Type from reaction manual to reaction damaged so that it can be picked up in the right timing

vast bane
#

did you do deflect missiles in midi srd?

#

thats always an ask from here since the midiqol sample is kinda broken

violet meadow
#

the Gloves of Missile Snaring 😉

#

deflect missiles isn't SRD afaik, but it can be changed

vast bane
#

its a base monk feature

static sparrow
#

Isn’t it a base monk feature?

violet meadow
#

is it?

vast bane
#

midi srd just doesn't have class features right?

static sparrow
#

Yeah, 3rd level for all monks.

vast bane
#

god now you got me feelin guilty about not doing more work on the wiki lol

#

So for like months now I've been begging for a search function for character sheets to replace tidy and just realized that ctrl F in chrome does it just fine lol.

#

I'm also pondering going back to item collection instead of inventory+

violet meadow
vast bane
#

I think brutal critical is a class feature right?

frail osprey
#

barbarian

violet meadow
#

yeah these are done

#

as Items, no need for a macro is there?

vast bane
#

the current released has brutal critical, though you really don't need to make it, its built into special traits

#

the last time my barb hit the level for it hewound up getting 2 sessions of double dipping cause I didn't realize the class auto added the special trait too

frail osprey
#

so you had, like, ultimate brutal criticals?

vast bane
#

yeah he got like 4 dice on criticals, 4d12

frail osprey
#

ahahhahahah that poor GM

vast bane
#

I'm the DM

#

I just didn't notice cause he already hits for a truck

frail osprey
#

ahahhahahah barbarians being barbarians

vast bane
#

Paladin and barb in my 5 man group always out dps parse the party

#

hmmm, I'm down to 64 modules I bet I got room for encounter stats now

frail osprey
#

that's one thing I dislike about 5e, players are too overpowered even on earlier levels. I made the mistake of letting my players reach lvl 12 on my campaign. Boy, do I suffer trying to create challenges for them...

vast bane
#

My guys are 12, I don't mind it at all, but my adventuring days are brutally long

#

I'll ping you in tabletop cause I'm about to talk about something that very much is not midiqol related

knotty valve
#

The other day I tried to fix the sleep do damage issue, but then I noticed others have the same problem. However, after that, dice so nice, will not work anymore in combat. I automate almost everything with this module. I am sure I have turned something off as I was troubleshooting (sleep), but I cannot find what it is now. Anyone good with the settings, and know right off the bat where I should look in the settings for this module? Thanks in advance! I have not touched the settings for dice so nice.

violet meadow
frail osprey
#

I'm trying to automate Multiattack Defense. Any ideas on how to do it?
(NA stands for "not automated")

knotty valve
dark canopy
vast bane
#

You will need something like what bugbear just linked to limit it showing up, otherwise just make a shield/parry esque reaction

short aurora
#

Considering the action economy of dnd5e, honeybadger's suggestion would cover like 95% use cases

violet meadow
knotty valve
strong yew
pliant matrix
#

Hi, how do I apply a status effect to an enemy?

strong yew
#

Ah right SRD

#

Dumb question lol

vast bane
pliant matrix
#

I wanted to strike with a weapon and apply a sleep effect (already set), what should I change or what should I do to set midi?

vast bane
#

sleep sounds like you don't have cub or dfreds yet

#

automated conditions call sleep unconscious

#

set the active effects first tab to have NO boxes checked, then on the item itself set the target to blank/blank/creature and range to whatever

#

I'd recommend installing dfreds CE and setting it to replace conditions cause sleep sounds like the core condition which does not do anything in midi

#

also make sure effect transfer is on in midiqol:

configure settings>midiqol>workflow button>workflow tab>specials section, first drop down, if you install dfreds CE, make sure the second drop down is set to ae before CE

pliant matrix
#

ok, how should i configure the object?

vast bane
frail osprey
vast bane
frail osprey
#

yeah, but I want the macro executed when the actor is attacked

#

I'm thinking that maybe it'll be better to automate Multiattack Defense by a world script rather than an item macro

vast bane
#

think this is precisely how bugbear setup the example above

frail osprey
#

So I write "ItemMacro" on activation condition?

vast bane
#

I think that link says its an actor on use

violet meadow
#

What are we doing?

#

That is the triggering Item

frail osprey
#

I'm trying to find a way to automate this, but the challenge here is that I'm not a programmer

#

the coding part about giving +4 ac is easy, my issue is how to trigger that only after the second attack AND lasting only during the attacker's turn

#

and, preferrably, not spending the player's reaction

#

it seems that it's doable with hooks and world script, but I thought it'd make more sense with DAE

violet meadow
#

So this is an ability that needs activation or what?

frail osprey
#

oh, since it HAS to hit, I could use damage as a trigger, right?

frail osprey
vast bane
#

but not off the first attack

#

its triggered after the first attack is completed

dark canopy
#

you could do this with core, so surely you could do this with midi.

When actor update comes in that reduces the designated actor's health, toss up dialog for "MA defense", which adds +4 AC and a Hook.once for updateCombat that removes the bonus after the current turn changes

violet meadow
#

That too, but you can use the MidiQOL triggers isAttacked and adjust the AC for that specific attacker if the effect is on.

#

I cannot write this now though, so remind me later 😉

strong yew
#

So, am I doing something incorrectly here? Was trying to copy an existing effect duration to keep the timer consistent if refreshed.
Tried the options below, but they don't seem to work

let lastEffect = find effect yada yada;
newDuration = lastEffect.duration; //tried this
newDuration = foundry.utils.duplicate(lastEffect.duration); //and this
violet meadow
#

Refreshed how? AE reapplied?

strong yew
#

Well, it has options to change every turn. So the process I was following on the eachturn call was:
If effect is found active > copy duration to a variable > revert existing effect > apply duration variable to new effect > mutate

violet meadow
#

I saw a conversation you had, but didn't read through the lot

#

Not entirely relevant but this is what I am testing now for MidiSRD ```js
/**

  • @param {String} statusName statusEffect#label
  • @param {Object} actor Actor5e
  • @param {Object} changes to be applied to the base statusEffect, like: changes = {origin:item.uuid,duration:{seconds:25},flags:{dae:{specialDuration:['turnEnd']}}};
  • @returns {String} created ActiveEffect5e#id
    */
    export async function _addStatusEffect(statusName, actor, changes) {
    const aeData = duplicate(CONFIG.statusEffects.find(ae => ae.label === statusName));
    if (changes) foundry.utils.mergeObject(aeData, changes);
    const hasEffect = this._hasEffect(statusName,actor);
    if (hasEffect && aeData) {
    aeData._id = hasEffect._id;
    await MidiQOL.socket().executeAsGM("updateEffects", {actorUuid:actor.uuid,updates:[aeData]});
    }
    else if (aeData) await MidiQOL.socket().executeAsGM("createEffects", {actorUuid:actor.uuid, effects:[aeData]});
    else return ui.notifications.error("MidiSRD helpers _addStatusEffect: statusName didn't produce a valid result.");
    const effectId = actor.effects.find(e=>e.label===statusName)?.id;
    return effectId;
    }
rich matrix
#

Hey. Not sure if midi-qol. My item-spell "Blindness/Deafness" (which I imported), gives me this option when I cast it. But I cant find it how it is happening. I want to create this option for other spells and items. How do I can accomplish this?

static sparrow
#

That's probably an Item Macro. You can just open the item macro and look at how it's implemented.

violet meadow
#

One of these is about nested effects, which is what you are looking at when that dialog pops up

rich matrix
violet meadow
#

Was that supernaf? Anyways 👍

#

Of course that was the one 🥳

sleek glacier
#

How do you guys handle soulknife (thief subclass)? Cant find any midi related, so just add some soul knife as items?

frail osprey
#

is there somewhere where I can see a list of dnd5e hooks?

frail osprey
#

thanks, sorry about being off-topic

violet meadow
#

no worries, I wanted to suggest checking also the MidiQOL Hooks which can be used too.

violet meadow
dark canopy
violet meadow
frail osprey
#

So, I've come to the conclusion that fiddling with flags to get Multiattack Defense to work is waaay beyond my very limited skills. Now I'm trying to do it using chat message as a hook to fire the macro. Ends up not being midi-qol related.

violet meadow
frail osprey
#

if it's the first attack suffered from the attacker on the turn

dark canopy
#

and circle gets the square

frail osprey
#

I feel like it's not very complicated to do this, but my programming skills are veeeery limited and I'm getting chat gpt to help me. You guys mentioned a couple ways to do it, but I have trouble even understanding what you say 😦

quick mesa
dark canopy
#

(i really wouldnt even use gpt, it wont know the midi api and that's big here)

#

if im picking up what bugbear is putting down, you are wanting this:

  1. A way to trigger a script after a specific actor has taken damage (i.e. hit by an attack)

  2. A way to trigger a script each time the turn changes.

  3. A way to increase ac by 4

  4. A way to detect your ac is risen by 4, to prevent multiple executions of (1)

  5. A way to check any other conditions relevant to running (1) or not

frail osprey
#

yeah, I was using chatgpt actually to try and do it without midi. My idea was:
1- place a hooks.on on something to trigger everytime an actor suffered some damage
2- then it'd check if the actor has an effect called "Multiattack Defense", if false, it doesn't do anything.
3- if 2 is true, then it'd check if it's the first time this has happened on the turn (by checking a variable defined earlier which starts as 1). If true (variable is still 1), then it increases the variable by 1 and proceeds. If false (variable => 2), it does nothing.
4- give +4 ac
5- (second part) trigger when current turn is ended: reset variable back to 1 and AC back to normal.

#

managed to get chatgpt to write that, but we (me and chatgpt) couldn't manage to get the target right, so I gave up.

dark canopy
#

if you arent touching midi for this, #macro-polo can certainly assist.

however, while im no midi user, i think its safe to say that if you are, its in your best interest to use as much of midi as possible when scripting

frail osprey
#

yeah, my idea initially was to use midi, but it seems I very much lack the knowledge to do so, and ChatGPT can't help with midi, as you stated earlier

dark canopy
#

you have the problem spelled out very well and this thread is exactly for asking questions. I've seen far more help from the folks here with far less to start from.

#

(not to discourage self-education or experimentation at all, just a reminder 🙂 )

frail osprey
#

That was actually very nice to hear. Most of the time, I shy away from asking things here because I feel they might sound too stupid and I don't wanna impose

dark canopy
#

I feel they might sound too stupid
oh my good sir/lady. every single person here has made just facepalmpicard dumb statements. Myself very much included.

violet meadow
#

Testing an Item for that @frail osprey and I will share if good 😄

frail osprey
#

thatlonelyangelicalbugbear should be your username

#

😆

dark canopy
#

thats just how this community be

#

full of nerd ballers

frail osprey
#

makes me regret choosing chemistry instead of programming

charred bay
#

Trying to convert my hunter's mark to v10. It is applying this effect to the caster as well as the target. I don't want it to.

frail osprey
#

I believe it always creates an effect on the caster as well, it's a way to show what's the source of the concentration

#

don't know if it's also needed code-wise

#

is the bonus damage being applied against the caster too?

charred bay
#

actually, it appears there is a global script running on the spell

#

when i edit the item macro on the spell

#

there is nothing there

#

but when i export the spell, i see this

#

any idea how to see/edit this in the ui?

frail osprey
#

you using CPR's version?

#

if you wanna edit the macro, I believe it'd be easier using Midi SRD's midi-QoL sample version, since it has an item macro

toxic spruce
#

Has anyone thought of a way to automate Lucky? I think it is too broad to do so, but thought I would ask 🙂
You have 3 luck points per long rest. Whenever you make an attack roll, an ability check, or a saving throw (or when an attack roll is made against you), you can spend one to roll an additional d20 and you choose which die to use. You can choose to spend luck points after you roll the die, but before the outcome is determined.

charred bay
#

midi SRD was discontinued with v9?

static sparrow
#

I think anything that's like "you can do this after you see the roll" is really tough.

#

I'd be very interested if there's a general solution I don't know about.

static sparrow
frail osprey
charred bay
#

maybe i am thinking of DAE SRD?

frail osprey
static sparrow
#

DAE SRD is pretty dead, yeah. Midi SRD is where it's at.

charred bay
#

okay

frail osprey
#

there's also a DDBI version with item macro as well

#

but I believe all of these versions apply an effect to the caster

scarlet gale
frail osprey
#

You're right. Where did you get that hunter's mark from, @charred bay ?

charred bay
#

dndbeyond import

frail osprey
#

but ddbi's version has an item macro 🤔

charred bay
#

i deleted it

frail osprey
#

ah, makes sense

charred bay
#

was trying to troubleshoot

frail osprey
#

I'd suggest using Chris' version, since it also creates an item in the player's sheet to allow switching the mark's target without spending a spell slot

#

really nice stuff

scarlet gale
#

Iirc the sample item version does some trickery to let you use the same spell without messing with spell slots.

frail osprey
short aurora
frail osprey
#

pretty useful when you have to skip from one compendium to another all the time

short aurora
#

Appreciated

coarse mesa
toxic spruce
#

I was surprised I couldn't find 'Blade Ward'. Is there something similar that I could copy from?
You extend your hand and trace a sigil of warding in the air. Until the end of your next turn, you have resistance against bludgeoning, piercing, and slashing damage dealt by weapon attacks.

strong yew
#

That's gotta be somewhere

#

Looks like CPR has it

sudden crane
strong yew
#

Yeah, I think dfreds might have it too?

frail osprey
#

yeah, you can copy rage and just set the duration to 1 turn

strong yew
#

nope nvm it does not

toxic spruce
sudden crane
toxic spruce
frail osprey
#

ah, and, obviously, remove the bonus damage from rage, hahahahah

#

and the advantage too, lol

digital lagoon
#

My Dice stopped showing to my players when using MidiQOL. I checked the option to show on attacks using the GHOST DICE but it isn't showing.

short aurora
#

Was there a way to apply tempHP on an effect application with DAE or Midi without a macro or should it still be macro?

hot flower
#

are we g2g on midi and DAE now?

#

(sorry, been away all day)

sleek glacier
frail osprey
#

sooo, my player has this, any way to automate it?

toxic spruce
#

I have this ability, it works, but it keeps damaging self, and I don't want it to. Am I missing a setting?

static sparrow
#

You can hook on rest completion and then decrement exhaustion.

static sparrow
# frail osprey will try this
    const currExhaustion = actor.system.attributes.exhaustion;
    await actor.update({"system.attributes.exhaustion" : currExhaustion - 1});
});```

You'll need to check to make sure actor actually has the Tireless feature, and someone else will probably have a better idea of where to actually run the call to hook the event (I've been doing onRest hooks in my world script), but that's the basics, I guess.
frail osprey
#

how does it recognizes it's a short rest and not a long one? (trying to learn)

static sparrow
#

result has that information, you'll want something like
if(result.longRest) return;
before declaring currExhaustion.

#

result.longRest is true on a long rest and false otherwise.

frail osprey
#

ooh, I see, makes sense! Thank you!!

static sparrow
#

If you use the debugger to step into the function there, you can see all the data that result has.

coarse mesa
sleek glacier
#

you only use it when you fail... but youre right, may better do it manually

static sparrow
#

Lukas means it only consumes the die if it turns the failure into a success.

coarse mesa
sleek glacier
#

for now i just make a psyonic dice, which he clicks and rolls a 1d6 for this purpose

#

a little ot but do psychic blades the same dmg if thrown?

frail osprey
#

Just leaving this here in case someone ever needs to automate Ranger's Deft Explorer feat.
The macro is as follows:
Hooks.on("dnd5e.restCompleted", async (actor, result) => { let effect = actor.effects.find(effect => effect.data.label === "Tireless"); if (result.longRest) return; if (effect) { const currExhaustion = actor.system.attributes.exhaustion; await actor.update({ "system.attributes.exhaustion": currExhaustion - 1 }); } });

I'd recommend leaving it inside your world scripter compendium

violet meadow
#

@frail osprey
1 . Create a DAE on the Item with:
a. Transfer to actor on equip checked,
b. Effect key:macro.itemMacro, mode:Custom
2. Copy paste the macro in the Item's Itemmacro,
3. Change the name in the second line of the macro to match the created Item's name (inside the "" here const itemName = "attacked AC against attacker"; //change to the actual feature's name)
4. Put that Item on the Actor,
5. Attack that Actor in combat.

Link to the actual macro: <#1010273821401555087 message>

frail osprey
#

that was a LOOOOOT of code, man, I really apreciate you doing this for me. Is it ok if I test this later? I'm about to go out.

violet meadow
#

Tryin some new ways of shipping macros in Items so that was a good exercise. It seems to work from some quick tests 😄

#

If that feature is on multiple Actors, better change the name of it to be unique.

frail osprey
#

You're great! I'll try it out later and let you know how it worked, but I believe it'll probably work fine.

violet meadow
#

well different settings in MidiQOL might make it a bit touch and go but will see 😉

violet meadow
vast bane
# dark canopy (i really wouldnt even use gpt, it wont know the midi api and that's big here)

Actaully Chat GPT is great to use, just don't use it to write the code fully. It is a smart syntax cleaner and if you type word for word what folks like you tell us in discord, it will know what you are saying when we actually don't and it learns off what you guys say. I totally made 2 complex automations off leveraging chat GPT and just asking a few questions in macro polo. My shieldmaster and dual wielder feats were made with chat GPT. It will default to 2 year old foundry code but if you tell it all the mistakes it will rewrite with the new functions instead. It literally learns from its mistakes.

strong yew
#

Man, I cannot get duration to copy over

#

Feels like something is overriding it

#

Output it into the log and it seems like it should work, but then when I reapply, it just resets back to full timer

dark canopy
violet meadow
vast bane
#

probably the version 4 version which is why its behind a paywall

dark canopy
#

i stand by my statement, but we are veering off track 😅

strong yew
# violet meadow share the snippet you're using?

So each turn it rerolls the macro to change form.

    let effectData = {
        changes: [
            { key: "ATL.light.bright", value: "10", mode: 5, priority: null }],
        origin: starry.uuid,
        disabled: false,
        duration: { "seconds": 600, "duration": 600, "remaining": 600, "label": "600Seconds"},
        icon: starry.img,
        label: starry.name,
        flags: { 
                    effectmacro: { onDelete: { script: chrisPremades.helpers.functionToString(effectMacro) }}
                }
    }
    let existing = warpgate.mutationStack(token.document).getName(starry.name);
    if (existing){
        let lastEffect = chrisPremades.helpers.findEffect(actor, Object.keys(existing.delta.embedded.ActiveEffect)[0]);
        effectData.duration = duplicate(lastEffect.duration);
        console.log(effectData.duration);
        await warpgate.revert(token.document, starry.name);
    }
#

So it checks to see if a mutation already exists by the expected name on the token, if so, it gets the effect, then I was just trying to duplicate the duration and push that to my effectData before then applying the mutation later on

dark canopy
#
        let lastEffect = chrisPremades.helpers.findEffect(actor, Object.keys(existing.delta.embedded.ActiveEffect)[0]);

this looks all kinds of sus

strong yew
#

lol, it is a little odd I know. I have the effect name change to include the form name

#

And the effect name is included there, so I figured that was the simplest way to reliably grab it

scarlet gale
#

I feel like at that point you just don't use that helper lol

strong yew
#

It's just finding it by name in the helper yeah? The name changes depending on the form so I'm just grabbing the name from the key on the warpgate stuff

scarlet gale
#

I guess if it works

strong yew
#

I could just have it named "starry form" and simplify it, but I just liked having the effect title match the form you're in

gilded yacht
#

Shout out to anyone playing with the experimental undo workflow feature. It really is EXPERIMENTAL and because it makes wholesale changes to actors to restore the state do not use it in a real game.

scarlet gale
#

@dark canopy Can a temporary mutation be changed into a permanent one?

#

As in lock in the changes that have been made.

violet meadow
strong yew
#

So, outputting it to console log shows it being set correctly, and here is it output the line before my mutate

scarlet gale
#

As a thought experiment, if mutation could be made a permanent change, I feel like that would be a potential way to make an "undo" feature. (Ignoring the fact that there would have to be some under the hood changes to make use of warpgate)

vast bane
# strong yew

is there an existing CE by the same name and you forgot to toggle don't apply ce?

violet meadow
#

I am excited. It seems that we are 1 step closer to saves against specific conditions with advantage and such shenanigans when the 10.0.42 drops 😉 🥳

vast bane
#

Chris already wrote that into CPR as long as your conditions are dfreds CE's

scarlet gale
#

That's not quite the same

vast bane
#

he did Conditional resistance and conditional vulnerability

violet meadow
#

Well, I meant offered intrinsically in MidiQOL without that caveat

vast bane
#

I kinda hope he reverses the crunching of multiple statusEffects

#

I have stopped using the wrench entirely because of statusEffect combining conditions

violet meadow
#

make it macro.CE

vast bane
#

yeah but all the other options in the drop down of the wrench are statusEffect by default

#

I'd have to use the new option in the drop down and manually write it out

#

or edit the key I suppose, but thats my point

violet meadow
#

I am missing something 🤔

vast bane
#

I just don't see the benefit of combining statusEffects into one

strong yew
#

No duration info on the item itself either. I have no idea where it's coming from. Everything looks correct the line before I mutate

scarlet gale
#

I find it misleading

vast bane
#

I think it was done to save space on tokens, but nowadays you can use modules like TVA to auto hide

scarlet gale
#

I'd rather have a bunch of icons for all the conditions

violet meadow
strong yew
# violet meadow Can you share the mutation code too?
    let updates = {
        'embedded': {
            'ActiveEffect': {
                [`${starry.name}: ${form}`]: effectData
            }
        },
    };
    let details = {
        'permanent': false,
        'name': starry.name,
        'description': starry.name
    };
    console.log(effectData);
    console.log(updates);
    await warpgate.mutate(token.document, updates, {}, details);     
#

to two console.logs just before the mutate show the correct values for the duration

#

but it just resets to max when applied

violet meadow
#

You can change the first 4 lines to what makes sense for you, labels and icon.

#

But itemName needs to be the same like the created Item's (feature probably) name.

violet meadow
strong yew
#

Same issue unfortunately. Here's what shows for console.log(updates) followed by the actual effect when inspected

#

Just applies it as if new even with duration set like that in the effectdata

#

For a refresher, if I edit effect.changes, I have to mutate the entire thing right? Can't add like 3 changes and then revert/etc?

scarlet gale
#

Why not just do an effect update?

#

You'll still need to update the entire changes part.

strong yew
#

Yeah, that's what I'm working on now

#

It's how I originally did it, just was exploring trying different ways to accomplish it

violet meadow
frail osprey
#

none 😐

#

wait, there might be some, lemme check again

violet meadow
#

duration is strange.

frail osprey
#

yeah, no errors

violet meadow
#

You need to first hit the defender.
Then it should create an Active Effect on the Attacker and during the subsequent attacks an AE for +4 AC will be added for 1 Attack on the Defender (and deleted almost instantly based on your MidiQOL settings)

violet meadow
#

This will give a +500 to AC to make it more obvious 😄

frail osprey
violet meadow
#

Save the above locally.
Foundry right sidebar, Items, Create new Item, select Type: Feature and right click the newly created item to import data.

frail osprey
#

ah!

#

my DAE wasn't configured correctly

#

now it's working like a charm!

#

Yeah, I edited the DAE after it was already on the actor instead of editing before giving it to the actor

#

so it didn't add this second key

#

this is sooooo awesome! Thank you very, very, very, very much, thatlonelybugbear!!! ❤️

coarse mesa
#

The midi-SRD/DDBI Faerie Fire is a bit busted with the new ATL... what are folks here using?

I'll just use the CE 🙂

eager ferry
#

Hi all, i've been looking online for a way to add "creature type specific" bonus damage to a weapon. I keep seeing references to MidiQOL and DAE but im lost

random jolt
#

What is this error??

#

field.dataset is undefined?

#

99% sure this error is coming from midqol

vast bane
coarse mesa
vast bane
#

model validation error happens when an atl key is using the old v9 keys

coarse mesa
#

Is there a better one to use?

vast bane
#

I just use the old one with the new atl key

#

I actually don't think its done right

#

faerie fire is suppose to suppress the invisible condition on failed saves

random jolt
vast bane
#

How hard would it be to have a chat message fire in a whisper to a player if their assigned actor ever gains a specific condition? I was thinking of doing on creation effect macros on all the dfreds CE conditions I want and have it be if name doesn't equal X, return. Otherwise chat message yada yada?

#

actually I thik chat gpt can do this for me

coarse mesa
vast bane
#

suspend it

#

just simply have the item macro on faerie fire check if failed save, then set any invisible conditions to suspended

#

and add a suspended invisible to them as well to prevent future invis's

molten solar
coarse mesa
#

Nice. What are you thinking of using this for Moto? Is it supposed to be secret? Would have to kill the scrolling text

vast bane
# coarse mesa Nice. What are you thinking of using this for Moto? Is it supposed to be secret?...

Two of my players are members of the Emerald Enclave and their boss gave them charms of restoration. I based all their faction features around this charm. One of its features is a reaction that their patron takes in combat, not them, that if they ever become under any effect that lesser or greater restoration can remove, they can have Jeryth(or Wyllow) immediately expend charges of the Charm to remove the effect from them. This spell is considered cast at level 9 and is not cast by the owner of the charm, but instead a spectral image of either entities beside the owner of the charm.

#

So my low expectation idea is to just have the various conditions in CE have an effect macro on creation to spit out a whisper if the actor who gets the effect is the druid or cleric. Reminding them they can elect to use charges to remove the condition.

#

High expectation is a dialog prompt instead where they say yes or no to using the charm and if yes, it expends the charges on the charm and removes said effect.

#

but Dialogs....are the debil

#

I know I could probably do this all in a world script too, but I feel since I know what 6-8 conditions they'd be, I could just put it on the conditions themselves

molten solar
vast bane
#

Yeah I'm gonna dive into this in about 3ish hours I'm startin work on a friday always crazy for the first few hours

#

do you think theres a difference in performance between doing a world script for it or doing just the 6ish effect macros on my dfreds CEs?

molten solar
#

The difference, if any, will at worst not even be noticeable.

#

EM basically is a world script already

vast bane
#

I'm gonna go the effect macro route just cause I have better luck making the macros in it since the helpers are easier to fiddle with

#

specially if I go the high expectation route, since the effect macro is already on the actor theres no permissions issues or a reason to need to leverage midi

molten solar
#

All the work for the world script has already been done in EM, yeah

#

Runs only for 1 user, etc

atomic badge
violet meadow
#

soonish ™️ 😅

atomic badge
#

Haha, take your time! I'm just curious since I want to learn as much as possible from any and all code that is available in this community.

vast bane
#

sadly there is a problem with the third party janky reactions

#

they are not removing themselves

#

Clearly its not a permenant effect:

#

my only thought to fix this is to have on effect deletion have effect macro search for the temporary item and attempt to delete it also to account for macro.createItem failing

#

I think it has something to do with actors on aother maps being in the aura still

short aurora
dark canopy
#

why would the item creation fail?

vast bane
#

I can't tell what causes the failure to remove, I think its just a live session lag issue but I caught one player character with 10 of them on them, the rest had none and I can't reproduce now alone in session

#

it seems to remove the item when the aura leaves them and when they leave the aura

vast bane
# dark canopy why would the item creation fail?

the normal behavior of the key is that you only have the item while the active effect is on you, so we macguyvered this setup into active auras and it seems to work but I'm reporting some sort of anomaly, I'll have more info after tonights session as now I know to look for it.

#

To be clear, the setup is already ill-advised but my middle name is janky for a reason.

#

I suspect maybe the issue is that I chose to make it a consumable instead of a feature maybe theres something about items since they can stack

#

I needed a way to make it poof on use so I just went super jank and made it a consumable with 1 charge that destroys on empty lol

strong yew
#

So, potentially dumb question here. I noticed on some items I can roll them and then it goes into like a targeting mode if I don't have one selected

#

Thought that was Late Targeting, but I toggled that on in midi settings but it doesn't seem to affect all items

strong yew
#

Is there like a toggle/flag or something that allows for that

#

Yeah I use Argon

short aurora
#

They have a feature like that

#

Might be that and not midi at all

strong yew
#

Ah interesting, let me see if it's there

#

Was it just recently introduced? I don't remember it working that way

dark canopy
#

if only there were changelogs 😩

short aurora
#

Ripper had a video showing Bless recently as in this year, that's about all I can remember

vast bane
#

also late targetting in midi only works for specific stuff too

strong yew
vast bane
#

should be in the tooltip/note for late targetting

dark canopy
#

modules that provide good documentation and changelogs are generally in your best interest to patron. Why guess and dig through code for opaque modules when plenty exist that provide that information properly.

vast bane
short aurora
strong yew
#

You're absolutely right, it's argon

vast bane
#

I wonder if that setting is incompatible with midi at all in argon

strong yew
#

I wonder if I can hijack that even if I'm rolling somewhere other than argon

#

Gonna look

vast bane
#

just use midi's

short aurora
strong yew
#

I just started using the VAE button for effect abilities

vast bane
#

midi's late targetting is pretty dope, the things it doesn't work with typically shouldn't matter, you don't target with self items and templates auto target, and aoe's should auto target if you set them right

short aurora
#

Argon's targeting "hud" for multiple targets (like Bless) is pretty dope though, I was impressed and wanted to use Argon from it

vast bane
#

the very first two drop downs in workflow tab handle the targetting for the types of item rolls that late targetting doesn't handle:

#

Someones gonna finally take up the mantle of trying to fix upcasting target scaling and magic missile/scorching ray/eldritch blast.

#

I actually was pondering making a list of those spells, hold person, command, bane, bless, all have target limits on them that break upcasting

#

was gonna suggest to midi SRD to take out the target limits

short aurora
#

Weird question I have a hard time phrasing; if not going for the jank route of third party reactions and I want the player with the actual feature to decide, does anyone have an idea how "efficient" active-aura is in their auras? I'm making Fighting Style: Protection; when a creature you can see attacks a target, other than you, that is within 5 feet of you, you can use your reaction to impose disadvantage on the attack roll.

I know a worldscript is necessary, but I'm wondering if an active-auras' effect should be what I'm filtering for in that script or if I should do my own filtering to determine if someone is eligible

vast bane
#

You could also just make the player with that fighting style remember they have it and purposely slow down combat so that they can fire it before you start your attacks

#

you also can do the new BUTT undo(is that what we're calling it @coarse mesa ) and then redo the attack at disadvantage.

dark canopy
vast bane
#

I kinda feel active auras should really be used as last resorts and in low frequency. It has a pretty awful performance rating in live sessions.

short aurora
dark canopy
#

a DB operation is anything that would sync state to other users, in practice

#

i.e. adding any kind of permanent actor data, like an AE

short aurora
#

Ah, that's a really good descriptor, got it in one

dark canopy
#

pretty sure a lot of the issues related to the chain of modules used in midi and the frequent failures/desync/latency seen are a result of abusing DB operations

violet meadow
#

There will be at some point some 3rd party Reaction management infrastructure either in MidiQOL or around.
For now Activation Conditions for Reactions (meaning the Reaction fires or gets picked up by the Reactions dialog only if certain conditions are met) should be coming soon ™️ (maybe 10.0.42 midi)

short aurora
#

I realized the first hurdle is creating some reaction management system in general, did dnd5e helpers store actions used per actor or was it per player? maybe time to steal

dark canopy
#

per token

austere basin
#

Good morning everyone, trying to make an item using DAEs macro to create an item using an ActiveEffect but having no luck. Does anyone know the value I should put in here? eg. macro.createItemRunMacro CUSTOM uuid macro? Please see the Macro also attached

#

const BREATH_WEAPON_DRACONIC_TRANSFORMATION= {
label: "Breath Weapon",
icon: "icons/mystery-man.svg",
transfer: true,
};
const item = await Item.create({
name: "Breath weapon",
type: "Natural",
})
await item.createEmbeddedDocuments("ActiveEffect", [BREATH_WEAPON_DRACONIC_TRANSFORMATION]);

let actor = game.actors.getName("My actor")
await actor.createEmbededDocuments("Item", [item.data])

#

I tried @DB7uCLURrToHEWdi which is the UUID as the only arg but it was saying it couldnt find it

dark canopy
#

that is the ID

#

uuid is longer

#

(right click header button to get uuid)

austere basin
#

oh, wait a moment -- its right click

#

🤦‍♂️

violet meadow
short aurora
vast bane
#

unless you need to run a special macro event on the item creation you should be using macro.createItem

#

personally, I don't even use the runmacro key, I just use effect macro

#

its just easier

#

RunMacro makes you have to put something in the created items item macro and if the created item already has its own automation you are editing an existing automation and have to worry about double variables

short aurora
#

tposney added it for me to parse arguments between the created items and the macro, essentially

#

Well, "for me", I made an issue to request it :p

austere basin
#

Nevermind, I used createItem instead and it seems to be working now

#

Thought I had to use RunMacro due to the documentation providing a sample macro for creating an item

vast bane
#

you drag and drop to macro.createItems

austere basin
#

seems its not needed

vast bane
#

I have a video for this

austere basin
#

@vast bane Your solution worked

vast bane
#

the only time I needed to also run a macro was to make an item attune/equip when it comes on them

#

and for that I do effect macros

#

on creation effect macros

#

the cool thing about the runmacro key is that it gives you the item to define easier I think

#

in effect macro I have to edit every one I use to give it the item I'm working off of

#

cause theres no helpers in effect macro for an item it has nothing to do with

dark canopy
#

(flag the actor with the needed UUID, rather than editing every single macro)

austere basin
#

Ok so its adding successfully now!! :) One last thing, it doesnt seem to be auto equipping when adding to inventory -- anyway around this? I tried setting 'Equipped' to on in the item itself but with no luck

short aurora
#

dnd5e (and Midi mimicking that behavior) resets the status of items like that, it would need a macro

austere basin
#

@short aurora Ok, thanks! You guys are awesome :D

vast bane
#

RunMacro key lets you run the macro on the created item, if you reference a macropass of whatever the new pass is for created items then it will just run that part of the macro which is useful if your created item already has its own automation for stuff

#

I personally found it too confusing so I just use effect macro

#

just getName the newly created item and update the docuement with attunement/equipped.

short aurora
#

If you do want an item created by macro.CreateItem to auto equip, change the flag to macro.createItemRunMacro and in the item that you're creating a copy of, add this snippet to its' itemMacro at the top;

if (args[0] == "onCreate"){
  const itemToEquip = await fromUuid(args[1].itemUuid);
  await itemToEquip.update({"system.equipped": true});
};```
vast bane
#

bugbears shared it but he posts too many macros to try and find it again lol.

strong yew
#

oh no. I found a crititcal midiqol issue

short aurora
strong yew
#

unusable

vast bane
short aurora
strong yew
vast bane
#

whats wrong with it?

short aurora
#

🐦

strong yew
#

Crititcal instead of Critical.

#

Upsetting I know

vast bane
#

lol

#

you got me

#

doesn't he also suggest using the core setting instead?

#

i swear he said this at some point and thats why he probably hasn't looked at it in a while lol

#

do editors not have spellcheck also?

short aurora
#

Strings are just taken as is

austere basin
#

@short aurora Something like this?

vast bane
#

that item is not in a compendium make sure you dont delete it from the sidebar

short aurora
austere basin
#

ooh damn, ok ill go ahead and install it

short aurora
#

It's the best module

vast bane
#

I wonder if you can reference a folder macro for this?

austere basin
#

@short aurora That makes alot more sense now LOL

vast bane
short aurora
violet meadow
molten solar
winter halo
#

I have a question. There are quite a few spells that have this "At the end of the target turn, repeat the saving throw" kind of thing. How do I make that happen with DAE?

vast bane
vast bane
winter halo
#

thank you 🙂

vast bane
#

that reminds me I need to add the new option in 37 to the overtime cheat sheet

celest bluff
vast bane
#

its designed for you to go down it and copy/paste each line that you need, the last one at the bottom is almost always used so the label=has no comma on purpose.

celest bluff
#

In addition to midis overtime. Depending on what you're looking for.

winter halo
#

I have this as Effect Value: " turn=end,
saveAbility=wis,
saveDC=@attributes.spelldc,
label=Tasha's Hideous Laughter ", with change mode override und attribute key flag.midi-qol.OverTime. but it isn'T working. I have some mistake even if copied it basically from hold person

vast bane
#

That is a correct overtime so the problem is probably before the overtime, either you aren't transferring the effect or you aren't rolling with midiqol

#

you should be putting conditions in it too

winter halo
#

It should transfer as I find it in de effects of my test target

#

the conditions are in it those are working. just the overtime not

vast bane
vast bane
#

were you when you applied it

winter halo
#

yes

vast bane
#

show me all three tabs of the effect on the test actor's effect tab

winter halo
#

ah mom

vast bane
#

thats not the right one

#

I wanted the test actors effect

winter halo
#

that is the spell i know I send it the moment you asked in what we in germany call Vorauseilendem Gehorsam :Done moment

vast bane
#

(Editing active effects on actors are not experimental for anyone curious how I know)

winter halo
#

this what you meant?

short aurora
vast bane
#

he fixed it in his version but he's holding onto midi srd till midi has a new set of stable versions

#

The fix for the non macro version was to fix the weird overtime commands, it has an error in it in two spots

#

in the macro its a whole bunch of problems

vast bane
#

does the actor have an actual turn in combat?

winter halo
#

yes he has, nothing happens at the end of the turn

vast bane
#

can you show me your workflow button/workflow tab/saves section?

winter halo
#

you mean the workflow in my midi settings?

vast bane
#

so it auto succeeds on first hit

vast bane
#

I suspect your saves are not automated and/or you have them set to a module you do not have installed

winter halo
#

that could be it but my pc makes shit at the moment....windows and so on.might be a few minutes

proper siren
#

Hey yall, does midi have a hook for on token delete or similar? I'm trying to update some wild shape stuff to remove the wild shape effect if they drop to 0 hp

vast bane
#

Wildshape is all sorts of messy in midi, I personally do not use core wildshape and warpgate summon the shapes and auto hide the druids token, and I check the general midi setting where she can still use her druid token while its gm hidden for the oddball cases of using druid features in shape form

#

when her shape dies I just unhide the druid token

winter halo
vast bane
winter halo
#

nop is a npc

vast bane
#

I am genuinely stumped, so the overtime does nothing when you advance the turn?

winter halo
#

yes

vast bane
#

does hold person do anything?

winter halo
#

I get the message Abjurer (the npc) is incapacitated" in yellow up on the top part of my screen at the end of its turn and thats it

vast bane
#

oh shit

#

wow that is a hilarious bug

#

that is HILARIOUS

#

lol this is actually going to break a ton of premades

#

Tposney put the wrong option as the default

#

this has probably been broken since midi 37

winter halo
#

I am not sure I can follow 😄

vast bane
#

add this line, before the last one:

allowIncapacitated=true,
#

I think he needs to revisit this setting lol

#

the default is false, apparently, and your overtime is literally incapacitating them

#

several premade items now need to have this added to their overtimes to work

short aurora
#

That's a good catch Moto, it's the setting in Mechanics that's making it act like that, yeah.

#

You can also toggle that off as a solution, but prob worth an issue to tposney to overlook that setting for overtimes?

vast bane
winter halo
#

one moment

vast bane
winter halo
#

10.0.39 I think

vast bane
#

I genuinely think he added the wrong one as the default in overtime

winter halo
#

I test it now. You meant I should add allowIncapacitated=true, before label right?

#

yes that was it

vast bane
#

I'm on the end of the day here so tired but I think overtime right now consideredds the default false, and he needs to reverse it in the next version of midi so that we don't all have to edit a ton of overtimes

vast bane
dark canopy
proper siren
winter halo
#

I feel like I learned a lot today. Once again, you helped me a lot Moto thank you.

short aurora
#

Rolling an overtime with a saving throw(?) is seen as an action/reaction by the setting I posted, so to not be hindered by that rule, it needs allowIncapacitated=true and default seems false.

vast bane
#

thats a good catch it would have totally bonked me tonight for my session

vast bane
dark canopy
vast bane
dark canopy
#

No idea, but there is a hook that fires for the question asked

short aurora
#

You can't even hook.once 'cause it's not like a hook fires from a token or actor, so you have to look through them all and filter down to what fits your wild shape bear

proper siren
vast bane
#
Hooks.on('midi-qol.RollComplete', async workflow => {
    if (workflow.hitTargets.size != 1) return;
    let targetToken = workflow.targets.first();
    if (!targetToken) return;
    let targetActor = targetToken.actor;
    if (!targetActor) return;
    let targetEffect = targetActor.effects.find(eff => eff.label === 'Symbiotic Entity');
    if (!targetEffect) return;
    let tempHP = targetActor.system.attributes.hp.temp;
    if (tempHP != 0) return;
    MidiQOL.socket().executeAsGM("removeEffects", {'actorUuid': targetActor.uuid, effects: [targetEffect.id]});
});
#

only works if the damage to 0 is done via midiqol

#

also oddly I think it only works if shes the only target?

#

obv change the tempHP to hp

#

this is the same concept only for the spores druid version

#

you could probably automate the deletion of the shape too with this hook

proper siren
violet meadow
violet meadow
proper siren
sudden crane
#

I am playing with Destructive Wave automation and I would like your opinion on the expected behavior.
The spell says you choose which creatures are affected by the spell in a 30’ radius around the caster. Apart from a dialog for choosing the damage type, would you also list all the creatures in the 30’ with a checkbox to allow the caster to choose?

#

Select by default those with a different disposition

violet meadow
#

I didn't mean to send that like so 😅

#

But will send something over later

strong yew
#

So for min10 on concentration, there's not really a better option I have than this flag right? flags.midi-qol.min.ability.save.con

#

I know it's Con vs concentration, but I couldn't find anything else that would work here

strong yew
strong yew
#
    let changes = [
        { key: "ATL.light.bright", value: "10", mode: 5, priority: null },
        { key: "ATL.light.dim", value: "20", mode: 5, priority: null },
        { key: "ATL.light.color", value: "#ffffff", mode: 5, priority: null },
        { key: "ATL.light.alpha", value: "0.25", mode: 5, priority: null },
        { key: "ATL.light.animation", value: "{\"type\": \"starlight\", \"speed\": 1,\"intensity\": 3}", mode: 5, priority: null }]

Also, is there a better way for me to do this?

#

Like, could I consolidate this somehow into less effects? Go about it a different way?

scarlet gale
#

Could do it as a mutation on the token I suppose

strong yew
#

Any benefit of doing that over having it in the effect? Or is it just personal preference really?

scarlet gale
#

Not really

#

Just giving another option

#

Since I think you're already doing a mutation

vast bane
scarlet gale
#

Probably a better way to do that

#

But it's not the worst way

vast bane
#

I think you made it for me lol

scarlet gale
#

I think you stole that from my AoA

coarse mesa
#

If I have an item that’s applying an AE to all targets, and I need to update the AE’s duration after the fact using an itemmacro, would this need some socketing for non GMs to work? If so, is there an example of something remotely similar I can copy?

#

(I’m determined to get Psychic Whispers going before our next session) 😓

dark canopy
#

If effecting unowned tokens, yes. Warp gate can help with that as usual

strong yew
#

If so, share it with me if you get it working

coarse mesa
#

Yeah it seems straightforward enough but I’ve never really dabbled in midi macros (or wg for that matter). Just need to roll the psychic die (scale value dice), then apply an AE to all targets with the duration based on the the die roll. Or let the item or CE apply the AEs and just update the duration from the macro 🤷‍♂️

#

If anyone knows of a good midi itemmacro that applies AEs to all targets I can dissect that might get me close enough

coarse mesa
#

It’s an empty AE, purely so everyone can keep track of how long the psychic connection lasts

violet meadow
#

I am out so if no-one helps I will later on 😀

coarse mesa
#

The tricky part is the duration is the same for everyone, otherwise we could just put it in the AE but then it rolls for each application

vast bane
#

So what are we really calling the rewind button, apparently BUTT is not going to stick

strong yew
#

I just finished reworking starry form, I may take a look at it

coarse mesa
coarse mesa
violet meadow
vast bane
#

TUTT?

strong yew
#

Was reworking it to submit for CPR. Also a lot of the code was duplicated unnecessarily

#

Went from like 277 lines to like 93 lol

violet meadow
#

I do not envy what tposney is going through to get it working

coarse mesa
vast bane
#

I should submit Invulnerability to him lol

short aurora
strong yew
#

It uses a psionic die

short aurora
#

.. "or like that", I just woke up. No clue what that would encompass.

coarse mesa
strong yew
#

or whatever the resource is called. Similar to battle master die

coarse mesa
#

It seems built to thwart FVTT

#

I think the Soulknife will get a big rewrite now WotC is making their own VTT. Some of the other features only expend dice if you fail etc… it’s a nightmare

vast bane
#

welp heading into silent mode for my 6 hour session

strong yew
#

I doubt I'll see Stars druid in Dndone

#

Which is sad because it's a great subclass

coarse mesa
#

They’ll make a comeback in a new book for sure

#

Too much money to be made

#

Many of the Tasha’s subclasses are super popular

coarse mesa
violet meadow
#

Psychic whispers right?

coarse mesa
#

I assume I’ll need to make it two items, one a daily and one that uses charges of your die pool 😑

violet meadow
#

🙀 of course not. What are we

coarse mesa
#

Some of us are less janky than others to be sure… I’m quite far across on the janky spectrum

violet meadow
coarse mesa
#

I’ve often wondered how much time is spent in the console in his sessions

#

He’s got me watching the console during sessions now too 😩

short aurora
#

How does Soulknife grab those targets? Is it an AoE or do you stab or multiple select?

violet meadow
#

Oh well I just get rid of the F12 button during live session 😂

short aurora
#

... is it Soul Knife or Soulknife?

#

squint

violet meadow
vast bane
violet meadow
#

Go away and kill that party already

coarse mesa
#

6 hour session… in Moto terms, that’s about ten minutes of elapsed in-game time? 🧐

strong yew
#

To install something from a fork I just need the raw url to the module.json right?

#

I swear I'm braindead after the workweek

violet meadow
#

Otherwise copy paste the code

coarse mesa
#

I need someone to help me figure out how to do a release with the zip file where it should be etc at some stage. For my hacked VAE fork 👀

short aurora
#

@coarse mesa Here's an example to pilfer for your Soul Knife, assuming an on use macro

const psychicDice = await new Roll("1d6").evaluate() // just an example, dunno how yours is stored on the class.
const effectData = {
    label : "Soul Knife",
    icon : "icons/weapons/daggers/dagger-crooked-ice-blue.webp",
    changes: [],
    duration: {
            rounds: psychicDice.total
    }
};

// iterate through all targetted and create an active effect with the effect data above
this.hitTargets.forEach(t => {
    MidiQOL.socket().executeAsGM("createEffects",{actorUuid:t.actor.uuid, effects:[effectData]})
});

// then the same to the actor themselves
await this.actor.createEmbeddedDocuments("ActiveEffect", [effectData]);```
coarse mesa
short aurora
#

Might be you need a property from that object, I don't have one with a dice scale on me right now, but then you can always console.log that scale to check what it got

coarse mesa
#

This is a great start, thanks @short aurora … I’ll just investigate how to massage the die chatmessage a bit and add a description for the AE. Really appreciate the help

#

Of course I’m still 👂 about how Bugbear solves the daily/resource thing

celest bluff
coarse mesa
#

So it’s good to have a reminder who is benefiting

#

Seems like it’s solved anyway 🙂

violet meadow
#

@coarse mesa Soulknife: Psychic Whispers.
MidiQOL item onUse: ItemMacro | All.

Nothing else needed.
If it has a resource or a limited uses, this should not use expend it for the first use per long rest.

const { actor:sourceActor, macroPass, workflow:{applicationTargets,item:sourceItem}, workflow } = args[0];
if (macroPass === "preItemRoll" && !actor.effects.find(eff=>eff.label === `${sourceItem.name} Daily Used`)) {
    workflow.config.consumeUsage = false;
    workflow.config.consumeResource = false;
    workflow.config.needsConfiguration = false;
    workflow.options.configureDialog = false;
    const effectDataLingering = {
        label: `${sourceItem.name} Daily Used`,
        icon: sourceItem.img,
        duration: {},
        origin: sourceItem.uuid,
        flags: {dae:{specialDuration:['longRest']}}
    }
    return await sourceActor.createEmbeddedDocuments("ActiveEffect", [effectDataLingering]);
}
if (macroPass === "postActiveEffects") {
    const psychicDice = await new Roll("@scale.soulknife.psionic-power",args[0].actor.getRollData()).evaluate({async:true})
    const msg = await psychicDice.toMessage({flavor:`Psychic Whispers duration is ${psychicDice.total} hours.`});
    await game.dice3d.waitFor3DAnimationByMessageID(msg.id);
    const effectData = {
        label: sourceItem.name,
        icon: sourceItem.img,
        duration: {seconds: psychicDice.total * 3600},
        origin: sourceItem.uuid
    };
    // iterate through all targetted and create an active effect with the effect data above
    applicationTargets.forEach(t => {
        MidiQOL.socket().executeAsGM("createEffects",{actorUuid:t.actor.uuid, effects:[effectData]})
    });
    await sourceActor.createEmbeddedDocuments("ActiveEffect", [effectData]);
}
coarse mesa
#

We’re playing A House Divided and this ability is super useful with all the intrigue and RP, one of the reasons the rogue went Soulknife

celest bluff
#

You could do the roll also with noDamage

#

then update the effect's duration

#

or modify the item before postActiveEffects

violet meadow
#

Ah needs a small change frack mai tai

celest bluff
#

I technically already have homing strikes written

#

Psychic Teleportation is easy

coarse mesa
celest bluff
coarse mesa
celest bluff
#

I already have skill rolls and saves hooked up to monitor for my Darker Dungeons script

coarse mesa
#

Like seriously whoever wrote the Soulknife hates the WotC standards and/or VTTs

violet meadow
celest bluff
#

I just hooked on to createChatMessage

celest bluff
#

then shit would make more sense with timing and stacking rules

coarse mesa
strong yew
#

I was just thinking in my mind how you were going to handle targeting based on pb

#

I'm an idiot. No need to automate everything

violet meadow
#

You pretarget, but you could trigger a lateTargeting if needed

celest bluff
#

failures - raises stress by 1
successes - lowers stress by 1
fumbles - raises stress by 1d4
criticals - lowers stress by 1d4

strong yew
#

Yeah, just meant to "enforce" the limitation of targets

#

Just my dumb devops brain

#

Don't suppose there's any solution for stuff like Fey Touched or Stars' druid free guiding bolts yet is there?

coarse mesa
strong yew
#

With the free usage + always prepared

#

without having two separate items?

coarse mesa
#

The consume available usage dialog needs an upgrade

#

Next project for Tim? 👀

strong yew
#

One of my players has Fey touched and Shadow touched, and it's a headache every time I have to reimport her

#

only like a minute or two of work

#

but since I'm playing a stars druid soon, also have the same thing going on with the free guiding bolts

coarse mesa
#

Yeah I have a lot of doubled up spells because of this. All the Strixhaven bonus spells too actually

coarse mesa
violet meadow
# strong yew Yeah, just meant to "enforce" the limitation of targets

you can 😄 ```js
if (macroPass === preambleComplete) {
const pb = actor.getRollData().attributes.prof
if (args[0].targets.length > pb) ui.notifications.warn(You bot, target only up to ${pb} creatures);
let result = await Dialog.prompt({title:I said target up to ${pb} creatures, content:"We are all waiting for you...again",label:"I am done!",rejectClose:false});
if (result && game.user.targets.size <= pb) {
ui.notifications.info("You get a cookie for complying");
return true;
}
else {
result = await Dialog.prompt({title:"Unbelievable", content:"Either do or you will fail spectacularly",label:"I am done!",rejectClose:false});
if (result && game.user.targets.size <= pb) {
ui.notifications.info("You dodged a bullet there");
return true;
}
else {
ui.notifications.error("Oh well you just wasted it");
return false;
}
}
}

strong yew
#

lol

coarse mesa
#

That needs to be a midi PR

strong yew
#

similar to FFXIV astrologian if you're familiar/play

coarse mesa
#

That is cool. There’s a lot of redundant overlap with rangers and druids but I wasn’t going full munchkin. My go to attack is a Shillelagh booming blade tho 👀

strong yew
#

I don't see that option on the card

violet meadow
#

Scroll down, there are too many nowadays

strong yew
#

lmfao

#

I didn't realize there was a scroll

#

It has been a long week

#

Actually went Light cleric 1/Stars druid the rest

coarse mesa
strong yew
#

I like the flare ability for disadvantage

#

and cleric gives me like a ton more spells I can prepare and just basically keep that in place for rituals and other must haves

violet meadow
#

Essentially something like this ```js
const { actor:sourceActor, macroPass, workflow:{item:sourceItem}, workflow } = args[0];
const effectName = ${sourceItem.name}: used the free one; //change to what you want

if (macroPass === "preItemRoll" && !actor.effects.find(eff=>eff.label === effectName)) {
workflow.config.consumeSpellSlot = false;
workflow.config.consumeSpellLevel = false; //I never remember which one is needed, but put them all :D
workflow.config.needsConfiguration = false;
workflow.options.configureDialog = false;
const effectDataLingering = {
label: effectName,
icon: sourceItem.img,
duration: {},
origin: sourceItem.uuid,
flags: {dae:{specialDuration:['longRest']}}
}
return await sourceActor.createEmbeddedDocuments("ActiveEffect", [effectDataLingering]);
}

coarse mesa
#

OTOH @strong yew I do use Hotbar Uses module and having two spells in the hotbar means I can easily see where I’m at with dailies and spell slots 🤔

#

Your Starry Form top right btw ✨

strong yew
#

Ah, interesting

#

I can't seem to get the scaling right for psionic whispers

#

this happened with my way of the dragon stuff too for my monk. It works sometimes and other times it fails at retrieving it

#

Also sometimes for my ranger

violet meadow
#

I wonder if it has to do with token selected or not.

const psychicDice = await new Roll("@scale.rogue.soulknife-dice",args[0].actor.getRollData()).evaluate({async:true})
strong yew
#

@scale.soulknife.psionic-power works as a damage roll or even if i /r @scale.soulknife.psionic-power logged in on the user

#

Logged in as the user and it's still just rolling 0 each time

#

But scaling seems to be otherwise set up

coarse mesa
#

Reminds me of an earlier issue about the auto filled scale levels and it’s better to fill all the levels manually 🤔

strong yew
#

Thank you. That's actually awesome to have this available. Have a Soul Knife in the party

sudden crane
coarse mesa
frail osprey
#

Hey there, sorry to call you from such an old post, but did you, by any chance, manage to fully automate any of the Astral Monk's features? If so, would you be so kind as to share them?

hasty jackal
#

i know this isnt midiqol related but how can i use the warpgate macro for dancing lights?

frail osprey
#

jb2a already has a dancing lights macro for free, and it's practically a must have module if you want any sort of animation

#

unless you're talking about a macro to summon dancing lights, that's way trickier

coarse mesa
#

If you steer me to the macro I can confirm for you

hasty jackal
#

yeah i found the jb2a

#

thanks

#

await warpgate.spawn('Dancing Lights', {}, {}, {duplicates: 4});