#MidiQOL

1 messages ยท Page 84 of 1

short aurora
#

null, fear incarnate

vast bane
#

I could use the neutral, Some Bloke

strong yew
#

Odd. Deleted the character, and reimported fully and still getting the error

scarlet gale
#

I should be able to point out the problematic one(s)

strong yew
#

I think the only thing this one has is the blade flourishes

scarlet gale
#

Also make sure you don't have an old version of my stuff in your ddb overrides

broken wolf
#

damn this hp randomizer has same issue as token, cant seem to change the range for the dice rolls

strong yew
#

Didn't even think of that

#

Thanks I'll try that out

scarlet gale
#

Blade flourish has an actor on use macro. If the effect doesn't have function.await chrisPremades that would be the reason

#

I removed the need to have any world macros

violet meadow
#

@scarlet gale do you remember if DDB hat a fully fledged arcane hand aka Bigby's whatever?

short aurora
#

I seem to be permanently changing the item's DC with this.item.system.save.dc, do I just misunderstand how updating the workflow works?

#

I thought workflow changes were just for that workflow?

violet meadow
#

Some times it happens

#

I have seen that too

short aurora
#

it was too easy wail

scarlet gale
#

At most it's client side

dark canopy
#

when midi is involved, and the user cannot isolate a module's functions/operations from midi, yea, we basically have to punt here...

scarlet gale
#

Just store the value and change it back after

short aurora
#

It does not seem to be client side, the rolls are showing the new DC

violet meadow
#

Reload?

scarlet gale
#

Clients run their own workflows

vast bane
#

the CUB hp rolling is throwing a deprecation error...:

scarlet gale
#

Reload and it'll revert

dark canopy
vast bane
#

how does a deprecation v8 somehow still work in v10?>

broken wolf
scarlet gale
#

Hasn't been removed yet

vast bane
#

oh removed in v10 duh sorry

short aurora
#

That's no good. Since I want to intercept the workflow Before Save, how do I restore it? ... Just another On Use Macro? lol

#

It's pretty realistic the item will be rolled several times during a session so a reload each time is meh

vast bane
#

Today this channel feels like black friday lol

scarlet gale
#

Post active effects

scarlet gale
short aurora
#

Right, one big ItemMacro that checks on macroPass it is

vast bane
#

I got off 3 hours ago muahahaha

broken wolf
vast bane
#

Done jack s*** for prep today thanks to you all 8)

scarlet gale
#

Anyone here have a setup on .33 or .34 of midi? Could you see if having a passive effect and active effect on something clears them both when the active effect gets removed?

#

And if you have something that makes an effect on in the macro and has the origin set to the uuid of the item it, does midi remove the passive as well?

fringe crag
#

Bugbear did you have time to look into the metamagic sample item?

short aurora
short aurora
#

Then yes, works fine

stuck eagle
#

Any idea how I can give a Magic Resistance effect to the master of an Imp familiar?

scarlet gale
#

Hmm

stuck eagle
#

It's only effective when the two are within 10 feet of each other.

#

"The imp can serve another creature as a familiar, forming a telepathic bond with its willing master. While the two are bonded, the master can sense what the imp senses as long as they are within 1 mile of each other. While the imp is within 10 feet of its master, the master shares the imp's Magic Resistance trait. At any time and for any reason, the imp can end its service as a familiar, ending the telepathic bond."

scarlet gale
#

Maybe an active aura of magical resistance can be evaluated

vast bane
scarlet gale
#

Or just a find nearby evaluation actually

vast bane
#

yeah an evaluation using their names

#

if they ever polymorph it'll break

scarlet gale
#

Actor ID better

vast bane
#

core polymorph changes to another actor entirely

scarlet gale
#

not likely to happen too often ยฏ_(ใƒ„)_/ยฏ

vast bane
#

true, question is, what would the evaluation look like

scarlet gale
#

A findNearby that matches the target id

#

Similar to the pact tactics one

vast bane
#

oh oh oh

#

thats wiki link

fringe crag
#

moto or chris, do you know how to fix the sample metamagic: twin spell from midi?

scarlet gale
#

Removing target limits from their spells is my solution

#

I haven't looked at the sample items

vast bane
#

bugbear and badger would be so proud of me lol

vast bane
fringe crag
#

Problem is, that it always only costs 1 sorcery point no matter what spell i cast and there are spells that I can cast with it like magic missiles which i should not and some like chaos bolt that I cant

vast bane
#

I never have a target count in anything nowadays

scarlet gale
#

There is a reason nobody has really tried to automate it

#

It's a bit complicated

fringe crag
#

no im in v10 and only roll thing is dice so nice

vast bane
#

I'd handle it manually by removing target counts from all the sorcs spells

fringe crag
#

alright, hoped its an easy fix

vast bane
#

if its an attack roll, in v10 he added seperate rolls for each target option somewhere in midi

fringe crag
#

yea I found that option already. Will use that then

wraith spade
#

I am lost. Trying to get an monster attack to apply a 10 ft movement decrease onto the target. thought i can do it with dae but I am not seeing how I can apply this effect to the target

vast bane
#

oh wait...that might be my own making...

vast bane
#

the first tab of the dae must have no boxes checked, the effect tab of the dae must have a movement speed key and a value of their current movement - 10

#

probably as a downgrade

#

ray of frost in dfreds ce is premade and comes with the module, duplicate it and plagerize it

#

or drag it to the actors ability that does it and rename the ae

wraith spade
#

ok, have that. also the movement (it is custom -10)

vast bane
#

the item that applies this ae, must have its range/target setup properly to apply the ae to the target

#

(and you must have effect transfer on in midiqol, its in the workflow tab and in a "special" category)

wraith spade
#

thx will try that

vast bane
#

also the other movement keys may not take the same ae drop down/values

#

some might need an evaluation of something like (@attributes.movement.walk - 10)

#

guessing at the movement code

wraith spade
#

It is working, thank you very much.

strong yew
#

yo @scarlet gale I'm still actually getting the error on Radiant Soul for Aasimar on the newest version

scarlet gale
#

The one use error?

#

Edit the effect and screenshot it

strong yew
#

Sure, let me just try to actually reimport the char first

#

Complicated edits I have to do after, but I should make sure it's not something else also

#

Yep, must've actually been a different item then. Sorry for the false alarm

#

Unrelated, but did anything happen recently that affects postdamagerolls?

#

Seems like my favored foe and hex broke

scarlet gale
#

My hex or a different one?

violet meadow
#

( if it was mine I just fixed after some bug reports ๐Ÿ˜„ )

But if they have onUpdateTarget/onUpdateSource DAE flags, on the latest DAE, they will be broken

strong yew
#

I reverted back to .23

scarlet gale
#

For DAE?

strong yew
#

yeah .23 for DAE

strong yew
#

So favored foe scales based on @scale.ranger.favored-foe

#

That's coming up as undefined. Though I was wrong on Hex, that's just straight not rolling anything

violet meadow
#

Check the scale value

strong yew
#

Yeah it just comes up as 0 for some reason

violet meadow
#

I think dnd beyond changes the scale values sometimes

#

compared to the Dnd5e compendium ones

#

At least I have seen some reports ๐Ÿคท

quiet solar
#

Moto pointed me here (intentionally not invoking his Great And Powerful Name as a summons) regarding custom (physical)weaponProperties and corresponding vulnerabilities in 5e - I just tested it against a MOB with vulnerability to Iron set and a weapon with Iron set and it is not doubling the damage

#

is there a way to 'register' this change with midi somehow or are the automations for this sort of thing hard-coded?

violet meadow
#

DamageTypes will be picked up if you have resistance/vulnerability/immunity to them

solid mountain
#

Is there a way to apply an active effect (I assume via active aura) but only to one specific token?

#

i.e. "If token x is within 10ft of token y, apply effect"

vast bane
#

in the pins pack tactics

violet meadow
#

Automatically? Active Auras and macros

#

If you roll a feature yeah, as Moto said

#

Activation conditions help with that

#

If it's passive you would need an Aura

vast bane
#

aura can probably utilize midi evaluations in the boolean flags yeah?

violet meadow
#

Haven't tried and a couple more ๐Ÿบ s than what would allow me to think now ๐Ÿ˜„

solid mountain
#

Hmm... maybe.

#

it's not really a target or something though.

#

And yes, it's passive.

violet meadow
#

oh I have shared an emboldening bond thingy here

quiet solar
violet meadow
#

Cause from the screenshot you have Iron as a ~~resistance ~~ vulnerability ticked and then property and bypass is Iron too

#

If you choose radiant for instance as a resistance, and Iron as a bypass, then a weapon with Iron as property will bypass that. Does this work?

violet meadow
#

What is the effect though?

#

Might be doable with conditionals on a flag

solid mountain
#

It' a familar. If it is within 10ft of its owner. The owner gets magic resitance.

#

(advantage to resist spells)

violet meadow
#

AH that is doable

#

Oh saves ๐Ÿ˜ฉ

solid mountain
#

๐Ÿ™ƒ

violet meadow
#

Needs a small update in MidiQOL, hopefully tposney will include it soon

#

Then you could give advantage based on conditions.

scarlet gale
#

Can't you do a findNearby evaluation?

violet meadow
#

not on saves

scarlet gale
#

Oh rip

violet meadow
#

Or do I misremember this?

solid mountain
#

1. I need to figure out a way to give advantage to resist spells and magical effects in an DAE.
2. I need to then find a way to apply that effect passively to the character, but only if his familiar is within 10ft.

violet meadow
#

wait a minute ๐Ÿค”

scarlet gale
#

It's a boolean flag...

solid mountain
#

flags.midi-qol.magicResistance.all

#

I can't find a way to apply an aura on only one person though.

scarlet gale
#

Assuming an evaluation works, it should be on player

solid mountain
#

How would such an evaluation look?

#

findNearby(-1, [something], 5, {}).length > 1

scarlet gale
#

Not at PC to actually give it a go

#

Not quite that

#

When I'm home later tonight I can test my idea and see if it actually works

solid mountain
#

Cool, if you get the time.

violet meadow
#

but [something] should be either tokenUuid or targetUuid

#

-1 is for Hostile creatures

scarlet gale
#

Token uuid then look for a specific target uuid

#

Should be friendly presumably

violet meadow
#

no I mean just targetUuid

#

will get the findNearby around the target

#

on a conditional

scarlet gale
#

One of us will get back to you lol

solid mountain
#

You know you posted an interesting question when the intelligent people starts pondering it.

violet meadow
#

saves will not evaluate conditions yet

scarlet gale
#

Seems like it will have to be more complicated then

violet meadow
#

I remember something for concentration checks though and now I am confused ๐Ÿค”

#

here we go

#

so findNearby is a special conditional

#

it should be working on saves

#

Now I need to test some more things when I go back home

vast bane
#

macro.createItem magic resistance item that has an effect macro that deletes the item if your name is not Mr. Master

#

active aura

#

on effect creation, If origin is owned by Mr. Familiar Master, return. If not then yeet the item

#

and you do not need an active effect for this, Midiqol detects items named Magic Resistance, the key is for situational resistances

violet meadow
#

No need for effect macro any more.
You can use macro.createItemMacro

#

So run a macro after the item is created ๐Ÿ˜…

vast bane
#

EM has documentation that help

snow quarry
#

Does anyone know how to add Prof bonus for a specific tool in the "other formula" section of an item, if possible?

Aka, theives tools- you ONLY get that prof bonus if you have prof in the tool

violet meadow
#

Other than that give me a moment to go to my PC

#

Activation condition of traits.toolProf.value.has("thief")

vast bane
#

99% of all my tool checks are handled in MTB cause its always impossible to find how to roll them lol

snow quarry
#

i wonder if its possible to change this message. what is mtb?

#

and i think ill use a tool, ive given up with other methods

vast bane
snow quarry
#

ah, monks token bar- i do have that. my application is very niche unforunately

vast bane
#

I have a multiselect so I think the blue ones mean only those specific actors who have them get requested

snow quarry
#

mine lacks the tool portion- likely a SW5e issue

violet meadow
snow quarry
#

Ah gotcha. thanks!

violet meadow
#

(at least for 5e ๐Ÿคท )

hollow tundra
#

Anyone have any way to fix piercer and sneak attack?

#

if i choose to use piercer, there is no prompt for sneak attack

scarlet gale
#

Where did you source your automation?

hollow tundra
#

uh i got piercer from more automated feats

#

and sneak attack from midi qol

violet meadow
#

I forgot to explicitly state that the Item should also be named Sneak Attack you change the sample item's effect to be ItemMacro.Sneak Attack.
It is noted in the Item's description, but it can be missed.

crimson mortar
vast bane
#

or your actor doesn't have "ranger" as a class identifier, very common with importer modules

crimson mortar
#

it says v10 in the description at the top? And I added this to a character that used the SRD ranger that comes with the 5e ruleset

stuck eagle
#

Did you ever get a macro for making all melee weapons have a range of 8 feet?

#

Diagonal melee attacks would be great to keep working.

#

I don't know if there's a setting to just disable range checking altogether.

molten solar
kind cape
#

DF flag editor

queen raptor
#

Am I doing something wrong here? This attack rolled a 19; with the flag, it should have been a critical hit, right?

scarlet gale
#

Is this on the person doing the attack or the person getting hit?

#

Because you're using the grants flag

queen raptor
#

That would do it, huh? >.>

#

Thank you lmao

#

Switched some things around and flags.dnd5e.spellCriticalThreshold / flags.dnd5e.weaponCriticalThreshold work as intended; I think maybe they weren't initially set to override in the macro I copied.

buoyant minnow
#

my dear, is there any way for my player to select the nested effect (DF effects) he wants after rolling a feature? So far I can only select the nested effect if I add it through DF effects, without the option to automatically add it through the midi when I click on the feature.

scarlet gale
#

It was mentioned before as something that will get looked at

short aurora
molten solar
#

I did.

#

Interesting.
... may absorb.

finite musk
#

heyo guys, can someone help me here with the question: "how do i make a player heal when he deals damage with a weapon?"

short aurora
finite musk
#

he has a sword that deals 1d8 slashing damage and 2d6 necrotic damage and he wants to be healed by the amount of necrotic damage he dealt to the enemy

#

is that possible?

#

oh and this is for D&D 5E

vast bane
finite musk
vast bane
#

Sources of premade stuff for Midiqol:

Midi Sample Items Compendium(comes with the module)

Midi SRD's compendiums(this is the manual install link)
https://raw.githubusercontent.com/thatlonelybugbear/midi-srd/master/module.json

More Automated Spells Items and Features compendiums
https://foundryvtt.com/packages/more-automated-spells-items-and-feats

Mr.Primates premade macros:
https://github.com/MrPrimate/ddb-importer/tree/main/macros

Chris' Premade macros:
https://github.com/chrisk123999/foundry-macros

Chris' Module form of his macros:
https://foundryvtt.com/packages/chris-premades

Activation condition examples by ThatLonelyBugbear
https://github.com/thatlonelybugbear/FoundryMacros/wiki/MidiQOL-activation-conditions-examples

finite musk
#

thanks!

#

time to read

short aurora
#

Anyone happen to know how to roll a tool and then capture the result with midi? The outputs I'm getting when logging, I can't seem to find the actual result anywhere

short aurora
# finite musk he has a sword that deals 1d8 slashing damage and 2d6 necrotic damage and he wan...
const necroticDamagePart = args[0].damageDetail.find(d => d.type == "necrotic");
const workflowTarget = new Set([args[0].workflow.token.document])
await MidiQOL.applyTokenDamage(
    [
        {
            damage: necroticDamagePart.damage,
            type: "healing"
        }
    ],
    necroticDamagePart.damage,
    workflowTarget,
    null,
    null
);```

Try this as a macro run by the sword After Active Effects. Shout out to Chris whose helper function I destroyed to figure out how to do the midi qol workflow proper. >_>
finite musk
#

holy moly

#

that's amazing

#

thank you

vast bane
short aurora
#

Worth noting I expect it to act funky, if you add another necrotic damage source on top of it, now I realize

#

so ban him from ever using any

#

or her or them

scarlet gale
#

Unless I'm crazy, won't that top part only find the first necrotic damage?

short aurora
#

You are not crazy, they are never allowed another source of necrotic damage ever

#

It's a new rule

scarlet gale
#

lol

short aurora
scarlet gale
#

I've since upgraded mine, the module macro for it takes a few more things into account now

short aurora
#

I wonder what the proper way is, do you just hard code the necrotic damage part? I assume midi doesn't push bonusses to the "front" of the array to shuffle the elements around?

scarlet gale
#

I loop over the whole damage detail and count it myself

finite musk
#

me too dumb to understand

short aurora
# finite musk me too dumb to understand
if (this.hitTargets.size != 1) return;
const necroticDamagePart = args[0].damageDetail[1].damage;
const workflowTarget = new Set([args[0].workflow.token.document])
await MidiQOL.applyTokenDamage(
    [
        {
            damage: necroticDamagePart,
            type: "healing"
        }
    ],
    necroticDamagePart,
    workflowTarget,
    null,
    null
);```
Make the lifestealing item's second damage formula the necrotic part and this should work forever and ever, like this picture. My original code was looking for any Necrotic damage in all of the damages done by the weapon, which means it would break if you ever used a spell or something that added Necrotic damage.
scarlet gale
#

depending on how it's worded, you might want to include extra sources of necrotic damage

#

Might not specify that the damage has to be from the weapon

short aurora
#

Chris how roll tool with midi and capture result without using another module

scarlet gale
#

like run a macro when a tool is used?

short aurora
#

Yeah, I can't find the result in workflow

scarlet gale
#

does it make a workflow?

#

let me take a look, I've yet to ever have the need

short aurora
#

It do output one to my console with

const ThievesTool = await fromUuid("Actor.WngEtUaYSwXIwNLx.Item.qg7r4WqCCRRBoI7k");
const results = await ThievesTool.use();
console.log(results);```
#

I was gonna make loot boxes, but need that result

scarlet gale
#

Looks like midi doesn't collect the total from a tool roll

#

so you'll want to do the core way to roll a tool check

#

if such a thing even exists

short aurora
#

I am a painguin

#

thanks tho, I think core is just use but that doesn't actually roll the item, will check

queen raptor
#

So I'm trying to set up Searing Smite using this macro (found earlier in this thread):

// Card settings - Target & range: Self
// DAE settings - [1] flags.dnd5e.DamageBonusMacro / Custom / ItemMacro.Searing Smite [2] flags.midi-qol.brandingSmite.level / Override / @item.level


if (!["mwak","rwak"].includes(args[0].item.data.actionType)) return {}; 
if (args[0].hitTargetUuids.length === 0) return {}; 

let selected = await MidiQOL.MQfromActorUuid(args[0].actorUuid); 
let DC = selected.data.data.attributes.spelldc;

for (let tokenUuid of args[0].hitTargetUuids) {
    const target = await fromUuid(tokenUuid);
    const targetActor = target.actor;
  
         const effectData = {
        label: "Searing Smite", 
        icon: "icons/skills/melee/strike-sword-steel-yellow.webp",
        changes: [
          {key: "flags.midi-qol.OverTime", mode: 0, value: `"turn=start,saveAbility=con,saveDC=${DC},damageRoll=1d6,damageType=fire,label=Searing Smite" `, priority: 20}, 
                ],
  
        origin: "Searing Smite", 
        disabled: false,
        icon: "icons/skills/melee/strike-sword-steel-yellow.webp",
        label: "Searing Smite"
      }
      await MidiQOL.socket().executeAsGM("createEffects", { actorUuid: targetActor.uuid, effects: [effectData] });
      await ChatMessage.create({content: `${target.name} is set on fire and begins to burn!`});
} 
Hooks.once("midi-qol.RollComplete", (workflow) => {
    console.log("Deleting concentration")
    const effect = MidiQOL.getConcentrationEffect(actor);
    if (effect) effect.delete();
    return true;
})

const spellLevel = actor.data.flags["midi-qol"].brandingSmite.level;
return{damageRoll: `${spellLevel}d6[fire]`, flavor: "Searing Smite"}```

It works - to a point. The Paladin casting the spell gets the effect with the extra damage, which applies correctly when they hit. But then concentration ends immediately, and the OverTime effect that is transferred to the target disappears with it. How can I change this up so that the OverTime effect sticks on the target but the bonus damage effect is deleted correctly from the Paladin?
#

Obviously I see there's a line about deleting concentration; how would I go about modifying that to deleting specifically the Searing Smite effect but leaving concentration intact for the DOT?

scarlet gale
#

You'll also need to make your own chat message when you do it this way

short aurora
#

Dope, appreciated

finite musk
scarlet gale
#

I missed the actual context

finite musk
#

the player at my table wants his weapon to heal him when he deals damage with the sword

#

but only a part of the damage (2d6 necrotic damage(

short aurora
#

I presumably have just overassumed your installed modules.

finite musk
scarlet gale
#

Just to confirm, you're using midi right

finite musk
#

yeap

#

btw i love the changing seasons for my eladrin

#

it's working on the misty step

#

aaaaaaaaa i'm freaking out

#

๐Ÿฅณ

#

and the fey ancestry is working too

#

everything is so automatic

short aurora
scarlet gale
#
let chris = {
    'checkTrait': function _checkTrait(actor, type, trait) {
        return actor.system.traits[type].value.has(trait);
    }
    'totalDamageType': function _totalDamageType(actor, damageDetail, type) {
        let total = 0;
        let immune = chris.checkTrait(actor, 'di', type);
        if (immune) return 0;
        for (let i of damageDetail) {
            if (i.type.toLowerCase() === type.toLowerCase()) total += i.damage;
        }
        let resistant = chris.checkTrait(actor, 'dr', type);
        if (resistant) total = math.floor(total / 2);
        return total;
    },
    'applyDamage': async function _applyDamage(tokenList, damageValue, damageType) {
        let targets;
        if (Array.isArray(tokenList)) {
            targets = new Set(tokenList);
        } else {
            targets = new Set([tokenList]);
        }
        await MidiQOL.applyTokenDamage(
            [
                {
                    damage: damageValue,
                    type: damageType
                }
            ],
            damageValue,
            targets,
            null,
            null
        );
    }
}
if (this.hitTargets.size != 1) return;
let damage = chris.totalDamageType(this.targets.first().actor, this.damageDetail, 'necrotic');
if (!damage) return;
await chris.applyDamage([this.token], damage, 'healing');```
Untested
#

But should work

#

If you're using my module it can be mega condensed

finite musk
#

hol ymoly

#

where do i put all of this? inside the "item macro"?

scarlet gale
#

Yep

finite musk
scarlet gale
#

It seems like you're using my module, so I can shorten that for you

#

if you want

finite musk
#

yes i am

scarlet gale
#
if (this.hitTargets.size != 1) return;
let damage = chrisPremades.helpers.totalDamageType(this.targets.first().actor, this.damageDetail, 'necrotic');
if (!damage) return;
await chrisPremades.helpers.applyDamage([this.token], damage, 'healing');```
#

ta-da

finite musk
short aurora
#

Right, I spot the issue

scarlet gale
#

yea

finite musk
#

omg

scarlet gale
#

change the on use part to ItemMacro

finite musk
#

๐Ÿคฃ

scarlet gale
#

then actually put the macro in the item macro from the title bar button

#

also, change the timing to be after active effects

#

you want something like this to run as late as possible

finite musk
#

like this?

scarlet gale
#

looks right

finite musk
#

geez everything looks so bad in this picture

scarlet gale
#

there is a module to make the macro dialog less bad

#

but if you just copy and paste it should be fine

finite musk
#

HOLY MOLY

#

IT WORKED

#

DUDE

#

THIS IS MAGIC

scarlet gale
#

*javascript

finite musk
#

๐Ÿคฉ ๐Ÿง™

#

this is so badass

#

thanks guys

short aurora
scarlet gale
#

it totals it taking into account resistances

finite musk
#

it's working perfectly

#

thank you guys again

short aurora
#

Hmm, makes me realize how much of a pita coding for actual damage dealt is

scarlet gale
#

Hence why I slapped it into a helper function

#

so I never have to look at it again

short aurora
#

Even that one has niche cases that circumvent it, right? Reaction stuff like Fighting Style: Intervention. Pouring through midi to see if it's possible to just straight up snatch the damage that's actually applied, would save a lotta heartache.

scarlet gale
#

if you just want the total

#

you can just look at the appliedDamage

#

but in this case I wanted specifically the total necrotic damage dealt

short aurora
#

Yeah, I can only think of Vampiric Touch as an example, so of course you'd want that

scarlet gale
#

Undead Fortitude, Vampiric Bite, Proboscis (monster feature), and Vampiric Touch all had a need for this.

violet meadow
violet meadow
violet meadow
#

Did you find a solution?

snow quarry
#

Good morning all- its me! Again! ๐Ÿ˜‚

Just wondering what would be the best way to handle adding a condition that lasts UNTIL the end of the caster's next turn.

in this example, the target becomes 'shocked' if hit until the end of the casters next turn. I was hoping to automate this

vocal umbra
fringe crag
violet meadow
#

Seems to be working

#

What was the actual issue, I might be missing something

#

OK I found your comment

#

let me check

unborn cloud
#

hey guys I've been bogged down in some settings and think I've missed something crucial. How do I make a condition apply to a target automatically after failing a save? I've got DAE, MIDI and all that jazz I just can't find what I'm looking for

fringe crag
#

The issue is, that spells like toll the dead should not work. It's a target 1 enemy spell duplicator and it always costs 1 Point even when it should cost the points equal to spell level AND it let's me do magic missile what shouldn't work but not chaos bolt what should work.

fringe crag
violet meadow
fringe crag
#

Remove that. Toll the dead is fine. I were confused about attack and Saving throw spells

unborn cloud
fringe crag
#

But magic missile, scorching Ray. Etc works on my sheet what should not work. But chaos bolt even prepared doesn't show up in the prompt. And a second or third level spell only costs one sorcery point

fringe crag
unborn cloud
#

As in all my automation works fine for the saving throw process, I just don't know how to make a condition such as prone apply to a target if they fail a save

#

For example, when my players are hit with this wing attack, they will be prompted for the Dex save and should they fail, they take the damage. What I don't know how to do is make them prone automatically if they fail

violet meadow
fringe crag
kind cape
short aurora
violet meadow
short aurora
#

Ah, if this is from the srd compendium, I now see effects are left entirely empty. ๐Ÿ˜„ @unborn cloud do you use DFred's Convenient Effects or anything else that has effects "prepared" for you?

unborn cloud
#

I have Dfreds yes

fringe crag
unborn cloud
#

Can I apply CE automatically from scratch?

short aurora
#

Doesn't work with nested effects like enlarge/reduce

unborn cloud
#

Is that it? Of course it's that simple haha, thank you Krigs

#

As for removal after a certain duration, Times Up should do that but it doesn't appear to be working :/

short aurora
#

Can you show what effect you've got an issue with for this? It might just be a missing duration field, I'm not sure how well feature duration and effects natively relate, if at all

violet meadow
grizzled widget
#

Hello, folks, I'm trying to create a reaction to grant damage resistance to the attack or effect that dealt damage, but for some reason, once adding the DR traits, the token isn't taking any damage at all.

twin drum
short aurora
twin drum
#

๐Ÿ‘

#

up til now I've been having a invisible (ie no image) effect call up a CE macro to add the CE effects

#

eg Charm Person effect that lasts for X seconds and adds the Charm condition

short aurora
#

Not a bad solve considering :p think macro.CE is for doing its' own effect but also apply something from CE normally so they're linked

twin drum
#

yeah its very much adding a middle man when its not nessecary, but was smoother than having to duplicate the conditions in every spell/feature

kind cape
grizzled widget
kind cape
#

Hmm, that sounds odd

short aurora
violet meadow
#

Damn, delete the console.log(args) up top.

Actually delete 4-5 more of the forgotten console.logs

edit 2: Also now it's safe to use Hooks.once, instead of Hooks.on

short aurora
#

And it's supposed to effectively halve the received damage from the triggering attack or give resistance to everything for next time?

grizzled widget
#

Yeah, it's supposed to half damage on the triggering attack or source, the stop.

violet meadow
#

hmm wiat misread that ๐Ÿ˜„

violet meadow
#

You have target Self already

#

Use flags.midi-qol.uncanny-dodge | Override | 1

#

This is it essentially, no?

grizzled widget
#

Hmm, I updated Midi and DAE and now it's working ๐Ÿ™ƒ

violet meadow
#

Is the Effect supposed to end when the Reaction is completed?

#

Better use 1 Reaction: Expires blah blah blah if so in the Special Duration

grizzled widget
#

I was using 1 Reaction expiration before but noticed that the effect applied then dropped before damage was dealt.

violet meadow
#

Strange. Maybe due to specific settings? ๐Ÿคท

grizzled widget
#

Who knows, haha. It's working, that's the important part. Thanks!

quiet solar
violet meadow
#

Not a property of the Item AFAIK

solid mountain
violet meadow
solid mountain
#

Exactly!

#

Within 10ft

quiet solar
# violet meadow

ok - I guess I misunderstood the rule. I looked it up and eg silver/adamantine can only bypass resistances/immunities there's nothing specifically vulnerable to them

#

it seems like it could be pretty easily scripted into an item macro though

#

thank you

fringe crag
violet meadow
#

@solid mountain I got you!

ARE YOU READY?

Better Must have one of each Actor on the sidebar and their Tokens on the scene.

On the Master of the Familiar, create a DAE with
key: flags.midi-qol.advantage.ability.save.all,
mode: Custom,
value: ```js
findNearby(null, canvas.tokens.placeables.find(t=>t.actor.id === game.actors.getName("Unique name of the Master Actor").id), 10).some(t=>t.actor.id === game.actor.getName("Unique name of the Familiar Actor").id)

#

Or hardcode the Actor IDs in the check

#

It's not RAW probably as it will give all saves advantage, but baby steps

solid mountain
#

Omg. Cool!

#

Canโ€™t we just switch the key to magic resistance?

violet meadow
#

Nope

#

Unfortunately that will need some changes to MidiQOL

#

But not that difficult. Let me test it

#

In the meantime, does it work for you?

inner mulch
#

for overtime, can we give the player choice of save type? like dex or str save?

snow quarry
#

Hello again geniuses! I am wondering what would be the best approach to making an interactiable OBJECT on the battlefeild, which disapears after being touched & its effect going off.

Specifically, it is a spell that puts a medkit on the ground

violet meadow
snow quarry
#

so instead of making the spell do all that and driving myself insane, i just want to make the item that the palyer can drag over

violet meadow
#

No idea how ItemPiles API works though, so you will need to ask around in #dnd5e or #macro-polo for that part

snow quarry
fringe crag
violet meadow
#

You don't have to, try it as is

#

otherwise, by deleting I mean get rid of the whole line console.log(args) etcv

fringe crag
#

it calculates the cost correctly but doesnt roll the attacks anymore

violet meadow
#

any errors?

violet meadow
#

now what my changes might break... stress

fringe crag
#

no error

tepid dock
#

@violet meadow Hey bud, sorry to bother you. Yesterday you wrote me a small macro snippet to heal the amount dealt to any nearby allies within 30 feet. The code is below, but I can't seem to get it working today. I thought I saw Midi updated today so maybe that did something but if you had a sec to see whats up that would be cool.

const targets = MidiQOL.findNearby(1, args[0].actorUuid, 30, {includeIncapacitated:true})
if (!targets.length) return ui.notifications.info("No allies in range to heal");
const damage = args[0].damageList[0].totalDamage;
await MidiQOL.applyTokenDamage([{damage, type:"healing"}],damage, new Set(targets), {},{})```
quiet solar
solid mountain
#

Cause as you said, for me it only works with all saves ๐Ÿ™‚

#

Or did you actually change DAE? ๐Ÿ™‚

violet meadow
#

If you feel confident make the changes locally and test them ๐Ÿ˜„

violet meadow
tepid dock
# violet meadow Any errors?

utils.js:2173 Uncaught (in promise) Error: undefined. find nearby token is not of type token or the token uuid is invalid
[Detected 1 package: midi-qol]
at Object.findNearby (utils.js:2173:9)
at eval (eval at callMacro (workflow.js:1669:15), <anonymous>:4:27)
at Workflow.eval (eval at callMacro (workflow.js:1669:15), <anonymous>:8:4)
at Workflow.callMacro (workflow.js:1670:14)
at Workflow.callMacros (workflow.js:1557:21)
at Workflow._next (workflow.js:934:18)
at async Workflow.next (workflow.js:262:10)
at async Workflow.next (workflow.js:262:10)
at async Workflow.next (workflow.js:262:10)
at async Workflow.next (workflow.js:262:10)
at async Workflow.next (workflow.js:262:10)
at async Workflow.next (workflow.js:262:10)

violet meadow
# fringe crag

Change the js if (args[0].macroPass === "postActiveEffects") { to ```js
if (args[0].macroPass === "preambleComplete") {

violet meadow
tepid dock
#
const targets = MidiQOL.findNearby(1, args[0].tokenUuid, 30, {includeIncapacitated:true})
if (!targets.length) return ui.notifications.info("No allies in range to heal");
const damage = args[0].damageList[0].totalDamage;
await MidiQOL.applyTokenDamage([{damage, type:"healing"}],damage, new Set(targets), {},{})```
quiet solar
#

looks like it should be applying

violet meadow
violet meadow
quiet solar
#

vulnerability

violet meadow
#

does it apply resistance correctly?

quiet solar
#

no

violet meadow
#

works for me

#

Try another type

#

like Fire

#

Are you on latest MidiQOL and dnd5e version?

quiet solar
#

I'm not on latest

violet meadow
#

Check for errors in console

quiet solar
#

still on .33

violet meadow
#

Ah it should be fine

quiet solar
#

no errors in console

#

wait

#

the console shows it properly

#

it is applying

#

I'm just a moron

#

the item card shows the full damage

#

but the damagecard shows the reduction

#

How can I delete 30 messages in discord all at once? ๐Ÿ˜›

#

sorry to bug

violet meadow
#

hahaha no worries

violet meadow
#

Is this the one you are using?```js
if(!args[0].damageList[0]?.totalDamage) return ui.notifications.info("You didn't damage anyone");
const targets = MidiQOL.findNearby(1, args[0].tokenUuid, 30, {includeIncapacitated:true})
if (!targets.length) return ui.notifications.info("No allies in range to heal");
const damage = args[0].damageList[0].totalDamage;
await MidiQOL.applyTokenDamage([{damage, type:"healing"}],damage, new Set(targets), null,new Set(),{})

#

@tepid dock the one you shared before was not the latest version from yesterday.
Grab the one from above

violet meadow
#

Got to run though! Buggy bear out ๐Ÿ‘‹

tepid dock
fringe crag
mental mantle
#

I asked this already in #modules, but they redirected me here.
How can i make this work? I'm using DAE and Active Auras to create the Paladin's Aura of Sentinel feature, which adds a bonus to initiative in a 10ft aura, but when I use this, nothing happens.

fringe crag
violet meadow
#

Well it said so in the message before the macro I shared ๐Ÿ˜

fringe crag
#

that's fair

#

thx

violet meadow
quiet solar
#

now that I have sorted out my eyesight issue and clarified damage types vs weapon properties... there is still something wrong with my new 'iron' property:

#

The Iron Dagger has the Iron property and the Silver Dagger has ...wait for it... the Silvered property
The MOB is resistant to non-magical physical damage and both Iron and Silver are checked as overriding that.

Only the silver works

#

does midi need more configuration for this?

#

my DND5E config:

sortObj = obj => Object.keys(obj).sort().reduce((res, key) => (res[key] = obj[key], res), {});

function addIron() {
  CONFIG.DND5E.weaponProperties.irn = "Iron";
  CONFIG.DND5E.weaponProperties = sortObj(CONFIG.DND5E.weaponProperties);
  CONFIG.DND5E.physicalWeaponProperties.irn = "Iron";
  CONFIG.DND5E.physicalWeaponProperties = sortObj(CONFIG.DND5E.physicalWeaponProperties);
  CONFIG.DND5E.damageResistanceTypes.iron = "Iron";
  CONFIG.DND5E.damageResistanceTypes = sortObj(CONFIG.DND5E.damageResistanceTypes);
}

Hooks.once("setup", () => addIron());
#

I'll be removing the damage resistance type setting I think, but that shouldn't be hurting anything as it's not set anyway

inland vortex
#

is there a way to automate spiritual weapon? make it so you can see the weapon, have the player move it, and be able to use it every round from one casting?

quiet solar
#

the one from the MidiQOL Sample Items compendium works well for me - it does require some setup

vast bane
inland vortex
#

thank you. i have those things

snow quarry
#

Can i make an item that scales healing with # of charges used? (like a wand)

vast bane
snow quarry
#

hmmm- sad it has to be janky.

vast bane
#

looks pretty to me

#

It'd be nice if we had a sheet that allowed for collapsing categories but /shrug

quiet solar
#

nevermind - found it

vast bane
#

the reason for that is that midi will never let it be affected by aoe's

#

nor manual targetting

quiet solar
#

Ladle... nice

vast bane
#

the peace cleric is a chef

inland vortex
#

Hey not sure where to go to make the spiritual weapon untargetable. i don't see where the custom is

quiet solar
#

I have a pact of the blade warlock who uses a scythe (reflavored glaive) (I know how you love warlocks, moto) but seeing the Spiritual Weapon Scythe... I now somehow have to find a way to get Spiritual Weapon... maybe multiclass ๐Ÿ˜›

vast bane
inland vortex
#

just saw your pic

#

i think i did make it a player

vast bane
#

players creature type is just the race field you can manually write it in

#

NoTarget

#

pretty sure theres no real difference ultimately between which sheet you use but I think a player sheet has more data fields

#

personally I'd have just used the jb2a actors, they are sittin there ripe for the takin

proper siren
#

Hey yall, got a bit of a weird one. I've got a wild shape barb and I was able to get macros working that both sets and checks the chars rage status and a macro from Crymic that automates wild shape. As part of the rage macro I'm using a convenient effect called 'Rage checking' to remove their rage status if they aren't damaged or don't attack, the effect is removed if they are damaged or attack. The problem I'm running into, is that their wild shape form will revert back to their normal character when the rage checking ce is removed. Any thoughts on what I might look for to fix that?

vast bane
#

I was unaware of any way to automate the attack/isattacked rage rule

proper siren
#

Gotcha, what else do you need?

#

The Rage checking CE uses Special durations of '1 Attack: Expires on the next Spell/Weapon Attack by the character' and 'is Damaged: Expires if the character is damaged'. That works in combination with the Rage CE which uses Effect Macros 'On Effect Creation', 'On Effect Deletion', and 'On Combat Turn Starting' to check whether the Rage checking CE is applied to the actor

vast bane
#

ok, now explain how exactly your barbarian is wildshaping

proper siren
#

Sure, I'm using the Crymic Wild Shape macro. I haven't changed anything on that macro, and it's a little out of my depth how everything works on it, but it's midi based

vast bane
#

but how does a barbarian wildshape, is it a druid/barbarian?

#

my guess is that one of your CE's has an ATL key

#

and the answer to your question will utlimately be, remove that key

proper siren
#

Yeah it's a wildshape barb

#

3 levels barb, 2 wildshape atm

vast bane
#

one of the barbarians active effects that is turning on or turning off has an ATL key that switches the token back to its defaults, remove said key

#

or change the shape changing macro to use an ATL.texture.src key

proper siren
#

Thanks, that was my initial thought, but the Rage checking ce that is being removed doesn't have an atl key

vast bane
#

show us the active effect tab of the barbarian/druid?

#

also TVA has this issue if you have tokenmold installed I think but thats grasping at straws

#

does crymics macro utilize ATL in the macro?

#

also for the sake of sanity, show us the effect tab of the 2 CE's

proper siren
#

sure thing

vast bane
#

do these CE's apply manually or after midi detects a same named item rolling in chat?

proper siren
vast bane
#

If the latter, give us the following version numbers:
dnd5e
foundry vtt
dfreds CE
DAE
Midiqol
socketlib
libwrapper

#

I see an ATL key...

#

which is wrong btw

proper siren
#

ah, yeah the rage ce has atl

#

rage checking does not

#

which is the one being modified

vast bane
proper siren
#

oh cool good to know ty

vast bane
#

the apply active effect button in chat is very alarming

#

you either are crossing the streams, or you have midi effect transfer off

proper siren
#

I've been wondering about that. The Apply Active Effects button does show up for a number of items

#

even though it applies automatically

vast bane
# proper siren even though it applies automatically

Midi does not work with:

Ready Set Roll
Better Rolls for 5e
Roll Groups
Fast Rolling by Default
Fast Rolls or Quick Rolls
Dice Tooltips
Taragnor's Gm Paranoia
WIRE(Whistler's Item Rolls Extended)
Minimal Roll Enhancements
Retroactive Advantage/Disadvantage
Max Crit
Multiattack 5e

Concentration conflicts:
Concentration Notifier Module
Combat Utility Belt Concentrator

The following modules have template settings that step on midi:
Spell Template Manager

Advanced Spell Effects module is in beta in v10 and often the culprit of things...

Midi requires Item Macro to have its "Character sheet hooks" feature set to unchecked in order for on use macros to work right.

When editing owned items(items on actors) active effects beware of duplicating active effects that interfere. Always check the actors effect tab for rogue ae's.

If you are on dnd5e 2.1.x update to 2.1.5 and you can run the newest midi/dae/dfreds ce

Dfreds CE 4.0 requires midi 32+ and dae 22+.

Midi now requires sight to be setup on all monsters or the players will get unseen attacker advantage.

#

If its just a settings issue it will be here:

#

However, I believe your problem is ENTIRELY the ATL key

#

its the wrong key, and if you are modding the actor's appearance in a macro, that ATL key needs to be removed as ATL keys when applied and removed revert the tokens to their defaults

proper siren
#

got it, I will try that

#

I don't have any of the non-working modules

vast bane
#

you prolly have leave button on in my circled setting then

#

or you have effective transferral installed

proper siren
#

I do have cub but concentrator is not enabled, no spell template manager, item macro hooks are off.

#

cool let me check

#

all modules are on their most recent version as well

vast bane
# proper siren

wildshape is setup with non/non for its target/range and you do not have require targets on

#

set it AND rage to target of self, range of self

#

in the first tabs of both CE's do not have them have any boxes checked

#

whats really weird is if you are using CE those buttons should not show

proper siren
#

alrighty will do, doesn't the Always on require targets mean that is on though?

vast bane
#

as they should not have anything on them, you are afterall using CE

#

you have always set on?

#

see now you got some weird stuff going on lol

proper siren
#

LOL

vast bane
#

you are certain you do not have ready set roll, better rolls, or effective transferral installed?

proper siren
vast bane
#

do you have a scriptlet module from kaelad that applies CE's in chat?

proper siren
#

I do not

#

I haven't seen anything from kaelad

vast bane
#

disable all v9 modules they are dead if they never updated to v10 unless they are pure content modules like maps, images, sounds, animations

#

downgrade to dae 23 btw, 24 is broken and tposney is on vacation

proper siren
#

ahhh okay good to know

#

I actually think I might have an idea of what's going on with the chat message

#

is CE supposed to apply without needing to drag the effect to the effect tab on the item?

#

ex.^

vast bane
dark canopy
#

now that midi has stabilized in 2.1.x, I actually wanna remove that old pin

vast bane
# proper siren

Midi will auto detect the name of an item and try to apply a ce

proper siren
dark canopy
#

the community wiki of bugbears is a great place for all this auxiliary information

vast bane
proper siren
#

I'm going to make a couple of the adjustments you mentioned, remove the item effect and see what happens

#

np

vast bane
#

Something just does not add up, you are certain you have require target ALWAYS?

#

does the wildshape item that you rolled in chat have none/none?

#

for range/target

proper siren
#

yeah that was in the screenshot I sent over of midi settings

#

self/self

vast bane
#

yeah now I definitely got spidey sense going, are you certain my list of conflict modules don't exist in your build?

#

Wire is "Whistlers something something something" in manage modules

proper siren
hoary wagon
#

Hello. I heard it's possible to scale the summon spirit actor sheet using midi, how would I do that?

dark canopy
#

are you using midi already?

kind cape
#

Just looked at the newest changes for the V11 dev release.. sweaty
Migrated ActiveEffect#label to ActiveEffect#name to standardize with other Document types which provide various methods expecting a name field.
Unless they add a .label that just mirrors the value of name this is gonna break so many activation conditions from Midi stuff ๐Ÿ˜‚

dark canopy
#

๐ŸŽถ whistles in warpgate ๐ŸŽถ

kind cape
#

Is WG gonna use the new ActorDelta or is it easier to just stick to your existing system?

dark canopy
#

that is mainly for internal unlinked synthetic actor data

#

and wont affect warpgate's operations

#

but possibly opens up the door to recursively embedded mutations

kind cape
#

Ah okay, that was my understanding as well, but I only read through the brief on it, not the full PR

quiet osprey
#

Hay, I need some help. I want to add two conditions at once on an actor, but my problem is that DAE is only adding one of the conditions, not both. Can anyone help me with that?

left hawk
#

Midi QOL's item "Activation Condition" field uses the following properties

The evaluation of conditions has changed, You do not need to put @ in front of fields, but still can. If the field is a a string then @ fields must be enclosed in quotes, i.e. "@target.details.type.value".includes("dragon").
Specifically midi will populate the expression data with:

casting actor, anything from actor.system (direct via @field, e.g. @digital lagoontributes...),
casting actor, anything from actor.flags (via @fickle arrowags....),
anything from item.data.data (via @item.damage.),
anything from the target.actor.system, via (@target.abilities etc),
anything from the workflow itself (via @workflow.attackRoll etc).

QUESTION Where can i look up/find these field expressions?

P.S. not a code monkey so please excuse incorrect terminology. corrections welcom

vast bane
#

StatusEffect combines all statuseffects to consolidate, Macro.ce is what you want if you don't want them combined

vast bane
#

essentially you need the phrase in the condition to equal true

quiet osprey
quiet solar
# quiet solar now that I have sorted out my eyesight issue and clarified damage types vs weapo...

https://gitlab.com/tposney/midi-qol/-/blob/v10/src/module/Hooks.ts#L506

so yeah - it looks hard-coded:

  if (game.system.id === "dnd5e") {
    midiFlagTypes[`flags.midi-qol.DR.all`] = "string";
    midiFlagTypes[`flags.midi-qol.DR.non-magical`] = "string";
    midiFlagTypes[`flags.midi-qol.DR.non-silver`] = "string";
    midiFlagTypes[`flags.midi-qol.DR.non-adamant`] = "string";
    midiFlagTypes[`flags.midi-qol.DR.non-physical`] = "string";
    midiFlagTypes[`flags.midi-qol.DR.final`] = "number";

    Object.keys(config.damageResistanceTypes).forEach(dt => {
      midiFlagTypes[`flags.midi-qol.DR.${dt}`] = "string";
    })
  }
hoary wagon
left hawk
crystal idol
#

How do I cite the macro here?

#

I wanted to run just a simple table

#

I tried the macro code itself but it doesn't run

vast bane
#

did you make a macro to roll the table?

#

if so then reference the macros name in the effect value

#

if you never made the macro, make it

crystal idol
#

And how do I reference?

#

It says this when I put the macro reference code

crystal idol
nimble yacht
#

How can you add a spells level to damage rolls? @spellLevel doesn't work, nor does @level

vast bane
nimble yacht
#

effect, realizing now, this is a DAE question lol

vast bane
#

you asked in the right place

#

@spellLevel should work in a dae, but try @item.level

nimble yacht
#

YES! it was ITEM.level tyty

fallen tendon
#

curse

scarlet gale
#

Well I finally did it. I got so annoyed with active auras that I made own aura system in my module.

#

And it's setup in a way to follow the D&D rules for overlapping spell effects.

digital lagoon
scarlet gale
#

My system needs some serious testing however

#

Next up is the level 7 paladin aura features

#

Some will be easier than others

digital lagoon
#

I apologize in advance for aura of conquest

scarlet gale
#

That's pretty much going to come down to whether or not macro.ce applied conditions have a useful origin uuid.

hollow tundra
#

Anyone have automation for the defensive duelist feat?

sleek bone
#

So I was trying to use Green Flame Blade as it comes in the DDB Spells folder when importing spells using MrPrimate's importer, yet when I try to use the cantrip I get these midi errors, anyone know what I must do to get this fixed?

#

Aite so turns out I had to switch a line to say ".stretchTo(target) instead of .reachTowards(target)" yet after that I now get this new set of errors, which may no longer be a midi thing? (At least unlike the last error I see no specific mention of Midi)

grizzled oar
#

'm currently testing out mid-qol to see how complicated it is and whether I want to use it in my games. I've created a test world with a test player (I'm controlling from a different browser) and some test mobs. I've cast ice storm at an orc with the damage totalling 12. The orc succeeds on the save and should take 6 damage. But Midi wants the orc to take 5. Am I missing something? I don't see anything on the Orc that would cause it to take less damage. It's a basic orc and there are no resistances or immunities that I can see which would cause 12 to be rounded down to 5.

#

Second question: do I need both Times Up and About Time to best support midi-qol? Or just one?

scarlet gale
#

Looks like it's rounding down each damage type on it's own

#

So 3/2 would be 1, and 9/2 would be 4. 4 + 1 = 5

grizzled oar
#

If so, I've learnt something about 5e rules I didn't know. And that's fine, but I want to be sure the module isn't fudging it.

scarlet gale
#

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

#

As for your time question, this is from the readme:


Do I just want active effects to expire? If yes install times-up.
Do I want effects with a duration in rounds/turns to expire correctly? If yes install times-up.
Do I use special durations like turn start/turn end, or macro repeat macros? If yes install times-up.
Do I want to be able to schedule my own events to occur in the future? If yes install about-time.
For a while if you use calendar-weather you will still need to install about-time.```
#

There isn't any harm to having both.

scarlet gale
twin drum
# grizzled oar Indeed. But should it be doing that per RAW?

if it was due to resistances, yes ("Damage Resistance: If a creature or an object has resistance to a damage type, damage of that type is halved against it." I.e. you would half each type of damage and apply them seperately)

but this is from a successful save, so I wouldn't think so
a successful save means that all damage taken is halved, so you would think that the whole package is halved as a single unit

spice kraken
scarlet gale
#

It's likely doing it this way as a simple way to handle resistances

#

each damage part is just getting processed on it's own then added at the end

#

I would imagine you could combine them into the same damage section and it might work

twin drum
#

it's one of the limitations of automation (manually you have more control on these cases)

grizzled oar
scarlet gale
#

make an issue on the gitlab

#

But Tposney's last update said they would be away for a little bit

#

So it may take some time

#

at the end of the day, it's likely never going to amount to more than 1 or 2 damage. You don't often get mixed damage types on the same item.

twin drum
#

yeah it's only ever going to be 0.5 damage per type

#

and at least it's consistent, so applies to PCs as much as it does their foes

grizzled oar
scarlet gale
#

Neither me nor any of my players have ever noticed this

vast bane
#

It could be just sequencer is the issue

scarlet gale
#

Pretty sure if it's detecting the sequencer package it's enabled

#

It's likely the line they edited was messed up in the edit

vast bane
#

oh yeah sorry need more coffee, bad file path for animation, probably a patreon animation that they don't have

grizzled oar
#

Something else I've found, but I think it's more likely CE, is that, when the player tries to cast darkness when they try to place the template they get a message saying they lack permission to place ambient light. The effect goes off but no template. Apparently players cannot be granted permission in the config to place ambient light.

vast bane
#

I'm unaware of any darkness premade that uses light

scarlet gale
#

I think the DDB one does?

vast bane
#

personally I do a darkness animation active aura that places the blindness condition on anyone that steps in it, which is easy cause I soft ban warlocks and never have to worry about devilsight

scarlet gale
#

Wouldn't you just have to blind both the target and source?

#

Neither can see each other as long as one is in the darkness

vast bane
#

I don't fast forward, those niche moments are easily corrected

#

I just went through 2 floors of drow that all get it as innate and used it a ton, seemed pretty simple to run

scarlet gale
#

At any rate, I'd just do what Moto said. Give it an animation and call it a day

grizzled oar
# scarlet gale I think the DDB one does?

Maybe. I'm at the stage now where I have so many modules installed that it gets hard to track what comes from what. Actually, DDB is what set me down this route of trialling midi

violet meadow
#

Perfect Vision is really good for darkness.

wraith spade
#

Hi all, a general question for setting up automation:
Is it viable to make a module for own shared compendiums and test the provided items (from midi-qol sample, chris premade and so on) in a test world, adding these to the own compendium if they are working and then applying these to the characters in the game session world? Or are there any problems I will walk into? Update process would probably be Module Update -> check test World -> optionally update the item --> import from compendium into game world --> update character

#

I want to test the whole stuff beforehand but would like to do changes/fixes only once...

vast bane
#

his premades require his module enabled as its more than just items

wraith spade
#

yes, that would not be the problem, modules would be enabled too

vast bane
#

I don't really see a nead to test update personally

#

he updates 10 times a day he'll fix your issue pretty quick

wraith spade
#

the situation is that basically everything has to be checked if it works because of the fast development...

#

I also need to build some own stuff because of Tashas Cauldron of everything...

#

So a sandbox dev area is needed anyhow

#

Tentacle of the Deeps for example is a warlock otherwordly patron feature

#

I am curious about the non-srd stuff. Without the flavour text and all there should be no copyright issue, but I think this is probably a hot area.

vocal umbra
#

I had to strip out all of the non-srd flavor text for my module. Now I use DDB Importer from Mr Primate and then put my stuff on top of that... chris' setup is best for that, lays on top nice and clean and keeps the imported flavor text with a click of a button. eventually when Chris duplicates all of my modules stuff I will terminate my module and use only his. ๐Ÿ™‚

short aurora
#

No issue if you don't intend to publish your module, if you do, then yeah, follow the example of barebones features from non-SRD in other published modules

quiet solar
#

If I had an initial rejection because I had rewritten verbiage, would it be worth resubmitting now that I have removed all of that? This is (understandably) a little bit of a murky area... I'd like to have my module published, but that's more of "wow that'd be cool" thing...

dark canopy
#

in fact, taking that feedback graciously, addressing the concerns and resubmitting is exactly what we want to see from our community!

quiet solar
#

ok, cool - thank you!

vocal umbra
#

Btw my mistake was I used DDB importer which embedded at the time (not sure about now) tags with text not seen through the interface. I had to edit that text and tags out of the exported xml .. you should check that before resubmit if you used a base item you did not create from scratch

tired steeple
#

My MIDIQuoL ins't apllying reduced damage to enemies with resistence. How I fix that?

vast bane
#

the most common mistake there is people mistake the midi key and the system key for damage resistance

spice kraken
#

DR is damage reduction, dr is resistance

vast bane
#

System and dr are damage resistance
Midi and DR is damage REDUCTION

#

damage resistance is a boolean, 1 or 0 or true, damage reduction takes the ADD drop down and desires an integer but dae lets you do inline rolls and attributes in a pinch

hot flower
#

Hi, @scarlet gale the new aura of protection isn't applying to the paladin who has it. It's applying to her allies within range, however.

vast bane
hot flower
#

it's not showing in the roll of the pally

#

ok. strange it's only showing in combat.

#

on the pally, but it shows it every time on allied tokens.

#

whoops. no, it's working. Strange. It wasn't working, then I put her into combat, and now it's working fine, even out of combat.

dark canopy
#

uninitialized flags, possibly

#

if that's the case @scarlet gale , I highly recommend wrapping your flag access such that if a flag is undefined, your helper returns the expected default value. This does mean you need to define your expected defaults...which is also helpful for users when debugging ๐Ÿง 

#

Utils.getFlag(doc, flagName), where you have a lookup object of flagName : flagDotPath

plain bane
#

Does anyone know what this is about, I'm using snake attacke but it doesn't work, I've already set the midi to full automatic, I've configured it step by step, but it keeps giving this error, someone help me please

sleek bone
scarlet gale
#

Due to how my auras work, the token has to be placed onto the canvas or moved once before it'll apply itself to the owned actor.

scarlet gale
#

It sounds like they just needed to move the token once or place it on the canvas to trigger the aura for themselves.

dark canopy
#

cool, just checking -- its easy to overlook -- but do consider abstracting your flag access. I recently did this for superheroic 5e and it really made all the difference.

scarlet gale
#

Yea, that's not a bad idea

dark canopy
#

i can "just" access flags and know its all handled

#

i can't really share the source...but if you have s5e-core, look into the Util class

hot flower
scarlet gale
#

Totally fair

#

I almost went that route myself with it, but I wanted it to take into account overlapping effects rules

hot flower
#

ohhh. yeah, that is a good point

scarlet gale
#

Actually, how does Build a bonus handle overlapping auras with the same identifier?

#

If at all

hot flower
#

no idea. didn't even think about that issue.

scarlet gale
#

Pretty rare to ever have more than a single paladin in the party

#

unless your players are trolling the DM

#

And all go paladins or something

molten solar
#

I've set up a server for questions/help with bab and my other modules (though be aware it's a midi-free space, which I am sure comes as a total surprise).

digital lagoon
#

I'm having an issue with midi qol where it's adding a critical hit button on damage rolls. Anyone know what setting is causing this?

hexed coral
#

Hey all. I was wondering if anyone has tips on how to set up disadvantage to ALL ability checks. Player rolled something on the Madness table and it gave them that debuff for 90 hours.

spice kraken
#

flags.midi-qol.disadvantage.ability.all | custom | 1

hexed coral
#

Super again saving the day. So I dont wanna just mooch off stuff so could I ask:

What area on the readme can I learn about the 'custom' and the '1' effect in the lines?

#

Is 1 just a 'yes', like in a binary sense?

scarlet gale
#

1 for true

hexed coral
#

Ok cool cool

scarlet gale
#

pretty sure you can also just put true

spice kraken
scarlet gale
#

1st pin here has a link to the midi documentation

spice kraken
#

For the most part if it's like turn this thing on it's custom | 1

hexed coral
#

Ye I have the readme open atm I just couldnt find the right area. Awesome.

#

TY all!

#

Then if I want to make it ignore the advantage/disadvantage window popup I would put autoRollAttack in the effect area?

spice kraken
#

ยฏ_(ใƒ„)_/ยฏ, I fast forward rolls

hexed coral
#

Oh is that just a setting I can tick?

spice kraken
#

Yeah, in the midi settings

#

Separate options for players and gms

hexed coral
#

Ah ok. Hm... Maybe I should just leave it in case something gives the player advantage and it needs to be changed to normal.

spice kraken
#

That is something I talked about with my players though. We personally don't want the popups

hexed coral
#

Ya my player is new and we are all learning Foundry together so maybe its better for her to see that pop up.

scarlet gale
#

If you set the flag it'll highlight what one it would auto select with fast forwarding

hexed coral
#

Yea I see that. Very helpful as a reminder

vast bane
jagged lynx
#

I'm about to Yeet my computer out the frigging window in a sec, can someone PLEASE help me to sort the auto damage

#

I've got it working fine on another server, I'm trying to move it to my new oneshot server, literally only got midi-qol and the required lib ones running, doesn't work.

#

It's showing the damage cards when I hover over in the chat, but it's not actually damaging the enemy even when I try that

scarlet gale
#

Is there a gm online?

scarlet gale
#

Errors in console when you attack?

jagged lynx
#

I mean I'll check again, but this is a fresh server, with literally 4 modules running, where on my main server with 100+ mods its working fine

scarlet gale
#

Export your midi settings from the server it works on and import them onto your other one

#

see if the issue persists

jagged lynx
#

I did that

#

I'm getting this spicy red error

scarlet gale
#

What's your midi version?

jagged lynx
#

Whatever the latest one is

scarlet gale
#

Double check it?

jagged lynx
#

10.0.34

scarlet gale
#

Update to 10.0.35

jagged lynx
#

Running updates now

#

But like I say, 10.0.34 was working on my normal server

scarlet gale
#

Only accidently

#

It's getting an error checking optional rules

#

IIRC this bug is fixed in 35

jagged lynx
#

checking now

#

I both love... and hate foundry some days

#

Why did that break then?

strong yew
#

@scarlet gale yo, I know you had mentioned you had all the fighter maneuvers created, but does that also extend to working with the Martial Adept feat?

dark canopy
scarlet gale
#

It's wasn't protected vs having an undefined setting

scarlet gale
strong yew
#

Cool, thanks for everything you're doing

scarlet gale
#

It should technically work if they are already a battle master and you combined the dice pools

strong yew
#

Ah yeah unfortunately Ranger took it

#

So no existing superiority dice

lost estuary
#

I am attempting to automate a feature that that automates the Beguling twist ranger feature using DAE, Midiqol (with saves fast forwarded through monks and DFreds Convinient effects. If the target fails the save, The feature should prompt the source actor to choose either the frightened or charmed condition and then have it automatically applied to the target for 1 minute. Unfortunately, it is prompting even on a succesfull save. Any thoughts?

//Beguiling Twist Macro
// This macro automates the Beguiling Twist ranger feature using DAE and DFreds Convenient Effects.
// It prompts the source actor to choose either the frightened or charmed condition and applies it to the target for 1 minute if they fail the save.

//Prompt source actor for condition choice
new Dialog({
  title: "Beguiling Twist",
  content: `
    <p>Choose a condition to apply:</p>
    <div style="display:flex; justify-content:space-around;">
      <label><input type="radio" name="condition" value="frightened" checked>Frightened</label>
      <label><input type="radio" name="condition" value="charmed">Charmed</label>
    </div>
  `,
  buttons: {
    ok: {
      label: "Apply",
      callback: async (html) => {
        // Get selected condition
        const condition = html.find('[name="condition"]:checked').val();
        
        // Get target token
        const targetTokens = canvas.tokens.controlled;
        if (targetTokens.length !== 1) {
          ui.notifications.warn("Please select a single target token.");
          return;
        }
        const targetToken = targetTokens[0];
        const targetActor = targetToken.actor;

        // Roll save
        await targetActor.rollAbilitySave("wis", { chatMessage: true });
        const saveResult = targetActor.data.data.saves.wis.total;

        // Apply condition if save fails
        if (saveResult < 8 + targetToken.data.data.bonuses.abilities.wis.save) {
          DAE.setFlag(targetToken, 'condition', condition);
          await DAE.addCondition(targetToken, condition, 1, {});
          ChatMessage.create({ content: `${targetActor.name} failed their save and is now ${condition}.`});
        } else {
          ChatMessage.create({ content: `${targetActor.name} succeeded their save against Beguiling Twist.`});
        }
      },
    },
    cancel: {
      label: "Cancel",
    },
  },
}).render(true);

scarlet gale
#

Using midi this can be done a bit differently

#

Have an item macro that runs post active effects then just check who failed by looking at js this.failedSaves

#

if it's just one target, you can just do js if (this.failedSaves.size != 1) return; At the top

lost estuary
#

added the midi return for failed saves, but it triggers on a successful save, not a failed one.

scarlet gale
#

this would require the feature to be handling the save instead of the macro

lost estuary
#

It is:

scarlet gale
#

and the item macro is executing post active effects?

#

if failedSaves.size is 1 then the target failed the save

#

so if it's 0, they passed and shouldn't have an effect right?

lost estuary
#

Also there is this line:

 // Apply condition if save fails
        if (saveResult < 8 + targetToken.data.data.bonuses.abilities.wis.save) {
          DAE.setFlag(targetToken, 'condition', condition);
          await DAE.addCondition(targetToken, condition, 1, {});
          ChatMessage.create({ content: `${targetActor.name} failed their save and is now ${condition}.`});
        } else {
          ChatMessage.create({ content: `${targetActor.name} succeeded their save against Beguiling Twist.`});
#

prompt should not appear if the target succeeds.

scarlet gale
#

You don't need to be checking the save value anymore except for the first line

#

if it makes it past the return, they failed the save

lost estuary
#

It was the timing, changed as you instructed to after active effects, and it is now correct.

#

Now i just have to get the effect application working

#

it is not currently.

scarlet gale
#

the DAE.setFlag seems wrong

#

What module are you using for condition application?

lost estuary
#

Also getting this

#

DFreds CE

scarlet gale
#

You don't need to be checking the result anymore

#

show me what you have right now

lost estuary
#
//Beguiling Twist Macro
// This macro automates the Beguiling Twist ranger feature using DAE and DFreds Convenient Effects.
// It prompts the source actor to choose either the frightened or charmed condition and applies it to the target for 1 minute if they fail the save.


if (this.failedSaves.size != 1) return;
//Prompt source actor for condition choice
new Dialog({
  title: "Beguiling Twist",
  content: `
    <p>Choose a condition to apply:</p>
    <div style="display:flex; justify-content:space-around;">
      <label><input type="radio" name="condition" value="frightened" checked>Frightened</label>
      <label><input type="radio" name="condition" value="charmed">Charmed</label>
    </div>
  `,
  buttons: {
    ok: {
      label: "Apply",
      callback: async (html) => {
        // Get selected condition
        const condition = html.find('[name="condition"]:checked').val();
        
        // Get target token
        const targetTokens = canvas.tokens.controlled;
        if (targetTokens.length !== 1) {
          ui.notifications.warn("Please select a single target token.");
          return;
        }
        const targetToken = targetTokens[0];
        const targetActor = targetToken.actor;


        // Apply condition if save fails
        if (saveResult < 8 + targetToken.data.data.bonuses.abilities.wis.save) {
          DAE.setFlag(targetToken, 'condition', condition);
          await DAE.addCondition(targetToken, condition, 1, {});
          ChatMessage.create({ content: `${targetActor.name} failed their save and is now ${condition}.`});
        } else {
          ChatMessage.create({ content: `${targetActor.name} succeeded their save against Beguiling Twist.`});
        }
      },
    },
    cancel: {
      label: "Cancel",
    },
  },
}).render(true);
scarlet gale
#
const targetToken = this.targets.first()```
#

easier to just use the midi targeting information

lost estuary
#

line 25 yes?

scarlet gale
#

yep

#

You can remove the length check after that too

#

midi will enforce target limits if you have it enabled

#

and set right on the feature

lost estuary
#
 // Get target token
        const targetToken = this.targets.first()
        const targetToken = targetTokens[0];
        const targetActor = targetToken.actor;
#

seems redundant?

scarlet gale
#

remove the 2nd one

#
await game.dfreds.effectInterface.addEffect(
    {
        'effectName': condition ,
        'uuid': targetActor.uuid,
        'origin': this.item.uuid,
        'overlay': false
    }
);```
#

This should apply the chosen condition, note that you may need to have the first letter be uppercase

#

actually, it being inside a function may change this

#

may want to define that stuff before the dialogue

lost estuary
#

it works

#

its not setting duration though

#

should be for 1 minute

#

with a repeat on the saving throw at the end of each of the targets turns

#

though i could manually handle that last part

scarlet gale
#

oh in that case

#

you'll need to build the effect in the macro

#

Didn't realize you needed an overtime too

lost estuary
#

Also, are you Chris of Chris's Premades?

scarlet gale
#

Yep

strong yew
#

Don't suppose anyone has worked on Draconic Strike or Breath of the Dragon for ascendant monk have they?

lost estuary
#

Cause if so, your saving me the time of sending this to you afterwards ๐Ÿ˜‰

scarlet gale
#

If you're using my module this can be simplified quite a bit lol

lost estuary
#

well i am!

scarlet gale
#

what feature is it?

lost estuary
#

and im bad it this.

scarlet gale
#

Ah found it

lost estuary
#

Beguiling Twist, not SRD if iirc

scarlet gale
#

Fey Wanderer correct?

lost estuary
#

yup

#

I did not take into account automating the anything within range succeeds on a save check, seemed a bit overkill for my skill level

#

and likely a performance issue, though AA is pretty awsome.

scarlet gale
#

This is best done as a manual reaction

lost estuary
#

agreed

#

if the player is smart enough to remember they have this feature.

scarlet gale
#

That's on them

scarlet gale
lost estuary
#

you are an absolute boss!

lost estuary
#

Much cleaner!

scarlet gale
#

Helps that the dialogue stuff is all packed away in another function

lost estuary
#

indeed!

#

I am working on automating pass without a trace using a template next, not sure thats the way to go, but hey

#

doing what i can

scarlet gale
#

If you have active auras it can be done with that pretty easily

#

Otherwise I'll eventually get to making one that uses my aura system

#

I'm still just working out the logistics of unlinked actors and my auras at the moment

lost estuary
#

linked vs linked is a whole other thing!

strong yew
#

Hmm. So I'm having a problem when calling two post damage roll macros

#

Trying to create Draconic strikes by calling post damage roll to apply the type, but he also has savage attacker

strong yew
#

Also tried using setDamageRoll and adding the element chosen, but unfortunately it just appends it to the formula which makes sense given what I'm doing

#

is there a way to change the flavor overall for the roll?

scarlet gale
#

Get the old formula and replace the flavor on each part

#

Midi runs all macros for the same step of the workflow at the same time

#

So you will need to take that into account

fiery torrent
#

hey, need some help, how do i

  1. stop it from prevent attacks made outside a weapons range in combat
  2. stop it from putting icons on characters when they cast spells
strong yew
# scarlet gale Get the old formula and replace the flavor on each part

I was actually copying something I think you did in Heart of the Storm or something

    if (!selection) selection = 'lightning';
    let damageFormula = this.damageRoll._formula + selection;
    let damageRoll = await new Roll(damageFormula).roll({async: true});
    await this.setDamageRoll(damageRoll);
#

Is this still doable with this kind of method?

#

for the flavor?

scarlet gale
#

That one works because I explicitly remove the flavor on the item

strong yew
#

and because it doesn't have a mod right?

scarlet gale
#

It's just appending the damage type

strong yew
#

it's just straight damage iirc

scarlet gale
#

Nah

#

Midi goes left to right on damage type evaluation

strong yew
#

right now it's appending and ending up something like 1d6[none] + 3[cold] for instance

scarlet gale
#

You may accidentally be using the .formula instead of ._formula

#

The 2nd one is the original formula while the 1st is the formula with all the flavors added

strong yew
#

what I posted above is from mine

#

basically identical to yours though, since I also kept to just default lightning if none selected

scarlet gale
#

Screenshot the item damage section?

#

Oh know that

#

You might just need to rebuild the formula

#

Can probably do a string replacement

strong yew
#

Yeah, considered that as well, was just wondering if there was a better method

scarlet gale
#

Put the flavor back in the roll, use none as the type

strong yew
scarlet gale
#

Then just replace none with the new one

#

so:
@scale.monk.martial-arts[none] + @mod

strong yew
#

unfortunately doesn't show as [none] in the formula

scarlet gale
#

really?

strong yew
#

but can target something else maybe

scarlet gale
#

Appears to be working?

#
let damageFormula = this.workflow.damageRoll._formula.replace('none', selection);```
strong yew
#

lol, that's odd.

scarlet gale
#

What is your current damage formula?

#

Is it still the one from your screenshot?

strong yew
#

oh, wait you're setting it on the actual formula

#

not the type dropdown

scarlet gale
#

yea

#

well, both actually

strong yew
#

only thing is that the 3 should also be the same type as the original damage right

scarlet gale
#

midi evaluates it

#

it'll be correct

strong yew
#

oh

scarlet gale
#

using the flavor to the left

strong yew
#

Yeah this is how I had it set up

#

So I guess the dropdown only doesn't show up in the formula

scarlet gale
#

As far as I can tell, it's used if there isn't any flavor text included

#

at least by midi

strong yew
#

Ah that makes sense

#

Cool, this should work then

#

Appreciate the help

scarlet gale
#

You said you had multiple postDamageRolls editing the damage?

#

At least potentially

strong yew
#

Yeah savageattacker allows a reroll of one die a turn or something

#

so both the element choice and the "reroll?" pop up simultaneously

scarlet gale
#

Are you using my module at all by chance?

strong yew
#

yeah

#

think that's the savage attacker I'm using

scarlet gale
#

(I don't have one)

#

But we can use a system I developed to make the pop-ups wait their turn

strong yew
#

yeah just checked, it's not

scarlet gale
#

It's likely ddb or something

strong yew
#

yeah either that or one I ripped from bugbear or something

#

Is your system the queue function?

#

was wondering what that was for

scarlet gale
#

What's the name of this feature / item?

#

actually nevermind

strong yew
#

won't work?

scarlet gale
#

I'll just grab the item name

strong yew
#

Oh

scarlet gale
#

Add this at the top before the dialogue:

let queueSetup = await chrisPremades.queue.setup(this.item.uuid, this.item.name, 50);
if (!queueSetup) return;```
Add this at all the way at the end:
```js
chrisPremades.queue.remove(this.item.uuid);```
#

If you have any returns in between you'll want to make sure it does the queue remove part before returning

#

say for example:

if (!selection) {
    queue.remove(this.item.uuid);
    return;
}```
#

The 50 at the end is the priority FYI.

I've been using this for my stuff:
001-100: Item attack roll and damage modifcation.
101-200: Class & race feature attack roll and damage modifcation.
201-300: On Hit Bonus Damage
301-400: Damage Rewriting
401:500: On Hit Triggers

strong yew
#

Wow, that's awesome. Thanks, and will do

scarlet gale
#

You'll likely need to look at the savage attacker and give it the same treatment